三分鐘可編程倒計(jì)時(shí)報(bào)警器課程設(shè)計(jì)_第1頁
三分鐘可編程倒計(jì)時(shí)報(bào)警器課程設(shè)計(jì)_第2頁
三分鐘可編程倒計(jì)時(shí)報(bào)警器課程設(shè)計(jì)_第3頁
三分鐘可編程倒計(jì)時(shí)報(bào)警器課程設(shè)計(jì)_第4頁
三分鐘可編程倒計(jì)時(shí)報(bào)警器課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、電子課程設(shè)計(jì) -三分鐘可編程倒計(jì)時(shí)報(bào)警器 目 錄一、設(shè)計(jì)任務(wù)與要求 2二、總體框圖 2三、選擇器件 3四、功能模塊41.預(yù)置數(shù)模塊42.倒計(jì)時(shí)模塊52.1 個(gè)位模塊 52.2 十位模塊 72.3 百位模塊 93.報(bào)警模塊 104.數(shù)碼顯示模塊134.1分頻器模塊134.2數(shù)碼管選擇控制模塊144.3 3_8譯碼器模塊 164.4 數(shù)碼管段選模塊17 五、總體設(shè)計(jì)電路圖 19六、心得與總結(jié) 22三分鐘可編程倒計(jì)時(shí)報(bào)警器一、 設(shè)計(jì)任務(wù)與要求設(shè)計(jì)任務(wù):三分鐘可編程倒計(jì)時(shí)報(bào)警器設(shè)計(jì)要求:1.具有可編程及報(bào)時(shí)的功能,并能夠隨時(shí)顯示計(jì)數(shù)結(jié)果。 2.設(shè)有外部操作開關(guān),控制計(jì)數(shù)器實(shí)現(xiàn)直接置數(shù)、啟動(dòng)和清零等操作

2、。 3.計(jì)數(shù)器可設(shè)置為03分鐘(即180秒)內(nèi)任意時(shí)段的倒計(jì)時(shí)。 4.計(jì)數(shù)器遞減計(jì)數(shù)到零時(shí),數(shù)碼顯示管不能滅燈,同時(shí)發(fā)出持續(xù)發(fā)光報(bào)警信號(hào)。二、 總體框圖倒計(jì)時(shí)預(yù)置數(shù)數(shù)碼顯示報(bào)警預(yù)置數(shù)模塊:在開啟相應(yīng)開關(guān)(setgw、setsw、setbw)后,通過來脈沖計(jì)數(shù)分別給個(gè)位十位百位預(yù)置數(shù),使得在啟動(dòng)開關(guān)后從此數(shù)開始倒計(jì)時(shí)。倒計(jì)時(shí)模塊:在啟動(dòng)開關(guān)(clk)后,從預(yù)置的數(shù)開始倒計(jì)時(shí),倒計(jì)到0時(shí),倒計(jì)時(shí)結(jié)束,此時(shí)數(shù)碼顯示管持續(xù)不滅燈。另外,可在任意時(shí)刻通過控制摁鈕實(shí)現(xiàn)清零。報(bào)警模塊:每倒計(jì)到整十秒時(shí),發(fā)出一次報(bào)警。同時(shí),當(dāng)?shù)褂?jì)時(shí)結(jié)束時(shí)會(huì)再次發(fā)出報(bào)警聲,以及報(bào)警燈亮起。此時(shí),可通過開關(guān)(shutalert)

3、關(guān)閉報(bào)警燈,報(bào)警聲,以停止報(bào)警。數(shù)碼顯示模塊:通過對(duì)輸入信息的判斷,選擇在哪個(gè)數(shù)碼管上顯示哪個(gè)圖形符號(hào)(即數(shù)字)。倒計(jì)時(shí)模塊 數(shù)碼顯示模塊個(gè)位十位百位數(shù)碼管 選擇控制38譯碼器數(shù)碼管段選分頻器 報(bào)警模塊 每10秒報(bào)時(shí)一次計(jì)時(shí)結(jié)束報(bào)警方案一:預(yù)置數(shù)部分,可以借助quartus ii提供的芯片(如:74ls192,74ls190,74ls160等)完成計(jì)數(shù)功能。倒計(jì)時(shí)部分,可以借助quartus ii提供的芯片(如:74ls192等)完成有借位的減法運(yùn)算。但操作較為繁瑣,涉及到的元器件較多,涉及到的問題可能會(huì)有芯片是否有所損壞使得設(shè)計(jì)結(jié)果不夠理想。 方案二:完全用vhdl語言編寫程序下指令,實(shí)驗(yàn)數(shù)

4、據(jù)較為準(zhǔn)確,設(shè)計(jì)結(jié)果較為理想,但思考量較大,思維過于復(fù)雜。方案三:將完整的原理圖按照功能需求分成幾個(gè)不同模塊,將各個(gè)部分在繪制原理圖或者用vhdl語言編寫程序后進(jìn)行編譯制成可供使用的模塊,再借助各個(gè)模塊繪制總的原理圖。這樣,總原理圖清晰明了,各個(gè)模塊的功能清晰,且設(shè)計(jì)結(jié)果較為理想。故選擇此方案。三、選擇器件eda實(shí)驗(yàn)箱所使用到的芯片為altera公司的cyclone系列fpga芯片ep1c12q240c8n。外圍接口電路為io5與蜂鳴器接口相連,io3與io_clk相連,io9與一個(gè)紅色發(fā)光二極管相連。led燈處于高電平,所以給低電平led燈亮;數(shù)碼管共陰,給高電平數(shù)碼管亮;數(shù)碼管段選為低電平

5、有效。實(shí)驗(yàn)板上的按鍵常處于高電平,按下為低電平。四、功能模塊1.預(yù)置數(shù)模塊。當(dāng)遇到上升沿后輸出將自動(dòng)加1。若輸出是9再遇到上升沿時(shí)將自動(dòng)變?yōu)?。符號(hào)如右圖。 相應(yīng)程序如下: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ù)圖像可知,在每次遇到上升沿后輸出將自動(dòng)加1。若輸出是9再遇到上升沿時(shí)將自動(dòng)變?yōu)?。2.倒計(jì)時(shí)模塊。此模塊由個(gè)位、十位、百位三部分組成。2.1 個(gè)位模塊:時(shí)鐘信號(hào)與個(gè)位模塊相連,當(dāng)時(shí)鐘信號(hào)給出上升沿時(shí),個(gè)位將實(shí)現(xiàn)減1的功能,即每次遇到

7、上升沿都將減1,同時(shí)借位輸出端為低電平,若個(gè)位為0時(shí),在遇到上升沿后將自動(dòng)變?yōu)?,同時(shí)借位輸出端為高電平。在個(gè)位、十位、百位均為0時(shí),無論是否有時(shí)鐘信號(hào)都不再進(jìn)行減法運(yùn)算。當(dāng)個(gè)位置數(shù)端撥向高電平時(shí),預(yù)置數(shù)中的數(shù)將給個(gè)位置數(shù)。另外,當(dāng)摁下清零鍵時(shí),個(gè)位將自動(dòng)清零。其符號(hào)如右圖。相應(yīng)程序?yàn)椋簂ibrary 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ù)圖像可知,當(dāng)將setgww鍵置為高電平時(shí),可對(duì)個(gè)位進(jìn)行異步置數(shù),使

10、得輸出為預(yù)置數(shù)模塊中對(duì)個(gè)位輸出的數(shù)(cogw)。當(dāng)?shù)褂?jì)時(shí)到0(fgw,fsw,fbw=0)時(shí)停止計(jì)時(shí),并發(fā)送信號(hào)lout(用于觸發(fā)報(bào)警)。其他情況時(shí),當(dāng)遇到上升沿時(shí)立即減1,借位輸出端為低電平,如果輸出為0,且又遇到上升沿,則輸出為9,同時(shí)借位輸出端產(chǎn)生上升沿,觸發(fā)十位進(jìn)行減法運(yùn)算。2.2 十位模塊:十位的上升沿由個(gè)位的借位輸出端提供。當(dāng)遇到上升沿時(shí),十位將實(shí)現(xiàn)減1的功能,即每次遇到上升沿都將減1,同時(shí)借位輸出端為低電平。若十位為0時(shí),在遇到上升沿后將自動(dòng)變?yōu)?,同時(shí)借位輸出端產(chǎn)生上升沿,觸發(fā)百位進(jìn)行減法運(yùn)算。當(dāng)setsw鍵撥向高電平時(shí),將實(shí)現(xiàn)對(duì)十位的置數(shù)。當(dāng)摁下reset鍵時(shí),實(shí)現(xiàn)對(duì)十位的清

11、零。其符號(hào)如左圖所示。以下為該模塊相應(yīng)程序: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;其相應(yīng)功能仿真圖如下:根據(jù)圖像可知,當(dāng)setsw鍵撥向高電平時(shí),實(shí)現(xiàn)對(duì)十位的異步置數(shù)。當(dāng)

13、reset鍵為低電平時(shí),實(shí)現(xiàn)對(duì)十位的異步清零。其他情況時(shí),當(dāng)遇到上升沿時(shí)立即減1,借位輸出端為低電平,如果輸出為0,且又遇到上升沿,則輸出為9,同時(shí)借位輸出端為高電平。2.3 百位模塊:百位的上升沿由十位的借位輸出端提供。當(dāng)遇到上升沿時(shí),十位將實(shí)現(xiàn)減1的功能,即每次遇到上升沿都將減1,如果輸出為0,且又遇到上升沿,則輸出為1。當(dāng)setbw鍵撥向高電平時(shí),實(shí)現(xiàn)對(duì)百位的置數(shù)。當(dāng)reset鍵撥向低電平時(shí)時(shí),實(shí)現(xiàn)對(duì)百位的清零。其符號(hào)如右圖所示。相應(yīng)模塊的程序如下: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;相應(yīng)功能仿真圖如下: 根據(jù)圖像可知,當(dāng)setbw鍵撥向高電平時(shí),實(shí)現(xiàn)對(duì)百位的異步置數(shù)。當(dāng)reset鍵為低電平時(shí),實(shí)現(xiàn)對(duì)百位的異步清零。其他情況時(shí),當(dāng)遇到上升沿時(shí)立即減1,如果輸出為0,且又遇到上升沿,則輸出為1。3. 報(bào)警模塊。報(bào)警模塊由兩部分組成,報(bào)警一:每整十秒報(bào)警(蜂鳴器工作)一次;報(bào)警二:當(dāng)?shù)褂?jì)時(shí)到0時(shí)

16、,即個(gè)位、十位、百位輸出均為0時(shí),報(bào)警(蜂鳴器和紅色發(fā)光二極管均工作)一次,此時(shí)可通過控制開關(guān)關(guān)閉報(bào)警,同時(shí)維持個(gè)位、十位、百位輸出均為0的狀態(tài)。其符號(hào)分別為: 報(bào)警一相應(yīng)程序: 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;其功能仿真圖像為:報(bào)警二相應(yīng)程序: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;其相應(yīng)功能仿真圖像為:根據(jù)圖像可知,當(dāng)?shù)褂?jì)時(shí)計(jì)到0時(shí),且開關(guān)處于低電平時(shí),開始

19、報(bào)警,即蜂鳴器和發(fā)光二極管處于高電平,開始工作;當(dāng)控制開關(guān)處于高電平時(shí),蜂鳴器和紅色發(fā)光二極管不再工作。4. 數(shù)碼顯示模塊。該模塊由分頻器模塊、數(shù)碼管選擇控制模塊、3_8譯碼器模塊和數(shù)碼管模塊組成。4.1 分頻器模塊:分頻器實(shí)際上是一個(gè)計(jì)數(shù)器,當(dāng)計(jì)數(shù)到預(yù)設(shè)時(shí)間時(shí),輸出電平發(fā)生一個(gè)高低變化,這樣就得到了所需要的頻率。clk_in接試驗(yàn)箱50mhz晶振。其符號(hào)如右圖。分頻器模塊程序如下: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;其功能仿真圖像為:時(shí)序仿真分析:當(dāng)脈沖計(jì)到一定值時(shí),div_out發(fā)生一個(gè)電平變化。4.2 數(shù)碼管選擇控制模塊:sel 1.0

21、端是數(shù)碼管的位選端,選擇哪個(gè)數(shù)碼管亮,本課題需要選擇三個(gè)數(shù)碼管;daout3.0控制數(shù)碼管段選,控制數(shù)碼管顯示0到9十個(gè)數(shù)字,sw3.0 gw3.0 bw3.0為三個(gè)4位二進(jìn)制數(shù),輸入的是要顯示三位十進(jìn)制數(shù)的每位二進(jìn)制編碼。數(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;其時(shí)序仿真波形為:sel輸出為00時(shí)第一個(gè)數(shù)碼管亮顯示預(yù)置的個(gè)位數(shù);sel輸出為01時(shí)第二個(gè)數(shù)碼管亮顯示預(yù)置的十位數(shù);sel輸出為10時(shí)第三個(gè)數(shù)碼管亮顯示預(yù)置的百位數(shù);循環(huán)顯示??芍抡鎴D結(jié)果正確。4. 3 3_8譯碼器模塊:譯碼器電路是控制實(shí)驗(yàn)箱8個(gè)數(shù)碼管,控制數(shù)碼管的亮滅。sel=0時(shí)第一個(gè)數(shù)碼管亮;sel=1時(shí)第二個(gè)數(shù)碼管亮;sel=2時(shí)第三個(gè)數(shù)碼管亮。其符號(hào)如右圖所示。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譯碼器時(shí)序圖如下:時(shí)序仿真分析:當(dāng)sel=00時(shí),選擇了第一個(gè)數(shù)碼管亮,輸出為11111110;當(dāng) se

25、l=10時(shí),選擇了第三個(gè)數(shù)碼管亮,輸出為11111011;當(dāng)sel=01時(shí),選擇了第二個(gè)數(shù)碼管,輸出為11111101。4.4 數(shù)碼管段選模塊:輸入端num3.0為要編譯0到9十進(jìn)制數(shù)的二進(jìn)制編碼,輸出對(duì)應(yīng)到數(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;時(shí)序仿真圖如下:時(shí)序仿真分析:圖中顯示了從9到0的數(shù)碼管對(duì)應(yīng)狀態(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é)果正確。五、總體設(shè)計(jì)電路圖1. 整體工作情況:當(dāng)分別置setgw、setsw、setbw為高電平時(shí),通過coclk輸入端口將分別給個(gè)位、十位、百位進(jìn)行異步置數(shù)。當(dāng)通過輸入端clk輸入秒脈沖時(shí),個(gè)位、十位、百位將按照預(yù)定的規(guī)則進(jìn)行減法運(yùn)算,即180秒之內(nèi)的倒計(jì)時(shí)。當(dāng)?shù)褂?jì)時(shí)到整十秒時(shí)報(bào)警一發(fā)出蜂鳴聲進(jìn)行報(bào)時(shí),當(dāng)?shù)褂?jì)時(shí)至0時(shí)倒計(jì)時(shí)結(jié)束,報(bào)警二發(fā)出蜂鳴聲以及發(fā)光二極管發(fā)光。此時(shí)可以通過開關(guān)shutalert關(guān)閉報(bào)警系統(tǒng)。同時(shí),數(shù)碼管將持續(xù)顯示000,直至斷電或

29、者重新置數(shù)。當(dāng)摁下摁鈕reset時(shí),系統(tǒng)將進(jìn)行異步清零。2. 連接關(guān)系:預(yù)置模塊分別連接個(gè)位、十位、百位進(jìn)行預(yù)置,個(gè)位、十位、百位的輸出均接入數(shù)碼管選擇控制端的輸入端,用以選擇輸出這三個(gè)數(shù)位上的數(shù)。它們的輸出端還將接入個(gè)位的輸出端,以控制其是否進(jìn)行減法(倒計(jì)時(shí))運(yùn)算。個(gè)位的借位輸出端接十位的clk觸發(fā)端,它的輸出端還將控制報(bào)警一的工作狀態(tài)。十位的借位輸出端接百位的clk觸發(fā)端,控制百位的減法運(yùn)算。reset鍵分別接入個(gè)位、十位、百位和數(shù)碼管選擇控制端,可進(jìn)行異步清零。下圖為總體原理圖??傮w原理圖3. 管腳分布圖如下:在eda實(shí)驗(yàn)箱上驗(yàn)證設(shè)計(jì)電路的功能,外圍接口電路為io5與蜂鳴器接口相連,io3與io_clk相連,io9與一個(gè)紅色發(fā)光二極管相連。在多次調(diào)試和修改下,功能已趨于完善,與預(yù)定的功能已基本一致。以下為部分截圖??傮w功能仿真圖:根據(jù)圖像可知,通過控制置數(shù)端,可分別置數(shù)給各位、十位、百位,由置得的數(shù)開始倒計(jì)時(shí)。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論