版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課題設(shè)計任務(wù)、功能要求及總體方案</p><p><b> 課題設(shè)計任務(wù)</b></p><p> 本課程設(shè)計選題目為:數(shù)字電子鐘。</p><p> 設(shè)計一個具有特定功能的電子鐘。</p><p><b> 功能要求</b></p><p>
2、 設(shè)計的數(shù)字電子鐘上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符“P.”, 進(jìn)入時鐘準(zhǔn)備狀態(tài);第一次按數(shù)字電子鐘啟動/調(diào)整鍵,數(shù)字電子鐘從0時0分0秒開始運行,進(jìn)入時鐘運行狀態(tài);再次按數(shù)字電子鐘啟動/調(diào)整鍵,則數(shù)字電子鐘進(jìn)入時鐘調(diào)整狀態(tài),并且時間停止不動,此時可分別利用各調(diào)整鍵調(diào)整時、分、秒,調(diào)整結(jié)束后可按啟動/調(diào)整鍵再次進(jìn)入時鐘運行狀態(tài)。</p><p> 設(shè)計總體方案介紹及工作原理說明</p><
3、p> 本課程設(shè)計采用AT89S52單片機(jī)設(shè)計一個數(shù)字電子鐘,通過兩個4位LED數(shù)碼管顯示時、分、秒,并設(shè)有9個按鍵。其中一個用于單片機(jī)的復(fù)位;一個為啟動/調(diào)整鍵;兩個分別為加,減鍵;其他鍵本課題暫不用。</p><p> 電路分為5部分,分別為復(fù)位電路、鍵盤電路、時鐘電路、顯示電路和控制電路。復(fù)位電路采用按鍵復(fù)位方式。鍵盤電路采用獨立式鍵盤。時鐘電路用12MHz的晶振產(chǎn)生時鐘信號。顯示電路采用8個三極管
4、驅(qū)動兩個4位LED顯示??刂齐娐凡捎?位的AT89S52單片機(jī)作為CPU;原理是:時鐘用T0為時鐘秒加1中斷,時間常數(shù)位50MS,每20次加1S,T0用為時間加1中斷,時間常數(shù)為50MS,中斷20次時間加1。其設(shè)計框圖如圖1.1所示:</p><p> 圖1.1 設(shè)計方案框圖</p><p> 2 數(shù)字電子鐘硬件系統(tǒng)的設(shè)計</p><p> 2.1 硬件
5、系統(tǒng)各模塊功能簡要介紹</p><p> 2.1.1 復(fù)位電路</p><p> 復(fù)位是單片機(jī)的硬件初始化操作。經(jīng)復(fù)位操作后,單片機(jī)系統(tǒng)才能開始正常工作。</p><p> 單片機(jī)上有復(fù)位引腳RST,用于外接復(fù)位電路,這里復(fù)位電路采用按鍵電平復(fù)位。</p><p> 2.1.2 時鐘電路</p><p>
6、 單片機(jī)工作所需的同步時鐘信號由以下兩種方法獲得:由單片機(jī)片內(nèi)時鐘電路結(jié)合外部晶振、電容產(chǎn)生和直接從單片機(jī)外部引入脈沖信號。這里用第一種方法產(chǎn)生時鐘信號。</p><p> 電路用12MHz的石英晶體和二個微調(diào)電容(為33pF)連接起來接到單片機(jī)的XTAL1和XTAL2引腳上。</p><p> 2.1.3 鍵盤電路</p><p> 由于按鍵較少,所以此處
7、使用獨立式鍵盤,鍵盤接到單片機(jī)的P1口上,當(dāng)鍵按下時,在其相應(yīng)的口線上產(chǎn)生低電平信號,鍵松開時仍為高電平信號。 </p><p> 2.1.4 顯示電路</p><p> 本顯示電路采用三極管驅(qū)動兩個4位數(shù)碼管段位控端;用單片機(jī)的P2口控制位控;用單片機(jī)的P0口線作段控口,位、段控線上都串入470Ω的限流電阻。 </p><p> 2.2 數(shù)字電子鐘原理圖
8、、PCB圖和元器件布局圖</p><p> 2.2.1 原理圖</p><p><b> 原理圖見附錄A。</b></p><p> 2.2.2 PCB圖</p><p><b> PCB圖見附錄B。</b></p><p><b> 元器件布局圖&l
9、t;/b></p><p> 元器件布局圖見附錄C。</p><p> 2.3 數(shù)字電子鐘元器件清單</p><p> 本課程設(shè)計元器件清單如表2.1所示:</p><p> 表2.1 數(shù)字電子鐘元器件清單</p><p> 3 數(shù)字電子鐘軟件系統(tǒng)的設(shè)計</p><p> 數(shù)
10、字電子鐘使用單片機(jī)資源情況</p><p> 在電子鐘的編程過程中,單片機(jī)資源使用情況如下:</p><p> 寄存器:通用寄存器的R0~R7;</p><p> 位地址:23H(用于保存啟動/調(diào)整鍵盤當(dāng)前的狀態(tài));</p><p> IO口線:P0口(作數(shù)碼管的段控口),P2口(作數(shù)碼管的位控口),P1口(作鍵</p>
11、<p><b> 盤接口);</b></p><p> 堆棧棧底單元地址:60H;</p><p> 定時器:定時器0;</p><p> 顯示緩沖單元:78H~7FH;</p><p> 秒分時對應(yīng)儲存單元:72H~77H</p><p> 生成鍵碼出口地址:20H。&
12、lt;/p><p> 數(shù)字電子鐘軟件系統(tǒng)各模塊功能簡要介紹</p><p> 3.2.1 顯示模塊</p><p> 此處將顯示程序編成一個子程序,要顯示時調(diào)用顯示子程序即可,顯示程序中顯示的是緩沖區(qū)中的內(nèi)容再調(diào)數(shù)據(jù)表格中顯示代碼,程序中只要將要顯示的內(nèi)容在數(shù)據(jù)表中的位置送往顯示緩沖區(qū)即可,就可以顯示你所需要顯示的內(nèi)容。</p><p>
13、 3.2.2 中斷服務(wù)程序模塊</p><p> 本程序中用了一個定時器中斷,所以有中斷服務(wù)程序,是為了使秒自加而使用定時器中斷,定時50MS循環(huán)20次到一秒以后,向CPU申請中斷,使秒自加1。</p><p> 3.2.3 鍵盤模塊</p><p> 運用直接判斷IO口線的方法編成鍵盤掃描程序,來完成用鍵盤監(jiān)控程序的功能,總共用了四個鍵,其具體的功能上
14、面已經(jīng)敘述過,這里不再贅述,使用鍵盤能夠很準(zhǔn)確的、快速的監(jiān)控系統(tǒng)。</p><p> 數(shù)字電子鐘軟件系統(tǒng)程序流程框圖</p><p><b> 主程序流程框圖</b></p><p> 主程序員流程框圖如圖3.1所示:</p><p> 圖3.1 主程序流程圖</p><p> 中斷服務(wù)
15、程序流程框圖</p><p> 中斷服務(wù)程序流程圖如圖3.2所示:</p><p> 圖3.2 中斷服務(wù)程序流程圖</p><p><b> 加1子程序流程框圖</b></p><p> 加1子程序流程框圖如圖3.3所示:</p><p> 圖3.3 加1子程序流程圖</p>
16、<p><b> 減1子程序流程框圖</b></p><p> 加1子程序流程框圖如圖3.4所示:</p><p> 圖3.4 減1子程序流程圖</p><p> 3.3.5 鍵掃子程序流程圖框圖</p><p> 鍵掃子程序流程圖框圖如圖3.5</p><p> 圖3
17、.5 鍵掃子程序流程圖</p><p> 3.3.6 顯示子程序流程圖框圖</p><p> 顯示子程序流程圖框圖如圖3.6</p><p> 圖3.6 顯示子程序流程圖</p><p> 3.4 數(shù)字電子鐘軟件系統(tǒng)程序清單</p><p><b> 程序清單詳見附錄D</b><
18、;/p><p> 4 仿真與誤差分析</p><p> 4.1 數(shù)字電子鐘的設(shè)計結(jié)論及使用說明</p><p> 本課程設(shè)計的目的是設(shè)計一個電子鐘,通過原理圖的繪制,PCB板的制作,最終做出的實物是成功的,能夠達(dá)到預(yù)期的目的,以下本次所作電子鐘的具體的使用說明:電子鐘上電后,最高位顯示P.,按下啟動/調(diào)整鍵,電子鐘從0時0分0秒開始自動運行,再次按下啟動/調(diào)整
19、鍵,電子鐘運行停止,處于調(diào)整狀態(tài),按下加減鍵,可以實現(xiàn)時、分、秒加鍵1,這樣可以實現(xiàn)時、分、秒的累加調(diào)整,再次按下啟動/調(diào)整鍵,電子鐘自動運行起來,處于運行狀態(tài),調(diào)整結(jié)束。</p><p> 4.2 設(shè)計課題的仿真結(jié)果</p><p> 如圖4.1、4.2所示:</p><p> 圖4.1 顯示P.仿真結(jié)果</p><p> 圖4.
20、2 運行仿真結(jié)果</p><p> 4.3 設(shè)計課題的誤差分析</p><p> 本課程設(shè)計存在一定誤差,引起誤差原因主要是程序中定時后很多指令引起的時間誤差。經(jīng)過測試10小時,時鐘慢25秒,則每秒鐘慢2.5/3600=0.6944MS,</p><p> 50MS中斷一次,20次中斷為1秒,因此每次中斷比標(biāo)準(zhǔn)慢0.6944/20=0.03472MS.<
21、;/p><p> TH0TL0=65536-[(50-0.03472)*1000]/1=15570=3CD2H。</p><p> 將原來中斷初值TH0TL0=3CB0H改為TH0TL0=3CD2H。</p><p> 4.4 數(shù)字電子鐘設(shè)計體會</p><p> 本次做課程設(shè)計,從硬件方面說,我認(rèn)為本次設(shè)計的重點在于單片機(jī)的最小系統(tǒng),
22、若單片機(jī)的最小系統(tǒng)不能正常工作,那后面一切都免談;從軟件方面說,我編程的思路就是從簡單到難,一步一步實現(xiàn)各個功能。這個電子鐘的程序重點在于調(diào)整鍵功能程序和中斷服務(wù)程序的編寫,這兩個小模塊編好了,就很容易了。</p><p> 在做課程設(shè)計的過程中,學(xué)到很多東西,比如說做PCB板的技術(shù)有了很大的提高,再比如說,自己通過編電子鐘的程序,使自己對匯編指令的應(yīng)用越來越熟練,編程的能力也有了較大提高。在制作電子鐘的過程中
23、,遇到的問題都能嘗試去自己解決,比如說調(diào)試程序,檢查線路等等,使自己發(fā)現(xiàn)問題、解決問題的能力大大提高。</p><p><b> 4.5 教學(xué)建議</b></p><p> 通過一個學(xué)期的單片機(jī)課,我生生的體會到了什么叫名師;誠然,王老師總說自己不是名師,但我們真的得尊稱你為名師。 在這里我只是覺得我們的動手能力還是太差了,還得增加實踐的動手!讓我們多做幾塊板子
24、,即使我們心有不情愿,還需老師一如既往的加壓!</p><p><b> 參考文獻(xiàn)</b></p><p> [ 1 ] 李廣第,朱月秀,冷祖祁.單片機(jī)基礎(chǔ)[M].第三版.北京:航空航天大學(xué)出版社,2007.18-152</p><p> Li Guangdi,Zhu Yuexiu,Leng Zuqi.Scmcbasis[M].The t
25、hird edition.Beijing: Aerospace university press,2007.18-152</p><p> [ 2 ] 邱麗芳,彭志剛,胡漢輝.單片機(jī)原理與應(yīng)用 .第二版.北京:人民郵電出版社,2009.7-259</p><p> Qiu Lifang,Peng Zhigang,Hu Hanhui.Single-chip microcomputer p
26、rinciple and application. The second edition. Beijing: Beijing people's telephone and postal press ,2009.7-259</p><p><b> 致 謝</b></p><p> 在本課程設(shè)計進(jìn)行過程中得到王韌老師的悉心指導(dǎo),還有很多同學(xué)的幫助。王老師
27、嚴(yán)謹(jǐn)求實的治學(xué)態(tài)度,踏實堅韌的工作精神,將使我終生受益。在此,謹(jǐn)向老師和幫助我的同學(xué)致以誠摯的謝意和崇高的敬意。 </p><p><b> 附 錄 A</b></p><p><b> 附 錄 B</b></p><p><b> 附 錄 C</b></p><p&
28、gt;<b> 元器件布局圖</b></p><p><b> 附 錄 D</b></p><p><b> 程序清單:</b></p><p> ;********************************************************************<
29、;/p><p> ;項目名稱:數(shù)字電子鐘</p><p><b> ;設(shè)計者:譚育奇</b></p><p> ;設(shè)計日期:2010年12月29日</p><p> ;********************************************************************</p&
30、gt;<p><b> ;堆棧棧底60H;</b></p><p> ;********************************************************************</p><p> ;LED數(shù)碼管顯示器設(shè)定;</p><p> ;P0.7---P0.0段控線,接LED的顯示段d
31、p,g,f,e,d,c,b,a</p><p> ;P2.7---P2.0位控線,從左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)</p><p> ;顯示緩沖區(qū)設(shè)定從左至右依次為7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED4,LED5,LED6,LED7,LED0,LED1,LED2,LED3)</p>
32、<p> ;時十位,時個位,分十位,分個位,秒十位,秒個位對應(yīng)的儲存單元是(77H,76H,75H,74H,73H,72H);鍵值放在20H單元</p><p> ;********************************************************************</p><p><b> ;獨立式鍵盤設(shè)定;</b&g
33、t;</p><p> ;8個按鍵S2至S9分別依次接在P1.0至P1.7口線;S2鍵為啟動/調(diào)整;S4、S5為加、減鍵 </p><p> ;******************************************************************** </p><p><b> ;子程序;</b></
34、p><p> ;DISP(數(shù)碼管顯示子程序)</p><p> ;KEY(鍵掃子程序)</p><p> ;DL(1毫秒延時子程序,晶振頻率12MHz)</p><p> ;TAKE(更新緩沖區(qū)子程序)</p><p> ;*********************************************
35、***********************</p><p><b> ;常數(shù)表格;</b></p><p> ;TAB(共陽數(shù)碼管字型代碼表)</p><p> ;TAB1(位控序號表)</p><p> ;DISBH(系統(tǒng)提示符P.字型代碼序號表)</p><p> ;******
36、*************************************************************</p><p> ;時分秒的十位和個位分別偽定義</p><p> SECGE EQU 72H</p><p> SECSHI EQU 73H</p><p> FENGE EQU
37、 74H</p><p> FENSHI EQU 75H</p><p> SHIGE EQU 76H</p><p> SHISHI EQU 77H</p><p> ;*****************************************************************
38、**</p><p><b> ;鍵值偽定義</b></p><p> S2B BIT 20H.0</p><p> S3B BIT 20H.1</p><p> S4B BIT 20H.2</p><p> S5B BIT 20H
39、.3</p><p> S6B BIT 20H.4</p><p> S7B BIT 20H.5</p><p> S8B BIT 20H.6</p><p> S9B BIT 20H.7</p><p> ;**********************
40、*********************************************</p><p><b> ;主程序</b></p><p> ORG 0000H</p><p> START: LJMP MAIN ;主程序入口地址</p><p>
41、 ORG 000BH</p><p> LJMP TC0</p><p> ORG 0030H</p><p> MAIN: MOV SP, #60H ;堆棧初始化</p><p> ;********************************************
42、**********************</p><p><b> ;定時器初始化</b></p><p> MOV TMOD ,#11H</p><p> MOV TH0 ,#3CH</p><p> MOV TL0 ,#0B0H</p>
43、<p> MOV IE ,#8AH ;允許定時器0中斷</p><p> ;******************************************************************</p><p> MOV PSW ,#00H ;psw初始化</p>&l
44、t;p> MOV R0 ,#20H ;RAM區(qū)首地址</p><p> MOV R7 ,#5FH ;RAM區(qū)單元個數(shù)</p><p> ML: MOV @R0 ,#00H ;RAM初始化</p><p> INC R0</p&
45、gt;<p> DJNZ R7 ,ML</p><p> CLR 23H.0 ;停止是否按下判斷位</p><p> CLR 23H.1</p><p> CLR 23H.2 ;調(diào)整鍵按下判斷位</p><p&
46、gt; CLR 23H.3 ;啟動停止判斷位</p><p> PUSH PSW ;改變當(dāng)期寄存器為2組</p><p> SETB RS1</p><p> CLR RS0</p><p> MOV R1
47、,#200</p><p> MOV R5 ,#20 ;設(shè)定中斷服務(wù)程序循環(huán)次數(shù)</p><p> MOV R6 ,#0 ;判調(diào)整鍵按下的次數(shù)</p><p> MOV R7 ,#25 ;按鍵是若不松開調(diào)顯示的次數(shù)</p>&
48、lt;p> POP PSW</p><p> TSF: MOV DPTR ,#DISBH ;系統(tǒng)初始化后提示符“P.”字符代碼表首地址</p><p> MOV R1 ,#00H</p><p> MOV R5 ,#08H</p><p> M
49、OV R0 ,#78H</p><p> DISPTSF: MOV A ,@R1</p><p> MOVC A ,@A+DPTR</p><p> MOV @R0 ,A</p><p> INC R0</p><p>
50、 INC R1</p><p> DJNZ R5 ,DISPTSF ;調(diào)顯示子程序顯示提示符“P.”</p><p> TT: LCALL DISP</p><p> LCALL KEY </p><p> MOV A ,20H</p><p
51、> JZ TT</p><p> ;******************************************************************</p><p><b> ;鍵判斷程序</b></p><p> JB S2B ,S22</p><p>
52、 JB S4B ,S44</p><p> JB S5B ,S55</p><p> JB S3B ,S3</p><p> JB S6B ,S6</p><p> JB S7B ,S7</p><p&g
53、t; JB S8B ,S8</p><p> JB S9B ,S9</p><p> LJMP TT</p><p> ;******************************************************************</p><p><b&g
54、t; ;鍵功能程序</b></p><p> S22: LJMP S2</p><p> S44: LJMP S4 </p><p> S55: LJMP S5</p><p><b> S3: NOP</b></p><p> LJMP
55、 TT </p><p><b> S6: NOP </b></p><p> LJMP TT</p><p><b> S7: NOP </b></p><p> LJMP TT</p><p><b> S8: NOP </b
56、></p><p> LJMP TT</p><p><b> S9: NOP </b></p><p> LJMP TT</p><p> ;啟動停止鍵功能程序</p><p> S2: PUSH PSW ;改變通用寄
57、存器組為2組</p><p> SETB RS1</p><p> CLR RS0</p><p> JB 23H.0 ,SZT</p><p> JB 23H.4 ,S2TZ ;23H.4為0執(zhí)行啟動程序,否則轉(zhuǎn)向停止程序</p><p>
58、SETB 23H.4</p><p> SETB TR0</p><p> CLR 23H.2</p><p> JB 23H.1 ,S2D1 ;23H.1為1轉(zhuǎn)向啟動程序結(jié)束</p><p> SETB 23H.1 ;第一次啟動電子鐘,標(biāo)
59、志位置1</p><p> MOV SECSHI ,#0</p><p> MOV SECGE ,#0</p><p> MOV FENSHI ,#0</p><p> MOV FENGE ,#0</p><p> MOV SHISHI
60、 ,#0</p><p> MOV SHIGE ,#0</p><p> S2D1: LCALL KEY ;判鍵是否松開</p><p> JB S2B ,S2D1</p><p> LJMP SS2</p><p>
61、S2TZ: CLR TR0 ;停止程序</p><p> SETB 23H.0 </p><p> CLR 23H.4</p><p> S2D2: LCALL KEY ;判鍵是否松開</p><p> JB S2B
62、 ,S2D2</p><p> LJMP SS2</p><p> SZT: JNB 23H.0 ,SS2 ;判停止鍵是否按下,沒有按下轉(zhuǎn)向結(jié)束程序 </p><p> LCALL DL</p><p> SETB 23H.2 ;調(diào)整鍵
63、按下,置1</p><p> CJNE R6 ,#00H ,S2S ;是第一次按下調(diào)整鍵嗎</p><p> INC R6 ;調(diào)整鍵的次數(shù)加1</p><p> S2S1: LCALL KEY </p><p> JB S2B ,S
64、2S1</p><p> LJMP SS2</p><p> S2S: CJNE R6 ,#01H ,S2F ;是第二次按下調(diào)整鍵嗎</p><p> INC R6 ;調(diào)整鍵次數(shù)加1</p><p> S2S2: LCALL KEY</p&
65、gt;<p> JB S2B ,S2S2</p><p> LJMP SS2</p><p> S2F: MOV R6 ,#00H ;第三次按下調(diào)整鍵,把按下調(diào)整鍵的次數(shù)置0</p><p> S2S3: LCALL KEY</p><p> J
66、B S2B ,S2S3</p><p> SS2: LCALL TAKE</p><p> POP PSW</p><p> LJMP TT</p><p> ;******************************************************************
67、</p><p><b> ;加1鍵功能程序</b></p><p> S4: PUSH PSW ;改變通用寄存器為2組</p><p> SETB RS1</p><p> CLR RS0</p><p> JNB
68、23H.2 ,S3G ;判調(diào)整鍵是否按下</p><p> CJNE R6 ,#01H ,S3F ;停止鍵按下的次數(shù)是1次嗎?</p><p> LCALL TAKE3 ;時加1</p><p> CJNE R2 ,#24H ,S3D1 ;24小
69、時到了嗎</p><p> MOV SHISHI ,#00H</p><p> MOV SHIGE ,#00H</p><p> S3D1: LCALL DISP ;延時0.2秒</p><p> DJNZ R7 ,S3D1</p>
70、;<p> MOV R7 ,#25</p><p> LJMP S3G</p><p> S3F: CJNE R6 ,#02H ,S3M ;停止鍵按下的次數(shù)是2次嗎?</p><p> LCALL TAKE2 ;分加1</p><
71、p> CJNE R3 ,#60H ,S3D2 ;60分到了嗎</p><p> MOV FENSHI ,#00H</p><p> MOV FENGE ,#00H</p><p> S3D2: LCALL DISP ;延時0.2秒</p>&
72、lt;p> DJNZ R7 ,S3D2</p><p> MOV R7 ,#25</p><p> LJMP S3G</p><p> S3M: LCALL TAKE1 ;秒加1</p><p> CJNE R4 ,#
73、60H ,S3D3 ;60秒到了嗎</p><p> MOV SECSHI ,#00H</p><p> MOV SECGE ,#00H</p><p> S3D3: LCALL DISP ;延時0.2秒</p><p> DJNZ R7
74、 ,S3D3</p><p> MOV R7 ,#25</p><p> S3G: LCALL TAKE</p><p> POP PSW</p><p> LJMP TT</p><p> ;*************************************
75、*****************************</p><p><b> ;減1鍵功能程序</b></p><p> S5: PUSH PSW</p><p> SETB RS1</p><p> CLR RS0</p><p> JNB 23H
76、.2 ,S4G</p><p> CJNE R6 ,#01H ,S4F ;停止鍵按下的次數(shù)是1次嗎</p><p> S4DY: LCALL TAKE7 ;時減1</p><p> S4D1: LCALL DISP ;延時0.2秒</p
77、><p> DJNZ R7 ,S4D1</p><p> MOV R7 ,#25</p><p> LJMP S4G</p><p> S4F: CJNE R6 ,#02H ,S4M ;停止鍵按下的次數(shù)是2次嗎</p><p> LCAL
78、L TAKE6 ;分減1</p><p> S4D2: LCALL DISP</p><p> DJNZ R7 ,S4D2</p><p> MOV R7 ,#25</p><p> LJMP S4G</p><p>
79、 S4M: CJNE R6 ,#00H ,S4G ;停止鍵按下的次數(shù)是3次嗎</p><p> LCALL TAKE5 ;秒減1</p><p> S4D3: LCALL DISP</p><p> DJNZ R7 ,S4D3</p><p>
80、; MOV R7 ,#25</p><p> S4G: LCALL TAKE</p><p> POP PSW</p><p> LJMP TT </p><p> ;**************************************************************
81、******</p><p><b> ;常數(shù)表格區(qū)</b></p><p> ;系統(tǒng)初始化后提示符“P.”字符代碼表</p><p> DISBH: DB 11H,10H,10H,10H,10H,10H,10H,10H </p><p> ;顯示字符段選碼表(共陽極代碼)</p>
82、<p> TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H </p><p> DB 90H, 0FFH,0CH,0BFH </p><p> TAB1: DB 0EFH,0DFH,0BFH,07FH,0FE
83、H,0FDH,0FBH,0F7H</p><p> ;********************************************************************</p><p><b> ;延時1毫秒子程序</b></p><p> DL: MOV R7 ,#02H</p>
84、<p> DL1: MOV R6 ,#0FFH</p><p> DL2: DJNZ R6 ,DL2</p><p> DJNZ R7 ,DL1</p><p><b> RET</b></p><p> ;************
85、*******************************************</p><p><b> ;顯示子程序</b></p><p> ;入口:78H,79H,7AH,7BH,7CH,7DH,7EH,7FH</p><p> DISP: PUSH DPH</p><p> PUSH
86、 DPL</p><p> PUSH ACC</p><p> PUSH PSW</p><p> CLR RS1 ;改變當(dāng)前寄存器組為組1</p><p> SETB RS0</p><p> MOV R7 ,#08H&
87、lt;/p><p> MOV R1 ,#78H ;顯示緩沖存儲單元首地址</p><p> MOV R0 ,#00H ;從左至右顯示</p><p> DISP1: MOV A ,@R1</p><p> MOV DPTR
88、 ,#TAB</p><p> MOVC A ,@A+DPTR</p><p> MOV P0 ,A ;送段控</p><p> MOV A ,@R0 </p><p> MOV DPTR ,#TAB1<
89、;/p><p> MOVC A ,@A+DPTR</p><p> MOV P2 ,A ;送位控</p><p> LCALL DL ;延時1毫秒</p><p> DJNZ R7 ,DISP2</p>&
90、lt;p> INC R1</p><p> INC R0</p><p> LJMP DISP1</p><p> DISP2: POP PSW ;恢復(fù)當(dāng)前寄存器組的組號</p><p> POP ACC</p><p>
91、 POP DPL</p><p> POP DPH </p><p><b> RET</b></p><p> ;*****************************************************************</p><p> ;8個按鍵S2至S9分別依
92、次接在P1.0至P1.7口線</p><p><b> ;鍵掃子程序KEY</b></p><p><b> ;出口:B,20H</b></p><p> KEY: LCALL KEYCHULI ;調(diào)鍵處理子程序</p><p> JZ EXIT
93、</p><p> LCALL DISP ;去抖動</p><p> LCALL DISP</p><p> LCALL KEYCHULI ;調(diào)鍵處理子程序</p><p> JZ EXIT ;</p&
94、gt;<p> MOV B ,20H ;保存鍵值</p><p> KEYSF: LCALL KEYCHULI ;調(diào)鍵處理子程序 </p><p> JZ KEY1 ;按鍵釋放,準(zhǔn)備退出KEY子程序</p>
95、;<p> LCALL DISP</p><p> KEY1: MOV 20H ,B ;恢復(fù)鍵值</p><p> EXIT: RET</p><p> ;鍵處理子程序KEYCHULI</p><p><b> ;出口:A,20H</b></
96、p><p> KEYCHULI: MOV P1 ,#0FFH ;先向P1口寫1</p><p> MOV A ,P1</p><p><b> CPL A</b></p><p> ANL A ,#04H</p>
97、<p> MOV 20H ,A ;保存取反后的鍵值</p><p><b> RET</b></p><p> ;******************************************************************</p><p><b>
98、;更新緩沖區(qū)子程序</b></p><p> TAKE: MOV 78H ,SHISHI</p><p> MOV 79H ,SHIGE</p><p> MOV 7AH ,#12H</p><p> MOV 7BH ,FENSHI</
99、p><p> MOV 7CH ,FENGE</p><p> MOV 7DH ,#12H</p><p> MOV 7EH ,SECSHI
100、 </p><p> MOV 7FH ,SECGE</p><p><b> RET</b></p><p> ;******************************************************************</p&g
101、t;<p><b> ;數(shù)字處理子程序</b></p><p> TAKE1: PUSH PSW ;秒加1子程序</p><p> SETB RS1 ;改變當(dāng)期寄存器為2組</p><p> CLR RS0 </p&
102、gt;<p> MOV A ,SECSHI</p><p><b> SWAP A</b></p><p> MOV R4 ,A</p><p> MOV A ,SECGE</p><p> ORL A
103、 ,R4</p><p> ADD A ,#01H</p><p><b> DA A</b></p><p> MOV R4 ,A</p><p><b> SWAP A</b></p><p>
104、ANL A ,#0FH</p><p> MOV SECSHI ,A</p><p> MOV A ,R4</p><p> ANL A ,#0FH</p><p> MOV SECGE ,A</p><p>
105、 POP PSW</p><p><b> RET</b></p><p> TAKE2: PUSH PSW ;分加1子程序</p><p> SETB RS1</p><p> CLR RS0 </p><p>
106、MOV A ,FENSHI</p><p><b> SWAP A</b></p><p> MOV R3 ,A</p><p> MOV A ,FENGE</p><p> ORL A ,R3</p>
107、<p> ADD A ,#01H</p><p><b> DA A</b></p><p> MOV R3 ,A</p><p><b> SWAP A</b></p><p> ANL A
108、 ,#0FH</p><p> MOV FENSHI ,A</p><p> MOV A , R3</p><p> ANL A ,#0FH</p><p> MOV FENGE ,A</p><p> POP PSW&l
109、t;/p><p><b> RET</b></p><p> TAKE3: PUSH PSW ;時加1子程序</p><p> SETB RS1</p><p> CLR RS0 </p><p> MOV A
110、 ,SHISHI</p><p><b> SWAP A</b></p><p> MOV R2 ,A</p><p> MOV A ,SHIGE</p><p> ORL A ,R2</p><p> AD
111、D A ,#01H</p><p><b> DA A</b></p><p> MOV R2 ,A</p><p><b> SWAP A</b></p><p> ANL A ,#0FH</p&g
112、t;<p> MOV SHISHI ,A</p><p> MOV A ,R2</p><p> ANL A ,#0FH</p><p> MOV SHIGE ,A</p><p> POP PSW</p><p&
113、gt;<b> RET</b></p><p> TAKE5: PUSH PSW ;秒減1程序</p><p> SETB RS1</p><p> CLR RS1</p><p> MOV A ,SECSHI</p&g
114、t;<p><b> SWAP A</b></p><p> MOV R4 ,A</p><p> MOV A ,SECGE</p><p> ORL A ,R4</p><p> SUBB A ,#
115、01H</p><p> MOV R4 ,A</p><p><b> SWAP A</b></p><p> ANL A ,#0FH</p><p> CJNE A ,#0FH ,LOPM ;秒到00嗎?</p><
116、;p> MOV A ,#05H</p><p> LOPM: MOV SECSHI ,A</p><p> MOV A ,R4</p><p> ANL A ,#0FH</p><p> CJNE A ,#0FH ,L
117、ODP ;個位是0嗎?</p><p> SUBB A, #6</p><p> LODP: MOV SECGE ,A</p><p> POP PSW</p><p><b> RET</b></p><p> TAKE6: PUSH
118、 PSW ;分減1程序</p><p> SETB RS1</p><p> CLR RS1</p><p> MOV A ,FENSHI</p><p><b> SWAP A</b></p><p&g
119、t; MOV R3 ,A</p><p> MOV A ,FENGE</p><p> ORL A ,R3</p><p> SUBB A ,#01H</p><p> MOV R3 ,A</p><
120、p><b> SWAP A</b></p><p> ANL A ,#0FH</p><p> CJNE A ,#0FH , LOPF ;分到00嗎?</p><p> MOV A ,#05H</p><p> LOPF: M
121、OV FENSHI ,A</p><p> MOV A ,R3</p><p> ANL A ,#0FH</p><p> CJNE A ,#0FH ,LODP1 ;個位是0嗎?</p><p> SUBB A ,#6</
122、p><p> LODP1: MOV FENGE ,A</p><p> POP PSW</p><p><b> RET</b></p><p> TAKE7: PUSH PSW ;時減1程序</p><p> SET
123、B RS1</p><p> CLR RS1</p><p> MOV A ,SHISHI</p><p><b> SWAP A</b></p><p> MOV R2 ,A</p><p> MOV A
124、 ,SHIGE</p><p> ORL A ,R2</p><p> SUBB A ,#01H</p><p> MOV R2 ,A</p><p><b> SWAP A</b></p><p> AN
125、L A ,#0FH</p><p> CJNE A ,#0FH , LOPS ;時到00嗎?</p><p> MOV SHISHI ,#02H</p><p> MOV SHIGE ,#03H</p><p> LJMP LODP3</p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計--數(shù)字電子鐘
- 單片機(jī)課程設(shè)計--數(shù)字電子鐘
- 《單片機(jī)技術(shù)》電子鐘課程設(shè)計---數(shù)字電子鐘
- 單片機(jī)數(shù)字電子鐘課程設(shè)計
- 課程設(shè)計----基于單片機(jī)的數(shù)字電子鐘設(shè)計
- 單片機(jī)課程設(shè)計--基于單片機(jī)的數(shù)字電子鐘
- 單片機(jī)課程設(shè)計--數(shù)字電子鐘
- 電子鐘課程設(shè)計--基于單片機(jī)的電子鐘設(shè)計
- 單片機(jī)課程設(shè)計--數(shù)字電子鐘設(shè)計
- 單片機(jī)課程設(shè)計--數(shù)字鐘電子鐘
- 單片機(jī)課程設(shè)計---數(shù)字電子鐘的設(shè)計
- 單片機(jī)電子鐘課程設(shè)計---數(shù)字電子鐘
- 單片機(jī)課程設(shè)計數(shù)字電子鐘
- 基于單片機(jī)的電子鐘課程設(shè)計
- 電子鐘單片機(jī)課程設(shè)計
- 基于單片機(jī)的電子鐘課程設(shè)計
- 單片機(jī)課程設(shè)計--電子鐘
- 單片機(jī)課程設(shè)計(電子鐘)
- 單片機(jī)課程設(shè)計--多功能數(shù)字電子鐘
- 單片機(jī)課程設(shè)計— 多功能數(shù)字電子鐘
評論
0/150
提交評論