電子時鐘萬年歷單片機設計_第1頁
電子時鐘萬年歷單片機設計_第2頁
電子時鐘萬年歷單片機設計_第3頁
電子時鐘萬年歷單片機設計_第4頁
電子時鐘萬年歷單片機設計_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、信工五班 呂善翔200730101250 翁子棉200730241235一、題目:電子實時時鐘/萬年日歷系統二、功能要求:1 . 基本要求:顯示準確的北京時間(時、分、秒) ,可用24小時制式; 隨時可以調校時間。2 .發揮要求: 增加公歷日期顯示功能(年、月、日),年號只顯示最后兩位;隨時可以調校年、月、日; 允許通過轉換功能鍵轉換顯示時間或日期。三、方案考慮:1、硬件方案:顯示器采用6位LED數碼管(共陽),可分別顯示時間或日期。 顯示器的驅動采用動態掃描電路形式,以達到簡化電路的目的。但要注意所需的驅動電流比靜態驅動時要大,因此要增加驅動電路。可采用 74LS244或者 晶體管;其中74

2、1S244是用來驅動段選碼,晶體管是驅動位選碼。采用“一鍵多用方案”,以減少按鍵數目。本方案采用了 4按鍵。(4)整體上要考慮:結構簡單、布局美觀、操作方便、成本低廉。2、設計電路圖如下:m=b:&三H三一&k k + OD rB;.一一第3頁共28頁 89C521IC座(40腳) 74LS24413、元件清單:(我們使用的是 TX-1C開發板)(其中1個用于接插89C51、2個用于接插LED段數碼管)。(用于驅動6個共陽的LED段數碼管)。 IC 座( 20 腳) 1 個 (用于接插74LS244) 。(5)顯示器:LED_8 段數碼管(共陽型)6個三極管:(6)PNP( 8

3、550)6個 (用于驅動6個共陽型LED 段數碼管)。(7)微型開關:3 個 (其中 1 個用于復位電路、其它用于鍵盤)。(8)晶體振蕩器(12MHz) : 1 個 (用于振蕩電路)。(9)電阻器:3K Q 1 個(用于系統復位電路)。1KQ 6 個(用作PNP三極管基極電阻)。100 a 7 個(驅動器用作74LS244輸出限流電阻)。(10)電容器:10科F 1個(用于系統復位電路) 30 pF 2 個 (用于系統振蕩電路)(11)其它:萬能電路板(10X 15):1塊焊錫條:2米帶插頭、座的電源端子:1 條各種顏色外皮的導線:各 1米12)工具:1 電烙鐵:1把2剪鉗:1把3鑷子:1 把

4、4萬用表:1 個13)設備:編程器(MEP300 或 TOP851 )6 個4、軟件方案:( 1) 使用全匯編編寫( 2) 時鐘基準時間由單片機內部定時中斷來提供,定時時間應該乘以一個整數得到,且不宜太長或太短,最長不能超過16 位定時器的最長定時時間,最短不能少于定時中斷服務程序的執行時間。一般來說,基準時間越短,越有利于提高時鐘運行的精確度。本實驗定時50mS。 乘以一個整數20得到“ 1 秒” , 本程序的時鐘能實現精確定時,在1 小時后,誤差值在1 秒內( 3) 能使調整的狀態位能被操作者知道, 本系統使用特別的光標技術, 使調節器整的當前位特別亮, 沒有調整時則全部數碼管的亮度一致,

5、 具體實施起來就是: 設置 7 個光標顯示狀態位(key1), 里面的 6 個位對應6個光標位,1 位對應空閑位. 當按下按鍵2時 ,對應光標位將被加1.(4) 光標位的顯示原理是, 當光標狀態位是對應值時, 將其顯示值兩次賦給數碼管.(5) 在按鍵松手檢測程序中, 改變將其放在死循環的做法, 當沒松手時, 不斷調用顯示子程序 , 使數碼管的顯示不會“熄滅”對于串口收發,本程序采用的是在主程序的循環里面不斷進行鍵盤掃描,當按下四個獨立按鍵時,分別向按鍵發送四個不同數值,然后引起串口中斷,在串口中斷的時侯讀入四個鍵值,在中斷子程序讀入四個鍵值,對不同鍵值采用不同 操作。(6)把按鍵分4情況來處理

6、,操作簡單。4按鍵功能如下:Key1鍵:(對應單片機左下角第一位):啟動主程序后,其初始值為 0,即光標 位沒有顯示,當該鍵多次按下,KEY1值依次加一,加到 7后,又返回光標0位Key2鍵:(對應單片機左下角第二位) 年月日值加一Key3鍵:(對應單片機左下角第三位) 間切換Key4鍵:(對應單片機左下角第四位) 間切換:其功能是將對應光標位的時分秒值或:其功能是使顯示在年月日與時分秒之:其功能是是顯示在子模塊與主模塊之(7)整點歌唱功能:在定時器一里面加入音樂子程序,整首歌唱完之后自動跳出,d原理是:因為我們采用的歌曲是通過死循環播放的,所以在播放音樂的時候我們肯定不能讓數碼管動態顯示以及

7、讓定時器0繼續計時,所以我們在讓音樂播放 16秒之后停止,然后時間值加上16秒繼續計時5、程序流程圖如下:(1)電子時鐘計算程序圖W 用 wyrar ; 的mem姆.子程序, 查出旗年臻月有幾天返回(2)調整流程圖信工五班呂善翔 200730101250 翁子棉 200730241235匯編程序編寫如下(共1039行,24頁,源程序后是收獲與體會);/ORG 0000HLJMP MAINORG 000BHLJMP INTT0ORG 001BHLJMP START;ORG 0023HLJMP CHUKOUSPK EQU P2.3 ; 音樂DULA EQU P2.6;偽指令定義WELA EQU P

8、2.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 46HKEY4 DATA 47HFLAG1 DATA 48HFLAG2 DATA 49HPASSIN DATA 50HPASSOUT DATA 51HCHANGGE DATA 52HORG 0070HINT

9、T0: MOV TH0,#3CH;中 斷 進 來 定 時 器 計數 ; ,MOV TL0,#0B0HINC 20HMOV A,20HCJNE A,#20,TIAOGUOMOV 20H,#00HINC MIAO0; 秒計數 ;MOV A,MIAO0CJNE A,#10,TIAOGUOMOV MIAO0,#0INC MIAO1; 十秒計數;MOV A,MIAO1CJNE A,#6,TIAOGUOMOV MIAO1,#0INC FEN0MOV A,FEN0CJNE A,#10,TIAOGUOMOV FEN0,#0INC FEN1MOV A,FEN1CJNE A,#6,TIAOGUOMOV FEN1,

10、#0;設 定 播 音 樂 時間 ; I J ,MOV R1,MIAO0CJNE R1,#0,TIAOYINMOV R2,MIAO1CJNE R2,#0,TIAOYINMOV R3,FEN0CJNE R3,#0,TIAOYINMOV R4,FEN1CJNE R4,#0,TIAOYINSETB ET1TIAOYIN:INC SHI0MOV A,SHI1; 小時計數;CJNE A,#2,SHIZHIAMOV A,SHI0CJNE A,#4,TIAOGUOMOV SHI0,#0INC SHI1AJMP SHIZHIBSHIZHIA:MOV A,SHI0CJNE A,#10,TIAOGUOMOV SHI

11、0,#0INC SHI1SHIZHIB:MOV A,SHI1CJNE A,#3,TIAOGUOMOV SHI1,#0INC DAY0AJMP TIAOGUO1TIAOGUO:AJMP TIAOGUO2TIAOGUO1:MOV A,DAY1 ; 天計數 ;CJNE A,#3,DAYZHIAMOV A,DAY0CJNE A,#2,TIAOGUO2MOV DAY0,#1INC DAY1AJMP DAYZHIBDAYZHIA:MOV A,DAY0CJNE A,#10,TIAOGUO2MOV DAY0,#0INC DAY1DAYZHIB:MOV A,DAY1CJNE A,#4,TIAOGUO2MOV D

12、AY1,#0INC MON0 ;月計數,并且使它不益出MOV A,MON1 ;CJNE A,#1,MONZHIAMOV A,MON0CJNE A,#3,TIAOGUO2MOV MON0,#1INC MON1AJMP MONZHIBMONZHIA:MOV A,MON0CJNE A,#10,TIAOGUO2MOV MON0,#0INC MON1MONZHIB:MOV A,MON1CJNE A,#2,TIAOGUO2MOV MON1,#0第 25 頁 共 28 頁INC YEA0,年計數,MOV A,YEA0CJNE A,#10,TIAOGUO2MOV YEA0,#0INC YEA1,MOV A,Y

13、EA1CJNE A,#10,TIAOGUO2MOV YEA1,#0TIAOGUO2:RETI口中斷彈CHUKOU: CLR ES,進 ;MOV A,SBUFMOV PASSIN,ARNEWS:JBC RI,HELLO1SJMP RNEWSHELLO1: SETB ESMOV A,PASSINCJNE A,#0,HELLO2INC KEY1 ; 每次進來,加一,對七取模MOV A,KEY1MOV B,#7DIV ABMOV KEY1,BHELLO2:MOV A,PASSINCJNE A,#1,HELLO3INC KEY2HELLO3:MOV A,PASSINCJNE A,#2,HELLO4INC

14、 FLAG1MOV A,FLAG1MOV B,#2DIV ABMOV FLAG1,BHELLO4:MOV A,PASSINCJNE A,#3,HELLO5INC FLAG2MOV A,FLAG2MOV B,#3DIV ABMOV FLAG2,BHELLO5:RETIMAIN:MOV TH0,#3CH ; 初始化所有參數MOV TL0,#0B0HMOV TH1,#0FFHMOV TMOD,#21HSETB EASETB ET0SETB TR0 ; 定時器開始計數SETB TR1SETB RENSETB SM0CLR SM1SETB ESMOV MIAO0,#5,時分秒初值MOV MIAO1,#5

15、MOV FEN0,#9MOV FEN1,#5MOV SHI0,#3MOV SHI1,#2; 一個倒著看,一個順著看MOV YEA1,#0; 年月日初值MOV YEA0,#9MOV MON1,#1MOV MON0,#2MOV DAY1,#3MOV DAY0,#1MOV KEY1,#0MOV KEY2,#0MOV KEY3,#0MOV KEY4,#0MOV FLAG1,#0MOV FLAG2,#0MOV CHANGGE,#0LOOP:MOV A,FLAG1CJNE A,#0,LEI0MOV A,KEY1; 光標調整時分秒或著年月日CJNE A,#1,NEXT2MOV A,KEY2CJNE A,#1

16、,NEXT2MOV KEY2,#0INC MIAO0NEXT2: MOV A,KEY1CJNE A,#2,NEXT3MOV A,KEY2CJNE A,#1,NEXT3MOV KEY2,#0INC MIAO1NEXT3:MOV A,KEY1CJNE A,#3,NEXT4MOV A,KEY2CJNE A,#1,NEXT4MOV KEY2,#0INC FEN0NEXT4:MOV A,KEY1CJNE A,#4,NEXT5MOV A,KEY2CJNE A,#1,NEXT5MOV KEY2,#0INC FEN1NEXT5:MOV A,KEY1CJNE A,#5,NEXT6MOV A,KEY2CJNE A

17、,#1,NEXT6MOV KEY2,#0INC SHI0NEXT6:MOV A,KEY1CJNE A,#6,TIAOZHU2 ;MOV A,KEY2CJNE A,#1,TIAOZHU2MOV KEY2,#0INC SHI1AJMP TIAOZHU2光標調整年月日,并且通過FLAG1 檢測,使時分秒的調整不影響年月LEI0:MOV A,KEY1CJNE A,#1,NEXT22MOV A,KEY2CJNE A,#1,NEXT22MOV KEY2,#0INC DAY0NEXT22: MOV A,KEY1CJNE A,#2,NEXT33MOV A,KEY2CJNE A,#1,NEXT3MOV KEY2

18、,#0INC DAY1NEXT33:MOV A,KEY1CJNE A,#3,NEXT44MOV A,KEY2CJNE A,#1,NEXT44MOV KEY2,#0INC MON0NEXT44:MOV A,KEY1CJNE A,#4,NEXT55MOV A,KEY2CJNE A,#1,NEXT55MOV KEY2,#0INC MON1NEXT55:MOV A,KEY1CJNE A,#5,NEXT66MOV A,KEY2CJNE A,#1,NEXT66MOV KEY2,#0INC YEA0NEXT66:MOV A,KEY1CJNE A,#6,TIAOZHU2 ;MOV A,KEY2CJNE A,#

19、1,TIAOZHU2MOV KEY2,#0INC YEA1,一I I 八 ,TIAOZHU2:ACALL KEYSCANMOV A,FLAG2 ; 主次模塊判斷, 分別對應顯示LED_DISPLAY,LED_DISPLAY2,3,4;CJNE A,#0,ZHU2MOV A,FLAG1CJNE A,#0,ZHU1ACALL LED_DISPLAYAJMP ZHU4ZHU1:ACALL LED_DISPLAY2AJMP ZHU4ZHU2:MOV A,FLAG2CJNE A,#1,ZHU3ACALL LED_DISPLAY3AJMP ZHU4ZHU3:MOV A,FLAG2CJNE A,#2,ZHU

20、4ACALL LED_DISPLAY4ZHU4:MOV A,MIAO0; 使按鍵調整無溢出模塊, 因為在將其放在定時器0 的子程序里;CJNE A,#10,TIAO1MOV MIAO0,#0TIAO1: MOV A,MIAO1CJNE A,#6,TIAO2MOV MIAO1,#0TIAO2: MOV A,FEN0CJNE A,#10,TIAO3MOV FEN0,#0TIAO3: MOV A,FEN1CJNE A,#6,TIAO4MOV FEN1,#0TIAO4: MOV A,SHI1CJNE A,#2,TIAO44CLR C;對應 c 語言里的(if(x<3);MOV A,#3SUBB

21、A,SHI0JNC TIAO5MOV SHI0,#0AJMP TIAO5TIAO44: MOV A,SHI0CJNE A,#10,TIAO5MOV SHI0,#0TIAO5:MOV A,SHI1CJNE A,#3,TIAO6MOV SHI1,#0TIAO6:MOV A,DAY1; 使 得 調 整 的 時 間 不 會 出 現 25 小 時 , 37 號 , 16 月 之;CJNE A,#3,TIAO66CLR C; 通過減法判斷進位來判別是否達到調整條件;MOV A,#1SUBB A,DAY0JNC TIAO7MOV DAY0,#0AJMP TIAO7TIAO66:MOV A,DAY0CJNE

22、A,#10,TIAO7MOV DAY0,#0TIAO7:MOV A,DAY1CJNE A,#4,TIAO8MOV DAY1,#0TIAO8:MOV A,MON1 ;CJNE A,#1,TIAO88CLR CMOV A,#2SUBB A,MON0JNC TIAO9 ; 使調整不會超出A;MOV MON0,#0AJMP TIAO9TIAO88:MOV A,MON0CJNE A,#10,TIAO9MOV MON0,#0TIAO9:MOV A,MON1CJNE A,#2,TIAO10MOV MON1,#0TIAO10:MOV A,YEA0CJNE A,#10,TIAO11MOV YEA0,#0TIAO

23、11:MOV A,YEA1CJNE A,#10,TIAOGUO3MOV YEA1,#0TIAOGUO3:AJMP LOOP;跳回,循環主程序LED_DISPLAY:SETB DULAMOV A,MIAO0 ; 賦值ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0DFHCLR WELALCALL DELAY1MOV A,KEY1 ; 判斷光標位CJNE A,#1,GUAN2LCALL DELAY2SETB DULAMOV A,MIAO0ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0DFHCLR WE

24、LALCALL DELAY2GUAN2:SETB DULAMOV A,MIAO1 ; 賦值ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0EFHCLR WELALCALL DELAY1MOV A,KEY1 ; 判斷光標位CJNE A,#2,GUAN3SETB DULAMOV A,MIAO1ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0EFHCLR WELALCALL DELAY2GUAN3:SETB DULAMOV A,FEN0 ; 賦值ACALL PLAYCLR DULAMOV P0,#0FFH

25、SETB WELAMOV P0,#0F7HCLR WELALCALL DELAY1MOV A,KEY1CJNE A,#3,GUAN4SETB DULAMOV A,FEN0 ; 判斷光標位ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0F7HCLR WELALCALL DELAY2GUAN4:SETB DULAMOV A,FEN1; 賦值ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FBHCLR WELALCALL DELAY1MOV A,KEY1; 判斷光標位CJNE A,#4,GUAN5SETB

26、 DULAMOV A,FEN1ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FBHCLR WELALCALL DELAY2GUAN5:SETB DULAMOV A,SHI0; 賦值ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FDHCLR WELA判斷光標位LCALL DELAY1MOV A,KEY1CJNE A,#5,GUAN6SETB DULAMOV A,SHI0ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FDHCLR WELALCALL

27、DELAY2GUAN6:SETB DULAMOV A,SHI1; 賦值ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FEHCLR WELALCALL DELAY1MOV A,KEY1; 判斷光標位CJNE A,#6,ZHUANG1SETB DULAMOV A,SHI1ACALL PLAYCLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FEHCLR WELALCALL DELAY2ZHUANG1:NOPRETPLAY:MOV DPTR,#SEG_DATAMOVC A,A+DPTRMOV P0,ARET,LED_DISP

28、LAY2:SETB DULAMOV A,DAY0 ; 賦值ACALL PLAY2CLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0DFHCLR WELALCALL DELAY1MOV A,KEY1 ; 判斷光標位 CJNE A,#1,GUAN22LCALL DELAY2SETB DULAMOV A,DAY0ACALL PLAY2CLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0DFHCLR WELALCALL DELAY2GUAN22:SETB DULAMOV A,DAY1 ; 賦值ACALL PLAY2CLR DULAMOV P0,#0FF

29、HSETB WELAMOV P0,#0EFHCLR WELALCALL DELAY1MOV A,KEY1 ; 判斷光標位CJNE A,#2,GUAN33 SETB DULAMOV A,DAY1ACALL PLAY2CLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0EFHCLR WELALCALL DELAY2GUAN33:SETB DULAMOV A,MON0 ; 賦值ACALL PLAY2CLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0F7HCLR WELALCALL DELAY1MOV A,KEY1CJNE A,#3,GUAN44SET

30、B DULAMOV A,MON0 ; 判斷光標位ACALL PLAY2CLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0F7HCLR WELALCALL DELAY2GUAN44:SETB DULAMOV A,MON1; 賦值ACALL PLAY2CLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FBHCLR WELALCALL DELAY1MOV A,KEY1; 判斷光標位CJNE A,#4,GUAN55SETB DULAMOV A,MON1ACALL PLAY2CLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FBHCLR WELALCALL DELAY2GUAN55:SETB DULAMOV A,YEA0; 賦值ACALL PLAY2CLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FDHCLR WELALCALL DELAY1MOV A,KEY1; 判斷光標位CJNE A,#5,GUAN66SETB DULAMOV A,YEA0ACALL PLAY2CLR DULAMOV P0,#0FFHSETB WELAMOV P0,#0FDHCLR WELALCALL DELAY2GUAN6

溫馨提示

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

評論

0/150

提交評論