電子實(shí)時(shí)時(shí)鐘_萬(wàn)年歷 單片機(jī)課程設(shè)計(jì)_第1頁(yè)
電子實(shí)時(shí)時(shí)鐘_萬(wàn)年歷 單片機(jī)課程設(shè)計(jì)_第2頁(yè)
電子實(shí)時(shí)時(shí)鐘_萬(wàn)年歷 單片機(jī)課程設(shè)計(jì)_第3頁(yè)
電子實(shí)時(shí)時(shí)鐘_萬(wàn)年歷 單片機(jī)課程設(shè)計(jì)_第4頁(yè)
電子實(shí)時(shí)時(shí)鐘_萬(wàn)年歷 單片機(jī)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一、題目:電子實(shí)時(shí)時(shí)鐘/萬(wàn)年日歷系統(tǒng)二、功能要求: 1 基本要求: 顯示準(zhǔn)確的北京時(shí)間(時(shí)、分、秒),可用24小時(shí)制式; 隨時(shí)可以調(diào)校時(shí)間。2 發(fā)揮要求: 增加公歷日期顯示功能(年、月、日),年號(hào)只顯示最后兩位; 隨時(shí)可以調(diào)校年、月、日; 允許通過(guò)轉(zhuǎn)換功能鍵轉(zhuǎn)換顯示時(shí)間或日期。三、方案考慮: 1、硬件方案: 顯示器采用6位LED數(shù)碼管(共陽(yáng)),可分別顯示時(shí)間或日期。 顯示器的驅(qū)動(dòng)采用動(dòng)態(tài)掃描電路形式,以達(dá)到簡(jiǎn)化電路的目的。但要注意所需的驅(qū)動(dòng)電流比靜態(tài)驅(qū)動(dòng)時(shí)要大,因此要增加驅(qū)動(dòng)電路??刹捎?4LS244或者晶體管;其中74ls244是用來(lái)驅(qū)動(dòng)段選碼,晶體管是驅(qū)動(dòng)位選碼。采用“一鍵多用方案”,以減

2、少按鍵數(shù)目。本方案采用了4按鍵。 整體上要考慮:結(jié)構(gòu)簡(jiǎn)單、布局美觀、操作方便、成本低廉。2、設(shè)計(jì)電路圖如下:3、元件清單:(我們使用的是TX-1C開(kāi)發(fā)板) 89C52 1個(gè) IC座(40腳) 3個(gè)(其中1個(gè)用于接插89C51、2個(gè)用于接插LED段數(shù)碼管)。 74LS244 1個(gè)(用于驅(qū)動(dòng)6個(gè)共陽(yáng)的LED段數(shù)碼管)。 IC座(20腳) 1個(gè)(用于接插74LS244)。(5)顯示器:LED_8段數(shù)碼管(共陽(yáng)型)6個(gè)三極管:(6)PNP(8550) 6個(gè)(用于驅(qū)動(dòng)6個(gè)共陽(yáng)型LED段數(shù)碼管)。(7)微型開(kāi)關(guān): 3個(gè)(其中1個(gè)用于復(fù)位電路、其它用于鍵盤(pán))。(8)晶體振蕩器(12MHz):1個(gè)(用于振蕩電

3、路)。(9)電阻器: 3K 1個(gè)(用于系統(tǒng)復(fù)位電路)。 1K 6個(gè)(用作PNP三極管基極電阻)。 100 7個(gè)(驅(qū)動(dòng)器用作74LS244輸出限流電阻)。(10)電容器: 10F 1個(gè)(用于系統(tǒng)復(fù)位電路)。 30 pF 2個(gè)(用于系統(tǒng)振蕩電路)。(11)其它: 萬(wàn)能電路板(1015): 1塊 焊錫條: 2米 帶插頭、座的電源端子: 1條 各種顏色外皮的導(dǎo)線(xiàn): 各1米(12)工具:1電烙鐵: 1把2剪鉗: 1把3鑷子: 1把4萬(wàn)用表: 1個(gè)(13)設(shè)備:編程器(MEP300或TOP851) 6個(gè)4、軟件方案: (1)使用全匯編編寫(xiě) (2)時(shí)鐘基準(zhǔn)時(shí)間由單片機(jī)內(nèi)部定時(shí)中斷來(lái)提供,定時(shí)時(shí)間應(yīng)該乘以一個(gè)

4、整數(shù)得到,且不宜太長(zhǎng)或太短,最長(zhǎng)不能超過(guò)16位定時(shí)器的最長(zhǎng)定時(shí)時(shí)間,最短不能少于定時(shí)中斷服務(wù)程序的執(zhí)行時(shí)間。一般來(lái)說(shuō),基準(zhǔn)時(shí)間越短,越有利于提高時(shí)鐘運(yùn)行的精確度。本實(shí)驗(yàn)定時(shí)50mS。乘以一個(gè)整數(shù)20得到“1秒”,本程序的時(shí)鐘能實(shí)現(xiàn)精確定時(shí),在1小時(shí)后,誤差值在1秒內(nèi)(3為了能使調(diào)整的狀態(tài)位能被操作者知道,本系統(tǒng)使用特別的光標(biāo)技術(shù),使調(diào)節(jié)器整的當(dāng)前位特別亮,沒(méi)有調(diào)整時(shí)則全部數(shù)碼管的亮度一致,具體實(shí)施起來(lái)就是:設(shè)置7個(gè)光標(biāo)顯示狀態(tài)位(key1),里面的6個(gè)位對(duì)應(yīng)6個(gè)光標(biāo)位,1位對(duì)應(yīng)空閑位.當(dāng)按下按鍵2時(shí),對(duì)應(yīng)光標(biāo)位將被加1.(4)光標(biāo)位的顯示原理是,當(dāng)光標(biāo)狀態(tài)位是對(duì)應(yīng)值時(shí),將其顯示值兩次賦給數(shù)碼管

5、.(5)在按鍵松手檢測(cè)程序中,改變將其放在死循環(huán)的做法,當(dāng)沒(méi)松手時(shí),不斷調(diào)用顯示子程序,使數(shù)碼管的顯示不會(huì)“熄滅”對(duì)于串口收發(fā),本程序采用的是在主程序的循環(huán)里面不斷進(jìn)行鍵盤(pán)掃描,當(dāng)按下四個(gè)獨(dú)立按鍵時(shí),分別向按鍵發(fā)送四個(gè)不同數(shù)值,然后引起串口中斷,在串口中斷的時(shí)侯讀入四個(gè)鍵值,在中斷子程序讀入四個(gè)鍵值,對(duì)不同鍵值采用不同操作。 把按鍵分4情況來(lái)處理,操作簡(jiǎn)單。4按鍵功能如下:Key1鍵:(對(duì)應(yīng)單片機(jī)左下角第一位):?jiǎn)?dòng)主程序后,其初始值為0,即光標(biāo)位沒(méi)有顯示,當(dāng)該鍵多次按下,KEY1值依次加一,加到7后,又返回光標(biāo)0位Key2鍵:(對(duì)應(yīng)單片機(jī)左下角第二位):其功能是將對(duì)應(yīng)光標(biāo)位的時(shí)分秒值或年月日

6、值加一Key3鍵:(對(duì)應(yīng)單片機(jī)左下角第三位):其功能是使顯示在年月日與時(shí)分秒之間切換Key4鍵:(對(duì)應(yīng)單片機(jī)左下角第四位):其功能是是顯示在子模塊與主模塊之間切換 (7)整點(diǎn)歌唱功能:在定時(shí)器一里面加入音樂(lè)子程序,整首歌唱完之后自動(dòng)跳出,d原理是:因?yàn)槲覀儾捎玫母枨峭ㄟ^(guò)死循環(huán)播放的,所以在播放音樂(lè)的時(shí)候我們肯定不能讓數(shù)碼管動(dòng)態(tài)顯示以及讓定時(shí)器0繼續(xù)計(jì)時(shí),所以我們?cè)谧屢魳?lè)播放16秒之后停止,然后時(shí)間值加上16秒繼續(xù)計(jì)時(shí)5、程序流程圖如下:(1) 電子時(shí)鐘計(jì)算程序圖(2)調(diào)整流程圖匯編程序編寫(xiě)如下(共1039行,24頁(yè),源程序后是收獲與體會(huì)):;/ORG 0000HLJMP MAINORG 00

7、0BH LJMP INTT0 ORG 001BH LJMP START;ORG 0023HLJMP CHUKOUSPK EQU P2.3 ;音樂(lè)DULA EQU P2.6;偽指令定義WELA EQU P2.7MIAO0 DATA 30HMIAO1 DATA 31HFEN0 DATA 32HFEN1 DATA 33HSHI0 DATA 34HSHI1 DATA 35HDAY0 DATA 37HDAY1 DATA 38HMON0 DATA 39HMON1 DATA 40HYEA0 DATA 41HYEA1 DATA 42HKEY1 DATA 43HKEY2 DATA 45HKEY3 DATA 46

8、HKEY4 DATA 47HFLAG1 DATA 48HFLAG2 DATA 49HPASSIN DATA 50HPASSOUT DATA 51HCHANGGE DATA 52HORG 0070H INTT0: MOV TH0,#3CH ;中斷進(jìn)來(lái)定時(shí)器計(jì)數(shù); MOV TL0,#0B0H INC 20H MOV A,20H CJNE A,#20,TIAOGUO MOV 20H,#00H INC MIAO0 ;秒計(jì)數(shù); MOV A,MIAO0 CJNE A,#10,TIAOGUO MOV MIAO0,#0 INC MIAO1;十秒計(jì)數(shù); MOV A,MIAO1 CJNE A,#6,TIAOGUO

9、MOV MIAO1,#0 INC FEN0 MOV A,FEN0 CJNE A,#10,TIAOGUO MOV FEN0,#0 INC FEN1 MOV A,FEN1 CJNE A,#6,TIAOGUO MOV FEN1,#0 ;設(shè)定播音樂(lè)時(shí)間;MOV R1,MIAO0CJNE R1,#0,TIAOYIN MOV R2,MIAO1 CJNE R2,#0,TIAOYIN MOV R3,FEN0 CJNE R3,#0,TIAOYIN MOV R4,FEN1 CJNE R4,#0,TIAOYINSETB ET1 TIAOYIN: INC SHI0 MOV A,SHI1 ;小時(shí)計(jì)數(shù); CJNE A,#

10、2,SHIZHIA MOV A,SHI0 CJNE A,#4,TIAOGUO MOV SHI0,#0 INC SHI1 AJMP SHIZHIB SHIZHIA:MOV A,SHI0 CJNE A,#10,TIAOGUO MOV SHI0,#0 INC SHI1 SHIZHIB:MOV A,SHI1 CJNE A,#3,TIAOGUO MOV SHI1,#0 INC DAY0 AJMP TIAOGUO1 TIAOGUO:AJMP TIAOGUO2 TIAOGUO1: MOV A,DAY1 ;天計(jì)數(shù); CJNE A,#3,DAYZHIA MOV A,DAY0 CJNE A,#2,TIAOGUO2

11、 MOV DAY0,#1 INC DAY1 AJMP DAYZHIB DAYZHIA:MOV A,DAY0 CJNE A,#10,TIAOGUO2 MOV DAY0,#0 INC DAY1 DAYZHIB:MOV A,DAY1 CJNE A,#4,TIAOGUO2 MOV DAY1,#0 INC MON0 ;月計(jì)數(shù),并且使它不益出;MOV A,MON1 ; CJNE A,#1,MONZHIA MOV A,MON0 CJNE A,#3,TIAOGUO2 MOV MON0,#1 INC MON1 AJMP MONZHIB MONZHIA:MOV A,MON0 CJNE A,#10,TIAOGUO2

12、 MOV MON0,#0 INC MON1 MONZHIB:MOV A,MON1 CJNE A,#2,TIAOGUO2 MOV MON1,#0 INC YEA0 ;年計(jì)數(shù); MOV A,YEA0 CJNE A,#10,TIAOGUO2 MOV YEA0,#0 INC YEA1 ; MOV A,YEA1 CJNE A,#10,TIAOGUO2 MOV YEA1,#0 TIAOGUO2: RETICHUKOU:CLR ES ;串口中斷彈進(jìn);MOV A,SBUFMOV PASSIN,ARNEWS:JBC RI,HELLO1 SJMP RNEWSHELLO1: SETB ESMOV A,PASSINC

13、JNE A,#0,HELLO2INC KEY1 ;每次進(jìn)來(lái),加一,對(duì)七取模MOV A,KEY1MOV B,#7DIV ABMOV KEY1,BHELLO2:MOV A,PASSINCJNE A,#1,HELLO3INC KEY2HELLO3:MOV A,PASSINCJNE A,#2,HELLO4INC FLAG1MOV A,FLAG1MOV B,#2DIV ABMOV FLAG1,BHELLO4:MOV A,PASSINCJNE A,#3,HELLO5INC FLAG2MOV A,FLAG2MOV B,#3DIV ABMOV FLAG2,BHELLO5:RETI MAIN: MOV TH0,

14、#3CH ;初始化所有參數(shù)MOV TL0,#0B0HMOV TH1,#0FFHMOV TMOD,#21H SETB EASETB ET0SETB TR0 ;定時(shí)器開(kāi)始計(jì)數(shù);SETB TR1SETB RENSETB SM0CLR SM1SETB ES MOV MIAO0,#5 ;時(shí)分秒初值MOV MIAO1,#5MOV FEN0,#9MOV FEN1,#5MOV SHI0,#3MOV SHI1,#2 ; 一個(gè)倒著看,一個(gè)順著看MOV YEA1,#0 ; 年月日初值MOV YEA0,#9MOV MON1,#1MOV MON0,#2MOV DAY1,#3MOV DAY0,#1MOV KEY1,#0M

15、OV KEY2,#0MOV KEY3,#0MOV KEY4,#0MOV FLAG1,#0MOV FLAG2,#0MOV CHANGGE,#0 LOOP: MOV A,FLAG1 CJNE A,#0,LEI0 MOV A,KEY1;光標(biāo)調(diào)整時(shí)分秒或著年月日; CJNE A,#1,NEXT2 MOV A,KEY2 CJNE A,#1,NEXT2 MOV KEY2,#0 INC MIAO0 NEXT2: MOV A,KEY1 CJNE A,#2,NEXT3 MOV A,KEY2 CJNE A,#1,NEXT3 MOV KEY2,#0 INC MIAO1 NEXT3: MOV A,KEY1 CJNE

16、A,#3,NEXT4 MOV A,KEY2 CJNE A,#1,NEXT4 MOV KEY2,#0 INC FEN0 NEXT4: MOV A,KEY1 CJNE A,#4,NEXT5 MOV A,KEY2 CJNE A,#1,NEXT5 MOV KEY2,#0 INC FEN1 NEXT5: MOV A,KEY1 CJNE A,#5,NEXT6 MOV A,KEY2 CJNE A,#1,NEXT6 MOV KEY2,#0 INC SHI0 NEXT6: MOV A,KEY1 CJNE A,#6,TIAOZHU2; MOV A,KEY2 CJNE A,#1,TIAOZHU2 MOV KEY2,

17、#0 INC SHI1 AJMP TIAOZHU2 ;光標(biāo)調(diào)整年月日,并且通過(guò)FLAG1檢測(cè),使時(shí)分秒的調(diào)整不影響年月日; LEI0: MOV A,KEY1 CJNE A,#1,NEXT22 MOV A,KEY2 CJNE A,#1,NEXT22 MOV KEY2,#0 INC DAY0 NEXT22: MOV A,KEY1 CJNE A,#2,NEXT33 MOV A,KEY2 CJNE A,#1,NEXT3 MOV KEY2,#0 INC DAY1 NEXT33: MOV A,KEY1 CJNE A,#3,NEXT44 MOV A,KEY2 CJNE A,#1,NEXT44 MOV KEY

18、2,#0 INC MON0 NEXT44: MOV A,KEY1 CJNE A,#4,NEXT55 MOV A,KEY2 CJNE A,#1,NEXT55 MOV KEY2,#0 INC MON1 NEXT55: MOV A,KEY1 CJNE A,#5,NEXT66 MOV A,KEY2 CJNE A,#1,NEXT66 MOV KEY2,#0 INC YEA0 NEXT66: MOV A,KEY1 CJNE A,#6,TIAOZHU2; MOV A,KEY2 CJNE A,#1,TIAOZHU2 MOV KEY2,#0 INC YEA1 ;主要部分; TIAOZHU2: ACALL KEY

19、SCAN MOV A,FLAG2 ;主次模塊判斷,分別對(duì)應(yīng)顯示LED_DISPLAY,LED_DISPLAY2,3,4; CJNE A,#0,ZHU2 MOV A,FLAG1 CJNE A,#0,ZHU1 ACALL LED_DISPLAY AJMP ZHU4 ZHU1:ACALL LED_DISPLAY2 AJMP ZHU4 ZHU2:MOV A,FLAG2 CJNE A,#1,ZHU3 ACALL LED_DISPLAY3 AJMP ZHU4 ZHU3:MOV A,FLAG2 CJNE A,#2,ZHU4 ACALL LED_DISPLAY4 ZHU4: MOV A,MIAO0 ;使按鍵調(diào)

20、整無(wú)溢出模塊,因?yàn)樵趯⑵浞旁诙〞r(shí)器0的子程序里的反應(yīng)調(diào)整時(shí)間沒(méi)有主程序快; CJNE A,#10,TIAO1 MOV MIAO0,#0 TIAO1: MOV A,MIAO1 CJNE A,#6,TIAO2 MOV MIAO1,#0 TIAO2: MOV A,FEN0 CJNE A,#10,TIAO3 MOV FEN0,#0 TIAO3: MOV A,FEN1 CJNE A,#6,TIAO4 MOV FEN1,#0 TIAO4: MOV A,SHI1 CJNE A,#2,TIAO44 CLR C ;對(duì)應(yīng)c語(yǔ)言里的(if(x3); MOV A,#3 SUBB A,SHI0 JNC TIAO5MOV

21、 SHI0,#0AJMP TIAO5 TIAO44: MOV A,SHI0 CJNE A,#10,TIAO5 MOV SHI0,#0 TIAO5:MOV A,SHI1 CJNE A,#3,TIAO6 MOV SHI1,#0 TIAO6:MOV A,DAY1 ;使得調(diào)整的時(shí)間不會(huì)出現(xiàn)25小時(shí),37號(hào),16月之類(lèi); CJNE A,#3,TIAO66 CLR C ;通過(guò)減法判斷進(jìn)位來(lái)判別是否達(dá)到調(diào)整條件;MOV A,#1SUBB A,DAY0JNC TIAO7MOV DAY0,#0AJMP TIAO7TIAO66:MOV A,DAY0CJNE A,#10,TIAO7MOV DAY0,#0TIAO7:

22、MOV A,DAY1CJNE A,#4,TIAO8MOV DAY1,#0TIAO8:MOV A,MON1 ;CJNE A,#1,TIAO88 CLR CMOV A,#2SUBB A,MON0JNC TIAO9 ;使調(diào)整不會(huì)超出A;MOV MON0,#0AJMP TIAO9TIAO88:MOV A,MON0CJNE A,#10,TIAO9MOV MON0,#0TIAO9:MOV A,MON1CJNE A,#2,TIAO10MOV MON1,#0TIAO10:MOV A,YEA0 CJNE A,#10,TIAO11 MOV YEA0,#0TIAO11:MOV A,YEA1 CJNE A,#10,T

23、IAOGUO3 MOV YEA1,#0 TIAOGUO3: AJMP LOOP;跳回,循環(huán)主程序LED_DISPLAY: SETB DULA MOV A,MIAO0 ;賦值 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0DFH CLR WELA LCALL DELAY1 MOV A,KEY1 ;判斷光標(biāo)位 CJNE A,#1,GUAN2 LCALL DELAY2SETB DULA MOV A,MIAO0 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0DFH CLR WELA LC

24、ALL DELAY2 GUAN2: SETB DULA MOV A,MIAO1 ;賦值 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0EFH CLR WELA LCALL DELAY1 MOV A,KEY1 ;判斷光標(biāo)位 CJNE A,#2,GUAN3 SETB DULA MOV A,MIAO1 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0EFH CLR WELA LCALL DELAY2 GUAN3: SETB DULA MOV A,FEN0 ;賦值 ACALL PLAY C

25、LR DULA MOV P0,#0FFH SETB WELA MOV P0,#0F7H CLR WELA LCALL DELAY1 MOV A,KEY1 CJNE A,#3,GUAN4 SETB DULA MOV A,FEN0 ;判斷光標(biāo)位 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0F7H CLR WELA LCALL DELAY2 GUAN4: SETB DULA MOV A,FEN1 ;賦值 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FBH CLR WELA LCAL

26、L DELAY1MOV A,KEY1 ;判斷光標(biāo)位CJNE A,#4,GUAN5 SETB DULA MOV A,FEN1 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FBH CLR WELA LCALL DELAY2GUAN5: SETB DULA MOV A,SHI0 ;賦值 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FDH CLR WELA LCALL DELAY1 MOV A,KEY1 ;判斷光標(biāo)位 CJNE A,#5,GUAN6 SETB DULA MOV A,S

27、HI0 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FDH CLR WELA LCALL DELAY2GUAN6: SETB DULA MOV A,SHI1 ;賦值 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FEH CLR WELA LCALL DELAY1 MOV A,KEY1 ;判斷光標(biāo)位 CJNE A,#6,ZHUANG1 SETB DULA MOV A,SHI1 ACALL PLAY CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0

28、FEH CLR WELA LCALL DELAY2ZHUANG1:NOP RETPLAY: MOV DPTR,#SEG_DATA MOVC A,A+DPTR MOV P0,A RET;年月日顯示; LED_DISPLAY2: SETB DULA MOV A,DAY0 ;賦值 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0DFH CLR WELA LCALL DELAY1 MOV A,KEY1 ;判斷光標(biāo)位 CJNE A,#1,GUAN22 LCALL DELAY2SETB DULA MOV A,DAY0 ACALL PLAY2 CLR

29、 DULA MOV P0,#0FFH SETB WELA MOV P0,#0DFH CLR WELA LCALL DELAY2 GUAN22: SETB DULA MOV A,DAY1 ;賦值 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0EFH CLR WELA LCALL DELAY1 MOV A,KEY1 ;判斷光標(biāo)位 CJNE A,#2,GUAN33 SETB DULA MOV A,DAY1 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0EFH CLR WELA LC

30、ALL DELAY2 GUAN33: SETB DULA MOV A,MON0 ;賦值 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0F7H CLR WELA LCALL DELAY1 MOV A,KEY1 CJNE A,#3,GUAN44 SETB DULA MOV A,MON0 ;判斷光標(biāo)位 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0F7H CLR WELA LCALL DELAY2 GUAN44: SETB DULA MOV A,MON1 ;賦值 ACALL PLA

31、Y2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FBH CLR WELA LCALL DELAY1MOV A,KEY1 ;判斷光標(biāo)位CJNE A,#4,GUAN55 SETB DULA MOV A,MON1 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FBH CLR WELA LCALL DELAY2GUAN55: SETB DULA MOV A,YEA0 ;賦值 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FDH CLR WELA

32、 LCALL DELAY1 MOV A,KEY1 ;判斷光標(biāo)位 CJNE A,#5,GUAN66 SETB DULA MOV A,YEA0 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FDH CLR WELA LCALL DELAY2GUAN66: SETB DULA MOV A,YEA1 ;賦值 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FEH CLR WELA LCALL DELAY1 MOV A,KEY1 ;判斷光標(biāo)位 CJNE A,#6,ZHUANG11 SET

33、B DULA MOV A,YEA1 ACALL PLAY2 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FEH CLR WELA LCALL DELAY2ZHUANG11:NOP RETPLAY2: MOV DPTR,#SEG_DATA MOVC A,A+DPTR MOV P0,A RET;子模塊1;LED_DISPLAY3: SETB DULA MOV A,#5 ;賦值 ACALL PLAY3 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0DFH CLR WELA LCALL DELAY1 SETB DULA MOV

34、A,#4 ;賦值 ACALL PLAY3 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0EFH CLR WELA LCALL DELAY1 SETB DULA MOV A,#3 ;賦值 ACALL PLAY3 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0F7H CLR WELA LCALL DELAY1 SETB DULA MOV A,#2 ;賦值 ACALL PLAY3 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FBH CLR WELA LCALL DELAY1 SETB DUL

35、A MOV A,#1 ;賦值 ACALL PLAY3 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FDH CLR WELA LCALL DELAY1 SETB DULA MOV A,#0 ;賦值 ACALL PLAY3 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FEH CLR WELA LCALL DELAY1 RETPLAY3: MOV DPTR,#SEG_DATA MOVC A,A+DPTR MOV P0,A RET;子模塊2; LED_DISPLAY4: SETB DULA MOV A,#15;賦值 ACALL

36、 PLAY4 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0DFH CLR WELA LCALL DELAY1 SETB DULA MOV A,#14 ;賦值 ACALL PLAY4 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0EFH CLR WELA LCALL DELAY1 SETB DULA MOV A,#13 ;賦值 ACALL PLAY4 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0F7H CLR WELA LCALL DELAY1 SETB DULA MOV A,#12

37、;賦值 ACALL PLAY4 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FBH CLR WELA LCALL DELAY1 SETB DULA MOV A,#11 ;賦值 ACALL PLAY4 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FDH CLR WELA LCALL DELAY1 SETB DULA MOV A,#10 ;賦值 ACALL PLAY4 CLR DULA MOV P0,#0FFH SETB WELA MOV P0,#0FEH CLR WELA LCALL DELAY1 RETPLAY4: M

38、OV DPTR,#SEG_DATA MOVC A,A+DPTR MOV P0,A RET; ;鍵盤(pán)掃描;KEYSCAN: SETB P3.4 SETB P3.5 SETB P3.6 SETB P3.7 K0:JNB P3.4,K00 K1:JNB P3.5,K11 K2:JNB P3.6,OUTOF2 SJMP K3 OUTOF2:AJMP K22 K3:JNB P3.7,OUTOF3 SJMP OUTOFF OUTOF3:AJMP K33 OUTOFF: AJMP SS K00:ACALL DELAY1 JB P3.4,K1 MOV PASSOUT,#0 CLR ES;按下按鍵后立即將其發(fā)到

39、串口,在接收端引起串口中斷 MOV A,PASSOUT MOV SBUF,A WAIT0:JBC TI,YES0 SJMP WAIT0YES0:SETB ESSETB P3.4BUTING0:JNB P3.4,BUTING1SJMP TINGBABUTING1:; MOV A,FLAG2 ;判斷當(dāng)前狀態(tài)為哪一種,然后不斷調(diào)用對(duì)應(yīng)的顯示程序,使長(zhǎng)按鍵時(shí)顯示不會(huì)熄滅 CJNE A,#0,HU2 MOV A,FLAG1 CJNE A,#0,HU1 ACALL LED_DISPLAY AJMP HU4 HU1:ACALL LED_DISPLAY2 AJMP HU4 HU2:MOV A,FLAG2 CJ

40、NE A,#1,HU3 ACALL LED_DISPLAY3 AJMP HU4 HU3:MOV A,FLAG2 CJNE A,#2,HU4 ACALL LED_DISPLAY4 HU4:SJMP BUTING0;TINGBA:AJMP K1 K11:ACALL DELAY1 JB P3.5,K2 MOV PASSOUT,#1 CLR ES MOV A,PASSOUT MOV SBUF,A WAIT1:JBC TI,YES1 SJMP WAIT1YES1:SETB ES SETB P3.5 BUTING00:JNB P3.5,BUTING11 SJMP TINGBA1 BUTING11: ; M

41、OV A,FLAG2 ;主次模塊判斷 CJNE A,#0,HU22 MOV A,FLAG1 CJNE A,#0,HU11 ACALL LED_DISPLAY AJMP HU44 HU11:ACALL LED_DISPLAY2 AJMP HU44 HU22:MOV A,FLAG2 CJNE A,#1,HU33 ACALL LED_DISPLAY3 AJMP HU44 HU33:MOV A,FLAG2 CJNE A,#2,HU44 ACALL LED_DISPLAY4 HU44: SJMP BUTING00; TINGBA1: AJMP K2 K22:ACALL DELAY1 JB P3.6,OU

42、TK3OUTK33:SJMP OUT_K33OUTK3:AJMP K3OUT_K33: MOV PASSOUT,#2 CLR ES MOV A,PASSOUT MOV SBUF,A WAIT2:JBC TI,YES2 SJMP WAIT2YES2:SETB ESSETB P3.6 BU000:JNB P3.6,BU111SJMP TINGBA11BU111: ; MOV A,FLAG2 ;主次模塊判斷 CJNE A,#0,HU222 MOV A,FLAG1 CJNE A,#0,HU111 ACALL LED_DISPLAY AJMP HU444 HU111:ACALL LED_DISPLAY2 AJMP HU444 HU222:MOV A,FLAG2 CJNE A,#1,HU333 ACALL LED_DISPLAY3 AJMP HU444 HU333:MOV A,FLAG2 CJNE A,#2,HU444 ACALL LED_DISPLAY4 HU444:SJMP BU000 ;TINGBA11:AJMP K3 K33:ACALL DELAY1 JB P3.7,SS MOV PASSOUT,#3 CLR ES MOV A,PASSOUT MOV SBUF,A WAIT

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論