




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、.數(shù)字鐘的設(shè)計摘要:隨著電子工業(yè)的發(fā)展,電子產(chǎn)品日新月異。鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴(kuò)展了鐘表原先的功能。諸如數(shù)字鐘、萬年歷、電子表、定時自動報警、定時啟閉電路、通斷動力設(shè)備,甚至各種定時電氣的自動啟用、通信、網(wǎng)絡(luò)等眾多領(lǐng)域,所有這些都是以鐘表數(shù)字化為基礎(chǔ)的。由于其功能的不斷增加,使用方便性不斷提高,很多產(chǎn)品已經(jīng)成為人類日常生活中不可或缺的助手。本文是基于單片機(jī)控制的數(shù)字鐘系統(tǒng)的設(shè)計。該系統(tǒng)主要以單片機(jī)芯片AT89C51為核心結(jié)合按鍵選擇模塊來控制數(shù)碼管顯示模塊和蜂鳴器模塊工作,從而實現(xiàn)時鐘和鬧鐘功能,并可對時鐘及鬧鐘的時、分、秒進(jìn)行單獨校對,使其校正到標(biāo)準(zhǔn)時間。此
2、設(shè)計以軟件控制硬件及軟硬件結(jié)合為指導(dǎo)思想,充分發(fā)揮單片機(jī)功能。同時,該數(shù)字鐘系統(tǒng)還具有功耗小、成本低的特點,具有很強(qiáng)的實用性。由于系統(tǒng)實現(xiàn)的功能簡單,因此具有一定的可擴(kuò)展性。關(guān)鍵詞:AT89C51單片機(jī);數(shù)碼管顯示; The design of digital clock AbstractWith the development of the electronics industry, electronic products are different from before day by day. Watches digital has brought great convenience t
3、o peoples production and living, and greatly expanded the original watch function. Such as digital clock, calendar, electronic watches, timed automatic alarm, timed to open and close circuits, open and close the power equipment, even a variety of timed electrical auto-enabled, communications, networ
4、king and many other fields, all of which are based on watches digital. Increasing its functionality, ease of use continue to increase, many products have become an indispensable assistant to human daily life. This article is based on single chip microcomputer control of digital clock system design.
5、This system mainly by the single-chip microcomputer AT89C51 as the core in combination with key choice module to control the digital tube display and buzzer module work, so as to realize the clock and alarm clock function, and can be on the clock and alarm clock, minutes and seconds to individually
6、check, make the correction to standard time. This design in order to control the hardware and software and hardware combined with software as the guiding ideology, give full play to the MCU function. At the same time, the digital clock system also has the characteristics of low consumption, low cost
7、, strong practicability. Due to the function of the system is simple, thus has certain extensibility. Key words: AT89C51 single chip microcomputer; Digital tube display; 目 錄 摘要 .i Abstract .ii第一章 緒 論 .- 1 - 1.1 課題研究的背景.- 1 - 1.2課題研究的內(nèi)容 . - 2 - 第二章 KEIL集成開發(fā)環(huán)境的應(yīng)用. - 3 - 2.1AT89C51單片機(jī)概述 .- 3 - 2.2 KEIL
8、集成開發(fā)環(huán)境的應(yīng)用與操作 . - 3 - 2.2.1KEIL集成開發(fā)環(huán)境簡介 . - 3 - 2.2.2 KEIL集成開發(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è)計 . - 7 - 3.2.2 振蕩電路的設(shè)計 . - 8 - 3.2.3 按鍵選擇電路的設(shè)計 . - 10 - 3.2.4 數(shù)碼管顯示電路的設(shè)計. - 11 - 3.2.4.1 數(shù)碼管的顯示原理. - 13 - 3.2.4.2數(shù)碼管的連接 . - 14 - 3.2.5蜂鳴器
9、電路設(shè)計 . - 14 - 3.3 數(shù)字鐘系統(tǒng)的軟件設(shè)計.- 16 - 3.3.1 初始化參數(shù)設(shè)置. - 17 3.3.2 時鐘計時程序. - 17 - 3.3.3 按鍵處理程序. - 17 - 3.3.3.1 時鐘調(diào)時程序. - 17 - 3.3.3.2 鬧鐘調(diào)時程序. - 17 - 3.3.4 數(shù)碼管顯示程序. - 17 - 3.3.4.1 時鐘當(dāng)前值顯示程序. - 17 - 3.3.4.2 鬧鐘調(diào)時顯示程序. - 17 - 第四章 系統(tǒng)實現(xiàn)與分析 . - 20 - 4.1 系統(tǒng)總體電路原理圖的設(shè)計 . - 20 - 4.2 系統(tǒng)整體軟件設(shè)計 . - 21 第五章 總結(jié)與展望 . - 26
10、 - 5.1 工作總結(jié). - 26 - 5.2 技術(shù)展望. - 27 - 參考文獻(xiàn) . 第一章 緒 論1.1 課題研究的背景近年來隨著科技的發(fā)展,任何設(shè)備和產(chǎn)品的自動化、數(shù)字化和智能化都離不開單片機(jī),單片機(jī)已成為人類生活中不可或缺的助手。在實時檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個核心部件來使用,還要根據(jù)具體的硬件結(jié)構(gòu),以及針對具體的應(yīng)用對象的軟件結(jié)合,加以完善。單片機(jī)的應(yīng)用的重要意義在于,它從根本上改變了傳統(tǒng)意義設(shè)計理念和設(shè)計方法。數(shù)字鐘已經(jīng)成為人們?nèi)粘I钪胁豢扇鄙俚纳钣闷?,廣泛的應(yīng)用于各種場所。給我們生活、學(xué)習(xí)、工作、娛樂帶來了極大的方便。盡管目前市場上已有現(xiàn)成的數(shù)字鐘
11、集成電路芯片出售,價格便宜、使用也方便,但鑒于單片機(jī)的定時功能也可以完成數(shù)字鐘的電路設(shè)計,因此進(jìn)行數(shù)字鐘的設(shè)計是必要的。1.2課題研究的內(nèi)容本次設(shè)計的多功能數(shù)字鐘就是應(yīng)用單片機(jī)的計時功能為設(shè)計核心,采用定時器中斷提供準(zhǔn)確的計時,由鍵盤調(diào)整數(shù)字鐘的功能,并利用軟件編程通過數(shù)碼管把時間數(shù)字顯示出來,通過蜂鳴器提醒時間。本文內(nèi)容結(jié)構(gòu)安排如下:第一章主要介紹本文的研究背景,及本文的主要研究內(nèi)容。 第二章是對KEIL集成開發(fā)環(huán)境的應(yīng)用的介紹,包括AT89C51單片機(jī)概述,KEIL集成開發(fā)環(huán)境簡介及KEIL集成開發(fā)環(huán)境的基本仿真流程。 第三章主要介紹數(shù)字時鐘的原理與設(shè)計,分別介紹了數(shù)字鐘系統(tǒng)的總體方案設(shè)計
12、,數(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.1 AT89C51單片機(jī)概述 單片機(jī)是計算機(jī)、自動控制和大規(guī)模集成電路技術(shù)相結(jié)合的產(chǎn)物,融計算機(jī)結(jié)構(gòu)和控制功能于一體,集成在一個芯片上的計算機(jī),全稱單片微型計算機(jī)。 AT89C51是8位單片機(jī)中一個最基本、最典型的芯片型號,它主要由中央處理器CPU、內(nèi)部數(shù)據(jù)存儲器、內(nèi)部程序存儲器、定時器/計數(shù)器、并行I/O口、串行口
13、、中斷控制電路、時鐘電路、位處理器、內(nèi)部總線等組成。2.2 KEIL集成開發(fā)環(huán)境的應(yīng)用與操作 2.2.1KEIL集成開發(fā)環(huán)境簡介 Keil C51是Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。 Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。在Keil中使用C語言編程,在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢。2.2.2 KEIL集成開發(fā)環(huán)境的基本仿真流程1.新建與保存源程序第一步:雙擊KEIL uVision3的桌面快捷方式,啟動KEIL集成開發(fā)
14、軟件。第二步:新建文本編輯界面或加入原有的程序文件。選擇“File(文件)”“New”命令或菜單欄的“新建文本”命令,即可在項目界面的右側(cè)打開一個新的文本編輯界面,默認(rèn)文件名為“Text1”。第三步:在“Text1”中輸入C語言源程序。第四步:保存源程序。保存文件時必須加上文件的擴(kuò)展名并選擇路徑和文件名進(jìn)行保存,C語言程序文件的擴(kuò)展名為“.C”。2.建立新工程第五步:新建KEIL工程。選擇“Project(工程)” “New Project(新建工程)”命令,將出現(xiàn)保存對話框。在保存工程對話框中輸入工程文件名,工程名稱不用輸入擴(kuò)展名。輸入名稱后保存,將出現(xiàn)“Select Device for
15、Target ”對話框。第六步:選擇CPU型號。在對話框中選擇“公司(Atmel)” “CPU型號”,單擊“確定”按鈕返回主界面。3.加入源程序到工程中1 總體方案設(shè)計 針對本課題的設(shè)計任務(wù),進(jìn)行分析得到:本次設(shè)計以單片機(jī)芯片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ù)位電路數(shù)碼管顯示電路蜂鳴器電路按鍵選擇電路AT89C512硬件電路
16、設(shè)計2.1復(fù)位電路設(shè)計 單片機(jī)在上電以后內(nèi)部的電路處于一種隨機(jī)狀態(tài),這時如果開始工作則會出現(xiàn)混亂。對單片機(jī)而言,復(fù)位也就是在做準(zhǔn)備工作,是使單片機(jī)回到初始化狀態(tài)的一種操作。單片機(jī)系統(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的晶振組成,并配合單片機(jī)定時器0實現(xiàn)準(zhǔn)確計時。2.2按鍵選擇電路 按鍵選擇電路主要通過按鍵及開關(guān)實現(xiàn)隨時輸入定時(鬧鐘)
17、時間和隨時對當(dāng)前時間進(jìn)行調(diào)整。本設(shè)計選擇1個單刀單擲開關(guān)為鬧鐘時間調(diào)整開關(guān),4個獨立式鍵盤,分別為:秒鐘調(diào)整按鍵、分鐘調(diào)整按鍵、時鐘調(diào)整按鍵及時鐘運行按鍵。按鍵選擇電路如下圖所示。XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/R
18、D17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51SW1SW-SPST其中,秒鐘調(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。
19、鍵盤的硬件電路設(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(Light Emitting Diode)組成的。因其驅(qū)動電壓小、功耗低、壽命長和可靠性高等優(yōu)點廣泛顯示電路中。2.2.1數(shù)碼管的顯示原理七段數(shù)碼管顯示就是將七個發(fā)光二極管LED(加小數(shù)點為八個)按一
20、定的方式排列起來,七段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ù)字七段共陰極段碼八段共陰極段碼八段共陰
21、極倒置段碼03FHBFHBFH106H86HB0H25BHDBHDBH34FHCFHF9H466HE6HF4H56DHEDHEDH67DHFDHEFH707H87HB8H87FHFFHFFH96FHEFHFDH 本設(shè)計需設(shè)置6個數(shù)碼管,其中時個位與倒置的分十位結(jié)合顯示數(shù)字及“:”,分個位與秒十位結(jié)合顯示數(shù)字及“:”。2.2.2數(shù)碼管連接 在使用中,為了給發(fā)光二極管加驅(qū)動電壓,它們應(yīng)有一個公共引腳,公共引腳共有共陰極和共陽極兩種連接方法,如圖下圖所示。 (a)共陽極接法 (b) 共陰極接法 其中共陰極接法把發(fā)光二極管的陰極連在一起構(gòu)成陰極公共引腳,使用時陰極公共引腳接地,這樣陽極引腳上加高電平的
22、發(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í)、生活帶來方便。將蜂鳴器
23、一端與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#define uc
24、har unsigned char#define uint unsigned intuchar code table1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code table2=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;uchar code table3=0xbf,0xb0,0xdb,0xf9,0xf4,0xed,0xef,0xb8,0xff,0xfd;uchar dis6 =0,0,0,0,0,0; uchar shihao, second,minite,h
25、our,bsel;uchar tsecond=0; uchar tminite=0; uchar thour=0; uint i,j,m,n;sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12; sbit P1_3=P13;sbit P1_4=P14;sbit beep=P36;void display(); void ndisplay(); void tiaoshi(); void ntiaoshi();定時器0服務(wù)程序毫秒計數(shù)10ms定時器計數(shù)+1毫秒計數(shù)到100次=1s?重裝定時常數(shù),秒計數(shù)+1秒計數(shù)=60s?秒計數(shù)=0,分計數(shù)+1分計數(shù)=60min?分計
26、數(shù)=0,時計數(shù)+1時計數(shù)=0中斷返回時計數(shù)=24h?NY時鐘計時程序流程圖本程序利用定時器中斷實現(xiàn)數(shù)字鐘的時鐘計時。1.時鐘計時程序如下:程序分析一次10ms定時結(jié)束,增加一個計數(shù)變量shihao(0100);當(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.初始化(1) TMOD:定時器T0方式1,TMOD=0x01。(2) 計算初值:fosc=12MHZ,機(jī)器周期為1us。 一次定時時間=10ms,T0定時10ms=
27、10ms/1us=10000,即 TH0=(65536-10000)/256; TH1=(65536-10000)%256;(3) 中斷方式:允許定時器T0中斷。EA=1;ET0=1;具體程序如下:void timer0(void) interrupt 1 using 1 TH0=(65536-10000)/256; /定時時間為10ms/次 TL0=(65536-10000)%256; shihao+; if(shihao100) shihao=0;/定時=1s second+; if(second=60) second=0; /定時=1分鐘minite+;if(minite=60) min
28、ite=0; /定時=1小時 hour+; if(hour=24) hour=0; 2.按鍵處理程序如下:時鐘程序入口開機(jī)初始化,清零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是否按下;若分鐘
29、調(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 ); void tiaoshi() while(1) if(P1_
30、0=0) delay(100,100); if(P1_0=0) second+; if(second=60) second=0;while (P1_0=0 ); else if(P1_1=0) delay(100,100); if(P1_1=0) minite+; if(minite=60) minite=0;while (P1_1=1 ); else if(P1_2=0) delay(100,100);if(P1_2=0) hour+; if(hour=24) hour=0;while (P1_2=0); 鬧鐘程序入口開機(jī)初始化,清零T0中斷初始化,送顯示數(shù)據(jù)00:00:00秒調(diào)整鍵按下了嗎
31、?分調(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皆沒按下,返回主程序。uchar tsecond
32、=0;uchar tminite=0;uchar thour=0;while(1) if(P1_4=0) delay(100,100); if(P1_4=0) ndisplay(); ntiaoshi(); void ntiaoshi() while(1) if(P1_0=0) delay(100,100); if(P1_0=0) tsecond+; if(tsecond=60) tsecond=0;while (P1_0=0 ); else if(P1_1=0) delay(100,100); if(P1_1=0) tminite+;if(tminite=60) tminite=0;whil
33、e (P1_1=1 ); else if(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分鐘。uchar code table1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code table2=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
34、0x87,0xff,0xef;uchar code table3=0xbf,0xb0,0xdb,0xf9,0xf4,0xed,0xef,0xb8,0xff,0xfd;uchar dis6 =0,0,0,0,0,0;void display() dis0=second%10; dis1=second/10; dis2=minite%10; dis3=minite/10; dis4=hour%10; dis5=hour/10;P3=bsel; bsel=0xfe; P2= table1dis0;bsel=(bsel1)|1;delay(10,100);P2=0x00;P2=table3dis1;b
35、sel=(bsel1)|1;delay(10,100);P2=0x00;P2=table2dis2;bsel=(bsel1)|1;delay(10,100);P2=0x00;P2=table3dis3;bsel=(bsel1)|1;delay(10,100);P2=0x00;P2=table2dis4;bsel=(bsel1)|1;delay(10,100);P2=0x00;P2=table1dis5;bsel=(bsel1)|1;delay(10,100);P2=0x00;if(hour=thour&minite=tminite)beep=0;else beep=1;delay(500,10
36、00);P3=0xff;delay(500,1000);2.本程序在鬧鐘調(diào)時開關(guān)P1.4閉合的前提下實現(xiàn)鬧鐘調(diào)時的顯示。void ndisplay() dis0=tsecond%10; dis1=tsecond/10; dis2=tminite%10; dis3=tminite/10; dis4=thour%10; dis5=thour/10; P3=bsel; bsel=0xfe;P2= table1dis0;bsel=(bsel1)|1;delay(10,100);P2=0x00;P2=table3dis1;bsel=(bsel1)|1;delay(10,100);P2=0x00;P2=t
37、able2dis2;bsel=(bsel1)|1;delay(10,100);P2=0x00;P2=table3dis3;bsel=(bsel1)|1;delay(10,100);P2=0x00;P2=table2dis4;bsel=(bsel1)|1;delay(10,100);P2=0x00;P2=table1dis5;bsel=(bsel1)|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)整按
38、鍵實現(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#define uchar unsigned char#define uint unsigned intuchar code table1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/顯示09數(shù)字uchar code table2=0xbf,0x86,0xdb,0xcf,0xe6,0xed
39、,0xfd,0x87,0xff,0xef;/顯示09數(shù)字及小數(shù)點uchar code table3=0xbf,0xb0,0xdb,0xf9,0xf4,0xed,0xef,0xb8,0xff,0xfd;/數(shù)碼管倒置后顯示小數(shù)點及正立的數(shù)字uchar dis6 =0,0,0,0,0,0;/對各數(shù)碼管顯示的數(shù)初始化uchar shihao, second,minite,hour,bsel;uchar tsecond=0;uchar tminite=0;uchar thour=0;uint i,j,m,n;sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12; sbit
40、P1_3=P13;sbit P1_4=P14;sbit beep=P36;void display();void ndisplay();void tiaoshi();void ntiaoshi();delay(m,n) for(i=m;i0;i-) for(j=n;j0;j-);/可調(diào)延時程序void main(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
41、=0) ndisplay(); ntiaoshi(); else 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 ); void timer0(void) interrupt 1 using 1/T0中斷服務(wù)程序 TH0=(65536-10000)/256;/定時時間10ms/次 TL0=(65536-10000)%256; shihao+; if(shihao100) shihao=0; second+; if(second=60) second=0;minite+;if(minite=60) minite=0; hour+; if(hour=24) hour=0; void display() dis0=second%10;/秒個位 dis1=second/10;/秒十位 dis2=minite%10;/分個位 dis3=minite/10;/分十位 dis4=hour%10;/時個位 dis5=hour/10;/時十位P3=bsel; bse
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)醫(yī)學(xué)課題申報書范文
- 寫勞務(wù)合同合同范本
- 議政調(diào)研課題申報書
- 課題申報書課題名稱字體
- 市課題申報書
- 2024用電信息采集終端
- 廚房用油供貨合同范本
- 壓濾機(jī)合同范本
- 合同范本文書
- 勞動合同范例錯
- 行人過街調(diào)查表
- 弟子規(guī)全文及解釋精簡打印版
- 《畜牧獸醫(yī)行政法規(guī)》教案
- 《祖父的園子》PPT課件【精美版】
- 新概念英語第一冊期末測試試卷附答案
- GB/T 1689-1998硫化橡膠耐磨性能的測定(用阿克隆磨耗機(jī))
- FZ/T 74001-2020紡織品針織運動護(hù)具
- 強(qiáng)制執(zhí)行申請書表格
- 二年級看圖寫話春天來了(課堂PPT)
- 房建市政項目全過程工程咨詢招標(biāo)文件范本
- 2023年南充臨江東方發(fā)展實業(yè)集團(tuán)有限公司招聘筆試題庫及答案解析
評論
0/150
提交評論