單片機(jī)應(yīng)用電子教案第10章-綜合實訓(xùn)課件_第1頁
單片機(jī)應(yīng)用電子教案第10章-綜合實訓(xùn)課件_第2頁
單片機(jī)應(yīng)用電子教案第10章-綜合實訓(xùn)課件_第3頁
單片機(jī)應(yīng)用電子教案第10章-綜合實訓(xùn)課件_第4頁
單片機(jī)應(yīng)用電子教案第10章-綜合實訓(xùn)課件_第5頁
已閱讀5頁,還剩65頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、實訓(xùn)目的熟悉常用溫度傳感器AD590的特性及接口電路的設(shè)計方法;學(xué)會模塊化程序設(shè)計方法二、課題要求制作一個水溫自動控制系統(tǒng),要求如下:溫度設(shè)定范圍4090,最小區(qū)分度1,標(biāo)定誤差1。用十進(jìn)制數(shù)碼顯示水的實際溫度。環(huán)境溫度降低時,溫度控制的靜態(tài)誤差1。 第10章 綜合實訓(xùn)課題一 水溫控制系統(tǒng)設(shè)計一、實訓(xùn)目的 第10章 綜合實訓(xùn)課題一 水溫控三、背景知識1、AD590溫度傳感器簡介 AD590是美國AD公司生產(chǎn)的單片集成兩端感溫電流源。它的測溫范圍為-55+150,工作電壓范圍為4V30V,可以承受44V正向電壓和20V反向電壓,輸出電阻為710M。它產(chǎn)生的電流與絕對溫度成正比,非線性誤差為0

2、.3。圖101為AD590的引腳圖,表101為AD590溫度與電流的關(guān)系表。 (a)引腳 (b)封裝 (c)圖形符號 圖101 AD590引腳、封裝及圖形符號三、背景知識表101 各溫度與電流、電壓參考關(guān)系表溫度值A(chǔ)D590電流經(jīng)10k電壓V放大器輸出V0(ADC0809的VIN)ADC0809的輸出0C273.2A2.732V0V00H10C283.2A2.832V0.49V19H20C293.2A2.932 V0.98V32H30C303.2A3.032 V1.47 V4BH40C313.2A3.132 V1.96 V64H50C323.2A3.232 V2.45 V7DH60C333.2

3、A3.332 V2.94 V96H70C343.2A3.432 V3.43 VAFH80C353.2A3.532 V3.92 VC8H90C363.2A3.632 V4.41 VE1H100C373.2A3.732 V4.90 VFAH表101 各溫度與電流、電壓參考關(guān)系表溫度值A(chǔ)D590電 AD590是電流輸出型器件,必須利用接口電路將AD590輸出的電流信號轉(zhuǎn)換成電壓信號,再經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號,提供給單片機(jī)處理。在2、AD590接口電路表101中,列出了在不同溫度值下的AD590的輸出電流,通過圖102的放大電路可將輸出電流轉(zhuǎn)換成05V的模擬電壓。圖102 溫度采集電路 AD59

4、0是電流輸出型器件,必須利用接口電路將AD四、硬件電路 硬件電路由單片機(jī)、溫度檢測模塊、加熱控制模塊、鍵盤設(shè)定模塊及數(shù)據(jù)顯示模塊構(gòu)成。 1、單片機(jī)選擇 由于系統(tǒng)對控制精度的要求不高,所以選用內(nèi)部具有程序存儲器芯片的AT89C51就可以滿足要求了。 2、溫度檢測模塊 溫度檢測模塊由溫度傳感器、信號放大器及A/D轉(zhuǎn)換器組成。由AD590將溫度轉(zhuǎn)換成電流信號再經(jīng)信號放大器得到對應(yīng)的模擬電壓,再經(jīng)ADC0809轉(zhuǎn)換后接入單片機(jī)。如圖103所示。四、硬件電路 1、單片機(jī)選擇3、加熱控制模塊 加熱控制信號經(jīng)反相器反相后,驅(qū)動固態(tài)繼電器(SSR)工作,從而接通或斷開加熱絲兩端電源,實現(xiàn)對水的加熱控制。加熱控

5、制電路如圖103所示。 為了使加熱控制更加精確,系統(tǒng)采用了三組加熱電爐絲組合實現(xiàn),當(dāng)溫差小于5C時,僅A組加熱絲工作;當(dāng)溫差在5C10C之間時,采用A、B兩組加熱控制;當(dāng)溫差大于10C時,采用A、B、C三組加熱控制。4、鍵盤設(shè)定及數(shù)據(jù)顯示模塊 鍵盤掃描由11個按鍵及3位LED共陽極顯示器組成。通過P1、P2口直接驅(qū)動鍵盤,為了簡化顯示接口,這里采用了串行口擴(kuò)展LED顯示器。如圖103所示。3、加熱控制模塊圖103 水溫控制系統(tǒng)硬件原理圖圖103 水溫控制系統(tǒng)硬件原理圖五、軟件設(shè)計1、程序結(jié)構(gòu)設(shè)計(1)主程序 用于進(jìn)行初始化處理,包括各端口的初始化,定時/計數(shù)器的設(shè)定、中斷允許的設(shè)定等。同時進(jìn)行

6、鍵盤的掃描輸入。圖104為主程序流程圖。(2)定時中斷服務(wù)程序 通過單片機(jī)內(nèi)部的定時器T0進(jìn)行50ms定時,再通過寄存器R6進(jìn)行計數(shù),以實現(xiàn)1s定時中斷的要求。進(jìn)入中斷服務(wù)程序后,可進(jìn)行當(dāng)前溫度的檢測及顯示,根據(jù)所測值與設(shè)定值比較進(jìn)行溫度控制等。圖105為中斷服務(wù)程序流程圖。五、軟件設(shè)計圖104 主程序流程圖 圖105 定時中斷服務(wù)程序流程圖圖104 主程序流程圖 圖105 (3)溫度檢測程序 溫度檢測采用每1s定時采樣的方式,為了實現(xiàn)溫度的準(zhǔn)確檢測,采用了平均值濾波法抗干擾。即連續(xù)4次啟動ADC0809進(jìn)行A/D轉(zhuǎn)換,求取轉(zhuǎn)換結(jié)果的平均值,存入指定單元,以得到檢測溫度值。圖106為溫度檢測程

7、序流程圖。(4)溫度控制程序 通過比較鍵盤設(shè)定值與溫度檢測值的差別,按照一定的控制規(guī)律,控制輸出口線的狀態(tài),實現(xiàn)三組加熱絲的控制。圖107為溫度控制程序流程圖。(5)溫度顯示程序 在每次溫度檢測后,進(jìn)行一次溫度顯示刷新;在進(jìn)行溫度設(shè)定時,顯示設(shè)定溫度值。 (3)溫度檢測程序2、主要程序模塊清單主程序: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0030H MAIN: MOV SP,#60H MOV P1,#0FFH;關(guān)電爐,開顯示 MOV SCON,#00H ;設(shè)置串行口工作 ;方式0,發(fā)送 MOV TMOD,#01H;定時器初始化 MOV TH

8、0,#3CH;50ms定時初值2、主要程序模塊清單 MOV TL0,#0B0H MOV R6,#14H;1s定時用(50ms20次) MOV 5DH,#00H;顯示緩沖區(qū)清零 MOV 5EH,#00H MOV 5FH,#00H ACALLDISP SETB ET0 SETB EA SETB TR0LM0:ACALL KEYSCAN;調(diào)用鍵盤掃描子程序(略), ;用于設(shè)定溫度值A(chǔ)JMP LM0 MOV TL0,#0B0H圖106 溫度檢測程序流程圖 圖107 溫度控制程序流程圖 圖106 溫度檢測程序流程圖 定時中斷服務(wù)程序:T0INT:MOVTH0,#3CHMOVTL0,#0B0HDJNZ R

9、6,T0END;1s未到,中斷返回CLRTR0CLREA MOVR6,#14H;恢復(fù)R6初值A(chǔ)CALLTADC;調(diào)用溫度檢測子程序ACALLXSCL;調(diào)用標(biāo)度轉(zhuǎn)換子程序ACALLDISP;調(diào)用顯示子程序ACALLTCONT;調(diào)用溫度控制子程序SETBTR0SETBEAT0END:RETI定時中斷服務(wù)程序:溫度檢測子程序:TADC:MOV50H,#00H;清存檢測值單元MOVB,#00HMOVR7,#04H ;設(shè)置轉(zhuǎn)換次數(shù)MOVDPTR,#7FFFH;送ADC0809地址TT0:MOVX DPTR,A;啟動A/D轉(zhuǎn)換JBP3.2,$;等待轉(zhuǎn)換結(jié)束MOVX A,DPTR;讀A/D轉(zhuǎn)換數(shù)據(jù)ADDA,

10、50HMOV50H,AJNCTT1;是否超出8位二進(jìn)制范圍INCB溫度檢測子程序:TT1:DJNZR7,TT0;4次轉(zhuǎn)換是否完成CLRC;求4次A/D轉(zhuǎn)換的平均值XCHA,BRRCAXCHA,BRRCACLRCXCHA,BRRCAXCHA,BRRCAMOV50H,A;平均值存50HRETTT1:DJNZR7,TT0;4次轉(zhuǎn)換是否完成溫度控制子程序:TCONT:MOVA,51HCLRCSUBBA,50H;設(shè)定值實測值MOVR0,AJNCCCPR;小于設(shè)定溫度,接通相應(yīng)加熱器MOVP1,#0FFH;否則,關(guān)閉加熱器AJMPCONENDCCPR:MOVA,R0SUBBA,#19HJCCCPR1溫度控

11、制子程序: MOVP1,#0F8H;開三組加熱器AJMP CONENDCCPR1:MOV A,R0SUBB A,#0CHJCCCPR2MOVP1,#0FCH;開兩組加熱器AJMP CONENDCCPR2:MOVP1,#0FEH;開一組加熱器CONEND:RET MOVP1,#0F8H;開三顯示子程序:DISP:MOVR2,#03H;顯示數(shù)據(jù)的個數(shù)MOVR1,#5DH;顯示緩沖區(qū)首址SETBP1.3DL0:MOVA,R1;取要顯示的數(shù)MOVDPTR,#TABMOVC A,A+DPTR;查字型碼MOVSBUF,A;送出數(shù)據(jù)DL1:JNBTI,DL1;是否輸完一個字節(jié)CLRTI;清發(fā)送完標(biāo)志INCR

12、1DJNZR2,DL0;三個數(shù)是否都顯示完?RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H ;09字型碼DB92H,82H,0F8H,80H,90H顯示子程序:六、總結(jié)與提高 設(shè)計、調(diào)試大型程序時,應(yīng)該:先根據(jù)要求劃分模塊,優(yōu)化結(jié)構(gòu);再根據(jù)各模塊特點確定何為主程序,何為子程序,何為中斷服務(wù)程序,相互間如何調(diào)用;接著根據(jù)各模塊性質(zhì)和功能將各模塊細(xì)化,設(shè)計出程序流程圖;最后根據(jù)各模塊流程圖編制具體程序。 調(diào)試時應(yīng)先調(diào)主程序,實現(xiàn)最基本最主要的功能,在此基礎(chǔ)上再將各模塊功能往主程序上堆砌,直至各模塊聯(lián)調(diào)、統(tǒng)調(diào),實現(xiàn)全部功能。六、總結(jié)與提高 調(diào)試時應(yīng)先調(diào)主程序,實現(xiàn)最基本最主 在這個

13、課題中,采用了軟件濾波方式提高檢測環(huán)節(jié)的準(zhǔn)確,并且采用了三組加熱控制提高了溫度變化的精度。在此基礎(chǔ)上,還可以增加液面檢測、缺水報警電路及打印電路等其它輔助電路的設(shè)計,使這個控制系統(tǒng)更完善。單片機(jī)應(yīng)用電子教案第10章-綜合實訓(xùn)課件課題二 用88點陣顯示器制作電子顯示屏一、實訓(xùn)目的熟悉88點陣顯示器與單片機(jī)的接口電路及其設(shè)計方法;學(xué)會模塊化程序設(shè)計方法。二、課題要求 制作一個88點陣顯示器。要求如下: 1. 顯示“電子設(shè)計”四個文字; 2. 顯示方式可由K1、K2和K3三個鍵選擇: K1為逐字顯示,K2為向上滾動顯示,K3為向左滾動顯示。課題二 用88點陣顯示器制作電子顯示屏一、實訓(xùn)目的三、硬件電

14、路 顯示器采用AT89C51單片機(jī)作控制器,時鐘頻率為12MHz,88點陣顯示器采用共陽極結(jié)構(gòu),其電路如圖108所示。 P0作為字符數(shù)據(jù)輸出口, P2為字符顯示掃描輸出口, P1.0P1.2口分別接開關(guān)K1、K2、K3, 通過改變電阻(270)的大小可改變顯示字符的亮度,驅(qū)動用9012三極管。三、硬件電路圖108 硬件電路圖圖108 硬件電路圖四、軟件設(shè)計1、程序結(jié)構(gòu)設(shè)計(1)主程序 主程序用于對系統(tǒng)進(jìn)行初始化,掃描按鍵開關(guān)狀態(tài),由按鍵標(biāo)志位值(00H、01H、02H)決定顯示的方式。主程序流程圖如圖109所示。四、軟件設(shè)計 圖109 主程序流程圖 圖1(2)初始化子程序 用于對端口進(jìn)行復(fù)位操

15、作,將顯示用的字符數(shù)據(jù)從字符表中裝入內(nèi)存單元50H6FH中。字符表中的每個文字占用8個地址單元。(3)顯示子程序 顯示子程序由顯示功能選擇程序和顯示控制程序組成。 顯示功能選擇程序: 負(fù)責(zé)每次顯示時的顯示地址首址(在B寄存器中)、每個字的顯示時間(由30H中的數(shù)據(jù)決定)和下一個顯示地址的間隔(31H中的數(shù)據(jù)決定)的處理。(2)初始化子程序 顯示子程序: 負(fù)責(zé)對指定8個地址單元的數(shù)據(jù)進(jìn)行輸出顯示。 顯示一個完整文字的時間約為8ms。 在顯示子程序中,1ms延時程序是用調(diào)用鍵掃描子程序的方法實現(xiàn)的。圖1010為逐字顯示及向上滾動顯示方式時的顯示控制程序流程圖。(4)按鍵掃描程序 用于將按鍵的狀態(tài)掃

16、描至20H單元的低三位(20H.0、20H.1、20H.2)中。同時在程序中利用按鍵掃描程序代替顯示程序中的1ms延時程序,既可以提高按鍵的快速響應(yīng),又可以提高動態(tài)顯示的掃描頻率,減少文字顯示時的閃爍現(xiàn)象。 顯示子程序: 圖1010 逐字顯示及上移顯示程序流程圖圖1010 逐字顯示及上移顯示程序流程圖2、主要程序模塊清單主程序:START:MOV 20H,#00H ;20H內(nèi)存單元清0 SETB 00H ;20H.0位置1START1:LCALL CLEARMEN ;調(diào)用上電初始化子 ; 程序 JB 00H,F(xiàn)UN0;20H.0位為1,執(zhí)行FUN0 JB01H,F(xiàn)UN1;20H.1位為1,執(zhí)行

17、FUN1 JB02H,F(xiàn)UN2;20H.2位為1,執(zhí)行FUN2 AJMPSTART1 2、主要程序模塊清單初始化程序:CLEARMEN: MOV A,#0FFH ;四端口置1 MOVP1,A MOV P2,A MOVP3,A MOVP0,A MOVDPTR,#TAB;取“電子設(shè)計”字 ;符表首址 CLR A MOV21H,A ;21H-24H內(nèi)存單元清0 MOV 22H,A MOV 23H,A MOV 24H,A MOV R3,A ;R3寄存器清0 初始化程序: MOV R1,#50H ;設(shè)字符表移入內(nèi)存 ;單元首址 MOV R2,#20H;設(shè)查表次數(shù)(32次)CLLOOP:MOVC A,A+

18、DPTR;查表字符數(shù)據(jù)移入 ;內(nèi)存單元 MOV R1,A MOV A,R3 INC A MOV R3,A INC R1 DJNZ R2,CLLOOP;是否已查表32 ;次,未完轉(zhuǎn)CLLOOP RET MOV TAB: DB 0EFH,83H,0ABH,83H,0ABH,83H,0EEH,0E0H ; 電 DB 0FFH,0C7H,0EFH,83H,0EFH,0EFH,0CFH,0EFH ; 子 DB 0B1H,0B5H,04H,0BFH,0B1H,0B5H,9BH,0A4H ; 設(shè) DB 0BBH,0BBH,1BH,0A0H,0BBH,0BBH,9BH,0BBH ;計TAB: DB 0EFH,

19、83H,0ABH,83H,0A鍵掃描子程序:KEYWORK:MOV P1,#0FFH;置輸入狀態(tài) JNBP1.0,KEY1;P1.0為0(鍵按下)轉(zhuǎn)KEY1 JNBP1.1,KEY2;P1.1為0(鍵按下)轉(zhuǎn)KEY2 JNBP1.2,KEY3;P1.2為0(鍵按下)轉(zhuǎn)KEY3KEYRET:RET KEY1:LCALL DL10MS ;按鍵1功能處理,延 ;時10ms削抖動 JB P1.0,KEYRET ;是干擾轉(zhuǎn)KEYRET結(jié)束 SETB 00H ;置逐字顯示方式標(biāo)志 ;(20H.0=1) CLR 01H CLR 02H RET ;子程序返回鍵掃描子程序:KEY2:LCALL DL10MS;按

20、鍵2功能處理 JB P1.1,KEYRET SETB 01H ;置上移顯示方式標(biāo)志 ;(20H.1=1) CLR 00H CLR 02H RETKEY3: LCALL DL10MS ; 按鍵3功能處理 JBP1.2,KEYRET SETB 02H ;置左移顯示方式標(biāo)志 ;(20H.2=1) CLR 01H CLR 00H RETKEY2:LCALL DL10MS;按鍵2功能處理顯示功能選擇程序:FUN0:MOV 30H,#80H;逐字顯示,1幀顯示時間 ;(約1s) MOV 31H,#08H ;換幀跳轉(zhuǎn)步距為8 LJMP DISP1 ;轉(zhuǎn)顯示子程序DISP1FUN1:MOV 30H,#0AH

21、;上移顯示,1幀顯示時間 ;(約80ms) MOV 31H,#01H ;換幀跳轉(zhuǎn)步距為1 LJMP DISP1 ;轉(zhuǎn)顯示子程序DISP1FUN2:LJMP DISP2 ;左移顯示顯示功能選擇程序:顯示控制程序:DISP1: MOV B,#50H ;顯示數(shù)據(jù)首址 MOV R4,30H ;放入1幀顯示時間控制數(shù)據(jù)MOV R5,31H;放入跳轉(zhuǎn)步距控制數(shù)據(jù)LOOP: LCALL DISPLAY ;調(diào)用顯示子程序一次 DJNZ R4,LOOP ;1幀顯示時間未到再轉(zhuǎn) ;LOOP循環(huán) MOV R4,30H ;1幀顯示時間到,重裝初值 MOV A,B CJNE A,#68H,CONT;不是末地址轉(zhuǎn)CONT

22、 AJMP START1 ;是末地址,一次顯示結(jié)束 ;跳回START1CONT:ADD A,R5 ;次幀掃描首址調(diào)整 MOV B,A AJMP LOOP ;轉(zhuǎn)LOOP進(jìn)行次幀掃描顯示控制程序: CJNE A顯示子程序:DISPLAY:MOV A,#0FFH MOV P0,A ;關(guān)顯示數(shù)據(jù) MOV P2,A ;關(guān)掃描 MOV R6,#0FEH;賦掃描字 MOV R0,B;賦顯示數(shù)據(jù)首地址 MOV R7,#08H ;一次掃描8行DISLOOP: MOV A,R0 ;取顯示數(shù)據(jù) MOV P0,A ;放入P0口 MOV P2,R6 ;掃描輸出(顯示 ;某一行) LCALL DL1MS ;亮1毫秒 IN

23、C R0 ;指向下一行數(shù)據(jù)地址 MOV A,R6 ;掃描字移入A顯示子程序: RL A ;循環(huán)左移一位 MOV R6,A ;放回R6 DJNZ R7,DISLOOP ;8行掃描未完轉(zhuǎn) DISLOOP ;繼續(xù) RET ;8行掃描結(jié)束1毫秒延時子程序:DL1MS:MOVR3,#64H ;100(10+2)sLOOPK: LCALL KEYWORK DJNZ R3,LOOPK RET RL A ;循環(huán)左移一位五、總結(jié)與提高 該課程設(shè)計中,可以看出LED點陣顯示的控制是在七段LED數(shù)碼管顯示控制的基礎(chǔ)上擴(kuò)展實現(xiàn)的,二者都是采用動態(tài)掃描方式進(jìn)行設(shè)計,從原理上是完全相同的。在這個課題的基礎(chǔ)上,還可擴(kuò)展多個

24、LED點陣顯示以實現(xiàn)更加復(fù)雜的分批顯示模式及中文字幕的顯示。五、總結(jié)與提高課題三 電子萬年歷的設(shè)計與制作一、實訓(xùn)目的熟悉DS12887時鐘日歷芯片的特性及設(shè)置方法,DS12887芯片與單片機(jī)的接口電路及其設(shè)計方法;學(xué)會模塊化程序設(shè)計方法。課題三 電子萬年歷的設(shè)計與制作二、課題要求 制作一個可調(diào)萬年歷。要求如下:內(nèi)定時間為2000年1月1日12點00分00秒,提供給新產(chǎn)品或換電池時使用。時間調(diào)整:開機(jī)時,光標(biāo)停在“年”,移動光標(biāo)依次修改年、月、日、時、分、秒。每按P1.0一次,光標(biāo)依年、月、日、時、分、秒順序移動。每按P1.1一次,光標(biāo)所在位置的值加1。每按P1.2一次,光標(biāo)所在位置的值減1。采

25、用LCD液晶顯示器顯示。二、課題要求三、背景資料時鐘日歷芯片DS12887:能夠自動產(chǎn)生年、月、日、時、分、秒等時間信息,芯片內(nèi)部帶有鋰電池,外部掉電時,其內(nèi)部時間信息能夠保持10年之久;有12小時制和24小時制兩種工作模式;時間的表示方法有兩種:二進(jìn)制數(shù)表示和BCD碼表示。用戶可對DS12887進(jìn)行編程以實現(xiàn)多種方波輸出,用戶可對其內(nèi)部的三路中斷通過軟件進(jìn)行屏蔽。 三、背景資料能夠自動產(chǎn)生年、月、日、時、分、秒等時間信息, 1、引腳說明 Vcc:直流電源+5V輸入 當(dāng)Vcc的輸入小于+4.25V時,禁止用戶對內(nèi)部RAM進(jìn)行讀、寫操作,此時用戶不能正確獲取芯片內(nèi)的時間信息;當(dāng)Vcc的輸入小于+

26、3V時,DS12887會自動將電源切換到內(nèi)部自帶的鋰電池上,以保證內(nèi)部的電路能夠正常工作。圖1011 DS12887引腳圖當(dāng)Vcc輸入為+5V時,用戶可以訪問DS12887內(nèi)RAM中的數(shù)據(jù),并可對其進(jìn)行讀、寫操作; 1、引腳說明當(dāng)Vcc的輸入小于+4.25V時,禁止用戶對GND:地MOT:總線模式選擇 當(dāng)MOT接Vcc時選用Motorola總線模式,當(dāng)MOT接GND時選用Intel總線模式。SQW:方波輸出 當(dāng)供電電壓Vcc大于4.25V時,SQW腳可進(jìn)行方波輸出,此時用戶可以通過對控制寄存器編程來得到13種方波信號的輸出。AD0AD7:雙向地址/數(shù)據(jù)總線。AS:地址有效輸入。DS/ :數(shù)據(jù)選

27、通/讀允許 當(dāng)MOT接Vcc時作為數(shù)據(jù)選通;當(dāng)MOT接GND時,作為讀允許輸入。GND:地R/ :讀/寫允許輸入。 若MOT接Vcc,該引腳為高電平時讀操作,為低電平時寫操作;若MOT接GND,該引腳作為寫允許輸入。 :片選輸入。低電平有效。 :中斷請求輸出。低電平有效。 :復(fù)位端。低電平有效,復(fù)位操作不影響時鐘日歷工作。NC:空引腳。R/ :讀/寫允許輸入。 2、存儲器分配與設(shè)置 DS12887片內(nèi)RAM與寄存器地址分配見圖1012。 DS12887帶有128字節(jié)片內(nèi)RAM:10字節(jié)的時標(biāo)寄存器:用來存儲時間信息,地址00H09H CPU可以通過讀取時標(biāo)寄存器獲得時間與日歷值,也可以編程設(shè)置

28、其初值,時標(biāo)寄存器的值可以用二進(jìn)制或BCD碼表示。4字節(jié)的控制寄存器:用來存儲控制信息,地址0AH0DH 用戶可通過對控制寄存器編程實現(xiàn)從SQW引腳輸出多種不同頻率的方波,并可對其內(nèi)部的三路中斷通過軟件進(jìn)行屏蔽。114字節(jié)作為通用RAM供用戶使用,地址為0EH7FH。 2、存儲器分配與設(shè)置10字節(jié)的時標(biāo)寄存器:用來存1012 片內(nèi)RAM與寄存器地址分配1012 片內(nèi)RAM與寄存器地址分配時標(biāo)寄存器的數(shù)據(jù)格式,見下表所示。地址單元功能十進(jìn)制范圍范 圍十六進(jìn)制碼BCD碼0秒059003B00591秒鬧鐘059003B00592分059003B00593分鬧鐘059003B00594時(12小時方式

29、)112010C AM,818C PM0112 AM,8192 PM時(24小時方式)023001700235時鬧鐘(12小時方式)112010C AM,818C PM0112 AM,8192 PM時鬧鐘(24小時方式)023001700236星期(星期天=1131011F01318月112010C01129年09900630099時標(biāo)寄存器的數(shù)據(jù)格式,見下表所示。地址功能十進(jìn)制范圍范 控制寄存器的格式 寄存器A 用于選擇時鐘頻率、中斷周期和SQW輸出頻率,格式如下:D7D6D5D4D3D2D1D0UIPDV2DV1DV0RS3RS2RS1RS0控制寄存器的格式D7D

30、6D5D4D3D2D1D0UIPDV2UIP:更新周期標(biāo)志。 當(dāng)UIP=1時,表示芯片正處于或即將開始更新周期,在此期間不允許讀寫時標(biāo)寄存器; 當(dāng)UIP=0時,表示沒有更新周期,此時可讀時標(biāo)寄存器。DV2DV0:芯片內(nèi)部振蕩器RTC控制位。 當(dāng)芯片復(fù)位后500ms開始第一個更新周期。將這3位設(shè)置成010,可使芯片以內(nèi)置的32.768kHz的振蕩頻率工作。RS3RS0:周期中斷可編程方波輸出速率選擇位。 這4位不同的組合可以產(chǎn)生不同的方波輸出,程序可以通過設(shè)置寄存器B的SQWE和PIE位控制是否允許周期中斷方波輸出。RS3RS0與中斷周期及SQW輸出頻率的對應(yīng)關(guān)系如表103所示。UIP:更新周期

31、標(biāo)志。表103 時鐘頻率選擇寄存器A選擇位32.768kHz時鐘頻率RS3RS2RS1RS0中斷周期SQW輸出頻率000000013.09625ms256Hz00107.8125 ms128 Hz0011122.070 s8.192 kHz0100244.141s4.096 kHz0101488.281s2.048 kHz0110976.5625s1.024 kHz01111.953125 ms512 Hz10003.90625 ms256 Hz10017.8125 ms128 Hz101015.625 ms64 Hz101131.25 ms32 Hz110062.5 ms16 Hz11011

32、25 ms8 Hz1110250 ms4 Hz1111500 ms2 Hz表103 時鐘頻率選擇寄存器A選擇位32.768kHz時 寄存器B 主要用于設(shè)置芯片的工作狀態(tài),格式如下:D7D6D5D4D3D2D1D0SETPIEAIEUIESQWEDM24/12DSESET:允許更新周期位??勺x/寫,不受信號的影響。 當(dāng)SET=0時,芯片處于正常更新狀態(tài); 當(dāng)SET=1時,芯片正常更新被禁止。PIE、AIE、UIE:分別為周期中斷、鬧鐘中斷、更新周期結(jié)束中斷允許位。 各位分別為“1”時允許發(fā)出相應(yīng)的中斷,由端輸出。其中,UIE位在復(fù)位或設(shè)置SET為1時清零。 寄存器B 主要用于設(shè)置芯片的工作狀態(tài),

33、格式如下:D SQWE:方波輸出允許位。當(dāng)SQWE=1,按寄存器A輸出速率選擇位所確定的頻率輸出方波;當(dāng)SQWE=0,SQW腳保持低電平。DM:時標(biāo)寄存器格式選擇位。DM=0,為BCD碼;DM=1,為二進(jìn)制碼。24/12:24小時或12小時模式設(shè)置位。24/12=1,選擇24小時工作模式;24/12=0,選擇12小時工作模式。DSE:夏令時允許標(biāo)志位。 SQWE:方波輸出允許位。寄存器C 為中斷標(biāo)志位寄存器。 特點:程序讀寄存器C或復(fù)位后,該寄存器的內(nèi)容將自動清零。格式如下:D7D6D5D4D3D2D1D0IRQFPFAFUF0000IRQF:中斷申請標(biāo)志位。 該位邏輯表達(dá)式為:IRQF =

34、PF PIE+AF AIE+UF UIE。當(dāng)IRQF=1時,IRQ引腳將輸出低電平。 當(dāng)DSE=1時,夏時制設(shè)置有效。在四月的第一個星期日的1:59:59 AM,調(diào)到3:00:00 AM;在十月的最后一個星期日的1:59:59 AM,調(diào)到1:00:00 AM。當(dāng)DSE=0無效。寄存器C 為中斷標(biāo)志位寄存器。D7D6D5D4D3D2D 寄存器D 為狀態(tài)標(biāo)志寄存器,只有一個標(biāo)志位VRT(D7),其余各位均為0。格式如下:D7D6D5D4D3D2D1D0VRT0000000 VRT:芯片內(nèi)部RAM與寄存器內(nèi)容有效標(biāo)志位。 該位為“1”時,表示芯片內(nèi)部RAM和寄存器內(nèi)容有效。讀該寄存器后,該位將自動置

35、“1”。PF、AF、UF:這三位分別為周期中斷、鬧鐘中斷、更新周期結(jié)束中斷標(biāo)志位。 只要滿足各中斷的條件,相應(yīng)的中斷標(biāo)志位將置“1”。寄存器C的D3D0位為0,不使用。 寄存器D 為狀態(tài)標(biāo)志寄存器,只有一個標(biāo)志位VRT(四、硬件設(shè)計 硬件電路見圖1013。采用AT89C51單片機(jī)作控制器,時鐘頻率為12MHz。顯示器可采用LED顯示,但由于LED數(shù)碼顯示所需的數(shù)碼管較多,這里選用LCD顯示器實現(xiàn)。 P1.0P1.2口分別接開關(guān)K1、K2、K3,分別用于光標(biāo)的移動及整定時間時的數(shù)字調(diào)整。四、硬件設(shè)計 圖1013 萬年歷硬件原理圖 圖1013 萬年歷硬件原理圖五、軟件設(shè)計1、內(nèi)部控制寄存器命令字設(shè)

36、置(1)DS12887初始化:給寄存器A、B、C、D送控制字(片選有效) (0AH)=20H 設(shè)置DS12887時鐘頻率為32.768kHz,DV2DV0=010; (0BH)=82H 設(shè)置DS12887更新周期停止,可進(jìn)行時鐘設(shè)定,時間和日期采用BCD碼,時間單元為24小時計時方式。(2)DS12887開始計時:設(shè)置(0BH)=12H 由UIE=1激活,實現(xiàn)時鐘輸出顯示更新。(3)LCD液晶顯示控制器設(shè)置(略)五、軟件設(shè)計 2、程序結(jié)構(gòu)設(shè)計 (1)主程序 用于實現(xiàn)初始化操作,包括中斷設(shè)置、DS12887時鐘芯片及LCD液晶顯示控制器的初始化設(shè)置等。流程圖見1014所示。(2)外部中斷0服務(wù)程

37、序 用于實現(xiàn)DS12887時鐘芯片更新值的輸出及顯示操作。流程圖見1015所示。(3)按鍵掃描子程序 用于將三個按鍵的輸入狀態(tài)掃描至89C51相應(yīng)的寄存器中,進(jìn)行光標(biāo)移動、加1或減1的處理。 2、程序結(jié)構(gòu)設(shè)計(4)顯示子程序 用于將顯示緩沖區(qū)數(shù)據(jù)依次輸出到LCD顯示器上。(5)加1處理子程序 將加1按鍵的輸入狀態(tài)轉(zhuǎn)換為對相應(yīng)存儲單元的加1操作,并將BCD碼轉(zhuǎn)換成ASCII碼送顯示緩沖區(qū)。(6)減1處理子程序 將減1按鍵的輸入狀態(tài)轉(zhuǎn)換為對相應(yīng)存儲單元的減1操作,并將BCD碼轉(zhuǎn)換成ASCII碼送顯示緩沖區(qū)。(7)內(nèi)定時間寫入子程序 用于將內(nèi)定時間00年1月1日12點00分00秒輸入DS12887相

38、應(yīng)的時標(biāo)寄存器中。(4)顯示子程序圖1014 主程序流程圖圖 1015 中斷服務(wù)程序流程圖圖1014 主程序流程圖圖 3、主要程序模塊清單主程序: ORG0000H AJMPMAIN ORG0003 AJMPEX0INTMAIN: MOVSP,#60H;設(shè)置堆棧指針 ACALLBUSY;調(diào)用檢測LCD是否忙 ;的子程序 MOVA,#01H ;LCD清屏 MOV DPTR, #8100H ;送LCD指令寄存地址 MOVXDPTR,A ACALLLCDFIRST;調(diào)用LCD初始化程序 3、主要程序模塊清單 MOV IE,#81H;外部中斷0允許 MOVA,#20H;對DS12887的寄存 ;器A賦初值 MOVDPTR,#020AH;送DS12887的寄 ;存器A的地址 MOVXDPTR,A MOVA,#82H;對DS12887的寄存器B ;賦初值 MOVDPTR,#020BH;送DS12887的寄 ;存器B的地址 MOVXDPTR,A MOV DPTR,#020EH;讀DS12887寄存器0E ;的內(nèi)容 MOVXA, DPTR MOV IE,#81H;外

溫馨提示

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

最新文檔

評論

0/150

提交評論