版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于C單片機(jī)的數(shù)字時(shí)鐘課程設(shè)計(jì)【實(shí)用文檔】doc文檔可直接使用可編輯,歡迎下載
基于C單片機(jī)的數(shù)字時(shí)鐘課程設(shè)計(jì)【實(shí)用文檔】doc文檔可直接使用可編輯,歡迎下載單片機(jī)技術(shù)課程設(shè)計(jì)數(shù)字電子鐘學(xué)院:班級:姓名:學(xué)號:教師:摘要電子鐘在生活中應(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ì)目錄TOC\o"1—3"\h\uHYPERLINK\l_Toc29144一、數(shù)字電子鐘設(shè)計(jì)任務(wù)、功能要求說明及方案介紹4HYPERLINK\l_Toc126281.1設(shè)計(jì)課題設(shè)計(jì)任務(wù)41。2設(shè)計(jì)課題的功能要求說明4HYPERLINK\l_Toc5681.3設(shè)計(jì)課的設(shè)計(jì)總體方案介紹及工作原理說明4二、設(shè)計(jì)課題的硬件系統(tǒng)的設(shè)計(jì)5HYPERLINK\l_Toc130142。1硬件系統(tǒng)各模塊功能簡要介紹5HYPERLINK\l_Toc236432.1.1AT89C52簡介5HYPERLINK\l_Toc15562.1。2按鍵電路6HYPERLINK\l_Toc4419三、設(shè)計(jì)課題的軟件系統(tǒng)的設(shè)計(jì)63。1使用單片機(jī)資源的情況63.2軟件系統(tǒng)個(gè)模塊功能簡要介紹7HYPERLINK\l_Toc42263.3軟件系統(tǒng)程序流程框圖7HYPERLINK\l_Toc323913。4軟件系統(tǒng)程序清單7HYPERLINK\l_Toc7814四、設(shè)計(jì)課題的設(shè)計(jì)結(jié)論、仿真結(jié)果、誤差分析9HYPERLINK\l_Toc157634.1設(shè)計(jì)結(jié)論及使用說明9HYPERLINK\l_Toc275894。2仿真結(jié)果10HYPERLINK\l_Toc26065結(jié)束語12參考文獻(xiàn)12HYPERLINK\l_Toc5656附錄13HYPERLINK\l_Toc31605附錄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ù)位后能自動顯示系統(tǒng)提示符“d.1004—22”,進(jìn)入時(shí)鐘準(zhǔn)備狀態(tài);第一次按電子鐘啟動/調(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的FlashROM和內(nèi)部RAM中,減少了芯片的使用數(shù)量簡化了整體電路也降低了整機(jī)的工作電流。鍵盤采用動態(tài)掃描方式。利用單片機(jī)定時(shí)器及計(jì)數(shù)器產(chǎn)生定時(shí)效果通過編程形成數(shù)字鐘效果,再利用數(shù)碼管動態(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。1AT89C52簡介(1)兼容MCS51指令系統(tǒng);(2)8kB可反復(fù)擦寫(大于1000次)FlashROM;(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級加密位;(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按鍵電路圖2—2按鍵圖三、設(shè)計(jì)課題的軟件系統(tǒng)的設(shè)計(jì)3.1使用單片機(jī)資源的情況設(shè)計(jì)課題使用單片機(jī)資源的情況如下:P0口輸出數(shù)碼管段選信號,P2口輸出數(shù)碼管位選信號;晶振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í)、分、秒,上電自動顯示初始時(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)對顯示時(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ū)動模塊和延時(shí)模塊。主程序:主要是用于對輸入信號的處理、輸出信號的控制和對各個(gè)功能程序模塊的運(yùn)用及其控制.中斷服務(wù)程序:主要是用于電子鐘的準(zhǔn)確運(yùn)行、數(shù)據(jù)輸入過程中的閃爍。鍵盤輸入程序模塊:主要是用于確定按鍵并得到特定的鍵碼值。數(shù)碼管及其驅(qū)動模塊:主要是用于驅(qū)動數(shù)碼管及利用數(shù)碼管顯示時(shí)間。延時(shí)模塊:程序中有兩種延時(shí)子程序,一種是短延時(shí)用于判鍵按下等,一種是長延時(shí)。3。3軟件系統(tǒng)程序流程框圖系統(tǒng)軟件采用匯編語言按模塊化方式進(jìn)行設(shè)計(jì),然后通過Keil軟件開發(fā)平臺將程序轉(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)和鬧鐘就會響;Led(P1。2):閃爍;P0口輸出數(shù)碼管段選信號,P2口輸出數(shù)碼管位選信號;晶振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ì)方案,對所用芯片功能進(jìn)行查找、調(diào)試,然后畫電路圖等,積累了很多寶貴的經(jīng)驗(yàn)。本設(shè)計(jì)用2個(gè)四位一體的共陽數(shù)碼管做為顯示器,它顯示時(shí)間值;設(shè)計(jì)中有三個(gè)按鍵,其中KEY1為啟動鍵,KEY2為加控制鍵KEY3為減控制鍵。圖4—1結(jié)果圖4。2仿真結(jié)果在ProteusISIS的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è)計(jì),使我對單片機(jī)及其附屬電路有了一定的了解,對課本上的知識有了近一步的掌握,也深刻明白了自己的不足。完成本次課程設(shè)計(jì)的過程,是一個(gè)從無到有的過程,經(jīng)歷了興奮、所悟、完成幾個(gè)過程。剛做做課程設(shè)計(jì)時(shí),仔細(xì)閱讀設(shè)計(jì)的題目和要求,以為沒什么困難的,所用的知識書上都有.可是當(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í)踐,我感覺到自己從課本上學(xué)到的理論知識和實(shí)踐仍有很大的差距.知道了很多元器件有什么功效,在仿真儀器中是什么代碼。有的知識,自己感覺已經(jīng)掌握得差不多了,但是實(shí)際操作起來就有問題出現(xiàn)了。我遇到了不少問題,花費(fèi)了很多的時(shí)間。這讓我重新反思我們的學(xué)習(xí),深刻領(lǐng)悟到我們這個(gè)專業(yè)動手,實(shí)踐的重要性.理論不經(jīng)過實(shí)踐考驗(yàn),是沒法實(shí)施的,就像我們編的程序,很多方面考慮的都不夠,幾乎沒有涉及到實(shí)際應(yīng)用時(shí)的防范方法措施。這次的課程設(shè)計(jì),讓我學(xué)到了很多書本上學(xué)不到的東西,學(xué)到了實(shí)際應(yīng)用時(shí)。最大的收獲是:對鍵盤,顯示器,C51語言的應(yīng)用有了深刻的了解.參考文獻(xiàn)[1]百度文庫,基于C51單片機(jī)的程序設(shè)計(jì).[2]百度百科,AT89C52簡介附錄附錄A程序清單#include<reg51.h〉#include〈absacc.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharsbitKEY1=P1^1;//切換鍵sbitKEY2=P1^2;?//minute,hour調(diào)整加1定義sbitKEY3=P1^7; //minute,hour調(diào)整減1定義sbitbear=P3^1; //鬧鈴sbitled=P1^2;?//鬧鐘,整時(shí)燈閃爍codeunsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xc8,0x8e,0xff,0x21};//段碼控制charcodeweikong_code[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};ucharms[8]={2,2,10,4,0,0,1,14};ucharStrTab[8];ucharminute=59,hour=12,second=0;//正常時(shí)鐘秒,分,時(shí)定義ucharminute1=00,hour1=00;second1=00; ?//鬧鐘時(shí)鐘秒,分,時(shí)定義ucharflag=0,flag1=0;//切換標(biāo)志ucharnum=0;uintcount=0; ??//定時(shí)器計(jì)數(shù),定時(shí)50ms,count滿20,秒加1/***********子函數(shù)聲明*******************************************/voidxianshishuzu();//顯示數(shù)組子程序voidalarm(); //鬧鐘子程序 ? ?/**********************延時(shí)子程序*****************************/voiddelay(uintz){uintx,y; for(x=0;x<z;x++) for(y=0;y〈110;y++);}/**********************顯示時(shí)鐘子函數(shù)***************************/voiddispaly(ucharw[8]){unsignedinti,j,aa;? ?aa=0xfe;//位選初值11111110 for(i=0;i〈8;i++) //依次將數(shù)組w中八個(gè)數(shù)取出,并顯示?{ P2=aa; ?//位選??j=w[i];? //取出要顯示的數(shù)碼? P0=tab[j];?//取出段選編碼 ?aa=_crol_(aa,1);//位選信號循環(huán)右移 ?delay(1); ?//顯示延時(shí)??P0=0xff;//消影 }?? }/***********************顯示時(shí)鐘數(shù)組子程序***********************/voidxianshishuzu()? ? {?StrTab[1]=second/10;? //秒個(gè)位StrTab[0]=second%10;??//秒十位StrTab[2]=10;????//間隔符-StrTab[4]=minute/10;? //分個(gè)位StrTab[3]=minute%10;??//分十位StrTab[5]=10; //間隔符—StrTab[7]=hour/10;??//時(shí)個(gè)位StrTab[6]=hour%10; ?//時(shí)十位?}/**********************鍵盤掃描子程序*************************/voidkeycan(){if(KEY1==0)//按一次,正常顯示,按第二次,時(shí)調(diào)整,按第三次,分調(diào)這整,{delay(10);?//按鍵1去抖以及動作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)//按鍵去抖以及動作{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)? ?? //鬧鐘對時(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)//按鍵去抖以及動作{delay(10);if(KEY2==0){minute1++;if(minute1==60)minute1=0;//鬧鐘分加1}while(?。耍臲2){ alarm();?}}if(KEY3==0)//按鍵去抖以及動作{delay(10);if(KEY3==0){minute1—-;if(minute1==0)minute1=59;//鬧鐘分減1} ?}while(!KEY3){alarm();}}}/*******************蜂鳴器子程序****************************/voidbeng(){bear=1;? P3=0xfd;??delay(100);? bear=0; ?P3=0XFf;??delay(100);}/*****************整點(diǎn)報(bào)警子程序***************************/?voidzhengdian(void) { ??uchari=0; if((second==0)&(minute==0))//整點(diǎn)報(bào)時(shí) ?{? for(i=0;i<10;i++)??{??TR0=1;beng();dispaly(ms);??}? }?}/********************************定時(shí)鬧鐘*******************************/ voidalarm(){uinti; if((hour==hour1&&second1==minute1&&(second>=second1&&second〈second1+5))||(minute==0&&second〈1)) for(i=0;i<3;i++) {beng();}? ?StrTab[1]=second1/10; ?//鬧鐘秒個(gè)位? StrTab[0]=second1%10; //秒十位 ?StrTab[2]=10;? ? //間隔符- ?StrTab[4]=minute1/10; ?//分個(gè)位 ?StrTab[3]=minute1%10;??//分十位 ?StrTab[5]=10;?? ?//間隔符— StrTab[7]=hour1/10;??//時(shí)個(gè)位 ??StrTab[6]=hour1%10; ?//時(shí)十位? ?TR0=0; ??dispaly(StrTab);??xianshishuzu();? ??}??/**************************中斷子程序*********************************/voidtime_()interrupt1//中斷程序{? count++;?TH0=(65536—50000)/256; ?//0。5ms重新送初值?TL0=(65536-50000)%256; ? if(count==20) ? //定時(shí)器計(jì)數(shù),定時(shí)50ms,count滿20,秒加1{second++;count=0;if(second==60)? //秒值等于60,秒清零,分加1{second=0;minute++;if(minute==60)? ?//分值等于60,分清零,時(shí)加1 ??{minute=0;hour++;if(hour==24) ?? //時(shí)值等于24,時(shí)清零,返回,全部歸零{hour=0;}}}}xianshishuzu();}/***********************數(shù)字電子鐘主函數(shù)***************************/voidmain(){?P1=0XFF; TMOD=0x11;//time0為定時(shí)器,方式1 TH0=(65536-50000)/256; //預(yù)置計(jì)數(shù)初值,50ms TL0=(65536-50000)%256; EA=1;//總中斷開?ET0=1;//允許定時(shí)器0中斷 TR0=1;//開啟定時(shí)器0while(1)//主循環(huán){ if(flag==0){TR0=0;dispaly(ms);//上電初始化就顯示bad.1004-22}if(P1!=0XFF){keycan();//按鍵提前掃描}if(flag>0){if(flag==1||flag==2){TR0=1;dispaly(StrTab);zhengdian();}//KEY1按第二次或第二次定時(shí)器開始,電子鐘和整點(diǎn)報(bào)時(shí)正常顯示if(flag==3||flag==4){TR0=0;alarm();}//按KEY1第三或第四次鬧鐘開始顯示,分時(shí)的調(diào)整?if(flag==5){dispaly(StrTab);}//按KEY1第五次返回電子鐘正常顯示 if(flag==6){TR0=0;flag=0;dispaly(ms);}//按KEY1第六次定時(shí)器關(guān)閉,切換標(biāo)志請零,顯示d。1004-22}}}前言20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展。在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個(gè)領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高.同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。時(shí)間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時(shí)間。忘記了要做的事情,當(dāng)事情不是很重要的時(shí)候,這種遺忘無傷大雅。但是,一旦重要事情,一時(shí)的耽誤可能釀成大禍。例如,許多火災(zāi)都是由于人們一時(shí)忘記了關(guān)閉煤氣或是忘記充電時(shí)間.所以有必要制作一個(gè)定時(shí)系統(tǒng)。隨時(shí)提醒這些容易忘記時(shí)間的人。而鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動報(bào)警、按時(shí)自動打鈴、時(shí)間程序自動控制、定時(shí)廣播、定時(shí)啟閉電路、定時(shí)開關(guān)烘箱、通斷動力設(shè)備,甚至各種定時(shí)電氣的自動啟用等等。所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非常現(xiàn)實(shí)的意義。隨著生活水平的提高,人們越來越追求人性化的事物。傳統(tǒng)的時(shí)鐘已不能滿足人們的需求。而現(xiàn)代的時(shí)鐘不僅需要模擬電路技術(shù)和數(shù)字電路技術(shù)而且更需要單片機(jī)技術(shù),增加數(shù)字鐘的功能。利用軟件編程盡量做到硬件電路簡單穩(wěn)定,減小電磁干擾和其他環(huán)境干擾,減小因元器件精度不夠引起的誤差,但是數(shù)字鐘還是可以改進(jìn)和提高如選用更精密的元器件。但與機(jī)械式時(shí)鐘相比已經(jīng)具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長的使用壽命,因此得到了廣泛的使用.數(shù)字鐘通過數(shù)字電路實(shí)現(xiàn)時(shí)、分、秒.數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭、車站、碼頭辦公室等公共場所成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超過老式鐘表。多功能數(shù)字鐘的應(yīng)用非常普遍。由單片機(jī)作為數(shù)字鐘的核心控制器,通過它的時(shí)鐘信號進(jìn)行實(shí)現(xiàn)計(jì)時(shí)功能,將其時(shí)間數(shù)據(jù)經(jīng)單片機(jī)輸出,利用顯示器顯示出來。通過鍵盤可以進(jìn)行校時(shí)、定時(shí)等功能。輸出設(shè)備顯示器可以用液晶顯示技術(shù)和數(shù)碼管來顯示技術(shù)。
本系統(tǒng)利用單片機(jī)實(shí)現(xiàn)具有計(jì)時(shí)、校時(shí)等功能的數(shù)字時(shí)鐘,是以單片機(jī)STC89C52為核心元件同時(shí)采用LCD1602顯示“時(shí)"、“分"、“秒”的現(xiàn)代計(jì)時(shí)裝置.另外具有校時(shí)功能,秒表功能,定時(shí)器功能和繼電器控制外圍電路功能,利用單片機(jī)實(shí)現(xiàn)的數(shù)字時(shí)鐘具有編程靈活,便于功能的擴(kuò)充等優(yōu)點(diǎn)。目錄TOC\o"1—3"\h\z\uHYPERLINK\l”_Toc407187440"前言1_Toc407187444”1.2課題研究的目的和意義1HYPERLINK\l”_Toc407187445"1.3應(yīng)解決的主要問題及達(dá)到的技術(shù)要求2_Toc407187462”2.2按鍵的選擇32.3顯示器的選擇3_Toc407187465"2.5發(fā)音部分的設(shè)計(jì)4HYPERLINK\l”_Toc407187466"2。6顯示器驅(qū)動電路4HYPERLINK\l”_Toc407187467"2。7電源的選擇4HYPERLINK\l”_Toc407187468"第3章數(shù)字電子鐘的設(shè)計(jì)原理和方法53.1設(shè)計(jì)原理53.2硬件電路的設(shè)計(jì)5_Toc407187472”3。2.2鍵盤電路的設(shè)計(jì)6HYPERLINK\l”_Toc407187473”3.2。3時(shí)鐘電路6_Toc407187475"3.2.5繼電器電路73.2.6LCD1602電路7_Toc407187478"3.3軟件部分的設(shè)計(jì)8HYPERLINK\l”_Toc407187479"3。3。1主程序部分的設(shè)計(jì)8HYPERLINK\l”_Toc407187480”總結(jié)11:”); DisplayMinTens(); DisplayMinUnits(); LcdShowStr(11,1,”:”); DisplayClkSecUnits(); DisplayClkSecTens();//============================================================== if((Key1==0)&(key1Flag==0)){ //設(shè)置當(dāng)前時(shí)間 Delay20ms(); if((Key1==0)&(key1Flag==0)){ TR0=0; InitLcd1602(); LcdShowStr(0,0,"SetCurrentTime"); DisplayHourTens(); DisplayHourUnits(); LcdShowStr(8,1,”:"); DisplayMinTens(); DisplayMinUnits(); key1Flag=1; } } while(key1Flag==1){ if(Key1==0){ Delay20ms(); if(Key1==0){ hour++; if(hour==24){ hour=0; } DisplayHourTens(); DisplayHourUnits(); LcdShowStr(8,1,”:"); DisplayMinTens(); DisplayMinUnits(); } } if(Key2==0){ Delay20ms(); if(Key2==0){ min++; if(min==60){ min=0; hour++; } DisplayHourTens(); DisplayHourUnits(); LcdShowStr(8,1,”:”); DisplayMinTens(); DisplayMinUnits(); } } if((Key3==0)&(key1Flag==1)){ //退出設(shè)置當(dāng)前時(shí)間 Delay20ms(); if((Key3==0)&(key1Flag==1)){ InitLcd1602(); LcdShowStr(0,0,table); DisplayHourTens(); DisplayHourUnits(); LcdShowStr(8,1,":"); DisplayMinTens(); DisplayMinUnits(); LcdShowStr(11,1,":”); DisplayClkSecUnits(); DisplayClkSecTens(); key1Flag=0; TR0=1; } } }//============================================================== if((Key2==0)&(key2Flag==0)&(relayFlag==1)){ //顯示鬧鐘時(shí)間 Delay20ms(); if((Key2==0)&(key2Flag==0)&(relayFlag==1)){ key2Flag=1; InitLcd1602(); while(key2Flag==1){ LcdShowStr(0,0,”ClockTime"); DisplayClkHourTens(); DisplayClkHourUnits(); LcdShowStr(8,1,”:”); DisplayClkMinTens(); DisplayClkMinUnits(); if(Key2==0){ Delay20ms(); if(Key2==0){ key2Flag=0; InitLcd1602(); DisplayHourTens(); DisplayHourUnits(); LcdShowStr(8,1,":"); DisplayMinTens(); DisplayMinUnits(); LcdShowStr(11,1,”:”); DisplayClkSecUnits(); DisplayClkSecTens(); } } } } }//============================================================== if((Key3==0)&(key3Flag==0)){ //設(shè)置鬧鐘時(shí)間 Delay20ms(); if((Key3==0)&(key3Flag==0)){ TR0=0; InitLcd1602(); LcdShowStr(0,0,"SetClockTime”); DisplayClkHourTens(); DisplayClkHourUnits(); LcdShowStr(8,1,”:”); DisplayClkMinTens(); DisplayClkMinUnits(); key3Flag=1; } } while(key3Flag==1){ if(Key1==0){ Delay20ms(); if(Key1==0){ clkHour++; if(clkHour==24){ clkHour=0; } DisplayClkHourTens(); DisplayClkHourUnits(); LcdShowStr(8,1,":”); DisplayClkMinTens(); DisplayClkMinUnits(); } } if(Key2==0){ Delay20ms(); if(Key2==0){ clkMin++; if(clkMin==60){ clkHour++; clkMin=0; } DisplayClkHourTens(); DisplayClkHourUnits(); LcdShowStr(8,1,”:"); DisplayClkMinTens(); DisplayClkMinUnits(); } } if(Key3==0){ //退出設(shè)置鬧鐘時(shí)間 Delay20ms(); if(Key3==0){ key3Flag=0; InitLcd1602(); TR0=1; DisplayHourTens(); DisplayHourUnits(); LcdShowStr(8,1,":"); DisplayMinTens(); DisplayMinUnits(); LcdShowStr(11,1,”:”); DisplayClkSecUnits(); DisplayClkSecTens(); } } }//============================================================== if((Key4==0)&(key4Flag==0)){ //鬧鐘ON/OFF位設(shè)置 Delay20ms(); if((Key4==0)&(key4Flag==0)){ key4Flag=1; InitLcd1602(); LcdShowStr(0,0,"ClockON”); Delay20ms(); Beep(); Delay20ms(); Beep(); Delay20ms(); Beep(); Delay20ms(); Delay20ms(); } } if((Key4==0)&(key4Flag==1)){ //鬧鐘ON/OFF位設(shè)置 Delay20ms(); if((Key4==0)&(key4Flag==1)){ key4Flag=0; InitLcd1602(); LcdShowStr(0,0,”ClockOFF”); Beep(); Delay20ms(); Delay20ms(); Delay20ms(); Delay20ms(); } }//============================================================== if((key4Flag==1)&(hour==clkHour)&(min==clkMin)){ clkFlag=1; //鬧鐘時(shí)間到 InitLcd1602(); LcdShowStr(0,0,"Time’sup"); Relay=0; relayFlag=0; //繼電器吸合 while(clkFlag==1){ Beep(); ScanKey4(); Delay20ms(); ScanKey4(); Delay20ms(); ScanKey4(); Delay20ms(); ScanKey4(); Delay20ms(); ScanKey4(); beepNum++; if(beepNum==20){ clkFlag=0; beepNum=0; key4Flag=0; } } }//============================================================== if((Key2==0)&(relayFlag==0)){ //關(guān)閉繼電器 Delay20ms(); if((Key2==0)&(relayFlag==0)){ Relay=1; relayFlag=1; } }//============================================================== }}voidTimer0()interrupt1{ temp++; if(temp==20){ sec++; temp=0; Led=0; Delay1ms(); Led=1; } TH0=(65536—50000)/256; TL0=(65536—50000)%256;}內(nèi)容摘要電壓表是測量儀器中不可缺少的設(shè)備,目前廣泛應(yīng)用的是采用專用集成電路實(shí)現(xiàn)的數(shù)字電壓表。本系統(tǒng)以8051單片機(jī)為核心,以逐次逼近式A/D轉(zhuǎn)換器ADC0809、LED顯示器為主體,設(shè)計(jì)了一款簡易的數(shù)字電壓表,能夠測量0~5V的直流電壓,最小分辨率為0.02V。該設(shè)計(jì)大體分為以下幾個(gè)部分,同時(shí),各部分選擇使用的主要元器件確定如下:1、單片機(jī)部分。使用常見的8051單片機(jī),同時(shí)根據(jù)需要設(shè)計(jì)單片機(jī)電路。2、測量部分。該部分是實(shí)驗(yàn)的重點(diǎn),要求將外部采集的模擬信號轉(zhuǎn)換成數(shù)字信號,通過單片機(jī)的處理顯示在顯示器上,該部分決定了數(shù)字電壓表的精度等主要技術(shù)指標(biāo)。根據(jù)需要本設(shè)計(jì)采用逐次逼近型A∕D轉(zhuǎn)換器ADC0809進(jìn)行模數(shù)轉(zhuǎn)換。3、鍵盤顯示部分。利用4×6矩陣鍵盤的一個(gè)按鍵控制量程的轉(zhuǎn)換,3或4位LED顯示。其中一位為整數(shù)部分,其余位小數(shù)部分。索引關(guān)鍵詞:8051模數(shù)轉(zhuǎn)換LED顯示矩陣鍵盤目錄一概述 …………………4二方案設(shè)計(jì)與論證……………4三單元電路設(shè)計(jì)與參數(shù)計(jì)算…………………43.1.A∕D轉(zhuǎn)換器0809……………………53.1.LED數(shù)碼顯示………7四總原理圖及參考程序………9五結(jié)論…………10六心得體會……………………14七參考文獻(xiàn)……………………15 一、概述數(shù)字電壓表的基本工作原理是利用A/D轉(zhuǎn)換電路將待測的模擬信號轉(zhuǎn)換成數(shù)字信號,通過相應(yīng)換算后將測試結(jié)果以數(shù)字形式顯示出來的一種電壓表。較之于一般的模擬電壓表,數(shù)字電壓表具有精度高、測量準(zhǔn)確、讀數(shù)直觀、使用方便等優(yōu)點(diǎn)。電壓表的數(shù)字化測量,關(guān)鍵在于如何把隨時(shí)連續(xù)變化的模擬量轉(zhuǎn)化成數(shù)字量,完成這種轉(zhuǎn)換的電路叫模數(shù)轉(zhuǎn)換器(A/D)。數(shù)字電壓表的核心部件就是A/D轉(zhuǎn)換器,由于各種不同的A/D轉(zhuǎn)換原理構(gòu)成了各種不同類型的DVM。一般說來,A/D轉(zhuǎn)換的方式可分為兩類:積分式和逐次逼近式。積分式A/D轉(zhuǎn)換器是先用積分器將輸入的模擬電壓轉(zhuǎn)換成時(shí)間或頻率,再將其數(shù)字化。根據(jù)轉(zhuǎn)化的中間量不同,它又分為U-T(電壓-時(shí)間)式和U-F(電壓-頻率)式兩種。逐次逼近式A/D轉(zhuǎn)換器分為比較式和斜坡電壓式,根據(jù)不同的工作原理,比較式又分為逐次比較式及零平衡式等。斜坡電壓式又分為線性斜坡式和階梯斜坡式兩種。在高精度數(shù)字電壓表中,常采用由積分式和比較式相結(jié)合起來的復(fù)合式A/D轉(zhuǎn)換器。本設(shè)計(jì)以8051單片機(jī)為核心,以逐次比較型A/D轉(zhuǎn)換器ADC0809、LED顯示器為主體,構(gòu)造了一款簡易的數(shù)字電壓表,能夠測量1路0~5V直流電壓,最小分辨率0.02V。二、方案設(shè)計(jì)與論證該設(shè)計(jì)是基于8051的數(shù)字電壓表,大體分為以下幾個(gè)部分,同時(shí),各部分選擇使用的主要元器件確定如下:(1)單片機(jī)部分使用常見的8051單片機(jī),同時(shí)根據(jù)需要設(shè)計(jì)單片機(jī)電路。(2)測量部分該部分是實(shí)驗(yàn)的重點(diǎn),要求將外部采集的模擬信號轉(zhuǎn)換成數(shù)字信號,通過單片機(jī)的處理顯示在顯示器上,該部分
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025 小學(xué)三年級科學(xué)下冊對比風(fēng)媒花與蟲媒花的特點(diǎn)課件
- 生產(chǎn)文員考試試題及答案
- 生物初一考試題目及答案
- 輔警國學(xué)培訓(xùn)課件
- 2026年深圳中考語文正確使用熟語試卷(附答案可下載)
- 2026年深圳中考英語題型全解全練試卷(附答案可下載)
- 危險(xiǎn)品車駕駛員培訓(xùn)課件
- 知識類題目及答案
- 2026年深圳中考數(shù)學(xué)重難點(diǎn)突破試卷(附答案可下載)
- 2026年深圳中考生物三模仿真模擬試卷(附答案可下載)
- 南通南通市通州區(qū)圖書館公開招聘勞務(wù)派遣人員筆試歷年備考題庫附帶答案詳解
- 2026中工國際工程股份有限公司社會招聘筆試備考試題及答案解析
- 物業(yè)總經(jīng)理培訓(xùn)課件
- 短險(xiǎn)銷售技巧培訓(xùn)課件
- 2025年職業(yè)衛(wèi)生健康培訓(xùn)考試試題及答案
- 2026年二十屆四中全會精神應(yīng)知應(yīng)會題庫及答案
- 科學(xué)、文化與海洋智慧樹知到期末考試答案2024年
- 工廠網(wǎng)絡(luò)設(shè)計(jì)方案
- 福建省泉州市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量監(jiān)測政治試題
- 日文常用漢字表
- QC003-三片罐206D鋁蓋檢驗(yàn)作業(yè)指導(dǎo)書
評論
0/150
提交評論