版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于AT89C2051的電子鬧鐘設(shè)計(jì)電子鬧鐘的電路基本應(yīng)包括秒指示電路、時(shí)間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分。4.1電子鬧鐘的硬件系統(tǒng)框架電子鬧鐘的系統(tǒng)框架如圖4-1示。按鍵與按鈕電路復(fù)位等輔助電路位數(shù)碼管顯示電路鬧鈴聲光指示電路電源系統(tǒng)圖4-1時(shí)鐘系統(tǒng)電路原理框圖4.2電子鬧鐘電路的設(shè)計(jì)及原理電子鬧鐘電路的設(shè)計(jì)具體地說有:1.鬧鈴指示電路設(shè)計(jì);2.系統(tǒng)時(shí)鐘電路設(shè)計(jì);3.電子鬧鐘的顯示電路設(shè)計(jì);4.系統(tǒng)復(fù)位電路設(shè)計(jì)。以下分別討論:4.2.1鬧鈴指示電路的設(shè)計(jì)圖4-2 鬧鈴指示電路鬧鈴指示可以有聲或光兩種形式。本系統(tǒng)采用聲音指示,其電路如圖4-2所示。其關(guān)鍵元件是蜂鳴器。蜂鳴
2、器有無源和有源兩種,前者需要輸入聲音頻率信號(hào)才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可,元件內(nèi)部已封裝了音頻振蕩電路,在得電狀態(tài)下即起振發(fā)聲。給予本電路的特點(diǎn)及實(shí)現(xiàn)功能的要求,我們選用有源的蜂鳴器。4.2.2系統(tǒng)時(shí)鐘電路設(shè)計(jì)振蕩電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào)。單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2 。在芯片的外部有XTAL1和XTAL2之間跨接的晶體振蕩器和微調(diào)電容,共同構(gòu)成了一個(gè)穩(wěn)定的自激振蕩器。圖中的C1、C2電容起著系統(tǒng)時(shí)鐘頻率微調(diào)和穩(wěn)定的作用,因此,應(yīng)正確選擇參數(shù)(30±10 pF),并保證其對(duì)稱性。實(shí)驗(yàn)表明,這2
3、個(gè)電容元件對(duì)鬧鐘的±走時(shí)誤差有較大關(guān)系。圖4-3系統(tǒng)時(shí)鐘電路4.2.3 電子鬧鐘的顯示電路設(shè)計(jì)譯碼是編碼的逆過程,在編碼時(shí),每一種二進(jìn)制代碼狀態(tài)都賦予了特定的含義,即都表示了一個(gè)確定的信號(hào)或者對(duì)象。把代碼狀態(tài)的特定含義“翻譯”出來的過程叫做譯碼,實(shí)現(xiàn)譯碼操作的電路稱為譯碼器。本設(shè)計(jì)采用顯示譯碼器作為譯碼電路。在數(shù)字系統(tǒng)和裝置中,顯示器和譯碼器配合使用,或者直接利用譯碼器驅(qū)動(dòng)顯示器,這類譯碼器叫做顯示譯碼器。本設(shè)計(jì)采用74LS47譯碼電路。圖4-4 74LS47引腳圖中規(guī)模集成電路74LS47,是一種常用的七段顯示譯碼器,該電路的輸出為低電平有效,即輸出為0時(shí),對(duì)應(yīng)字段點(diǎn)亮;輸出為1時(shí)
4、對(duì)應(yīng)字段熄滅。該譯碼器能夠驅(qū)動(dòng)七段顯示器顯示015共16個(gè)數(shù)字的字形。輸入A3、A2、A1和A0接收4位二進(jìn)制碼,輸出Qa、Qb、Qc、Qd、Qe、Qf和Qg分別驅(qū)動(dòng)七段顯示器的a、b、c、d、e、f和g段。74LS47是輸出低電平有效的七段字形譯碼器,它在這里與數(shù)碼管配合使用。在數(shù)字鐘電路中,譯碼器的輸入信號(hào)就是計(jì)數(shù)器的輸出信號(hào),它的輸出端接至數(shù)碼管。計(jì)數(shù)器輸出的四位BCD碼經(jīng)譯碼后,變成某個(gè)十進(jìn)制數(shù)字對(duì)應(yīng)的控制電平,去驅(qū)動(dòng)數(shù)碼管各段發(fā)光,從而把該數(shù)字顯示出來。8421BCD碼譯碼器74LS47真值表見表4-1。由表可看出,74LS47的輸出為一組七位二進(jìn)制代碼,有效信號(hào)為低電平。而共陽極數(shù)
5、碼管,要求輸入為低電平,正好與74LS47的輸出電平極性相適配。不必另加反相器。部分引腳功能LT:試燈輸入,是為了檢查數(shù)碼管各段是否能正常發(fā)光而設(shè)置的。當(dāng)LT=0時(shí),無論輸入A3 ,A2 ,A1 ,A0為何種狀態(tài),譯碼器輸出均為低電平,若驅(qū)動(dòng)的數(shù)碼管正常,是顯示8。BI:滅燈輸入,是為控制多位數(shù)碼顯示的滅燈所設(shè)置的。BI=0時(shí)。不論LT和輸入A3 ,A2 ,A1,A0為何種狀態(tài),譯碼器輸出均為高電平,使共陽極7段數(shù)碼管熄滅。RBI:滅零輸入,它是為使不希望顯示的0熄滅而設(shè)定的。當(dāng)對(duì)每一位A3= A2 =A1 =A0=0時(shí),本應(yīng)顯示0,但是在RBI=0作用下,使譯碼器輸出全1。其結(jié)果和加入滅燈信
6、號(hào)的結(jié)果一樣,將0熄滅。 RBO:滅零輸出,它和滅燈輸入BI共用一端,兩者配合使用,可以實(shí)現(xiàn)多位數(shù)碼顯示的滅零控制。表 4-1 74LS47真值表字型輸入輸出NA4A3A2A1abcdefg000000000001100011001111200100010010300110000110401001001100501010100100601010100000701100001111810000000000910010000100最終的顯示部分電路圖如圖所示圖4-5 時(shí)鐘電路的顯示電路4.2.4系統(tǒng)復(fù)位電路的設(shè)計(jì)復(fù)位電路通常有:1)RC復(fù)位電路;2)專用µP監(jiān)控電路。本設(shè)計(jì)采用的是RC上
7、電復(fù)位電路。RC上電復(fù)位電路的實(shí)質(zhì)是一階充放電電路,系統(tǒng)上電時(shí)該電路提供有效的復(fù)位信號(hào)RST(高電平)直至系統(tǒng)電源穩(wěn)定后撤銷復(fù)位信號(hào)(低電平)。圖4-6C復(fù)位電路4.3電源設(shè)計(jì) 圖4-7鬧鐘的電源系統(tǒng)原理圖AT89C2051通常有12v和24v兩種型號(hào),對(duì)應(yīng)的時(shí)鐘頻率分別為12MHz和24MHz。考慮到交直流兩用的要求和三端穩(wěn)壓電路選用的方便,選擇工作電壓為5V。ST公司的7805三端穩(wěn)壓芯片最接近標(biāo)稱值(最大輸出電流為1.5A)。在設(shè)計(jì)中,必須保證7805的輸入電壓Vi和輸出電壓Vo滿足ViVo2.5V,否則失去穩(wěn)壓能力,從功耗角度,此壓差太大則增加7805本身功率消耗。因此,選為9V。交流
8、220V電壓經(jīng)TR1降壓后,經(jīng)BR1整流、C3和C6濾波及7805穩(wěn)壓后輸出。當(dāng)交流電源失電或失效時(shí),則自動(dòng)啟用電池組作為備用電源。電壓為6V的直流電源通過二極管作用。4.4電子鬧鐘硬件系統(tǒng)原理圖P3.0口接時(shí)+鍵,來控制顯示小時(shí)的設(shè)置。P3.0初始狀態(tài)為1,每按一次按鍵,此時(shí)顯示的時(shí)個(gè)位加1。P3.1口接分+鍵,來控制顯示分鐘的設(shè)置。P3.1初始狀態(tài)為1,每按一次按鍵,此時(shí)顯示的分個(gè)位加1。P3.2口接定時(shí)按鍵。在電子鐘正常走時(shí)狀態(tài)下,P3.2為高電平,按定時(shí)鍵,P3.2變?yōu)榈碗娖?,觸發(fā)定時(shí)系統(tǒng),此時(shí)可以設(shè)置鬧鈴時(shí)間,設(shè)置完成后再按確定/ 叫停鍵即可。P3.3口接12小時(shí)/24小時(shí)開關(guān),來根
9、據(jù)需求選擇合適的時(shí)間制式。未按開關(guān)時(shí),P3.3為高電平,此時(shí)為12小時(shí)制式;按下開關(guān),P3.3變?yōu)榈碗娖?,此時(shí)為24小時(shí)制式。P3.4口接蜂鳴器。P3.4初始狀態(tài)為1,此時(shí)蜂鳴器不響。當(dāng)?shù)竭_(dá)鬧鈴時(shí)間后P3.4置0,蜂鳴器發(fā)出警報(bào)。P3.5接秒指示。初始狀態(tài)為1,每走1s,P3.5取反,以此來進(jìn)行秒指示。圖4-8電子鬧鐘硬件系統(tǒng)電路原理圖圖4-9鬧鐘的電源系統(tǒng)原理圖5電子鬧鐘的軟件系統(tǒng)本設(shè)計(jì)主要由主模塊、基本顯示模塊、時(shí)間設(shè)置模塊、系統(tǒng)走時(shí)模塊以及鬧鈴判斷模塊等組成,下面依次進(jìn)行介紹:5.1 主模塊設(shè)計(jì)主模塊是系統(tǒng)軟件的主框架。結(jié)構(gòu)化程序設(shè)計(jì)一般有“自上而下”和“自下而上”兩種方式,基于本設(shè)計(jì)的
10、思路,我們采用“自上而下”的方法來設(shè)計(jì)程序?!白陨隙隆狈ǖ暮诵木褪侵骺蚣艿臉?gòu)建。它的合理與否關(guān)系到程序最終的功能的多少和性能的好壞。程序中,對(duì)于程序何時(shí)跳轉(zhuǎn)、程序何時(shí)調(diào)用,都要慎重安排。最終確定以下的順序:設(shè)置蜂鳴器,秒指示寄存器清零外部輸出置1顯示初狀態(tài)0000設(shè)置當(dāng)前時(shí)間啟動(dòng)走時(shí)CPU初始化P3.2=0N設(shè)置鬧鈴時(shí)間啟動(dòng)走時(shí)設(shè)置鬧鈴標(biāo)志清零,蜂鳴器報(bào)警,鬧鈴存儲(chǔ)清零延時(shí)鬧鈴小時(shí)到了嗎?鬧鈴分到了嗎?Y 顯示刷新NN圖5-1 主流程圖單片機(jī)數(shù)據(jù)緩存單元分配如下:走時(shí)時(shí)間存儲(chǔ)單元:R4、R5、R6定時(shí)時(shí)間存儲(chǔ)單元:R0、R1分別存儲(chǔ)時(shí)鐘時(shí)間分位、時(shí)位鬧鈴時(shí)間存儲(chǔ)單元:38H、39H分別存儲(chǔ)第
11、一次鬧鐘時(shí)間分位、時(shí)位,40H、41H分別存儲(chǔ)第二次鬧鐘時(shí)間分位、時(shí)位。主程序清單如下:ORG 00H ;開始地址AJMP START1 ;跳轉(zhuǎn)到開始程序ORG 03H ;外部中斷0入口地址LJMP CLOCK1 ;跳轉(zhuǎn)到鬧鐘設(shè)置程序START1:MOV R0, #00H ;分鐘數(shù)據(jù)BCD碼MOV R1, #00H ;小時(shí)數(shù)據(jù)BCD碼SETB P3.4 ;關(guān)閉蜂鳴器SETB P3.5 ;秒指示置1SETB P3.0 ;按鍵初始化SETB P3.1SETB P3.2SETB P3.7START:MOV A, R0 ;更新顯示LCALL XSMOV A, R1LCALL XS15.2 基本顯示模塊
12、AT89C2051中 P1為輸出口,低四位P1.0-P1.3為要顯示的數(shù)據(jù)的二進(jìn)制碼,高四位P1.4-P1.7為片選口,用來選擇具體令哪一個(gè)數(shù)碼管亮。例如想要顯示時(shí)間10點(diǎn)51 分。先顯示分位,51經(jīng)BCD碼調(diào)整后變?yōu)?1010001,存入累加器A中,累加器A先壓棧,目的為保護(hù)原累加器A中內(nèi)容,累加器A與00001111相與變?yōu)?0000001,此操作意為保護(hù)低位即要顯示的數(shù)據(jù)。此時(shí)00000001與10000000相加為10000001,即最終P1口輸出的數(shù)據(jù)位10000001.高四位1000控制數(shù)碼管的顯示,P1.7、P1.6、P1.5、P1.4分別控制第四個(gè)、第三個(gè)、第二個(gè)、第一個(gè)數(shù)碼管
13、的亮滅,此時(shí)P1.7為高電平,所以第四個(gè)數(shù)碼管亮,其余滅。低四位0001送入74LS47,74LS47輸入為0001,譯碼后輸出信號(hào)為1001111,數(shù)碼管為共陽極相接,所以最終為第四個(gè)數(shù)碼管顯示為1,即分個(gè)位為1。釋放累加器A,此時(shí)交換累加器A中高半字節(jié)與低半字節(jié)的內(nèi)容,最終內(nèi)容變?yōu)?0010101,再同00001111相與,然后同00100000相加,最終結(jié)果為00100101。經(jīng)片選、74LS47譯碼后,最終第三個(gè)數(shù)碼管顯示為5,即分十位為5。時(shí)個(gè)位與時(shí)十位的顯示原理與分個(gè)位顯示原理相似,唯一不同之處是時(shí)個(gè)位顯示中與累加器A相加的為00100000,時(shí)十位顯示中與累加器A相加的為0001
14、0000,即第一個(gè)數(shù)碼管的片選信號(hào)為0001,第二個(gè)數(shù)碼管的片選信號(hào)為0010。每一個(gè)數(shù)碼管顯示一個(gè)數(shù),調(diào)用延時(shí),四個(gè)數(shù)碼管循環(huán)點(diǎn)亮,由于調(diào)用延時(shí)時(shí)間為20ms,利用人的視覺暫留生理特性,所以最終看到的為1051,表示10點(diǎn)51分。顯示模塊程序清單如下:XS:PUSH ACC ;進(jìn)棧ANL A,#0FH ;保護(hù)低位MOV R3, #80H ;設(shè)置片選信號(hào)ADD A, R3 ;加片選信號(hào) DA A ;累加器內(nèi)容十進(jìn)制調(diào)整MOV P1, A ;輸出數(shù)據(jù)LCALL FILTER ;調(diào)用延時(shí)子程序POP ACC ;出棧SWAP A ;累加器交換高半字節(jié)與低半字節(jié)內(nèi)容ANL A, #0FH ;保護(hù)低位M
15、OV R3, #40H ;設(shè)置片選信號(hào)ADD A, R3 ;加片選信號(hào)MOV P1, A ;輸出數(shù)據(jù)LCALL FILTERRETXS1:PUSH ACC ;進(jìn)棧ANL A, #0FH ; 保護(hù)低位MOV R3, #20H ;設(shè)置片選信號(hào)ADD A, R3 ;加片選信號(hào)MOV P1, A ;輸出數(shù)據(jù)LCALL FILTERPOP ACC ;出棧SWAP AANL A, #0FHMOV R3, #10H ;設(shè)置片選信號(hào)ADD A, R3MOV P1, ALCALL FILTERRET5.3 時(shí)間設(shè)定模塊初始狀態(tài)為0000,用累加器存儲(chǔ)總的按鍵次數(shù),累加器內(nèi)容給R1,從AT89C2051P1口輸出
16、,高四位進(jìn)行片選,低四位送入74ls47經(jīng)譯碼后輸出,顯示其間有一個(gè)上下線的判斷。具體如下:小時(shí)的設(shè)置:每按一次時(shí)+鍵,R1內(nèi)容自動(dòng)加1,把R1內(nèi)容給A。A進(jìn)行BCD調(diào)整,判斷P3.3的狀態(tài),若P3.3等于0,則系統(tǒng)為24小時(shí)制式,此時(shí)比較A中內(nèi)容是否滿24,滿24后A清零,最終輸出顯示,表示時(shí)十位、時(shí)個(gè)位為00。否則直接輸出顯示。流程圖如下:圖5-2 小時(shí)的設(shè)置的流程圖時(shí)+鍵為0時(shí)位寄存器加1時(shí)數(shù)據(jù)BCD碼調(diào)整顯示時(shí)清零顯示判斷P3.3=1更新顯示NNY滿13滿24顯示時(shí)置1顯示NYYN分的設(shè)置:刷新顯示,每按一次分+鍵R0內(nèi)容自動(dòng)加1,把R0內(nèi)容給A。A進(jìn)行BCD調(diào)整,此時(shí)比較A中內(nèi)容是否
17、滿60,滿60后A清零,然后輸出顯示,表示分十位、分個(gè)位為00,否則直接輸出顯示。流程圖如下所示:按分+鍵,P3.1為0分滿60分顯示顯示分位寄存器加1分?jǐn)?shù)據(jù)BCD碼調(diào)整分清零YN刷新顯示N 圖5-3 分鐘設(shè)置的流程圖時(shí)間設(shè)置模塊的程序清單如下:MADD:JB P3.1, HADD ;判斷分+1按鍵是否操作 JNB P3.1, $ ;等待釋放按鍵 INC R0 ;內(nèi)容自加1MM1:MOV A, R0 ;設(shè)定分 ADD A, #00HDA A ;十進(jìn)制調(diào)整 CJNE A, #60H, M1 MOV A, #00HM1:MOV R0, ALCALL XSMOV A, R1LCALL XS1HADD
18、:MOV A, R0 ;更新顯示LCALL XSMOV A, R1LCALL XS1JB P3.0, OK ;設(shè)置小時(shí)數(shù)據(jù)JNB P3.0, $INC R1HH1:MOV A, R1ADD A, #00HDA AJB P3.3, HHH ;制式判斷CJNE A, #24H, H1 ;24小時(shí)制式MOV A, #00HAJMP H1HHH:CJNE A, #13H,H1 ;12小時(shí)制式MOV A, #01HH1:MOV R1, A ;更新顯示LCALL XS1MOV A, R0LCALL XS5.4 系統(tǒng)走時(shí)模塊更新顯示,調(diào)用基本循環(huán)單元,基本循環(huán)單元計(jì)時(shí)時(shí)間為1s,滿1s P3.5取反,進(jìn)行秒
19、指示,并進(jìn)行鬧鈴判斷。滿60秒分加1并進(jìn)行鬧鈴判斷,滿60分時(shí)加1,分清零并進(jìn)行鬧鈴判斷,BCD調(diào)整并輸出顯示。12小時(shí)制式時(shí),時(shí)滿13則時(shí)賦新值為1,24小時(shí)制時(shí),時(shí)滿24則賦新值為0并輸出顯示。流程圖如下:設(shè)置初值設(shè)置外部中斷開啟定時(shí)器設(shè)置定時(shí)/計(jì)時(shí)工作方式鬧鐘判斷N更新顯示秒指示取反鬧鐘判斷顯示分位寄存器加1BCD碼調(diào)整顯示到60分鬧鈴判斷Y小時(shí)賦新值#01到60S了嗎?時(shí)位寄存器加1時(shí)數(shù)據(jù)BCD碼調(diào)整時(shí)賦#00NY滿13小時(shí)3滿24小時(shí)顯示NYYN判斷P3.3=1NY圖5-4 系統(tǒng)走時(shí)模塊流程圖系統(tǒng)走時(shí)模塊程序的清單:TIME: MOV A, R0 ;更新顯示LCALL XS MOV
20、A, R1LCALL XS1 DJNZ R4, LOOP ;鬧鈴判斷CPL P3.5 ;秒指示取反MOV R4, #35 ;設(shè)定秒指示時(shí)間DJNZ R5, LOOP ;鬧鈴判斷INC R0MOV A, R0ADD A, #00HDA ACJNE A, #60H,TT1 ; 分不滿60分鐘,跳轉(zhuǎn)MOV A, #00H ;分滿60分清零TT1:MOV R0, AMOV A, R0LCALL XS ;刷新顯示MOV A, R1LCALL XS1MOV R5, #60DJNZ R6, LOOP ;鬧鈴判斷INC R1MOV A, R1ADD A, #00HDA AJB P3.3, TTT ;判斷制式的
21、選擇CJNE A, #24H, TT2 ;24小時(shí)制與24比較MOV A, #00HAJMP TT2TTT:CJNE A, #13H, TT2 ;12小時(shí)與13比較MOV A, #01HTT2:MOV R1, AMOV A, R0LCALL XS ;刷新顯示MOV A, R1LCALL XS1MOV R6, #605.5 鬧鈴判斷模塊設(shè)置鬧鈴時(shí)間后正常走時(shí),時(shí)間每變化一秒都要進(jìn)行鬧鈴判斷。當(dāng)前小時(shí)與鬧鈴小時(shí)相同時(shí)進(jìn)行分鐘判斷不同時(shí)正常走時(shí)。當(dāng)前分鐘與鬧鈴分鐘相同時(shí)則啟動(dòng)鬧鈴不同時(shí)正常走時(shí)。鬧鈴響時(shí)按叫停鍵后鬧鈴?fù)V梗鎯?chǔ)鬧鈴時(shí)間的單元自動(dòng)清零時(shí)鐘正常走時(shí)。流程圖如下所示: CLR P3.4蜂鳴
22、器響更新顯示判斷小時(shí)計(jì)時(shí)是否設(shè)定鬧鈴時(shí)間計(jì)時(shí)計(jì)時(shí)計(jì)時(shí)判斷分蜂鳴器不響存儲(chǔ)鬧鈴時(shí)間單元清零,F(xiàn)0=0YNNNYY圖5-5鬧鐘提醒功能流程圖鬧鈴判斷模塊程序清單如下所示:LOOP:JBC TF0,LOOP1 ;判斷溢出中斷MOV A,R0 ;刷新顯示LCALL XSMOV A,R1LCALL XS1JNB F0,TIME ;判斷設(shè)置鬧鈴標(biāo)志是否為1MOV A,R1CJNE A,39H,TIME ;判斷當(dāng)前時(shí)間與設(shè)置小時(shí)時(shí)間MOV A,R0CJNE A,38H,TIME ;判斷分與設(shè)置分是時(shí)間CLR P3.4 ;鬧鈴響發(fā)出警報(bào)JB P3.7,TIME ;停止鳴叫JNB P3.7,$MOV 38H,#
23、00H ;存儲(chǔ)鬧鈴時(shí)間單元清零MOV 39H,#00HCLR F0 ;設(shè)置鬧鈴標(biāo)志清零SETB P3.4 ;蜂鳴器停止報(bào)警AJMP TIME ;跳轉(zhuǎn)到走時(shí)模塊5.6 定時(shí)器0初始化設(shè)定系統(tǒng)工作在定時(shí)器/計(jì)數(shù)器0且工作方式為1,設(shè)置系統(tǒng)外部中斷0,定時(shí)器/計(jì)數(shù)器0賦初值,定時(shí)時(shí)間為50ms。LOOP1:MOV TL0, #0B0H ;設(shè)置定時(shí)器/計(jì)數(shù)器0的初值MOV TH0, #3CHSETB TR06仿真Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件,可以仿真、分析(SPICE)各種模擬器件和集成電路。該軟件的特點(diǎn)是:實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真的結(jié)合
24、,具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動(dòng)態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。目前Proteus ISIS支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。Proteus ISIS仿真系統(tǒng)具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài)??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,還可以結(jié)合Keil C51 進(jìn)行編程仿真調(diào)試,使用起
25、來非常方便1。6.1系統(tǒng)的仿真步驟1.首先應(yīng)用KEIL軟件,打開KEIL軟件,通過建立工程,選擇芯片為ATMEL下的AT89C2051為系統(tǒng)CPU類型。如圖6-1所示:圖6-1 調(diào)入芯片對(duì)話框2.選擇好器件,首先生成gg.asm文件,然后在“Project Workspace ”窗口中的“TARGET 1”文件夾上單擊右鍵,在彈出的右鍵菜單中選擇“OPTION FOR TARGET”選項(xiàng),這時(shí)會(huì)彈出“OPTION FOR TARGET”對(duì)話窗口,在此對(duì)話框中選擇“OUTPUT”選項(xiàng)卡,選中“CREAT HEX FILE”選項(xiàng)。在KEIL的菜單欄選擇“PROJICT”“BUILD TARGET
26、”命令,編譯匯編源文件。如果編譯成功,則在KEIL的“OUTPU WINDOWS”子窗口中會(huì)顯示下圖所示信息,且在當(dāng)前文件夾下生成一個(gè)hex的文件。在這里我們生成了一個(gè)“gg.hex”文件。如果編譯不成功,雙擊“OUTPUT WINDOWS”窗口的錯(cuò)誤信息,則會(huì)在編輯窗口中指示錯(cuò)誤的語句,修改后再進(jìn)行編譯,生成.hex文件。如圖所示圖6-2 程序編譯對(duì)話框3.運(yùn)行ISIS Professional v7.1 SP2的ISIS,打開畫好的電路圖文件,如圖6-3所示:圖6-3 完整的電路4.選擇SourceAdd/Remove Source File 菜單項(xiàng),將出現(xiàn)Add/Remove Sourc
27、e Code Files對(duì)話框,在Code Generation Tool 選項(xiàng)區(qū),單擊下三角按鈕,選擇ASEM51工具。如圖6-4所示:圖6-4 調(diào)入程序?qū)υ捒?.選中AT89C2051并單擊左鍵,打開如圖6-5所示的對(duì)話框。在 Program File 欄添加編譯好的十六進(jìn)制格式的程序文件dianzi.hex ,給AT89C2051輸入晶振頻率,此處默認(rèn)為12MHz, 單擊OK 按鈕完成程序添加工作,下面就可以進(jìn)行系統(tǒng)仿真。圖6-5 調(diào)入HEX文件對(duì)話框6.2仿真效果ISIS Professional v7.1 SP2所進(jìn)行的是一種交互式仿真, 在仿真進(jìn)行中可以對(duì)各個(gè)控制按鈕、開關(guān)等進(jìn)行操
28、作, 系統(tǒng)對(duì)輸入的響應(yīng)會(huì)被真實(shí)的反映出來。1.單擊運(yùn)行按鈕啟動(dòng)仿真,初始界面顯示0000,等待時(shí)間的設(shè)定。圖6-6 初始狀態(tài),為00002.按時(shí)+按鈕、分+按鈕,進(jìn)行時(shí)鐘設(shè)置,每按按鈕一次,對(duì)應(yīng)數(shù)據(jù)+1,按照所選走時(shí)制式顯示設(shè)置的當(dāng)前值,若超過正常時(shí)鐘顯示時(shí)間,自動(dòng)跳回0,重新設(shè)置。按確認(rèn)/停叫按鈕,保存當(dāng)前設(shè)置值,退出設(shè)置狀態(tài),開始走時(shí),并進(jìn)行秒指示。 圖6-7設(shè)定當(dāng)前時(shí)間,為7點(diǎn)12分開始走時(shí),二極管一亮一滅,變換周期為兩秒,既每變化一個(gè)狀態(tài),時(shí)間為一秒。利用二極管的亮滅來進(jìn)行秒指示 圖6-8 二極管亮 圖6-9 二極管滅設(shè)置當(dāng)前時(shí)間3.按定時(shí)鍵,設(shè)定鬧鈴時(shí)間為7點(diǎn)15分,按確定/叫停鍵確
29、認(rèn)設(shè)置鬧鈴時(shí)間,此時(shí)鬧鈴時(shí)間存入38H、39H單元,等待鬧鈴判斷時(shí)調(diào)用。此時(shí)蜂鳴器未響。圖6-設(shè)定鬧鈴時(shí)間10 設(shè)置鬧鈴時(shí)間圖6-11 蜂鳴器未響4.系統(tǒng)在走時(shí)過程中,隨時(shí)進(jìn)行鬧鈴判斷。先與當(dāng)前小時(shí)判斷,到達(dá)小時(shí)時(shí)間后,再與鬧鈴分鐘判斷,兩者都相等時(shí),即到達(dá)鬧鈴時(shí)間,P3.4置零,觸發(fā)蜂鳴器報(bào)警,發(fā)出警報(bào)。圖6-12 到達(dá)鬧鈴時(shí)間蜂鳴器報(bào)警電路狀態(tài)圖:圖6-設(shè)定鬧鈴時(shí)間13 蜂鳴器未響 圖6-設(shè)定鬧鈴時(shí)間14 蜂鳴器響5.鬧鈴響后,按確定/叫停鍵警報(bào)停止,時(shí)鐘繼續(xù)正常走時(shí)。 圖6-15 時(shí)鐘正常走時(shí)6.12小時(shí)/24小時(shí)制式開關(guān),根據(jù)需求來選擇合適的制式。打開開關(guān),即P3.3為高電平,此時(shí)系統(tǒng)
30、為12小時(shí)制式,閉合開關(guān),即P3.3為低電平,此時(shí)系統(tǒng)為24小時(shí)制式。下圖為24小時(shí)制式時(shí)設(shè)置的當(dāng)前時(shí)間。圖6-16 24小時(shí)制式時(shí)設(shè)定的時(shí)間源程序代碼:ORG 00HAJMP START1ORG 0003HLJMP CLOCK1START1:MOV R0,#00HMOV R1,#00HSETB P3.4SETB P3.5SETB P3.0SETB P3.1SETB P3.2SETB P3.7START:MOV A,R0LCALL XSMOV A,R1LCALL XS1MADD:JB P3.1,HADDJNB P3.1,$INC R0MM1:MOV A,R0ADD A,#00HDA ACJNE
31、 A,#60H,M1MOV A,#00HM1:MOV R0,ALCALL XSMOV A,R1LCALL XS1HADD:MOV A,R0LCALL XSMOV A,R1LCALL XS1JB P3.0,OKJNB P3.0,$INC R1HH1:MOV A,R1ADD A,#00HDA AJB P3.3,HHHCJNE A,#24H,H1MOV A,#00HAJMP H1HHH:CJNE A,#13H,H1MOV A,#01HH1:MOV R1,ALCALL XS1MOV A,R0LCALL XSOK:JB P3.7,STARTJNB P3.7,$MOV TMOD,#01HMOV IE,#8
32、1HMOV R4,#35MOV R5,#60MOV R6,#60LOOP1:MOV TL0,#0B0HMOV TH0,#3CHSETB TR0TIME:MOV A,R0LCALL XSMOV A,R1LCALL XS1 DJNZ R4,LOOPCPL P3.5MOV R4,#35DJNZ R5,LOOPINC R0MOV A,R0ADD A,#00HDA ACJNE A,#60H,TT1MOV A,#00HTT1:MOV R0,AMOV A,R0LCALL XSMOV A,R1LCALL XS1MOV R5,#60DJNZ R6,LOOPINC R1MOV A,R1ADD A,#00HDA A
33、JB P3.3,TTTCJNE A,#24H,TT2MOV A,#00HAJMP TT2TTT:CJNE A,#13H,TT2 MOV A,#01HTT2:MOV R1,AMOV A,R0LCALL XSMOV A,R1LCALL XS1MOV R6,#60LOOP:JBC TF0,LOOP1MOV A,R0LCALL XSMOV A,R1LCALL XS1JNB F0,TIMEMOV A,R1CJNE A,39H,TIMEMOV A,R0CJNE A,38H,TIMECLR P3.4JB P3.7,TIMEJNB P3.7,$MOV 38H,#00HMOV 39H,#00HCLR F0SETB P3.4AJMP TIMEXS:PUSH ACCANL A,#0FHMOV R3,#80HADD A,R3MOV P1,ALCALL FILTERPOP ACCSWAP AANL A,#0FHMOV R3,#40HADD A,R3MOV P1,ALCALL
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年客服工作計(jì)劃樣本(三篇)
- 2024年小學(xué)圖書室管理制度范例(二篇)
- 2024年學(xué)校宿管部工作計(jì)劃樣本(四篇)
- 2024年小學(xué)防溺水工作計(jì)劃樣本(三篇)
- 2024年平面設(shè)計(jì)師個(gè)人工作計(jì)劃例文(三篇)
- 2024年宣傳部規(guī)章制度樣本(四篇)
- 2024年大隊(duì)輔導(dǎo)員工作職責(zé)樣本(二篇)
- 2024年工會(huì)規(guī)范化建設(shè)細(xì)則范本(三篇)
- 2024年幼兒園家長學(xué)校工作計(jì)劃范文(二篇)
- 【《奧克斯電器無形資產(chǎn)會(huì)計(jì)核算現(xiàn)狀分析》8600字】
- GB/T 15822.1-2024無損檢測(cè)磁粉檢測(cè)第1部分:總則
- 2024年反洗錢知識(shí)競(jìng)賽參考題庫400題(含答案)
- SLT824-2024 水利工程建設(shè)項(xiàng)目文件收集與歸檔規(guī)范
- 2024廣西專業(yè)技術(shù)人員繼續(xù)教育公需科目參考答案(100分)
- 人民調(diào)解員業(yè)務(wù)培訓(xùn)講稿
- 公司領(lǐng)導(dǎo)干部調(diào)查研究制度
- 海水淡化反滲透裝置檢修維護(hù)說明書
- 連續(xù)梁合攏方案
- 異辛酸鈉合成工藝及建設(shè)項(xiàng)目
- DB42∕T 1124-2015 城市園林綠化養(yǎng)護(hù)管理質(zhì)量標(biāo)準(zhǔn)
- 西電計(jì)組課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論