數(shù)字鐘的設(shè)計-畢業(yè)設(shè)計_第1頁
數(shù)字鐘的設(shè)計-畢業(yè)設(shè)計_第2頁
數(shù)字鐘的設(shè)計-畢業(yè)設(shè)計_第3頁
數(shù)字鐘的設(shè)計-畢業(yè)設(shè)計_第4頁
數(shù)字鐘的設(shè)計-畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

畢業(yè)設(shè)計數(shù)字鐘的設(shè)計摘要:隨著電子工業(yè)的發(fā)展,電子產(chǎn)品日新月異。鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的功能。諸如數(shù)字鐘、萬年歷、電子表、定時自動報警、定時啟閉電路、通斷動力設(shè)備,甚至各種定時電氣的自動啟用、通信、網(wǎng)絡(luò)等眾多領(lǐng)域,所有這些都是以鐘表數(shù)字化為基礎(chǔ)的。由于其功能的不斷增加,使用方便性不斷提高,很多產(chǎn)品已經(jīng)成為人類日常生活中不可或缺的助手。本文是基于單片機控制的數(shù)字鐘系統(tǒng)的設(shè)計。該系統(tǒng)主要以單片機芯片AT89C51為核心結(jié)合按鍵選擇模塊來控制數(shù)碼管顯示模塊和蜂鳴器模塊工作,從而實現(xiàn)時鐘和鬧鐘功能,并可對時鐘及鬧鐘的時、分、秒進(jìn)行單獨校對,使其校正到標(biāo)準(zhǔn)時間。此設(shè)計以軟件控制硬件及軟硬件結(jié)合為指導(dǎo)思想,充分發(fā)揮單片機功能。同時,該數(shù)字鐘系統(tǒng)還具有功耗小、成本低的特點,具有很強的實用性。由于系統(tǒng)實現(xiàn)的功能簡單,因此具有一定的可擴展性。關(guān)鍵詞:AT89C51單片機;數(shù)碼管顯示;ThedesignofdigitalclockAbstractWiththedevelopmentoftheelectronicsindustry,electronicproductsaredifferentfrombeforedaybyday.Watchesdigitalhasbroughtgreatconveniencetopeople'sproductionandliving,andgreatlyexpandedtheoriginalwatchfunction.Suchasdigitalclock,calendar,electronicwatches,timedautomaticalarm,timedtoopenandclosecircuits,openandclosethepowerequipment,evenavarietyoftimedelectricalauto-enabled,communications,networkingandmanyotherfields,allofwhicharebasedonwatchesdigital.Increasingitsfunctionality,easeofusecontinuetoincrease,manyproductshavebecomeanindispensableassistanttohumandailylife.Thisarticleisbasedonsinglechipmicrocomputercontrolofdigitalclocksystemdesign.Thissystemmainlybythesingle-chipmicrocomputerAT89C51asthecoreincombinationwithkeychoicemoduletocontrolthedigitaltubedisplayandbuzzermodulework,soastorealizetheclockandalarmclockfunction,andcanbeontheclockandalarmclock,minutesandsecondstoindividuallycheck,makethecorrectiontostandardtime.Thisdesigninordertocontrolthehardwareandsoftwareandhardwarecombinedwithsoftwareastheguidingideology,givefullplaytotheMCUfunction.Atthesametime,thedigitalclocksystemalsohasthecharacteristicsoflowconsumption,lowcost,strongpracticability.Duetothefunctionofthesystemissimple,thushascertainextensibility.Keywords:AT89C51singlechipmicrocomputer;Digitaltubedisplay;目錄摘要..........................................................................................................................................iAbstract.....................................................................................................................................ii第一章緒論.....................................................................................................................-1-1.1課題研究的背景....................................................................................................-1-1.2課題研究的內(nèi)容.................................................................................................-2-第二章KEIL集成開發(fā)環(huán)境的應(yīng)用..................................................................................-3-2.1AT89C51單片機概述............................................................................................-3-2.2KEIL集成開發(fā)環(huán)境的應(yīng)用與操作....................................................................-3-2.2.1KEIL集成開發(fā)環(huán)境簡介.............................................................................-3-2.2.2KEIL集成開發(fā)環(huán)境的基本仿真流程......................................................-4-第三章數(shù)字鐘系統(tǒng)的原理與設(shè)計..................................................................................-6-3.1數(shù)字鐘系統(tǒng)的總體方案設(shè)計..............................................................................-6-3.2數(shù)字鐘系統(tǒng)的硬件設(shè)計.....................................................................................-6-3.2.1復(fù)位電路的設(shè)計3.2.2振蕩電路的設(shè)計3.2.3按鍵選擇電路的設(shè)計............................................................................-10-3.2.4數(shù)碼管的連接...............................................3.2.5蜂鳴器電路設(shè)計3.3數(shù)字鐘系統(tǒng)的軟件設(shè)計.....................................................................................-16-3.3.1初始化參數(shù)設(shè)置3.3.2時鐘計時程序3.3.3按鍵處理程序.................................時鐘調(diào)時程序鬧鐘調(diào)時程序.............................................................................-13.3.4數(shù)碼管顯示程序時鐘當(dāng)前值顯示程序鬧鐘調(diào)時顯示程序....................................第四章系統(tǒng)實現(xiàn)與分析................................................................................................-20-4.1系統(tǒng)總體電路原理圖的設(shè)計..........................................................................-20-4.2系統(tǒng)整體軟件設(shè)計............................................................................................-21第五章總結(jié)與展望.......................................................................................................-26-5.1工作總結(jié)............................................................................................................-26-5.2技術(shù)展望.............................................................................................................-27-參考文獻(xiàn)......................................................緒論1.1課題研究的背景近年來隨著科技的發(fā)展,任何設(shè)備和產(chǎn)品的自動化、數(shù)字化和智能化都離不開單片機,單片機已成為人類生活中不可或缺的助手。在實時檢測和自動控制的單片機應(yīng)用系統(tǒng)中,單片機往往是作為一個核心部件來使用,還要根據(jù)具體的硬件結(jié)構(gòu),以及針對具體的應(yīng)用對象的軟件結(jié)合,加以完善。單片機的應(yīng)用的重要意義在于,它從根本上改變了傳統(tǒng)意義設(shè)計理念和設(shè)計方法。數(shù)字鐘已經(jīng)成為人們?nèi)粘I钪胁豢扇鄙俚纳钣闷?,廣泛的應(yīng)用于各種場所。給我們生活、學(xué)習(xí)、工作、娛樂帶來了極大的方便。盡管目前市場上已有現(xiàn)成的數(shù)字鐘集成電路芯片出售,價格便宜、使用也方便,但鑒于單片機的定時功能也可以完成數(shù)字鐘的電路設(shè)計,因此進(jìn)行數(shù)字鐘的設(shè)計是必要的。1.2課題研究的內(nèi)容本次設(shè)計的多功能數(shù)字鐘就是應(yīng)用單片機的計時功能為設(shè)計核心,采用定時器中斷提供準(zhǔn)確的計時,由鍵盤調(diào)整數(shù)字鐘的功能,并利用軟件編程通過數(shù)碼管把時間數(shù)字顯示出來,通過蜂鳴器提醒時間。本文內(nèi)容結(jié)構(gòu)安排如下:第一章主要介紹本文的研究背景,及本文的主要研究內(nèi)容。第二章是對KEIL集成開發(fā)環(huán)境的應(yīng)用的介紹,包括AT89C51單片機概述,KEIL集成開發(fā)環(huán)境簡介及KEIL集成開發(fā)環(huán)境的基本仿真流程。第三章主要介紹數(shù)字時鐘的原理與設(shè)計,分別介紹了數(shù)字鐘系統(tǒng)的總體方案設(shè)計,數(shù)字鐘系統(tǒng)的硬件設(shè)計,數(shù)字鐘系統(tǒng)的軟件設(shè)計。第四章是系統(tǒng)的實現(xiàn)與分析,分別介紹了系統(tǒng)總體電路原理圖的設(shè)計,系統(tǒng)整體軟件設(shè)計,將各個模塊整合到一起,進(jìn)行仿真、分析,以實現(xiàn)數(shù)字鐘系統(tǒng)的整體功能。第五章是對本文的總結(jié),以及對本設(shè)計的技術(shù)展望。第二章KEIL集成開發(fā)環(huán)境的應(yīng)用2.1AT89C51單片機概述單片機是計算機、自動控制和大規(guī)模集成電路技術(shù)相結(jié)合的產(chǎn)物,融計算機結(jié)構(gòu)和控制功能于一體,集成在一個芯片上的計算機,全稱單片微型計算機。AT89C51是8位單片機中一個最基本、最典型的芯片型號,它主要由中央處理器CPU、內(nèi)部數(shù)據(jù)存儲器、內(nèi)部程序存儲器、定時器/計數(shù)器、并行I/O口、串行口、中斷控制電路、時鐘電路、位處理器、內(nèi)部總線等組成。2.2KEIL集成開發(fā)環(huán)境的應(yīng)用與操作2.2.1KEIL集成開發(fā)環(huán)境簡介KeilC51是KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng)。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。。在Keil中使用C語言編程,在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢。2.2.2KEIL集成開發(fā)環(huán)境的基本仿真流程1.新建與保存源程序第一步:雙擊KEILuVision3的桌面快捷方式,啟動KEIL集成開發(fā)軟件。第二步:新建文本編輯界面或加入原有的程序文件。選擇“File(文件)”→“New”命令或菜單欄的“新建文本”命令,即可在項目界面的右側(cè)打開一個新的文本編輯界面,默認(rèn)文件名為“Text1”。第三步:在“Text1”中輸入C語言源程序。第四步:保存源程序。保存文件時必須加上文件的擴展名并選擇路徑和文件名進(jìn)行保存,C語言程序文件的擴展名為“.C”。2.建立新工程第五步:新建KEIL工程。選擇“Project(工程)”→“NewProject(新建工程)”命令,將出現(xiàn)保存對話框。在保存工程對話框中輸入工程文件名,工程名稱不用輸入擴展名。輸入名稱后保存,將出現(xiàn)“SelectDeviceforTarget”對話框。第六步:選擇CPU型號。在對話框中選擇“公司(Atmel)”→“CPU型號”,單擊“確定”按鈕返回主界面。3.加入源程序到工程中1總體方案設(shè)計針對本課題的設(shè)計任務(wù),進(jìn)行分析得到:本次設(shè)計以單片機芯片AT89C51為核心進(jìn)行控制,并由4個按鍵及一個開關(guān)鍵進(jìn)行時間的調(diào)整和鬧鈴的設(shè)定。最終由6個數(shù)碼管顯示時間,1個蜂鳴器提醒時間。根據(jù)設(shè)計的要求,該多功能數(shù)字鐘的設(shè)計總體上大致可分為以下幾個部分:1.復(fù)位電路;2.振蕩電路;3.按鍵選擇電路;4.數(shù)碼管顯示電路;5.蜂鳴器電路。系統(tǒng)原理框圖如下圖所示。復(fù)位電路復(fù)位電路數(shù)碼管顯示電路蜂鳴器電路按鍵選擇電路AT89C512硬件電路設(shè)計2.1復(fù)位電路設(shè)計單片機在上電以后內(nèi)部的電路處于一種隨機狀態(tài),這時如果開始工作則會出現(xiàn)混亂。對單片機而言,復(fù)位也就是在做準(zhǔn)備工作,是使單片機回到初始化狀態(tài)的一種操作。單片機系統(tǒng)上電后,從何處開始執(zhí)行第一條指令是由系統(tǒng)復(fù)位后的狀態(tài)決定的。RST引腳是復(fù)位信號的輸入端,高電平有效。常用的復(fù)位電路有上電復(fù)位電路、按鍵電平復(fù)位電路、按鍵脈沖復(fù)位電路,而此數(shù)字鐘系統(tǒng)復(fù)位電路采用按鍵電平復(fù)位電路,如下圖所示。2.2振蕩電路振蕩電路由兩個皆為30PF的C1,C2及振蕩頻率為12MHZ的晶振組成,并配合單片機定時器0實現(xiàn)準(zhǔn)確計時。2.2按鍵選擇電路按鍵選擇電路主要通過按鍵及開關(guān)實現(xiàn)隨時輸入定時(鬧鐘)時間和隨時對當(dāng)前時間進(jìn)行調(diào)整。本設(shè)計選擇1個單刀單擲開關(guān)為鬧鐘時間調(diào)整開關(guān),4個獨立式鍵盤,分別為:秒鐘調(diào)整按鍵、分鐘調(diào)整按鍵、時鐘調(diào)整按鍵及時鐘運行按鍵。按鍵選擇電路如下圖所示。U1SW1其中,秒鐘調(diào)整按鍵的功能是當(dāng)鬧鐘時間調(diào)整開關(guān)閉合時調(diào)整鬧鐘時間的秒位,反之對時間值的秒位進(jìn)行調(diào)整,分鐘調(diào)整按鍵的功能是當(dāng)鬧鐘時間調(diào)整開關(guān)閉合時調(diào)整鬧鐘時間的分位,反之對時間值的分位進(jìn)行調(diào)整,時鐘調(diào)整按鍵的功能是當(dāng)鬧鐘時間調(diào)整開關(guān)閉合時調(diào)整鬧鐘時間的時位,反之對時間值的時位進(jìn)行調(diào)整。各按鍵每按一次+1,當(dāng)秒位和分位加到60自動轉(zhuǎn)化為0,當(dāng)時位加到24自動轉(zhuǎn)化為0。鍵盤的硬件電路設(shè)計只能保證八個按鍵信號的可靠進(jìn)入,要想完成鍵盤的輸入功能,還要靠軟件編程來具體實現(xiàn)。當(dāng)時間值調(diào)整準(zhǔn)確,按下時鐘運行按鍵啟動定時器中斷開始準(zhǔn)確計時。2.2數(shù)碼管顯示電路設(shè)計在目前的掃描顯示電路中為了節(jié)省成本廣泛使用七段數(shù)碼管顯示,其工業(yè)控制、儀表儀器等都應(yīng)用七段數(shù)碼管做顯示輸出。用十進(jìn)制數(shù)碼管直觀顯示數(shù)字系統(tǒng)的運行數(shù)據(jù),常常是主要的顯示手段,數(shù)碼管每個線段都是一個發(fā)光二極管LED(LightEmittingDiode)組成的。因其驅(qū)動電壓小、功耗低、壽命長和可靠性高等優(yōu)點廣泛顯示電路中。2.2.1數(shù)碼管的顯示原理七段數(shù)碼管顯示就是將七個發(fā)光二極管LED(加小數(shù)點為八個)按一定的方式排列起來,七段a、b、c、d、e、f、g(小數(shù)點DP)各對應(yīng)一個發(fā)光二極管,利用不同發(fā)光段的組合,顯示不同的阿拉伯?dāng)?shù)字或字符,要使數(shù)碼管顯示,必須具備兩個條件:1.要使COM端接地;2.要使(a,b,c,d,e,f,g,dp)某些端口接高電。(a)顯示器(b)段組合圖圖2.2.1八段數(shù)字顯示器及發(fā)光段組合圖以共陰極數(shù)碼管為例7段數(shù)碼管的段碼為7位,8段數(shù)碼管的段碼為8位,用一個字節(jié)即可表示。段碼字節(jié)中代碼位與各段發(fā)光二極管的對應(yīng)關(guān)系如下:段碼D7D6D5D4D3D2D1D0段名dpgfedcba顯示十六進(jìn)制數(shù)的段碼值如下圖所示:顯示數(shù)字七段共陰極段碼八段共陰極段碼八段共陰極倒置段碼03FHBFHBFH106H86HB0H25BHDBHDBH34FHCFHF9H466HE6HF4H56DHEDHEDH67DHFDHEFH707H87HB8H87FHFFHFFH96FHEFHFDH本設(shè)計需設(shè)置6個數(shù)碼管,其中時個位與倒置的分十位結(jié)合顯示數(shù)字及“:”,分個位與秒十位結(jié)合顯示數(shù)字及“:”。2.2.2數(shù)碼管連接在使用中,為了給發(fā)光二極管加驅(qū)動電壓,它們應(yīng)有一個公共引腳,公共引腳共有共陰極和共陽極兩種連接方法,如圖下圖所示。(a)共陽極接法(b)共陰極接法其中共陰極接法把發(fā)光二極管的陰極連在一起構(gòu)成陰極公共引腳,使用時陰極公共引腳接地,這樣陽極引腳上加高電平的發(fā)光二極管就導(dǎo)通點亮;共陽極接法則是把發(fā)光二極管的陽極連在一起作為陽極公共引腳,使用時陽極公共引腳接+5V,這樣陰極引腳上加低電平的發(fā)光二極管即可導(dǎo)通點亮。此圖各數(shù)碼管的a,b,c,d,e,f,g,DP端分別接P2.0,P2.1,P2.2,P2.3,P2.4,P2.5,P2.6,P2.7。自秒個位,秒十位,分個位,分十位,時個位,時十位起數(shù)碼管的COM端分別接P3.0,P3.1,P3.2,P3.3,P3.4,P3.5,對應(yīng)數(shù)碼管連接方法如下:2.3蜂鳴器電路設(shè)計本設(shè)計中當(dāng)鬧鐘預(yù)設(shè)時間與當(dāng)前顯示時間值相同時驅(qū)動蜂鳴器連續(xù)工作1分鐘,起到提醒時間的作用,給人們的工作、學(xué)習(xí)、生活帶來方便。將蜂鳴器一端與P3.6相連,另一端與VCC相連,當(dāng)P3.6=0時,蜂鳴器開始工作。具體連接電路如下圖所示:3軟件設(shè)計根據(jù)設(shè)計方案要求,應(yīng)用Keil軟件和Proteus軟件對電路進(jìn)行仿真,實現(xiàn)設(shè)計的要求,具備對時間即時的顯示,對時間和鬧鈴的設(shè)定。該課題的軟件設(shè)計采用模塊化設(shè)計的思想即將程序劃分為若干個相對獨立的功能模塊,畫出每一個功能模塊的詳細(xì)流程圖,并根據(jù)流程圖編寫程序,最后按照軟件設(shè)計的總體結(jié)構(gòu)框圖,將各模塊連接成一個完整的主程序。本設(shè)計中主要模塊包括初始化參數(shù)設(shè)置、按鍵處理、數(shù)碼管顯示模塊及蜂鳴器工作模塊,下面對軟件各部分程序進(jìn)行簡要介紹:初始化參數(shù)設(shè)置如下:#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharcodetable2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};ucharcodetable3[]={0xbf,0xb0,0xdb,0xf9,0xf4,0xed,0xef,0xb8,0xff,0xfd};uchardis[6]={0,0,0,0,0,0};ucharshihao,second,minite,hour,bsel;uchartsecond=0;uchartminite=0;ucharthour=0;uinti,j,m,n;sbitP1_0=P1^0;sbitP1_1=P1^1;sbitP1_2=P1^2;sbitP1_3=P1^3;sbitP1_4=P1^4;sbitbeep=P3^6;voiddisplay();voidndisplay();voidtiaoshi();voidntiaoshi();定時器0服務(wù)程序定時器0服務(wù)程序毫秒計數(shù)10ms定時器計數(shù)+1毫秒計數(shù)到100次=1s?重裝定時常數(shù),秒計數(shù)+1秒計數(shù)=60s?秒計數(shù)=0,分計數(shù)+1分計數(shù)=60min?分計數(shù)=0,時計數(shù)+1時計數(shù)=0中斷返回時計數(shù)=24h?NY時鐘計時程序流程圖本程序利用定時器中斷實現(xiàn)數(shù)字鐘的時鐘計時。1.時鐘計時程序如下:程序分析一次10ms定時結(jié)束,增加一個計數(shù)變量shihao(0——100);當(dāng)shihao增加到100,second+1,shihao清零;當(dāng)second增加到60,minite+1,second清零;當(dāng)minite增加到60,hour+1,minite清零;當(dāng)hour增加到24,hour清零;2.初始化TMOD:定時器T0方式1,TMOD=0x01。計算初值:fosc=12MHZ,機器周期為1us。一次定時時間=10ms,T0定時10ms=10ms/1us=10000,即TH0=(65536-10000)/256;TH1=(65536-10000)%256;中斷方式:允許定時器T0中斷。EA=1;ET0=1;具體程序如下:voidtimer0(void)interrupt1using1{TH0=(65536-10000)/256;//定時時間為10ms/次TL0=(65536-10000)%256;shihao++;if(shihao>100){shihao=0;//定時=1ssecond++;if(second>=60){ second=0;//定時=1分鐘minite++; if(minite>=60) {minite=0;//定時=1小時hour++;if(hour>=24)hour=0;}}}}2.按鍵處理程序如下:時鐘程序入口時鐘程序入口開機初始化,清零T0中斷初始化,送顯示數(shù)據(jù)00:00:00運行鍵按下了嗎?秒調(diào)整鍵按下了嗎?分調(diào)整鍵按下了嗎?時調(diào)整鍵按下了嗎?N啟動定時器工作second+1minite+1hour+1鬧鐘調(diào)時開關(guān)閉合了嗎?N調(diào)用顯示函數(shù)Y本程序主要在鬧鐘調(diào)時開關(guān)斷開的前提下實現(xiàn)時鐘當(dāng)前顯示時間的可調(diào)性。程序分析當(dāng)鬧鐘調(diào)時開關(guān)P1.4斷開時,首先判斷秒鐘調(diào)整按鍵P1.0是否按下;若秒鐘調(diào)整按鍵P1.0按下,按下一次second+1;若P1.0沒有按下,判斷分鐘調(diào)整按鍵P1.1是否按下;若分鐘調(diào)整按鍵P1.1按下,按下一次minite+1;若P1.1沒有按下,判斷時鐘調(diào)整按鍵P1.2是否按下;若時鐘調(diào)整按鍵P1.2按下,按下一次hour+1;如若P1.0、P1.1、P1.2皆沒按下,判斷運行鍵P1.3是否按下。若P1.3按下啟動T0工作;若P1.3沒有按下,返回主程序。具體程序如下:if(P1_4==1){ delay(100,100); if(P1_4==1)display(); tiaoshi(); if(P1_3==0) { delay(100,100); if(P1_3==0) TR0=1; while(P1_0==0); }}voidtiaoshi(){while(1){if(P1_0==0){delay(100,100);if(P1_0==0){second++;if(second>=60)second=0;while(P1_0==0);}}elseif(P1_1==0){delay(100,100);if(P1_1==0){minite++;if(minite>=60)minite=0;while(P1_1==1);}}elseif(P1_2==0){delay(100,100);if(P1_2==0){hour++;if(hour>=24)hour=0;while(P1_2==0);}}}}鬧鐘程序入口鬧鐘程序入口開機初始化,清零T0中斷初始化,送顯示數(shù)據(jù)00:00:00秒調(diào)整鍵按下了嗎?分調(diào)整鍵按下了嗎?時調(diào)整鍵按下了嗎?tsecond+1tminite+1thour+1鬧鐘調(diào)時開關(guān)閉合了嗎?YN本程序主要在鬧鐘調(diào)時開關(guān)閉合的前提下實現(xiàn)鬧鐘時間的可調(diào)性。程序分析當(dāng)鬧鐘調(diào)時開關(guān)P1.4閉合時,首先判斷秒鐘調(diào)整按鍵P1.0是否按下。若秒鐘調(diào)整按鍵P1.0按下,按下一次tsecond+1;若P1.0沒有按下,判斷分鐘調(diào)整按鍵P1.1是否按下。若分鐘調(diào)整按鍵P1.1按下,按下一次tminite+1;若P1.1沒有按下,判斷時鐘調(diào)整按鍵P1.2是否按下。若時鐘調(diào)整按鍵P1.2按下,按下一次thour+1。如若P1.0、P1.1、P1.2皆沒按下,返回主程序。uchartsecond=0;uchartminite=0;ucharthour=0;while(1){if(P1_4==0){delay(100,100);if(P1_4==0)ndisplay();ntiaoshi();}voidntiaoshi(){while(1){if(P1_0==0){delay(100,100);if(P1_0==0){tsecond++;if(tsecond>=60)tsecond=0;while(P1_0==0);}}elseif(P1_1==0){delay(100,100);if(P1_1==0){tminite++;if(tminite>=60)tminite=0;while(P1_1==1);}}elseif(P1_2==0){delay(100,100);if(P1_2==0){thour++;if(thour>=24)thour=0;while(P1_2==0);}}}}3.數(shù)碼管顯示程序1.本程序在鬧鐘調(diào)時開關(guān)P1.4斷開的前提下實現(xiàn)當(dāng)前時間顯示0.5s,熄滅0.5s及當(dāng)鬧鐘預(yù)設(shè)時間與當(dāng)前時間相等時實現(xiàn)蜂鳴器間斷工作1分鐘。ucharcodetable1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharcodetable2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};ucharcodetable3[]={0xbf,0xb0,0xdb,0xf9,0xf4,0xed,0xef,0xb8,0xff,0xfd};uchardis[6]={0,0,0,0,0,0};voiddisplay(){dis[0]=second%10;dis[1]=second/10;dis[2]=minite%10;dis[3]=minite/10;dis[4]=hour%10;dis[5]=hour/10;P3=bsel;bsel=0xfe;P2=table1[dis[0]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table3[dis[1]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table2[dis[2]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table3[dis[3]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table2[dis[4]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table1[dis[5]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;if(hour==thour&&minite==tminite)beep=0;elsebeep=1;delay(500,1000);P3=0xff;delay(500,1000);}2.本程序在鬧鐘調(diào)時開關(guān)P1.4閉合的前提下實現(xiàn)鬧鐘調(diào)時的顯示。voidndisplay(){dis[0]=tsecond%10;dis[1]=tsecond/10;dis[2]=tminite%10;dis[3]=tminite/10;dis[4]=thour%10;dis[5]=thour/10;P3=bsel;bsel=0xfe;P2=table1[dis[0]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table3[dis[1]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table2[dis[2]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table3[dis[3]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table2[dis[4]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table1[dis[5]];bsel=(bsel<<1)|1;delay(10,100);P2=0x00;}附錄1電路原理圖附錄2程序清單//按下運行按鍵,啟動定時器0,開始計時;//當(dāng)鬧鐘調(diào)時開關(guān)P1.4閉合時,可通過時分秒調(diào)整按鍵實現(xiàn)鬧鐘預(yù)設(shè)值的調(diào)整;//當(dāng)鬧鐘調(diào)時開關(guān)P1.4斷開時時,可通過時分秒調(diào)整按鍵實現(xiàn)時鐘當(dāng)前時間的調(diào)整;//在進(jìn)行鬧鐘調(diào)時過程中,數(shù)碼管只顯示鬧鐘預(yù)設(shè)值,不顯示時鐘當(dāng)前時間,直到鬧鐘調(diào)時開關(guān)P1.4閉合;//不可以在設(shè)置鬧鈴的過程中設(shè)置時間;//每當(dāng)設(shè)置鬧鈴時,鬧鐘時間需在之前的基礎(chǔ)上修改;//可通過開關(guān)控制鬧鐘的運行;#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示0~9數(shù)字ucharcodetable2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//顯示0~9數(shù)字及小數(shù)點ucharcodetable3[]={0xbf,0xb0,0xdb,0xf9,0xf4,0xed,0xef,0xb8,0xff,0xfd};//數(shù)碼管倒置后顯示小數(shù)點及正立的數(shù)字uchardis[6]={0,0,0,0,0,0};//對各數(shù)碼管顯示的數(shù)初始化ucharshihao,second,minite,hour,bsel;uchartsecond=0;uchartminite=0;ucharthour=0;uinti,j,m,n;sbitP1_0=P1^0;sbitP1_1=P1^1;sbitP1_2=P1^2;sbitP1_3=P1^3;sbitP1_4=P1^4;sbitbeep=P3^6;voiddisplay();voidndisplay();voidtiaoshi();voidntiaoshi();delay(m,n){for(i=m;i>0;i--)for(j=n;j>0;j--);}//可調(diào)延時程序voidmain(void){TMOD=0x10;//T0方式1定時TH0=(65536-10000)/256;//預(yù)置計數(shù)初值TL0=(65536-10000)%256;ET0=1;EA=1;//開中斷while(1){ if(P1_4==0){delay(100,100);//軟件消抖動if(P1_4==0)ndisplay();ntiaoshi();}elseif(P1_4==1){ delay(100,100); if(P1_4==1)display(); tiaoshi(); if(P1_3==0) { delay(100,100); if(P1_3==0) TR0=1;//啟動定時 while(P1_0==0); }}}}voidtimer0(void)interrupt1using1//T0中斷服務(wù)程序{TH0=(65536-10000)/256;//定時時間10ms/次TL0=(65536-10000)%256;shihao++;if(shihao>100){shihao=0;second++;if(second>=60){ second=0; minite++; if(minite>=60) {minite=0;hour++;if(hour>=24)hour=0;}}}}voiddisplay(){dis[0]=second%10;//秒個位dis[1]=second/10;//秒十位dis[2]=minite%10;//分個位dis[3]=minite/10;//分十位dis[4]=hour%10;//時個位dis[5]=hour/10;//時十位P3=bsel;bsel=0xfe;P2=table1[dis[0]];//送秒個位bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table3[dis[1]];//送秒十位和小數(shù)點bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table2[dis[2]];//送分個位和小數(shù)點bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table3[dis[3]];//送分十位和小數(shù)點bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table2[dis[4]];//送時個位和小數(shù)點bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table1[dis[5]];//送時十位bsel=(bsel<<1)|1;delay(10,100);P2=0x00;if(hour==thour&&minite==tminite)//判斷是否滿足驅(qū)動蜂鳴器的條件beep=0;//驅(qū)動蜂鳴器elsebeep=1;delay(500,1000);//延時0.5sP3=0xff;//數(shù)碼管熄滅delay(500,1000);//延時0.5s}voidndisplay(){dis[0]=tsecond%10;//鬧鐘秒個位dis[1]=tsecond/10;//鬧鐘秒十位dis[2]=tminite%10;//鬧鐘分個位dis[3]=tminite/10;//鬧鐘分十位dis[4]=thour%10;//鬧鐘時個位dis[5]=thour/10;//鬧鐘時十位P3=bsel;bsel=0xfe;P2=table1[dis[0]];送鬧鐘秒個位bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table3[dis[1]];//送鬧鐘秒十位和小數(shù)點bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table2[dis[2]];//送鬧鐘分個位和小數(shù)點bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table3[dis[3]];//送鬧鐘分十位和小數(shù)點bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table2[dis[4]];//送鬧鐘時個位和小數(shù)點bsel=(bsel<<1)|1;delay(10,100);P2=0x00;P2=table1[dis[5]];//送鬧鐘時十位bsel=(bsel<<1)|1;delay(10,100);P2=0x00;}voidtiaoshi(){while(1){if(P1_0==0)//判斷秒調(diào)整鍵{delay(100,100);//軟件消抖動if(P1_0==0){second++;//秒位加1if(second>=60)//判斷是否超過秒鐘最大值second=0;//清零while(P1_0==0);//判斷按鍵松開}}elseif(P1_1==0)//判斷分調(diào)整鍵{delay(100,100);//軟件消抖動if(P1_1==0){minite++;//分位加1if(minite>=60)//判斷是否超過分鐘最大值minite=0;//清零while(P1_1==1);//判斷按鍵松開}}elseif(P1_2==0){delay(100,100);//軟件消抖動 if(P1_2==0){hour++;//時位加1if(hour>=24)//判斷是否超過時鐘最大值hour=0;//清零while(P1_2==0);//判斷按鍵松開}}}}voidntiaoshi(){while(1){if(P1_0==0){delay(100,100);if(P1_0==0){tsecond++;if(tsecond>=60)tsecond=0;while(P1_0==0);}}elseif(P1_1==0){delay(100,100);if(P1_1==0){tminite++;if(tminite>=60)tminite=0;while(P1_1==1);}}elseif(P1_2==0){delay(100,100);if(P1_2==0){thour++;if(thour>=24)thour=0;while(P1_2==0);}}}}基于C8051F單片機直流電動機反饋控制系統(tǒng)的設(shè)計與研究基于單片機的嵌入式Web服務(wù)器的研究MOTOROLA單片機MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內(nèi)壁硬度測試儀的研制基于單片機的自動找平控制系統(tǒng)研究基于C8051F040單片機的嵌入式系統(tǒng)開發(fā)基于單片機的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現(xiàn)一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設(shè)計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內(nèi)核設(shè)計及其應(yīng)用研究基于單片機的遠(yuǎn)程抄表系統(tǒng)的設(shè)計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統(tǒng)單片機系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設(shè)計和應(yīng)用基于單片機的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機單片機控制系統(tǒng)的研制基于單片機的數(shù)字磁通門傳感器基于單片機的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統(tǒng)設(shè)計Pico專用單片機核的可測性設(shè)計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構(gòu)建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現(xiàn)基于單片機的電液伺服控制系統(tǒng)用于單片機系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機和CPLD的粗光柵位移測量系統(tǒng)研究單片機控制的后備式方波UPS提升高職學(xué)生單片機應(yīng)用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機的氚表面污染測量儀的研制基于單片機的紅外測油儀的研究96系列單片機仿真器研究與設(shè)計基于單片機的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機的溫度智能控制系統(tǒng)的設(shè)計與實現(xiàn)基于MSP430單片機的電梯門機控制器的研制基于單片機的氣體測漏儀的研究基于三菱M16C/6N系列單片機的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機的膛壁溫度報警系統(tǒng)設(shè)計基于AVR單片機的低壓無功補償控制器的設(shè)計基于單片機船舶電力推進(jìn)電機監(jiān)測系統(tǒng)基于單片機網(wǎng)絡(luò)的振動信號的采集系統(tǒng)基于單片機的大容量數(shù)據(jù)存儲技術(shù)的應(yīng)用研究基于單片機的疊圖機研究與教學(xué)方法實踐基于單片機嵌入式Web服務(wù)器技術(shù)的研究及實現(xiàn)基于AT89S52單片機的通用數(shù)據(jù)采集系統(tǒng)基于單片機的多道脈沖幅度分析儀研究機器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機控制系統(tǒng)基于單片機的控制系統(tǒng)在PLC虛擬教學(xué)實驗中的應(yīng)用研究基于單片機系統(tǒng)的網(wǎng)絡(luò)通信研究與應(yīng)用基于PIC16F877單片機的莫爾斯碼自動譯碼系統(tǒng)設(shè)計與研究基于單片機的模糊控制器在工業(yè)電阻爐上的應(yīng)用研究基于雙單片機沖床數(shù)控系統(tǒng)的研究與開發(fā)

溫馨提示

  • 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

提交評論