基于C51單片機(jī)的數(shù)字時(shí)鐘課程設(shè)計(jì)(C語言,帶鬧鐘).doc_第1頁
基于C51單片機(jī)的數(shù)字時(shí)鐘課程設(shè)計(jì)(C語言,帶鬧鐘).doc_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余19頁可下載查看

下載本文檔

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

文檔簡介

單片機(jī)技術(shù)課程設(shè)計(jì)數(shù)字電子鐘學(xué)院: 班級(jí): 姓名: 學(xué)號(hào): 教師: 摘 要電子鐘在生活中應(yīng)用非常廣泛,而一種簡單方便的數(shù)字電子鐘則更能受到人們的歡迎。所以設(shè)計(jì)一個(gè)簡易數(shù)字電子鐘很有必要。本電子鐘采用AT89C52單片機(jī)為核心,使用12MHz 晶振與單片機(jī)AT89C52 相連接,通過軟件編程的方法實(shí)現(xiàn)以24小時(shí)為一個(gè)周期,同時(shí)8位7段LED數(shù)碼管(兩個(gè)四位一體數(shù)碼管)顯示小時(shí)、分鐘和秒的要求,并在計(jì)時(shí)過程中具有定時(shí)功能,當(dāng)時(shí)間到達(dá)提前定好的時(shí)間進(jìn)行蜂鳴報(bào)時(shí)。該電子鐘設(shè)有四個(gè)按鍵KEY1、KEY2、KEY3、KEY4和KEY5鍵,進(jìn)行相應(yīng)的操作就可實(shí)現(xiàn)校時(shí)、定時(shí)、復(fù)位功能。具有時(shí)間顯示、整點(diǎn)報(bào)時(shí)、校正等功能。走時(shí)準(zhǔn)確、顯示直觀、運(yùn)行穩(wěn)定等優(yōu)點(diǎn)。具有極高的推廣應(yīng)用價(jià)值。關(guān)鍵詞:電子鐘 AT89C52 硬件設(shè)計(jì) 軟件設(shè)計(jì)目 錄一、數(shù)字電子鐘設(shè)計(jì)任務(wù)、功能要求說明及方案介紹41.1 設(shè)計(jì)課題設(shè)計(jì)任務(wù)41.2 設(shè)計(jì)課題的功能要求說明41.3 設(shè)計(jì)課的設(shè)計(jì)總體方案介紹及工作原理說明4二、設(shè)計(jì)課題的硬件系統(tǒng)的設(shè)計(jì)52.1硬件系統(tǒng)各模塊功能簡要介紹52.1.1 AT89C52簡介52.1.2 按鍵電路6三、設(shè)計(jì)課題的軟件系統(tǒng)的設(shè)計(jì)63.1 使用單片機(jī)資源的情況63.2 軟件系統(tǒng)個(gè)模塊功能簡要介紹73.3 軟件系統(tǒng)程序流程框圖73.4 軟件系統(tǒng)程序清單7四、設(shè)計(jì)課題的設(shè)計(jì)結(jié)論、仿真結(jié)果、誤差分析94.1 設(shè)計(jì)結(jié)論及使用說明94.2 仿真結(jié)果10結(jié) 束 語12參考文獻(xiàn)12附 錄13附錄A:程序清單13一、數(shù)字電子鐘設(shè)計(jì)任務(wù)、功能要求說明及方案介紹1.1 設(shè)計(jì)課題設(shè)計(jì)任務(wù)設(shè)計(jì)一個(gè)具有特定功能的電子鐘。具有時(shí)間顯示,并有時(shí)間設(shè)定,時(shí)間調(diào)整 功能。 1.2 設(shè)計(jì)課題的功能要求說明設(shè)計(jì)一個(gè)具有特定功能的電子鐘。該電子鐘上電或按鍵復(fù)位后能自動(dòng)顯示系統(tǒng)提示符“d.1004-22”, 進(jìn)入時(shí)鐘準(zhǔn)備狀態(tài);第一次按電子鐘啟動(dòng)/調(diào)整鍵,電子鐘從12時(shí)59分0秒開始運(yùn)行,進(jìn)入時(shí)鐘運(yùn)行狀態(tài);按電子鐘S5鍵,則電子鐘進(jìn)入時(shí)鐘調(diào)整狀態(tài),此時(shí)可利用各調(diào)整鍵調(diào)整時(shí)間,調(diào)整結(jié)束后可按S5鍵再次進(jìn)入時(shí)鐘運(yùn)行狀態(tài)。 1.3 設(shè)計(jì)課的設(shè)計(jì)總體方案介紹及工作原理說明本電子鐘主要由單片機(jī)、鍵盤、顯示接口電路和復(fù)位電路構(gòu)成,設(shè)計(jì)課題的總體方案如圖1所示: 圖1-1總體設(shè)計(jì)方案圖本電子鐘的所有的軟件、參數(shù)均存放在AT89C52的Flash ROM和內(nèi)部RAM中,減少了芯片的使用數(shù)量簡化了整體電路也降低了整機(jī)的工作電流。鍵盤采用動(dòng)態(tài)掃描方式。利用單片機(jī)定時(shí)器及計(jì)數(shù)器產(chǎn)生定時(shí)效果通過編程形成數(shù)字鐘效果,再利用數(shù)碼管動(dòng)態(tài)掃描顯示單片機(jī)內(nèi)部處理的數(shù)據(jù),同時(shí)通過端口讀入當(dāng)前外部控制狀態(tài)來改變程序的不同狀態(tài),實(shí)現(xiàn)不同功能。二、設(shè)計(jì)課題的硬件系統(tǒng)的設(shè)計(jì)2.1硬件系統(tǒng)各模塊功能簡要介紹 2.1.1 AT89C52簡介 (1) 兼容MCS51指令系統(tǒng);(2)8kB可反復(fù)擦寫(大于1000次)Flash ROM;(3)32個(gè)雙向I/O口;(4)256x8bit內(nèi)部RAM;(5)3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷;(6)時(shí)鐘頻率0-24MHz;(7)2個(gè)串行中斷,可編程UART串行通道;(8)2個(gè)外部中斷源,共8個(gè)中斷源;(9)2個(gè)讀寫中斷口線,3級(jí)加密位;(10)低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能;(11)有PDIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應(yīng)不同產(chǎn)品的需求。它的價(jià)格便宜,功能強(qiáng)大,能耗低。很大程度上減少總電路的復(fù)雜性,提高了所設(shè)計(jì)系統(tǒng)的穩(wěn)定性。其芯片引腳圖如圖2-1所示。圖2-1 單片機(jī)AT89S52引腳圖2.1.2 按鍵電路 圖22 按鍵圖三、設(shè)計(jì)課題的軟件系統(tǒng)的設(shè)計(jì)3.1 使用單片機(jī)資源的情況設(shè)計(jì)課題使用單片機(jī)資源的情況如下:P0口輸出數(shù)碼管段選信號(hào),P2口輸出數(shù)碼管位選信號(hào);晶振12MHz;調(diào)整選擇鍵KEY1:P1.0;通過選擇鍵選擇調(diào)整位,選中位閃爍;增加鍵KEY2:P1.1;按一次使選中位加1;減少鍵KEY3:P1.2;按一次使選中位減1;此數(shù)字鐘可實(shí)現(xiàn)基本的走時(shí)和顯示時(shí)間時(shí)、分、秒;時(shí)間的調(diào)整;鬧鐘的設(shè)定和調(diào)整;鬧鐘的開啟和關(guān)閉功能,具體如下:(1)實(shí)現(xiàn)基本的走時(shí)和顯示時(shí)間的時(shí)、分、秒,上電自動(dòng)顯示初始時(shí)間12-59-00,且控制鬧鐘狀態(tài)的的紅色led燈為亮的狀態(tài);(2)當(dāng)?shù)谝淮伟聪碌谝粋€(gè)彈性按鍵時(shí)進(jìn)入時(shí)間的調(diào)節(jié)狀態(tài),此時(shí)實(shí)現(xiàn)對(duì)顯示時(shí)間的小時(shí)調(diào)節(jié),按下第二個(gè)按鍵時(shí)實(shí)現(xiàn)小時(shí)的加一調(diào)節(jié),按下第三個(gè)按鍵時(shí)實(shí)現(xiàn)小時(shí)的減一調(diào)節(jié);(3)當(dāng)?shù)诙伟聪碌谝粋€(gè)彈性按鍵時(shí)進(jìn)入顯示時(shí)間的分鐘調(diào)節(jié)狀態(tài),按下第二個(gè)按鍵時(shí)實(shí)現(xiàn)分鐘的加一調(diào)節(jié),按下第三個(gè)按鍵時(shí)實(shí)現(xiàn)分鐘的減一調(diào)節(jié);(4)當(dāng)?shù)谌伟聪碌谝粋€(gè)彈性按鍵時(shí)進(jìn)入鬧鐘的小時(shí)調(diào)節(jié)狀態(tài),按下第二個(gè)按鍵時(shí)實(shí)現(xiàn)鬧鐘小時(shí)的加一調(diào)節(jié),按下第三個(gè)按鍵時(shí)實(shí)現(xiàn)鬧鐘小時(shí)的減一調(diào)節(jié);(5)當(dāng)?shù)谒拇伟聪碌谝粋€(gè)彈性按鍵時(shí)進(jìn)入鬧鐘的分鐘調(diào)節(jié)狀態(tài),按下第二個(gè)按鍵時(shí)實(shí)現(xiàn)鬧鐘分鐘的加一調(diào)節(jié),按下第三個(gè)按鍵時(shí)實(shí)現(xiàn)鬧鐘分鐘的減一調(diào)節(jié);(6)當(dāng)?shù)谖宕伟聪碌谝粋€(gè)彈性按鍵時(shí)返回正常的顯示時(shí)間走時(shí)狀態(tài);(7)當(dāng)同時(shí)按下第二和第三個(gè)彈性按鍵時(shí),關(guān)閉鬧鐘,且此時(shí)藍(lán)色led燈為滅,及定時(shí)時(shí)間到蜂鳴器并不響,若再次同時(shí)按下第二和第三個(gè)彈性按鍵,則開啟鬧鐘,且此時(shí)紅色led燈為亮,定時(shí)時(shí)間到蜂鳴器發(fā)出滴滴的鬧鈴聲,同時(shí)按下第二和第三個(gè)彈性按鍵即可關(guān)閉鬧鈴。鬧鈴狀態(tài)默認(rèn)為開啟。 3.2 軟件系統(tǒng)個(gè)模塊功能簡要介紹 本設(shè)計(jì)的軟件系統(tǒng)主要采用以下基本模塊來實(shí)現(xiàn),主程序、中斷服務(wù)程序、鍵盤輸入程序模塊、數(shù)碼管及其驅(qū)動(dòng)模塊和延時(shí)模塊。主程序:主要是用于對(duì)輸入信號(hào)的處理、輸出信號(hào)的控制和對(duì)各個(gè)功能程序模塊的運(yùn)用及其控制。中斷服務(wù)程序:主要是用于電子鐘的準(zhǔn)確運(yùn)行、數(shù)據(jù)輸入過程中的閃爍。鍵盤輸入程序模塊:主要是用于確定按鍵并得到特定的鍵碼值。數(shù)碼管及其驅(qū)動(dòng)模塊:主要是用于驅(qū)動(dòng)數(shù)碼管及利用數(shù)碼管顯示時(shí)間。延時(shí)模塊:程序中有兩種延時(shí)子程序,一種是短延時(shí)用于判鍵按下等,一種是長延時(shí)。3.3 軟件系統(tǒng)程序流程框圖系統(tǒng)軟件采用匯編語言按模塊化方式進(jìn)行設(shè)計(jì),然后通過Keil軟件開發(fā)平臺(tái)將程序轉(zhuǎn)變成十六進(jìn)制程序語言,接著使用Proteous 進(jìn)行仿真,讀出顯示數(shù)據(jù)。3.4 軟件系統(tǒng)程序清單本電子鐘實(shí)現(xiàn)24小時(shí)制,8位數(shù)碼管顯示時(shí)分秒,顯示式:12-59-00。通過4只按鍵來調(diào)整時(shí)間:KEY1(P1.0):調(diào)整選擇鍵,選中位閃爍;KEY2(P1.1):增加鍵,按一次使選中位加1;KEY3(P1.2):減少鍵,按一次使選中位減1;Bear(P3.1):到了整點(diǎn)和鬧鐘就會(huì)響;Led (P1.2):閃爍;P0口輸出數(shù)碼管段選信號(hào),P2口輸出數(shù)碼管位選信號(hào);晶振12MHz。圖3-1主程序流程框圖圖3-2顯示時(shí)鐘數(shù)組子程序 圖3-3中斷服務(wù)程序程序四、設(shè)計(jì)課題的設(shè)計(jì)結(jié)論、仿真結(jié)果、誤差分析4.1 設(shè)計(jì)結(jié)論及使用說明本設(shè)計(jì)為基于單片機(jī)的電子鐘的設(shè)計(jì)。剛開始,我們很多地方理不清頭緒,無從下手,但通過認(rèn)真研究設(shè)計(jì)課題,找書上網(wǎng)查資料,確定基本設(shè)計(jì)方案,對(duì)所用芯片功能進(jìn)行查找、調(diào)試,然后畫電路圖等,積累了很多寶貴的經(jīng)驗(yàn)。本設(shè)計(jì)用2個(gè)四位一體的共陽數(shù)碼管做為顯示器,它顯示時(shí)間值;設(shè)計(jì)中有三個(gè)按鍵,其中KEY1為啟動(dòng)鍵,KEY2為加控制鍵 KEY3為減控制鍵 。圖41 結(jié)果圖4.2 仿真結(jié)果 在Proteus ISIS的Debug菜單中選擇Execute,運(yùn)行程序,系統(tǒng)仿真結(jié)果如圖所示。 實(shí)現(xiàn)功能: 可調(diào)整運(yùn)行的電子鐘具有三種工作狀態(tài):“d.1004-22”狀態(tài)、運(yùn)行狀態(tài)、調(diào)整狀態(tài)。 圖4-2“d.1004-22”上電初始化運(yùn)行狀態(tài)仿真結(jié)果 圖4-3時(shí)鐘正常運(yùn)行狀態(tài)仿真結(jié)果 圖4-4鬧鐘定時(shí)調(diào)整狀態(tài)仿真結(jié)果圖4-5小時(shí)調(diào)整狀態(tài)仿真結(jié)果圖4-6分鐘調(diào)整狀態(tài)仿真結(jié)果結(jié) 束 語 單片機(jī)課程設(shè)計(jì)是一門很實(shí)用,很復(fù)雜的設(shè)計(jì)。這個(gè)設(shè)計(jì)用到了單片機(jī),電路等方面的知識(shí),通過這次課程設(shè)計(jì),使我對(duì)單片機(jī)及其附屬電路有了一定的了解,對(duì)課本上的知識(shí)有了近一步的掌握,也深刻明白了自己的不足。完成本次課程設(shè)計(jì)的過程,是一個(gè)從無到有的過程,經(jīng)歷了興奮、所悟、完成幾個(gè)過程。剛做做課程設(shè)計(jì)時(shí),仔細(xì)閱讀設(shè)計(jì)的題目和要求,以為沒什么困難的,所用的知識(shí)書上都有??墒钱?dāng)我動(dòng)手開始做的時(shí)候,才發(fā)現(xiàn)其中的算法,設(shè)計(jì)是那么繁瑣。經(jīng)過一天的努力,再到圖書館和網(wǎng)上查找資料,在經(jīng)過借鑒很多類似的資料,文獻(xiàn)后,總算是有點(diǎn)眉目了。埋頭苦干的過程是痛苦的,在思考算法和程序框架時(shí),迷茫,煩躁,也參考別人的思路,不斷循環(huán)中,終于最后完善了程序。其中的煎熬是很痛苦的,深刻明白攻克自己“未知領(lǐng)域”的困難。但當(dāng)課程設(shè)計(jì)完成時(shí),那感覺是甜蜜的,沒有耕耘,哪來得收獲的喜悅,就在這樣的痛與快樂的交換中,我學(xué)到了知識(shí)。通過這短短一周的實(shí)踐,我感覺到自己從課本上學(xué)到的理論知識(shí)和實(shí)踐仍有很大的差距。知道了很多元器件有什么功效,在仿真儀器中是什么代碼。有的知識(shí),自己感覺已經(jīng)掌握得差不多了,但是實(shí)際操作起來就有問題出現(xiàn)了。我遇到了不少問題,花費(fèi)了很多的時(shí)間。這讓我重新反思我們的學(xué)習(xí),深刻領(lǐng)悟到我們這個(gè)專業(yè)動(dòng)手,實(shí)踐的重要性。理論不經(jīng)過實(shí)踐考驗(yàn),是沒法實(shí)施的,就像我們編的程序,很多方面考慮的都不夠,幾乎沒有涉及到實(shí)際應(yīng)用時(shí)的防范方法措施。這次的課程設(shè)計(jì),讓我學(xué)到了很多書本上學(xué)不到的東西,學(xué)到了實(shí)際應(yīng)用時(shí)。最大的收獲是:對(duì)鍵盤,顯示器,C51語言的應(yīng)用有了深刻的了解。參考文獻(xiàn)1 百度文庫,基于C51單片機(jī)的程序設(shè)計(jì).2 百度百科,AT89C52簡介附錄附錄A程序清單#include #include #include #define uint unsigned int#define uchar unsigned charsbit KEY1=P11; /切換鍵sbit KEY2=P12; /minute ,hour調(diào)整加1定義sbit KEY3=P17; /minute ,hour調(diào)整減1定義sbit bear=P31; /鬧鈴sbit led=P12; /鬧鐘,整時(shí)燈閃爍code unsigned char tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xc8,0x8e,0xff,0x21; /段碼控制char code weikong_code=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar ms8=2,2,10,4,0,0,1,14;uchar StrTab8;uchar minute=59,hour=12,second=0; /正常時(shí)鐘 秒,分,時(shí) 定義uchar minute1=00,hour1=00; second1=00;/鬧鐘時(shí)鐘 秒,分,時(shí) 定義uchar flag=0, flag1=0; /切換標(biāo)志 uchar num=0;uint count=0; /定時(shí)器計(jì)數(shù),定時(shí)50ms,count滿20,秒加1/*子函數(shù)聲明*/void xianshishuzu(); /顯示數(shù)組子程序void alarm(); /鬧鐘子程序/* 延時(shí)子程序*/ void delay(uint z) uint x,y;for(x=0;xz;x+)for(y=0;y110;y+);/*顯示時(shí)鐘子函數(shù)*/ void dispaly(uchar w8) unsigned int i,j,aa; aa=0xfe; /位選初值1111 1110for(i=0;i8;i+) /依次將數(shù)組w中八個(gè)數(shù)取出,并顯示 P2=aa; /位選j=wi; /取出要顯示的數(shù)碼P0=tabj; /取出段選編碼aa=_crol_(aa,1); /位選信號(hào)循環(huán)右移delay(1); /顯示延時(shí)P0=0xff; /消影 /*顯示時(shí)鐘數(shù)組子程序*/void xianshishuzu() StrTab1=second/10; /秒個(gè)位 StrTab0=second%10; /秒十位 StrTab2=10; /間隔符 - StrTab4=minute/10; /分個(gè)位 StrTab3=minute%10; /分十位 StrTab5=10; /間隔符 - StrTab7=hour/10; /時(shí)個(gè)位 StrTab6=hour%10; /時(shí)十位 /*鍵盤掃描子程序*/ void keycan() if(KEY1=0) /按一次,正常顯示,按第二次,時(shí)調(diào)整,按第三次,分調(diào)這整, delay(10); /按鍵1去抖以及動(dòng)作 if(KEY1=0) /確認(rèn)按鍵是否按下 flag+; /切換標(biāo)志 while(!KEY1); /釋放按鍵 if(flag=1)if(KEY2=0) delay(10); if(KEY2=0) hour+; /正常時(shí)間 小時(shí) 加1if(hour=24)hour=0; while(!KEY2) /釋放按鍵 dispaly(StrTab); if(KEY3=0) delay(10); if(KEY3=0) hour-; /正常時(shí)間小時(shí) 減1if(hour=0)hour=23; dispaly(StrTab); while(!KEY3) dispaly(StrTab); if(flag=2)if(KEY2=0) /按鍵去抖以及動(dòng)作 delay(10); if(KEY2=0) minute+; /分加1if(minute=60)minute=0; while(!KEY2) dispaly(StrTab); if(flag=3) /秒表的加1 if(KEY3=0) delay(10); if(KEY3=0) second+; /秒加1if(second=0)second=59; while(!KEY3)dispaly(StrTab); if(flag=3) /鬧鐘對(duì)時(shí) if(KEY2=0) delay(10); if(KEY2=0) hour1+;if(hour1=24)hour1=0; /鬧鐘時(shí)間 小時(shí) 加1 while(!KEY2) alarm(); if(KEY3=0) delay(10); if(KEY3=0) hour1-; if(hour1=0)hour1=23; /鬧鐘時(shí)間 小時(shí) 減 while(!KEY3) alarm(); if(flag=4) if(KEY2=0) /按鍵去抖以及動(dòng)作 del

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論