對時功能電子鐘設計報告_第1頁
對時功能電子鐘設計報告_第2頁
對時功能電子鐘設計報告_第3頁
對時功能電子鐘設計報告_第4頁
對時功能電子鐘設計報告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、設計報告題 目完成人:張欣,杜楓一、 系統(tǒng)概述使用at89c51單片機結合段碼led顯示器,鍵盤設計一個具有對時功能的電子鐘。1、設計要求:l 采用8個led數(shù)碼管,顯示格式為“時時-分分-秒秒”,采用24小時制。l “時/分/秒”相應led閃動,表示相應的部分處于對時狀態(tài)。l 用5個功能鍵操作來設置當前時間:功能鍵k1k5功能如下。l k1進入時間設置狀態(tài),且“時時-分分-秒秒”led閃動。l k2設置小時。l k3設置分鐘。l k4設置秒鐘。l k5確認完成設置,“時時-分分-秒秒”led停止閃動,繼續(xù)計時。l 未進入計時狀態(tài)時,k2-k5鍵的操作被忽略。程序執(zhí)行后led顯示“00:00:

2、00”,然后開始計時。2、用匯編語言編寫相應軟件;3、系統(tǒng)軟、硬件聯(lián)調(diào)。二、 方案設計本次設計是基于at89c51單片機電子鐘的設計,對時、分、秒的顯示的控制,時、分、秒用六位數(shù)碼管顯示led數(shù)碼管時鐘電路采用24小時計時方式。該電路采用at89c51單片機,使用5v電池供電,只使用一個按鍵進行復位狀態(tài)的控制以及正常顯示等狀態(tài)。led顯示采用靜態(tài)掃描方式實現(xiàn),采用6m晶振。該電子鐘使用單片機模塊控制,用單片機原理實現(xiàn)時、分、秒計時的裝置。本次設計通過用單片機為主控制,通過電路仿真而實現(xiàn)。首先使用proteus professional軟件進行繪制硬件電路圖,用keil軟件進行編程與調(diào)試,最終生

3、成hex文件,傳入單片機內(nèi)部,從而實現(xiàn)仿真效果。三、 硬件設計根據(jù)at89c51單片機灌電流能力強,拉電流能力弱的特點,我們選用共陽數(shù)碼管。將at89c51的p3.0p3.1分別與74ls164的數(shù)據(jù)輸入口和時鐘信號輸入口相連,74ls164是8位串入并出移位寄存器,負責將p3.0輸出的串行數(shù)據(jù)轉換成并行信號。顯然,這種方式顯示同樣的位數(shù)使用單片機的口線大大減少,即可以讓led當前時間數(shù)值,數(shù)碼管顯示器有二種工作方式,即靜態(tài)顯示方式和動態(tài)掃描顯示方式。為節(jié)省端口,本系統(tǒng)采用靜態(tài)掃描顯示方式。系統(tǒng)的時分顯示部件由6只7段共陽led數(shù)碼管構成,前兩只用于時的顯示,中間兩只用于分的顯示,最后兩只用于

4、秒的顯示。每個led數(shù)碼管由相對應的74ls164驅(qū)動,數(shù)碼管的a,b,c,d,e,f,g,h,分別分別74ls164的qa,qb,qc,qd,qe,qf,qh相連。3.1 at89c51引腳及其功能引腳功能:vcc(40):電源電壓 gnd(20):接地p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口)rst(9):復位信號輸入端。當振蕩器工作時,rst引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。/ea/vpp:當/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/ea將內(nèi)部鎖定為reset;當/ea端保持高電平

5、時,此間內(nèi)部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1(18):振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。xtal2(19):振蕩器反相放大器的輸出端。通過xtal1、xtal2外接晶振后,即可構成自激振蕩器,驅(qū)動內(nèi)部時鐘發(fā)生器向主機提供時鐘信號。3.2 時鐘電路單片機必須在時鐘的驅(qū)動下才能進行工作。mcs-51系列單片機內(nèi)部有一時鐘振蕩電路,只需外接振蕩電源,就能產(chǎn)生一定頻率的時鐘信號到單片機內(nèi)部的各個單元,決定單片機的工作速度。電路如下圖:3.3驅(qū)動部件74ls245是我們常用的芯片,用來驅(qū)動led或者其他的設備,它是8路同相三態(tài)雙向總線收發(fā)器

6、,可雙向傳輸數(shù)據(jù)。當8051單片機的p0口總線負載達到或超過p0最大負載能力時,必須接入74ls245等總線驅(qū)動器。圖3(a)為74ls245的管腳圖。圖3(a)74ls245管腳圖3.4顯示部分由8個共陰極的數(shù)碼管組成時、分、秒和分隔符的顯示p0口的8條數(shù)據(jù)線p0.0至p0.7分別與74ls245的a口對應相接,增大at89c51的帶負載能力;p3口對應接八個數(shù)碼管的公共端,通過程序控制數(shù)碼管的亮與滅,這樣通過p0口送出一個存儲單元的高位、低位bcd顯示代碼,通過p3口送出 掃描選通代碼輪流點亮led1至led8,就會將要顯示的數(shù)據(jù)在數(shù)碼管中顯示出來,從p0口輸出的代碼是bcd碼,從p3口輸

7、出的就是位選碼。這是掃描顯示原理。led顯示段碼字型共陽極段碼共陰極段碼字型共陽極段碼共陰極段碼0c0h3fh990h6fh1f9h06ha88h77h2a4h5bhb83h7ch3boh4fhcc6h39h499h66hda1h5eh592h6dhe86h79h682h7dhf84h71h7f8h07h空白ffh00h880h7fhp8ch73h注:(1)本表所列各字符的顯示段碼均為小數(shù)點不亮的情況。 (2)“空白”字符即沒有任何顯示。四、 軟件設計本次設計的軟件部分由主程序,靜態(tài)顯示子程序,中斷服務程序,時、分、秒加1子程序,時、分、秒單元清零子程序組成。4.1 電子鐘的主程序本設計中,計

8、時采用定時器t0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當端口開關按下時,轉入相應功能程序。其主程序執(zhí)行流程見下圖。開始設堆棧指針秒分時計數(shù)單元清零設定時器工作方式設定時器初值設中斷方式中斷初始化調(diào)顯示子程序tmod=01為工作方式14.2定時器中斷服務程序定時器to用于時間計時,定時溢出中斷周期設為100ms,中斷進入后,判斷是否到1秒鐘,到了,則調(diào)用加法子程序?qū)γ脒M行加1處理,處理完后返回斷點地址,同時判斷秒是否到了60秒,到了則對秒單元清零,同時對分進行加1操作,同樣對分進行判斷,到60分則對分單元清零,同時對時加1,同樣也對時進行判斷,到24小時,則對時單元清零,最后中斷返回。 t0中斷

9、服務程序執(zhí)行流程見下圖:保護現(xiàn)場 賦初值10數(shù)是否到?ny秒值加1是否到60秒?n y秒清0分加1是否到60分?ny分清0小時加1是否到24小時?ny小時清0恢復現(xiàn)場返回中斷4.3電子鐘的顯示子程序4.4延時子程序附:程序片段如下:s_setbitp1.0m_setbitp1.1h_setbitp1.2secondequ30hminuteequ31h;定義minute為31h單元標號,分計數(shù)單元hourequ32h;定義hour為32h單元標號,時計數(shù)單元tcntequ34h;定義tcnt為34h單元標號定時器to計數(shù)org00h;程序開始地址sjmpstart ;跳轉到start執(zhí)行org0

10、bh;定時器to中斷入口地址ljmp int_t0;跳轉到int-to執(zhí)行start:mov dptr,#table;指針指向table首地址movhour,#0;初始化秒計數(shù)單元movminute, #0;初始化分計數(shù)單元movsecond,#0;初始化時計數(shù)單元movtcnt,#0;初始化t0計數(shù)單元movtmod,#01h;工作方式1movth0,#(65536-50000)/256;定時 50 毫秒movtl0,#(65536-50000)mod 256movie,#82h;允許定時器to中斷setbtr0;啟動定時器t0;判斷是否有控制鍵按下,是哪一個鍵按下a1:lcalldispl

11、ay;跳轉到display執(zhí)行jnbs_set,s1;檢查 p1.0 口 電平jnbm_set,s2;檢查 pl.l 口電平jnbh_set,s3;檢查 p1.2 口 電平ljmpa1;返回s1:lcalldelay;去抖動jbs_set,a1;確認 p1.0 口電平incsecond;秒值加1mova,second;秒數(shù)值送入a比較cjne a,#60,j0;判斷是否加到60秒movsecond,#0;second 單元清零ljmpk1;轉到k1執(zhí)行s2:lcalldelay;長調(diào)用delay指令 jbm_set,a1;確認pl.l 口電平k1:incminute;分鐘值加1mova,min

12、ute;分數(shù)值送入a比較cjnea,#60,j1;判斷是否加到60分movminute,#0;秒單元清零ljmpk2;調(diào)用k2指令s3:lcalldelay;調(diào)用延時子程序jbh_set,a1;確認?1.2 口電平k2:inchour;小時值加1mova,hour;時數(shù)值送入a比較cjnea,#24,j2;判斷是否加到24小時movhour, #0;時單元清零movminute, #0;分單元清零movsecond,#0;秒單元清零ljmpa1;跳轉到程序a1;等待按鍵抬起j0: jbs_set,a1;調(diào)用a1指令lcalldisplay;調(diào)用顯示子程序sjmpj0;返回j0指令j1: jbm

13、_set,a1;數(shù)值比較lcalldisplay;調(diào)用顯示子程序sjmpj1;返回j1指令j2: jbh_set,a1;數(shù)值比較lcalldisplay;調(diào)用顯示子程序sjmpj2;返回j2指令;定時器to中斷服務子程序,對秒,分鐘和小時的計數(shù)int_t0:movth0,# (65536-50000)/256;定時 50msmovtl0,# (65536-50000) mod 256inctcnt;定時器to計數(shù)單元中的數(shù)值加1mova, tcnt;定時器t0計數(shù)單元中的數(shù)值送入a比較cjnea,#20,retune ;計時 1 秒,incsecond;秒計數(shù)單元中的數(shù)值加1movtcnt,#

14、0;定時器to計數(shù)單元歸零mova,second;秒計數(shù)單元中的數(shù)值送入a比較cjnea, #60,retune;記時 1 分,incminute;分計數(shù)單元中的數(shù)值加1movsecond, #0;秒計數(shù)單元歸零mova, minute;分計數(shù)單元中的數(shù)值送入a比較cjnea,#60,retune;記時 1 時,inchour;時計數(shù)單元中的數(shù)值加1movminute, #0;分計數(shù)單元歸零mova,hour;時計數(shù)單元中的數(shù)值送入a比較cjnea, #24,retune;記時 1 天,movhour,#0;時計數(shù)單元歸零movminute, #0;分計數(shù)單元歸零movsecond, #0;秒

15、計數(shù)單元歸零movtcnt,#0;定時器t0計數(shù)單元清零retune: reti;中斷返回 ;顯示控制子程序display: mova,second;顯示秒movb, #10;b寄存器賦值為10divab;(a)/(b),商存入a,余數(shù)存入b,分別處理a與b中數(shù)clrp3.6;數(shù)碼管7開始工作movca,a+dptr;數(shù)據(jù)指針指向數(shù)值地址并送入a輸出顯示movp0,a;在數(shù)碼管7輸出顯示秒單元的十位數(shù)值lcalldelay;調(diào)用延時子程序setbp3.6;數(shù)碼管7停止工作mova, b;將b寄存器中的數(shù)送入a處理顯示clrp3.7;數(shù)碼管8開始工作movca,a+dptr;數(shù)據(jù)指針指向數(shù)值地址

16、并送入a輸出顯示movp0,a;在數(shù)碼管8輸出顯示秒單元的個位數(shù)值lcalldelay;調(diào)用延時子程序setbp3.7;數(shù)碼管8停止工作clrp3.5;數(shù)碼管6開始工作movp0,#40h;顯示分隔符lcalldelay;調(diào)用延時子程序setbp3.5;數(shù)碼管6停止工作mova,minute;顯示分鐘movb, #10;b寄存器賦值為10divabclrp3.3;數(shù)碼管4開始工作movca,a+dptr;數(shù)據(jù)指針指向數(shù)值地址并送入a輸出顯示movp0,a;在數(shù)碼管4輸出顯示分單元的十位數(shù)值lcalldelay;調(diào)用延時子程序setbp3.3;數(shù)碼管4停止工作mova,b;將b寄存器中的數(shù)送入a

17、處理顯示clrp3.4;數(shù)碼管5開始工作movca,a+dptr;數(shù)據(jù)指針指向數(shù)值地址并送入a輸出顯示movp0,a;在數(shù)碼管5輸出顯示分單元的個位數(shù)值lcalldelay;調(diào)用延時子程序setbp3.4;數(shù)碼管5停止工作clrp3.2;數(shù)碼管3開始工作movp0,#40h;顯示分隔符lcalldelay;調(diào)用延時子程序setbp3.2;數(shù)碼管3停止工作mova,hour;顯示小時movb,#10;b寄存器賦值為10divab;商存入a,余數(shù)存入b,分別處理a與b中數(shù)clrp3.0;數(shù)碼管1開始工作movca,a+dptr;數(shù)據(jù)指針指向數(shù)值地址并送入a輸出顯示movp0,a;在數(shù)碼管1輸出顯示

18、時單元的十位數(shù)值lcall delay;調(diào)用延時子程序 setbp3.0;數(shù)碼管1停止工作setb p3.0;數(shù)碼管1停止工作mova,b;將b寄存器中的數(shù)送入a處理顯示clrp3.1;數(shù)碼管2開始工作 movca,a+dptr;數(shù)據(jù)指針指向數(shù)值地址并送入a輸出顯示movp0,a;在數(shù)碼管2輸出顯示時單元的個位數(shù)值lcalldelay;調(diào)用延時子程序setbp3.1;數(shù)碼管2停止工作ret;子程序返回table:db 3fh,06h,5bh,4fh,66h;*w 極 led 顯示器段選碼 0,1,2,3,4 db6dh,7dh,07h,7fh,6fh;共陰極 led 顯示器段選碼 5,6,7, ;延時子程序delay: movr6,#10;r6 賦值為 10dl: movr7,#250;r7 賦值為 250djnzr7,$;原地踏步

溫馨提示

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

評論

0/150

提交評論