版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、電子課程設計 -三分鐘可編程倒計時報警器 目 錄一、設計任務與要求 2二、總體框圖 2三、選擇器件 3四、功能模塊41.預置數(shù)模塊42.倒計時模塊52.1 個位模塊 52.2 十位模塊 72.3 百位模塊 93.報警模塊 104.數(shù)碼顯示模塊134.1分頻器模塊134.2數(shù)碼管選擇控制模塊144.3 3_8譯碼器模塊 164.4 數(shù)碼管段選模塊17 五、總體設計電路圖 19六、心得與總結(jié) 22三分鐘可編程倒計時報警器一、 設計任務與要求設計任務:三分鐘可編程倒計時報警器設計要求:1.具有可編程及報時的功能,并能夠隨時顯示計數(shù)結(jié)果。 2.設有外部操作開關(guān),控制計數(shù)器實現(xiàn)直接置數(shù)、啟動和清零等操作
2、。 3.計數(shù)器可設置為03分鐘(即180秒)內(nèi)任意時段的倒計時。 4.計數(shù)器遞減計數(shù)到零時,數(shù)碼顯示管不能滅燈,同時發(fā)出持續(xù)發(fā)光報警信號。二、 總體框圖倒計時預置數(shù)數(shù)碼顯示報警預置數(shù)模塊:在開啟相應開關(guān)(setgw、setsw、setbw)后,通過來脈沖計數(shù)分別給個位十位百位預置數(shù),使得在啟動開關(guān)后從此數(shù)開始倒計時。倒計時模塊:在啟動開關(guān)(clk)后,從預置的數(shù)開始倒計時,倒計到0時,倒計時結(jié)束,此時數(shù)碼顯示管持續(xù)不滅燈。另外,可在任意時刻通過控制摁鈕實現(xiàn)清零。報警模塊:每倒計到整十秒時,發(fā)出一次報警。同時,當?shù)褂嫊r結(jié)束時會再次發(fā)出報警聲,以及報警燈亮起。此時,可通過開關(guān)(shutalert)
3、關(guān)閉報警燈,報警聲,以停止報警。數(shù)碼顯示模塊:通過對輸入信息的判斷,選擇在哪個數(shù)碼管上顯示哪個圖形符號(即數(shù)字)。倒計時模塊 數(shù)碼顯示模塊個位十位百位數(shù)碼管 選擇控制38譯碼器數(shù)碼管段選分頻器 報警模塊 每10秒報時一次計時結(jié)束報警方案一:預置數(shù)部分,可以借助quartus ii提供的芯片(如:74ls192,74ls190,74ls160等)完成計數(shù)功能。倒計時部分,可以借助quartus ii提供的芯片(如:74ls192等)完成有借位的減法運算。但操作較為繁瑣,涉及到的元器件較多,涉及到的問題可能會有芯片是否有所損壞使得設計結(jié)果不夠理想。 方案二:完全用vhdl語言編寫程序下指令,實驗數(shù)
4、據(jù)較為準確,設計結(jié)果較為理想,但思考量較大,思維過于復雜。方案三:將完整的原理圖按照功能需求分成幾個不同模塊,將各個部分在繪制原理圖或者用vhdl語言編寫程序后進行編譯制成可供使用的模塊,再借助各個模塊繪制總的原理圖。這樣,總原理圖清晰明了,各個模塊的功能清晰,且設計結(jié)果較為理想。故選擇此方案。三、選擇器件eda實驗箱所使用到的芯片為altera公司的cyclone系列fpga芯片ep1c12q240c8n。外圍接口電路為io5與蜂鳴器接口相連,io3與io_clk相連,io9與一個紅色發(fā)光二極管相連。led燈處于高電平,所以給低電平led燈亮;數(shù)碼管共陰,給高電平數(shù)碼管亮;數(shù)碼管段選為低電平
5、有效。實驗板上的按鍵常處于高電平,按下為低電平。四、功能模塊1.預置數(shù)模塊。當遇到上升沿后輸出將自動加1。若輸出是9再遇到上升沿時將自動變?yōu)?。符號如右圖。 相應程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count is port( clk:in std_logic; co:out std_logic_vector(3 downto 0);end entity count;architecture fun of count is signal count:std_lo
6、gic_vector(3 downto 0);begin co=count; process(clk) begin if(clkevent and clk=1)then if(count=1001)then count=0000; else count=count+1; end if; end if; end process;end fun;其功能仿真圖像為: 根據(jù)圖像可知,在每次遇到上升沿后輸出將自動加1。若輸出是9再遇到上升沿時將自動變?yōu)?。2.倒計時模塊。此模塊由個位、十位、百位三部分組成。2.1 個位模塊:時鐘信號與個位模塊相連,當時鐘信號給出上升沿時,個位將實現(xiàn)減1的功能,即每次遇到
7、上升沿都將減1,同時借位輸出端為低電平,若個位為0時,在遇到上升沿后將自動變?yōu)?,同時借位輸出端為高電平。在個位、十位、百位均為0時,無論是否有時鐘信號都不再進行減法運算。當個位置數(shù)端撥向高電平時,預置數(shù)中的數(shù)將給個位置數(shù)。另外,當摁下清零鍵時,個位將自動清零。其符號如右圖。相應程序為:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity gww is port( clk,reset,setgw:in std_logic; cogw:in std_logic_vector(3 downto
8、 0); fsw,fgw,fbw:in std_logic_vector(3 downto 0); ensw:out std_logic; daout:out std_logic_vector(3 downto 0); lout:out std_logic);end entity gww;architecture fun of gww is signal count:std_logic_vector(3 downto 0); begin daout=count; process(clk,reset,setgw,cogw,fgw,fsw,fbw) begin -ensw=k; if(reset=
9、1)then count=0000; elsif(setgw=1)then count=cogw; elsif( fsw=0000and fbw=0000and fgw=0000)then count=0000;lout=1; else if(clkevent and clk=1)then if(count=0000)then count=1001;ensw=1; else count=count-1;ensw=0; end if; end if; end if; end process;end fun;其功能仿真圖像如下。根據(jù)圖像可知,當將setgww鍵置為高電平時,可對個位進行異步置數(shù),使
10、得輸出為預置數(shù)模塊中對個位輸出的數(shù)(cogw)。當?shù)褂嫊r到0(fgw,fsw,fbw=0)時停止計時,并發(fā)送信號lout(用于觸發(fā)報警)。其他情況時,當遇到上升沿時立即減1,借位輸出端為低電平,如果輸出為0,且又遇到上升沿,則輸出為9,同時借位輸出端產(chǎn)生上升沿,觸發(fā)十位進行減法運算。2.2 十位模塊:十位的上升沿由個位的借位輸出端提供。當遇到上升沿時,十位將實現(xiàn)減1的功能,即每次遇到上升沿都將減1,同時借位輸出端為低電平。若十位為0時,在遇到上升沿后將自動變?yōu)?,同時借位輸出端產(chǎn)生上升沿,觸發(fā)百位進行減法運算。當setsw鍵撥向高電平時,將實現(xiàn)對十位的置數(shù)。當摁下reset鍵時,實現(xiàn)對十位的清
11、零。其符號如左圖所示。以下為該模塊相應程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sww isport(clk,reset,setsw:in std_logic; cosw:in std_logic_vector(3 downto 0); enbw:out std_logic; daout:out std_logic_vector(3 downto 0);end entity sww;architecture fun of sww issignal count:std_lo
12、gic_vector(3 downto 0);begindaout=count;process(clk,reset,cosw,setsw) beginif(reset=0)thencount=0000;elsif(setsw=1)thencount=cosw;elsif(clkevent and clk=1)thenif(count=0000)then count=1001;enbw=1;else count=count-1;enbw=0;end if;end if;end process;end fun;其相應功能仿真圖如下:根據(jù)圖像可知,當setsw鍵撥向高電平時,實現(xiàn)對十位的異步置數(shù)。當
13、reset鍵為低電平時,實現(xiàn)對十位的異步清零。其他情況時,當遇到上升沿時立即減1,借位輸出端為低電平,如果輸出為0,且又遇到上升沿,則輸出為9,同時借位輸出端為高電平。2.3 百位模塊:百位的上升沿由十位的借位輸出端提供。當遇到上升沿時,十位將實現(xiàn)減1的功能,即每次遇到上升沿都將減1,如果輸出為0,且又遇到上升沿,則輸出為1。當setbw鍵撥向高電平時,實現(xiàn)對百位的置數(shù)。當reset鍵撥向低電平時時,實現(xiàn)對百位的清零。其符號如右圖所示。相應模塊的程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.a
14、ll;entity bww isport(clk,reset,setbw:in std_logic; cobw:in std_logic_vector(3 downto 0); daout:out std_logic_vector(3 downto 0);end entity bww;architecture fun of bww issignal count:std_logic_vector(3 downto 0);begindaout=count;process(clk,reset,setbw,cobw) beginif(reset=0)thencount=0000;elsif(setbw
15、=1)then count=cobw;else if(clkevent and clk=1)then if (count=0000)then count=0001; else count=0000; end if; end if; end if; end process;end fun;相應功能仿真圖如下: 根據(jù)圖像可知,當setbw鍵撥向高電平時,實現(xiàn)對百位的異步置數(shù)。當reset鍵為低電平時,實現(xiàn)對百位的異步清零。其他情況時,當遇到上升沿時立即減1,如果輸出為0,且又遇到上升沿,則輸出為1。3. 報警模塊。報警模塊由兩部分組成,報警一:每整十秒報警(蜂鳴器工作)一次;報警二:當?shù)褂嫊r到0時
16、,即個位、十位、百位輸出均為0時,報警(蜂鳴器和紅色發(fā)光二極管均工作)一次,此時可通過控制開關(guān)關(guān)閉報警,同時維持個位、十位、百位輸出均為0的狀態(tài)。其符號分別為: 報警一相應程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alert1 isport(clk:in std_logic; daingw:in std_logic_vector(3 downto 0); speak:out std_logic);end alert1;architecture fun of alert1
17、 issignal count:std_logic_vector(1 downto 0);signal count1:std_logic_vector(1 downto 0);beginspeaker:process(clk)beginspeak=10)thencount1=00;else count1=count1+1;end if;else count1=00;end if;end if;end process speaker;end fun;其功能仿真圖像為:報警二相應程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_log
18、ic_unsigned.all;entity alert2 isport(lin,shut:in std_logic; speaker,led:out std_logic);end alert2;architecture fun of alert2 isbegin process(shut,lin) begin if(lin=1 and shut=0)then speaker=1;led=1; elsif(shut=1)then speaker=0;led=0; end if;end process;end fun;其相應功能仿真圖像為:根據(jù)圖像可知,當?shù)褂嫊r計到0時,且開關(guān)處于低電平時,開始
19、報警,即蜂鳴器和發(fā)光二極管處于高電平,開始工作;當控制開關(guān)處于高電平時,蜂鳴器和紅色發(fā)光二極管不再工作。4. 數(shù)碼顯示模塊。該模塊由分頻器模塊、數(shù)碼管選擇控制模塊、3_8譯碼器模塊和數(shù)碼管模塊組成。4.1 分頻器模塊:分頻器實際上是一個計數(shù)器,當計數(shù)到預設時間時,輸出電平發(fā)生一個高低變化,這樣就得到了所需要的頻率。clk_in接試驗箱50mhz晶振。其符號如右圖。分頻器模塊程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div_clk isport(clk_in:in st
20、d_logic; div_out:out std_logic);end div_clk;architecture a of div_clk issignal fre_n:integer range 0 to 100000;signal clk_tmp:std_logic;begindiv_out=99999 thenfre_n=0;clk_tmp=not clk_tmp;elsefre_n=fre_n+1;end if;end if;end process;end a;其功能仿真圖像為:時序仿真分析:當脈沖計到一定值時,div_out發(fā)生一個電平變化。4.2 數(shù)碼管選擇控制模塊:sel 1.0
21、端是數(shù)碼管的位選端,選擇哪個數(shù)碼管亮,本課題需要選擇三個數(shù)碼管;daout3.0控制數(shù)碼管段選,控制數(shù)碼管顯示0到9十個數(shù)字,sw3.0 gw3.0 bw3.0為三個4位二進制數(shù),輸入的是要顯示三位十進制數(shù)的每位二進制編碼。數(shù)碼管選擇控制模塊程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all; entity seltime0 isport(clk1,reset:in std_logic; sw,gw,bw:in std_logic_v
22、ector(3 downto 0); daout:out std_logic_vector(3 downto 0); sel:out std_logic_vector(1 downto 0);end seltime0;architecture fun of seltime0 issignal count:std_logic_vector(1 downto 0);beginsel=count;process(clk1,reset)beginif(reset=0)thencount=10)thencount=00;elsecountdaoutdaoutdaout=bw(3 downto 0);en
23、d case;end process;end fun;其時序仿真波形為:sel輸出為00時第一個數(shù)碼管亮顯示預置的個位數(shù);sel輸出為01時第二個數(shù)碼管亮顯示預置的十位數(shù);sel輸出為10時第三個數(shù)碼管亮顯示預置的百位數(shù);循環(huán)顯示??芍抡鎴D結(jié)果正確。4. 3 3_8譯碼器模塊:譯碼器電路是控制實驗箱8個數(shù)碼管,控制數(shù)碼管的亮滅。sel=0時第一個數(shù)碼管亮;sel=1時第二個數(shù)碼管亮;sel=2時第三個數(shù)碼管亮。其符號如右圖所示。3_8譯碼器(decode3_8)程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_uns
24、igned.all;entity decode2_4 isport(sel:in std_logic_vector(1 downto 0); q:out std_logic_vector(7 downto 0);end decode2_4;architecture a of decode2_4 isbeginq=11111110when sel=0 else 11111101when sel=1 else 11111011when sel=2 else 11111111; end a;3_8譯碼器時序圖如下:時序仿真分析:當sel=00時,選擇了第一個數(shù)碼管亮,輸出為11111110;當 se
25、l=10時,選擇了第三個數(shù)碼管亮,輸出為11111011;當sel=01時,選擇了第二個數(shù)碼管,輸出為11111101。4.4 數(shù)碼管段選模塊:輸入端num3.0為要編譯0到9十進制數(shù)的二進制編碼,輸出對應到數(shù)碼管顯示。數(shù)碼管段選模塊程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity deled isport(num:in std_logic_vector(3 downto 0); led:out std_logic_vector(6 downto 0);end deled;arc
26、hitecture fun of deled isbeginled=1111110when num=0000else0110000when num=0001else1101101when num=0010else1111001when num=0011else0110011when num=0100else1011011when num=0101else1011111when num=0110else1110000when num=0111else1111111when num=1000else1111011when num=1001else1110111when num=1010else00
27、11111when num=1011else1001110when num=1100else0111101when num=1101else1001111when num=1110else1000111when num=1111;end fun;時序仿真圖如下:時序仿真分析:圖中顯示了從9到0的數(shù)碼管對應狀態(tài),如下: 1111110when num=0000 0110000when num=0001 1101101when num=0010 1111001when num=0011 0110011when num=0100 1011011when num=0101 1011111when nu
28、m=0110 1110000when num=0111 1111111when num=1000 1111011when num=1001仿真結(jié)果正確。五、總體設計電路圖1. 整體工作情況:當分別置setgw、setsw、setbw為高電平時,通過coclk輸入端口將分別給個位、十位、百位進行異步置數(shù)。當通過輸入端clk輸入秒脈沖時,個位、十位、百位將按照預定的規(guī)則進行減法運算,即180秒之內(nèi)的倒計時。當?shù)褂嫊r到整十秒時報警一發(fā)出蜂鳴聲進行報時,當?shù)褂嫊r至0時倒計時結(jié)束,報警二發(fā)出蜂鳴聲以及發(fā)光二極管發(fā)光。此時可以通過開關(guān)shutalert關(guān)閉報警系統(tǒng)。同時,數(shù)碼管將持續(xù)顯示000,直至斷電或
29、者重新置數(shù)。當摁下摁鈕reset時,系統(tǒng)將進行異步清零。2. 連接關(guān)系:預置模塊分別連接個位、十位、百位進行預置,個位、十位、百位的輸出均接入數(shù)碼管選擇控制端的輸入端,用以選擇輸出這三個數(shù)位上的數(shù)。它們的輸出端還將接入個位的輸出端,以控制其是否進行減法(倒計時)運算。個位的借位輸出端接十位的clk觸發(fā)端,它的輸出端還將控制報警一的工作狀態(tài)。十位的借位輸出端接百位的clk觸發(fā)端,控制百位的減法運算。reset鍵分別接入個位、十位、百位和數(shù)碼管選擇控制端,可進行異步清零。下圖為總體原理圖??傮w原理圖3. 管腳分布圖如下:在eda實驗箱上驗證設計電路的功能,外圍接口電路為io5與蜂鳴器接口相連,io3與io_clk相連,io9與一個紅色發(fā)光二極管相連。在多次調(diào)試和修改下,功能已趨于完善,與預定的功能已基本一致。以下為部分截圖??傮w功能仿真圖:根據(jù)圖像可知,通過控制置數(shù)端,可分別置數(shù)給各位、十位、百位,由置得的數(shù)開始倒計時。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版門窗行業(yè)智能化升級改造合同3篇
- 2025年度模板木枋出口業(yè)務合同模板3篇
- 二零二五版借貸房屋買賣合同解除與終止合同4篇
- 美容院美容培訓學校二零二五年度師資引進合同4篇
- 二零二五年度口罩生產(chǎn)設備居間引進合同范本3篇
- 二零二五年度品牌疫情防控物資采購與配送服務合同規(guī)范4篇
- 二零二五年度插畫版權(quán)轉(zhuǎn)讓及衍生品開發(fā)合同
- 二零二五年度外匯貸款貸前調(diào)查合同范本
- 二零二五年度圖片版權(quán)交易下載服務協(xié)議
- 2025年建筑工程施工合同合同履行中的變更與補充協(xié)議2篇
- 2025-2030年中國草莓市場競爭格局及發(fā)展趨勢分析報告
- 第二章《有理數(shù)的運算》單元備課教學實錄2024-2025學年人教版數(shù)學七年級上冊
- 華為智慧園區(qū)解決方案介紹
- 奕成玻璃基板先進封裝中試線項目環(huán)評報告表
- 廣西壯族自治區(qū)房屋建筑和市政基礎(chǔ)設施全過程工程咨詢服務招標文件范本(2020年版)修訂版
- 人教版八年級英語上冊期末專項復習-完形填空和閱讀理解(含答案)
- 2024新版有限空間作業(yè)安全大培訓
- GB/T 44304-2024精細陶瓷室溫斷裂阻力試驗方法壓痕(IF)法
- 年度董事會工作計劃
- 《退休不褪色余熱亦生輝》學校退休教師歡送會
- 02R112拱頂油罐圖集
評論
0/150
提交評論