單片機(jī)課程設(shè)計--數(shù)字鐘(曾旻樞)_第1頁
單片機(jī)課程設(shè)計--數(shù)字鐘(曾旻樞)_第2頁
單片機(jī)課程設(shè)計--數(shù)字鐘(曾旻樞)_第3頁
單片機(jī)課程設(shè)計--數(shù)字鐘(曾旻樞)_第4頁
單片機(jī)課程設(shè)計--數(shù)字鐘(曾旻樞)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 實(shí)驗(yàn)課程:單片機(jī)課程設(shè)計 專業(yè)班級:2013級電信3班 學(xué)號: 130101031106 姓名: 徐硯林 指導(dǎo)教師: 盧鋼 同組設(shè)計者: 曾旻樞 2015年12月29日 電子數(shù)字鐘一、設(shè)計功能要求 要求利用實(shí)驗(yàn)箱上的數(shù)碼管模擬電子數(shù)字鐘。顯示時、分、秒,并且隨時間跳變。在整點(diǎn)時,啟動蜂鳴器。設(shè)計要求:(1) 系統(tǒng)硬件設(shè)計:利用單片機(jī)實(shí)驗(yàn)板完成設(shè)計要求; (2) 系統(tǒng)軟件設(shè)計:完成控制軟件的編寫與調(diào)試;(3) 功能要求:1) 6位數(shù)碼管顯示小時、分鐘,秒(例如:15:35:45);2) 具有整點(diǎn)提示功能(例如蜂鳴器鳴響半分鐘),具有整點(diǎn)報時功能(例如十點(diǎn)響十聲);二、設(shè)計方案1、原理依據(jù)電子鐘

2、是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時,分,秒計時的裝置,具有整點(diǎn)報時等功能。本設(shè)計主要采用C51單片機(jī)作為主控核心,動態(tài)數(shù)碼管作為顯示屏顯示,蜂鳴器作為整點(diǎn)報時,獨(dú)立按鍵K1作為消除鬧鈴。 數(shù)碼管共陽極數(shù)碼管的8個發(fā)光二極管的陽極連接在一起接高電平,其它管腳接各段驅(qū)動電路輸出端。當(dāng)某段的輸出端為低電平時,則該段所連接的發(fā)光二極管導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。共陰極數(shù)碼管的8個發(fā)光二極管的陰極連接在一起接低電平,其它管腳接各段驅(qū)動電路輸出端。當(dāng)某段的輸出端為高電平時,則該段所連接的發(fā)光二極管導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。因此我們在顯示數(shù)字的時候首先做

3、的就是給“0-9”十個數(shù)字編碼,在要它亮什么數(shù)字的時候直接把這個編碼送到它的陽極就行了。2、方案設(shè)計(1)、硬件方案 八位動態(tài)數(shù)碼管、蜂鳴器和獨(dú)立按鍵:硬件說明:八位動態(tài)數(shù)碼管為共陰極數(shù)碼,J16為位選碼接口排線,J12為字形碼接口排線,字形碼經(jīng)鎖存器接到數(shù)碼管,鎖存器LE端經(jīng)J21短路帽接VCC時,輸入數(shù)據(jù)直通至輸出端,當(dāng)LE端經(jīng)J21短路帽接JP10時,其輸入數(shù)據(jù)經(jīng)JP10控制將其鎖存至輸出端。連接方法:(1)JP18和J16用8PIN排線連接起來。(2)JP10和J12用8PIN排線連接起來。(3)J21 短路帽使LE接VCC,短路帽JP165 斷開。利用P2.0作為獨(dú)立鍵盤輸入口,獨(dú)立

4、鍵盤選K1;P21控制蜂鳴器,蜂鳴器JP9接線排的第6引腳與JP15接線排座的一引腳(獨(dú)立按鍵K1)用杜邦線連接,使用獨(dú)立按鍵K1。 連接方法: JP11和JP1和LED燈的JP1用8PIN排線連接起來。硬件說明:使用單片機(jī)的P2口來驅(qū)動8個LED,發(fā)光二極管的陽極接高電平,故P2口為低電平時,就可以驅(qū)動其點(diǎn)亮(2)軟件方案利用內(nèi)部中斷T0完成時間計數(shù),時間調(diào)整,定時時間為125ms,當(dāng)時間到達(dá)125ms*8,即1S時,秒計數(shù)器緩沖器增加1,達(dá)到1小時時,則時計數(shù)器緩沖器增加1,同時蜂鳴器響,并將時分秒分別放入動態(tài)數(shù)碼管。當(dāng)分計數(shù)器緩沖器和時計數(shù)器緩沖器分別到達(dá)60min、24h時,對它們清零

5、。(3)同組設(shè)計人員及分工曾旻樞:編寫設(shè)計方案以及主程序、中斷設(shè)置、時間顯示及累計處理部分代碼,進(jìn)行試驗(yàn)結(jié)果分析徐硯林:查閱參考文獻(xiàn),匯總整理所得資料,編寫延時、時間調(diào)整與設(shè)置、整點(diǎn)報時功能部分代碼三、系統(tǒng)代碼實(shí)現(xiàn)#include<reg51.h>sbit ksec=P30;/設(shè)置秒sbit kmin=P31;/設(shè)置分sbit khour=P32; /設(shè)置小時sbit fmq=P33;sbit key=P34;unsigned char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;unsigned int num=0,s

6、ec=0,min=0,hour=0;unsigned char code table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void delay(unsigned int);void display(); void Adjust_clock();void Clock();/-/ 主程序/-void main()TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1)display();/時間顯示函數(shù)Adjust_clock();

7、 /時鐘調(diào)整與設(shè)置函數(shù) Clock(); /整點(diǎn)報時函數(shù)/-/ 延時/-void delay(unsigned int z)unsigned int x,y;for(x=z;x>0;x-)for(y=80 ; y>0 ; y- );/-/ 時鐘調(diào)整與設(shè)置/-void Adjust_clock()if(ksec=0) sec+; if(sec>=60)min+;sec=0; while(ksec=0) display();if(kmin=0) min+; if(min>=60)hour+;min=0; while(kmin=0) display(); if(khour=0

8、) hour+;if(hour>=24)hour=0; while(khour=0) display();/*while表示每按下一次按鍵則刷新一下時間顯示*/-/ 整點(diǎn)報時功能/-void Clock() if(min=59 && sec=59) fmq=1; delay(1); fmq=0; /-/ 中斷設(shè)置/-void time0() interrupt 1 1num+; TH0=(65536-50000)/256; TL0=(65536-50000)%256; /-/ 時間顯示及累加處理/-void display()if(num=20) num=0; sec+;

9、 if( sec=60) sec=0; min+; if(min=60) min=0; hour+; if(hour=24) hour=0; min=0; sec=0; /*通過動態(tài)數(shù)碼管顯示,實(shí)現(xiàn)顯示時間功能*/ secge=sec%10; secshi=sec/10; minge=min%10; minshi=min/10; hourge=hour%10; hourshi=hour/10; P2= 0x7f; P0=tablesecge; delay(2); /顯示分鐘個位 P2= 0xbf; P0=tablesecshi; delay(2); /顯示分鐘個位 P2= 0xfb; P0=

10、0x40; delay(2); /顯示符號“-” P2= 0xef; P0=tableminge; delay(2); /顯示分鐘個位 P2= 0xf7; P0=tableminshi; delay(2); /顯示分鐘個位 P2= 0xdf; P0= 0x40; delay(2); P2= 0xfd; P0=tablehourge; delay(2); /顯示分鐘個位 P2= 0xfe; P0=tablehourshi; delay(2); /顯示分鐘個位 四、系統(tǒng)調(diào)試及結(jié)果分析問題:時間顯示顛倒,第一位顯示秒數(shù),最后一位顯示小時。 解決:源碼中最后一部分控制數(shù)碼管動態(tài)顯示的代碼順序顛倒,將其

11、數(shù)據(jù)重新調(diào)整后即正常顯示。問題:秒數(shù)到60后跳過分鐘直接小時進(jìn)位1.解決:源碼中時間累加處理代碼中分鐘累加處理寫錯為if(min=60)變成了賦值語句,修改為if(min=60)后即解決。問題:整點(diǎn)報時功能蜂鳴器響起的時候會停止計時,時鐘無法正常運(yùn)行。 解決:最初將蜂鳴器的整點(diǎn)報時功能寫在了時間顯示及累加模塊里面導(dǎo)致程序按照順序運(yùn)行蜂鳴器時會停止時間計時。之后經(jīng)過多次嘗試與調(diào)整,將整點(diǎn)報時功能單獨(dú)寫成一個模塊放入主程序中即可。問題:編寫時間調(diào)整模塊后,按下按鍵數(shù)碼管并無任何反應(yīng)。 解決:按下按鍵后程序執(zhí)行時間調(diào)整模塊,執(zhí)行完后并沒有返回顯示模塊,顧在是在調(diào)整模塊后加入語句while(ksec=0) display() 后程序正常運(yùn)行。五、心得體會這次課設(shè)看似功能簡單,但它包含了單片機(jī)設(shè)計中最核心、最重要的問題,很有深度。剛開始時我覺得這次實(shí)驗(yàn)內(nèi)容很簡單,但是上手之后發(fā)現(xiàn)并不想想象中那么容易,經(jīng)過了一下午的嘗試與查詢相關(guān)資料才

溫馨提示

  • 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

提交評論