




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)課程設(shè)計-數(shù)字時鐘的設(shè)計 摘要: 近年來隨著計算機(jī)在社會領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,由于它具有功能強(qiáng),體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛地應(yīng)用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個領(lǐng)域,單片機(jī)往往是作為一個核心部件來使用,在根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,以作完善。本次做的數(shù)字鐘是以單片機(jī)(at89c51)為核心,結(jié)合相關(guān)的元器件(共陰極led數(shù)碼顯示器等)再配以相應(yīng)的軟件,達(dá)到制作簡易數(shù)字鐘的目的,其硬件部分難點在于元器件的選擇、布局及焊接
2、。正文: 本設(shè)計的構(gòu)想:通過單片機(jī)控制數(shù)字時鐘,將時間顯示在led數(shù)碼管上。通過按鍵來顯示執(zhí)行個部分的功能,比如調(diào)時、秒表、鬧鐘等。本設(shè)計的工作原理如下:在單片機(jī)最小系統(tǒng)的基礎(chǔ)上,使用i/o口連接按鍵、led數(shù)碼管。通過單片機(jī)定時器中斷來獲取比較準(zhǔn)確的時間。本程序中用定時器中斷0,tomd=0x01,每1ms產(chǎn)生一次中斷,所以對定時器所裝的初值:th0 = (65536-1000)/256,tl0 = (65536-1000)%256。然后在主函數(shù)中執(zhí)行初始化函數(shù)、按鍵函數(shù),顯示函數(shù),來實現(xiàn)所設(shè)計的數(shù)字時鐘的功能。實驗的原來圖如下:實驗的流程圖如下:功能介紹:1、 開機(jī)時,顯示00-00-00
3、的時間開始計時。最上面的led發(fā)光二極管亮一秒滅一秒。2、 按鍵“選擇”。當(dāng)?shù)谝淮伟聪聲r,最上面的led發(fā)光二極管不再亮滅閃爍,計數(shù)器停止工作,同時顯示調(diào)時的發(fā)光二極管會亮,此時按下按鍵“加加”,可以實現(xiàn)秒的加。第二次按下“選擇”按鍵時,按按鍵“加加”可以實現(xiàn)分的加。第三次按下“選擇”按鍵時,按按鍵“加加”可以實現(xiàn)時的加。第四次按下“選擇”按鍵時,會變成秒表的顯示,同時計數(shù)器開始工作,最上面的led發(fā)光二極管發(fā)生亮滅閃爍,顯示調(diào)時的發(fā)光二極管會滅,顯示秒表的發(fā)光二極管會亮。按按鍵“加加”可以實現(xiàn)秒表的工作,再按“加加”,秒表停止工作,再按“加加”,秒表清零。第五次按下“選擇”按鍵時,數(shù)碼管顯示
4、定鬧鐘的功能。顯示秒表的發(fā)光二極管會滅,顯示鬧鐘的發(fā)光二極管會亮。按按鍵“加加”可以實現(xiàn)鬧鐘分的調(diào)整。第六次按下“選擇”按鍵時,按鍵“加加”可以實現(xiàn)鬧鐘時的調(diào)整。第六次按下“選擇”按鍵時,顯示鬧鐘的發(fā)光二極管會滅。3、 通過上面,定鬧鐘完成后,我們按下“鬧鐘開啟”按鍵,當(dāng)?shù)竭_(dá)定時時間時,鬧鐘會發(fā)出蜂鳴聲,同時數(shù)碼管顯示“hello-_-”字樣,蜂鳴聲可持續(xù)一分鐘,當(dāng)然我們也可以通過“鬧鐘開啟”按鍵關(guān)掉鬧鐘。參考文獻(xiàn):趙亮,侯國瑞,單片機(jī)c語音編程與實例,人民郵電出版社,2003年九月第一版。閻石,數(shù)字電路基礎(chǔ),高等教育出版社,1997年第四版吳金戌,沈慶陽,郭廷杰,8051單片機(jī)實踐與應(yīng)用,清
5、華大學(xué)出版社 單片機(jī)接口技術(shù) 胡漢才 高等教育出版社程序示例:#include <reg52.h> #define uchar unsigned char; #define uint unsigned int; uchar code talbe = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/數(shù)碼管顯示uchar code table = 0x76,0x79,0x38,0x38,0x3f,0x01,0x08,0x01;uchar code weii = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0
6、xbf,0x7f;uchar code wei = 0x7f,0xbf,0xdb,0xef,0xf7,0xdb,0xfd,0xfe; /數(shù)碼管的位選int a8,b8,c8; / 定義a8時間,b8秒表,c8 鬧鐘的定時uint tt,ttm,i,x,y,z,key_state1,flag_mode,key_state2,flag_jia;int shi,fen,miao,m_shi,m_fen,m_miao,n_shi,n_fen,n_miao;/定義時間秒表鬧鐘顯示變量sbit k_mode = p10;/定義設(shè)置開關(guān)sbit k_jia = p11;/定義加加開關(guān)sbit k_naozh
7、ong = p12;/定義鬧鐘按鍵開關(guān)sbit button = p17;/ 鬧鐘的輸出控制端sbit shan = p13; /led亮一秒滅一秒sbit tiaos = p14; /當(dāng)調(diào)整時間時此控制的led亮sbit miaob = p15; /當(dāng)用到秒表時此控制的led亮sbit dings = p16;/當(dāng)定鬧鐘時間時此控制的led亮void init(); /聲明初始化函數(shù)void diaplay(); /聲明顯示函數(shù)void delay(z); /聲明延遲函數(shù)void key(); /聲明按鍵函數(shù)void naozhong(); /聲明鬧鐘函數(shù)/*主函數(shù)*/void main()
8、 /主函數(shù) init (); while (1) if (tt%2 = 0) /每2ms掃描一次按鍵 key (); diaplay (); naozhong(); /*初始化函數(shù)*/void init () shi = 0; fen = 0; miao = 0; m_shi = 0; m_fen = 0; m_miao = 0; n_shi = 0; n_fen = 0; n_miao = 0; tt = 0; ttm = 0; tmod = 0x01; /選擇工作模式1 th0 = (65536-1000)/256;/給定時器裝初值 tl0 = (65536-1000)%256; ea =
9、 1; /打開總中斷 et0 = 1; /打開定時器/計數(shù)器0 tr0 = 1; /開始計數(shù)/*中斷1*/void time () interrupt 1 th0 = (65536-1000)/256; /重裝初值 tl0 = (65536-1000)%256; tt+; if (flag_mode = 4) /當(dāng)變量flag_mode=4時,運行秒表程序 if (flag_jia = 1) ttm +; if (ttm = 10) ttm = 0; m_miao+; if (m_miao = 100) m_miao = 0; m_fen +; if (m_fen = 60) m_fen =
10、0; m_shi +; if (m_shi = 24) m_shi = 0; if (flag_jia = 2) ttm+; ttm-; if (flag_jia = 3) flag_jia = 0; m_shi = 0; m_fen = 0; m_miao = 0; ttm = 0; if (tt = 1000) shan =! shan; tt = 0; miao+; if (miao = 60) miao = 0; fen +; if (fen = 60) fen = 0; shi +; if (shi = 24) shi = 0; /*顯示函數(shù)*/void diaplay () a0
11、= miao%10; a1 = miao/10; a2 = 10; a3 = fen%10; a4 = fen/10; a5 = 10; a6 = shi%10; a7 = shi/10; b0 = m_miao%10; b1 = m_miao/10; b2 = 10; b3 = m_fen%10; b4 = m_fen/10; b5 = 10; b6 = m_shi%10; b7 = m_shi/10; c0 = n_miao%10; c1 = n_miao/10; c2 = 10; c3 = n_fen%10; c4 = n_fen/10; c5 = 10; c6 = n_shi%10;
12、c7 = n_shi/10; for (i = 0;i<8;i+) if (button = 1)/鬧鐘時顯示 hello-_- p2 = weiii;p0 = tablei; elseif (flag_mode = 4) /當(dāng)flag_mode=4時顯示秒表miaob = 0;dings = 1;tiaos = 1;p2 = weii;p0 = talbebi;else if(flag_mode=5|flag_mode=6)/當(dāng)flag_mode=5或flag_mode=6時顯示定時數(shù)值 dings = 0;miaob =1;tiaos = 1; p2 = weii; p0 = tal
13、beci;else /其他時候顯示時間 miaob = 1;dings = 1; p2 = weii; p0 = talbeai;delay(4); /*延遲函數(shù)*/void delay (z) for(x=z;x>0;x-)for(y=110;y>0;y-); /*按鍵函數(shù)*/void key() switch (key_state1)/設(shè)置按鍵程序的編寫 case 0:if(k_mode = 0) key_state1 = 1; break; case 1:if(k_mode =0) key_state1 = 2; break; case 2:if(k_mode = 1) ke
14、y_state1 = 3; break; case 3:if(k_mode = 1) key_state1 = 4; break; case 4:flag_mode +; key_state1 = 0; break; switch (key_state2)/加加按鍵程序的編寫 case 0:if(k_jia = 0) key_state2 = 1; break; case 1:if(k_jia = 0) key_state2 = 2; break; case 2:if(k_jia = 1) key_state2 = 3; break; case 3:if(k_jia = 1) key_stat
15、e2 = 4; break; case 4:flag_jia +; key_state2 = 0; break; switch (flag_mode) /調(diào)整時間,秒表,鬧鐘 case 1:tr0 = 0; tiaos = 0; /設(shè)置按鍵為1時,計數(shù)停止 if (flag_jia = 1) /此時加加按鍵按下時秒加1 miao+; if (miao = 60) miao = 0; flag_jia = 0;break;case 2: if (flag_jia = 1) /設(shè)置按鍵為2時,如果加加按鍵被按下分加1 fen+; if (fen = 60) fen = 0; flag_jia = 0; break;case 3: if (flag_jia = 1) /設(shè)置按鍵為3時,如果加加按鍵被按下分加1 shi+; if (shi = 24) shi = 0; flag_jia = 0; break;case 4: tr0 = 1;break; /設(shè)置按鍵為4時,時間調(diào)整完成,計數(shù)器開始工作case 5: if (flag_jia = 1) /設(shè)置按鍵為5時,如果加加按鍵被按下,鬧鐘的秒加1 n_fen +; if (n_fen = 60) n_fen = 0; flag_jia = 0; break; case 6: i
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 庫房維修合同范本
- 2025網(wǎng)站建設(shè)合同協(xié)議模板
- 2025年度品牌營銷推廣策劃合同范本
- 2025版權(quán)注冊代理合同
- 2025成都市房屋租賃(適用于存量房屋)合同書
- 2025機(jī)械設(shè)備的租賃合同范本
- 2025年清棉變頻智能型自調(diào)勻整儀項目可行性研究報告
- 2025年液壓內(nèi)胎硫化機(jī)項目可行性研究報告
- 2025年洗衣機(jī)離合器軸套項目可行性研究報告
- 2025租賃協(xié)議的合同范本
- 國家開放大學(xué)《漢語通論》形考任務(wù)1-4+終結(jié)性考核參考答案
- GB/T 16866-2006銅及銅合金無縫管材外形尺寸及允許偏差
- FZ/T 81010-2018風(fēng)衣
- DB44-T 2198-2019城鄉(xiāng)社區(qū)協(xié)商工作規(guī)范-(高清現(xiàn)行)
- 血液科疾病診療規(guī)范診療指南診療常規(guī)2022版
- PDCA降低I類切口感染發(fā)生率
- 幼兒園《開關(guān)門要小心》
- 《運營管理》第2版題庫與參考答案
- 基于PLC的自動配料系統(tǒng)畢業(yè)設(shè)計論文
- 企業(yè)事業(yè)單位突發(fā)環(huán)境事件應(yīng)急預(yù)案備案表范本
- 煙花爆竹工程設(shè)計安全規(guī)范
評論
0/150
提交評論