![基于單片機(jī)89C52定時(shí)鬧鐘的課程設(shè)計(jì)_第1頁(yè)](http://file4.renrendoc.com/view/bec90919425bc73c16a789bbcdcab7c8/bec90919425bc73c16a789bbcdcab7c81.gif)
![基于單片機(jī)89C52定時(shí)鬧鐘的課程設(shè)計(jì)_第2頁(yè)](http://file4.renrendoc.com/view/bec90919425bc73c16a789bbcdcab7c8/bec90919425bc73c16a789bbcdcab7c82.gif)
![基于單片機(jī)89C52定時(shí)鬧鐘的課程設(shè)計(jì)_第3頁(yè)](http://file4.renrendoc.com/view/bec90919425bc73c16a789bbcdcab7c8/bec90919425bc73c16a789bbcdcab7c83.gif)
![基于單片機(jī)89C52定時(shí)鬧鐘的課程設(shè)計(jì)_第4頁(yè)](http://file4.renrendoc.com/view/bec90919425bc73c16a789bbcdcab7c8/bec90919425bc73c16a789bbcdcab7c84.gif)
![基于單片機(jī)89C52定時(shí)鬧鐘的課程設(shè)計(jì)_第5頁(yè)](http://file4.renrendoc.com/view/bec90919425bc73c16a789bbcdcab7c8/bec90919425bc73c16a789bbcdcab7c85.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
前言20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展。在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會(huì)的各個(gè)領(lǐng)域,有力地推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高。同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來(lái)越快。時(shí)間對(duì)人們來(lái)說(shuō)總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時(shí)間。忘記了要做的事情,當(dāng)事情不是很重要的時(shí)候,這種遺忘無(wú)傷大雅。但是,一旦重要事情,一時(shí)的耽誤可能釀成大禍。例如,許多火災(zāi)都是由于人們一時(shí)忘記了關(guān)閉煤氣或是忘記充電時(shí)間。所以有必要制作一個(gè)定時(shí)系統(tǒng)。隨時(shí)提醒這些容易忘記時(shí)間的人。而鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、定時(shí)啟閉電路、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備,甚至各種定時(shí)電氣的自動(dòng)啟用等等。所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。隨著生活水平的提高,人們?cè)絹?lái)越追求人性化的事物。傳統(tǒng)的時(shí)鐘已不能滿足人們的需求。而現(xiàn)代的時(shí)鐘不僅需要模擬電路技術(shù)和數(shù)字電路技術(shù)而且更需要單片機(jī)技術(shù),增加數(shù)字鐘的功能。利用軟件編程盡量做到硬件電路簡(jiǎn)單穩(wěn)定,減小電磁干擾和其他環(huán)境干擾,減小因元器件精度不夠引起的誤差,但是數(shù)字鐘還是可以改進(jìn)和提高如選用更精密的元器件。但與機(jī)械式時(shí)鐘相比已經(jīng)具有更高的準(zhǔn)確性和直觀性,且無(wú)機(jī)械裝置,具有更長(zhǎng)的使用壽命,因此得到了廣泛的使用。數(shù)字鐘通過(guò)數(shù)字電路實(shí)現(xiàn)時(shí)、分、秒。數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭、車站、碼頭辦公室等公共場(chǎng)所成為人們?nèi)粘I钪胁豢缮俚谋匦杵?。由于?shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超過(guò)老式鐘表。多功能數(shù)字鐘的應(yīng)用非常普遍。由單片機(jī)作為數(shù)字鐘的核心控制器,通過(guò)它的時(shí)鐘信號(hào)進(jìn)行實(shí)現(xiàn)計(jì)時(shí)功能,將其時(shí)間數(shù)據(jù)經(jīng)單片機(jī)輸出,利用顯示器顯示出來(lái)。通過(guò)鍵盤可以進(jìn)行校時(shí)、定時(shí)等功能。輸出設(shè)備顯示器可以用液晶顯示技術(shù)和數(shù)碼管來(lái)顯示技術(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)。目錄前言 1摘要 I第1章課題的背景 11.1課題的來(lái)源 11.2課題研究的目的和意義 11.3應(yīng)解決的主要問(wèn)題及達(dá)到的技術(shù)要求 2第2章方案的選擇和論證 32.1單片機(jī)型號(hào)的選擇 32.2按鍵的選擇 32.3顯示器的選擇 32.4計(jì)時(shí)部分的選擇 32.5發(fā)音部分的設(shè)計(jì) 42.6顯示器驅(qū)動(dòng)電路 42.7電源的選擇 4第3章數(shù)字電子鐘的設(shè)計(jì)原理和方法 53.1設(shè)計(jì)原理 53.2硬件電路的設(shè)計(jì) 53.2.1STC89C52單片機(jī)簡(jiǎn)介 53.2.2鍵盤電路的設(shè)計(jì) 63.2.3時(shí)鐘電路 63.2.4蜂鳴器驅(qū)動(dòng)電路 63.2.5繼電器電路 73.2.6LCD1602電路 73.2.7復(fù)位電路 83.3軟件部分的設(shè)計(jì) 83.3.1主程序部分的設(shè)計(jì) 8總結(jié) 11附錄 12PAGEPAGE11.3應(yīng)解決的主要問(wèn)題及達(dá)到的技術(shù)要求使用STC89C52單片機(jī)結(jié)合字符型LCD顯示器設(shè)計(jì)一個(gè)簡(jiǎn)易的定時(shí)鬧鐘LCD時(shí)鐘,若LCD選擇有背光顯示的模塊,在夜晚或黑暗的場(chǎng)合中也可使用。定時(shí)鬧鐘的基本功能如下:同時(shí)設(shè)置一個(gè)夜晚的全芯片休眠功能,當(dāng)定時(shí)時(shí)間到后,激活單片機(jī)同時(shí)啟動(dòng)報(bào)警,以起到一個(gè)節(jié)能的作用。顯示格式為“時(shí)時(shí):分分”。由LED閃動(dòng)來(lái)做秒計(jì)數(shù)表示。一旦時(shí)間到則發(fā)出聲響,同時(shí)繼電器啟動(dòng),可以擴(kuò)充控制家電開啟和關(guān)閉。程序執(zhí)行后工作指示燈LED閃動(dòng),表示程序開始執(zhí)行,LCD顯示“00:00”,按下操作鍵K1~K4動(dòng)作如下:K1—設(shè)置現(xiàn)在的時(shí)間。K2—顯示鬧鐘設(shè)置的時(shí)間。K3—設(shè)置鬧鈴的時(shí)間。K4—鬧鈴ON/OFF的狀態(tài)設(shè)置,設(shè)置為ON時(shí)連續(xù)三次發(fā)出“嘩”的一聲,設(shè)置為OFF發(fā)出“嘩”的一聲。設(shè)置當(dāng)前時(shí)間或鬧鈴時(shí)間如下。K1—時(shí)調(diào)整。K2—分調(diào)整。K3—設(shè)置完成。K4—鬧鈴時(shí)間到時(shí),發(fā)出一陣聲響,按下本鍵可以停止聲響。
第2章方案的選擇和論證2.1單片機(jī)型號(hào)的選擇通過(guò)對(duì)多種單片機(jī)性能的分析,最終認(rèn)為STC89C52是最理想的電子時(shí)鐘開發(fā)芯片。STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。2.2按鍵的選擇方案一:4×4矩陣式鍵盤。如果選擇此方案,那么在修改時(shí)鐘或設(shè)置鬧鈴時(shí)間時(shí)就可以直接從鍵盤輸入,方便、快捷,但程序較為復(fù)雜。
方案二:獨(dú)立式按鍵。如果設(shè)置過(guò)多按鍵,將會(huì)占用較多I/O口,而且會(huì)給布線帶來(lái)不便,因此,此方案適用于按鍵較少的情況。如果選擇此方案,由于按鍵較少,在修改時(shí)間或設(shè)置鬧鈴時(shí)間時(shí)就不能直接輸入,只能通過(guò)加或減完成,稍為麻煩一些,但其程序簡(jiǎn)單。
由于并不需要經(jīng)常修改時(shí)間和設(shè)置鬧鈴時(shí)間,而且方案二的程序簡(jiǎn)單,按鍵少、成本低,因此,選擇方案二。2.3顯示器的選擇方案一:液晶顯示器。如果選擇此方案,將會(huì)降低系統(tǒng)的功耗,這樣就可以用電池供電,便于攜帶。但液晶顯示器的驅(qū)動(dòng)電路復(fù)雜,使用起來(lái)有一定的難度。
方案二:用數(shù)碼管作為顯示器。數(shù)碼管的驅(qū)動(dòng)電路簡(jiǎn)單,使用方便,其缺點(diǎn)是功耗較大。 由于液晶顯示器功耗低,顯示的內(nèi)容靈活,因此選擇方案一。2.4計(jì)時(shí)部分的選擇如果使用時(shí)鐘芯片,系統(tǒng)就不怕掉電且時(shí)間精確。但這種芯片比較貴,況且,設(shè)計(jì)本系統(tǒng)主要是為了學(xué)習(xí)單片機(jī)程序的編寫和調(diào)試以及設(shè)計(jì)硬件電路的一些方法,因此采用軟件的方法來(lái)計(jì)時(shí)而沒有采用價(jià)格較高的時(shí)鐘芯片。2.5發(fā)音部分的設(shè)計(jì)通過(guò)三極管放大后驅(qū)動(dòng)蜂鳴器工作。2.6顯示器驅(qū)動(dòng)電路采用LCD1602顯示所需顯示的字符,需要用電位器調(diào)節(jié)背光。2.7電源的選擇如果是用電池供電,就比較方便攜帶,但需要經(jīng)常更換電池。況且,本系統(tǒng)的體積較大,即使使用電池供電也不能隨身攜帶,因此,用電池供電不大合適,所以用5V外部穩(wěn)壓電源來(lái)供電。
第3章數(shù)字電子鐘的設(shè)計(jì)原理和方法3.1設(shè)計(jì)原理系統(tǒng)原理圖STC89C52STC89C52LCD1602晶振繼電器LCD1602晶振繼電器蜂鳴器蜂鳴器按鍵按鍵圖3-1系統(tǒng)原理圖3.2硬件電路的設(shè)計(jì)3.2.1STC89C52單片機(jī)簡(jiǎn)介STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,內(nèi)置4KBEEPROM,MAX810復(fù)位電路,3個(gè)16位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。3.2.2鍵盤電路的設(shè)計(jì)鍵盤采用4個(gè)獨(dú)立按鍵實(shí)現(xiàn)對(duì)時(shí)鐘和鬧鐘的設(shè)定及修改。3.2.3時(shí)鐘電路單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本系統(tǒng)中STC89C52單片機(jī)采用內(nèi)部時(shí)鐘方式。最常用的內(nèi)部時(shí)鐘方式是采用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz~12MHz之間。電容值無(wú)嚴(yán)格要求,但電容取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小和振蕩電路起振速度有少許影響,一般可在20pF~100pF之間取值3.2.4蜂鳴器驅(qū)動(dòng)電路發(fā)音部分是通過(guò)三極管放大驅(qū)動(dòng)蜂鳴器工作,當(dāng)鬧鐘開啟時(shí)響三聲,鬧鐘關(guān)閉時(shí)響一聲。圖3-6蜂鳴器驅(qū)動(dòng)電路3.2.5繼電器電路當(dāng)單片機(jī)的引腳輸出高電平時(shí),三極管截止,繼電器線圈兩端沒有電位差,繼電器銜鐵釋放,同時(shí)狀態(tài)指示的發(fā)光二極管也熄滅,繼電器的常開觸點(diǎn)釋放,相當(dāng)于開關(guān)斷開。在三極管截止的瞬間,由于線圈中的電流不能突變?yōu)榱悖^電器線圈兩端會(huì)產(chǎn)生一個(gè)較高電壓的感應(yīng)電動(dòng)勢(shì),線圈產(chǎn)生的感應(yīng)電動(dòng)勢(shì)則可以通過(guò)二極管IN4148釋放,從而保護(hù)了三極管免被擊穿,也消除了感應(yīng)電動(dòng)勢(shì)對(duì)其他電路的干擾,這就是二極管的保護(hù)作用。3.2.6LCD1602電路3.2.7復(fù)位電路復(fù)位電路工作原理如上圖所示,VCC上電時(shí),電容充電,在電阻上出現(xiàn)電壓,使得單片機(jī)復(fù)位;幾個(gè)毫秒后,電容充滿,電阻上電流降為0,電壓也為0,使得單片機(jī)進(jìn)入工作狀態(tài)。工作期間,按下按鍵,電容放電。松手,電容又充電,在電阻上出現(xiàn)電壓,使得單片機(jī)復(fù)位。 總電路圖3.3軟件部分的設(shè)計(jì)3.3.1主程序部分的設(shè)計(jì)主程序流程圖如下圖3-7。初始化設(shè)置開始與鬧鐘時(shí)間相同顯示時(shí)間蜂鳴器響,繼電器開啟初始化設(shè)置開始與鬧鐘時(shí)間相同顯示時(shí)間蜂鳴器響,繼電器開啟否否是圖3-7主程序流程圖 4個(gè)按鍵每個(gè)都具有兩個(gè)功能,以最終實(shí)現(xiàn)菜單化的輸入功能。采用通過(guò)逐層嵌套的循環(huán)掃描,實(shí)現(xiàn)嵌套式的鍵盤輸入。當(dāng)?shù)竭_(dá)所設(shè)定的時(shí)間之后,蜂鳴器發(fā)出聲音,并且繼電器啟動(dòng),以此控制連接的外圍器件。 要達(dá)到按鍵具有多個(gè)功能,需在程序內(nèi)設(shè)置變量,當(dāng)按鍵按下與變量的值同時(shí)滿足實(shí)現(xiàn)一個(gè)功能,不同時(shí)滿足時(shí)實(shí)現(xiàn)另一個(gè)功能。
第4章實(shí)驗(yàn)結(jié)果此電子鬧鐘設(shè)計(jì)是先利用Proteus仿真軟件進(jìn)行仿真,實(shí)現(xiàn)了課程設(shè)計(jì)要求實(shí)現(xiàn)的功能。然后在使用AltiumDesigner繪制原理圖和PCB,圖3-14運(yùn)行仿真圖實(shí)際電路運(yùn)行圖
總結(jié)通過(guò)自己的不懈努力,我完成了單片機(jī)課程設(shè)計(jì)上的任務(wù)要求。功能上達(dá)標(biāo):時(shí)鐘的顯示,調(diào)時(shí)功能、校時(shí)功能、鬧鈴功能、鬧鐘設(shè)功能。其精確度完全可以滿足日常生活顯示時(shí)間的需要;調(diào)時(shí)功能,方便快捷;校時(shí)功能保證了時(shí)鐘準(zhǔn)確和可靠性,通過(guò)繼電器可以擴(kuò)展多種外圍電路的可能。硬件設(shè)施合乎要求,軟件設(shè)計(jì)可以配合硬件實(shí)現(xiàn)要求的功能。可見技術(shù)在不斷進(jìn)步,機(jī)械式時(shí)鐘已經(jīng)被淘汰,取而代之的是具有高度準(zhǔn)確性和直觀性且無(wú)機(jī)械裝置,具有更長(zhǎng)的使用壽命等優(yōu)點(diǎn)的數(shù)字時(shí)鐘。數(shù)字時(shí)鐘更具人性化,更能提高人們的生活質(zhì)量,更受人們歡迎。
無(wú)可否認(rèn)機(jī)械時(shí)代已經(jīng)過(guò)去,電子時(shí)代已經(jīng)到來(lái)。做為新時(shí)代的我們,更應(yīng)該提高自身能力,適應(yīng)新時(shí)代的發(fā)展。知識(shí)來(lái)自實(shí)踐,多去生活中探詢所需要的。對(duì)于上述所提到的研究課題,我們應(yīng)盡量考慮到人的因素,增強(qiáng)時(shí)鐘的實(shí)用性和操作性,為使用者提供切實(shí)的方便,營(yíng)造一種舒適的生活氛圍。所以,在設(shè)計(jì)的時(shí)候,應(yīng)該從多方面、多角度去考慮問(wèn)題,而且應(yīng)該進(jìn)一步提高時(shí)鐘的質(zhì)量。另外,在本次設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)很多的問(wèn)題,雖然以前沒有做過(guò)這樣的設(shè)計(jì)但通過(guò)這次設(shè)計(jì)我學(xué)會(huì)了很多東西,單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過(guò)幾次程序,但我覺的寫好一個(gè)程序并不是一件簡(jiǎn)單的事,比如寫一個(gè)程序看其功能很少認(rèn)為編寫程序簡(jiǎn)單,但到編程的時(shí)候才發(fā)現(xiàn)一些細(xì)微的知識(shí)或低級(jí)錯(cuò)誤經(jīng)常犯做不到最后常常失敗,所以有些東西只有學(xué)精弄懂并且要細(xì)心才行,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。從這次的課程設(shè)計(jì)中,我們真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的練習(xí)的過(guò)程中才能提高,我想這就是我在這次課程設(shè)計(jì)中的最大收獲。
附錄相關(guān)的程序代碼:#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedchar#defineLCD1602_DBP0ucharcodetable[]="CurrentTime";ucharcodetable1[]="00:00:00";ucharkey1Flag=0;ucharkey2Flag=0;ucharkey3Flag=0;ucharkey4Flag=0;uchartemp=0;ucharsec=0;ucharmin=0;ucharhour=0;ucharclkHour=0;ucharclkMin=0;ucharclkFlag=0;ucharbeepNum=0;ucharrelayFlag=1;sbitLCD1602_RS=P2^0; //數(shù)據(jù)/命令選擇端(電平H/L)sbitLCD1602_RW=P2^1; //數(shù)據(jù)/命令選擇端(電平H/L)sbitLCD1602_E=P2^2; //使能信號(hào)sbitKey1=P1^0;sbitKey2=P1^1;sbitKey3=P1^2;sbitKey4=P1^3;sbitLed=P2^4;sbitSpeaker=P2^5;sbitRelay=P2^3;voidDelay1ms() //@12.000MHz{ unsignedchari,j; i=12; j=169; do { while(--j); }while(--i);}voidDelay20ms() //@12.000MHz{ unsignedchari,j,k; _nop_(); _nop_(); i=1; j=234; k=113; do { do { while(--k); }while(--j); }while(--i);}voidBeep(){ Speaker=0; Delay20ms(); Speaker=1;}voidLcdWaitReady() { unsignedcharsta; LCD1602_DB=0xFF; LCD1602_RS=0; LCD1602_RW=1; do { LCD1602_E=1; sta=LCD1602_DB; LCD1602_E=0; }while(sta&0x80);}voidLcdWriteCmd(unsignedcharcmd) { LcdWaitReady(); LCD1602_RS=0; LCD1602_RW=0; LCD1602_DB=cmd; LCD1602_E=1; LCD1602_E=0;}voidLcdWriteDat(unsignedchardat){ LcdWaitReady(); LCD1602_RS=1; LCD1602_RW=0; LCD1602_DB=dat; LCD1602_E=1; LCD1602_E=0;}voidLcdSetCursor(unsignedcharx,unsignedchary){ unsignedcharaddr; if(y==0) addr=0x00+x; else addr=0x40+x; LcdWriteCmd(addr|0x80);}voidLcdShowStr(unsignedcharx,unsignedchary,unsignedchar*str){ LcdSetCursor(x,y); while(*str!='\0') { LcdWriteDat(*str++); }}voidInitLcd1602(){ LcdWriteCmd(0x38); LcdWriteCmd(0x0C); LcdWriteCmd(0x06); LcdWriteCmd(0x01);}voidWriteAddress(ucharx){ LcdWriteCmd(0x80+x);}voidDisplayMinTens(){ //顯示分十位 WriteAddress(0x49); LcdWriteDat((min/10)+'0'); Delay1ms();}voidDisplayMinUnits(){ //顯示分個(gè)位 WriteAddress(0x4A); LcdWriteDat((min%10)+'0'); Delay1ms(); }voidDisplayHourTens(){ //顯示時(shí)十位 WriteAddress(0x46); LcdWriteDat((hour/10)+'0'); Delay1ms();}voidDisplayHourUnits(){ //顯示時(shí)個(gè)位 WriteAddress(0x47); LcdWriteDat((hour%10)+'0'); Delay1ms(); }voidDisplayClkMinTens(){ //顯示時(shí)鐘分十位 WriteAddress(0x49); LcdWriteDat((clkMin/10)+'0'); Delay1ms();}voidDisplayClkMinUnits(){ //顯示時(shí)鐘分個(gè)位 WriteAddress(0x4A); LcdWriteDat((clkMin%10)+'0'); Delay1ms(); }voidDisplayClkHourTens(){ //顯示時(shí)鐘時(shí)十位 WriteAddress(0x46); LcdWriteDat((clkHour/10)+'0'); Delay1ms();}voidDisplayClkHourUnits(){ //顯示時(shí)鐘時(shí)個(gè)位 WriteAddress(0x47); LcdWriteDat((clkHour%10)+'0'); Delay1ms(); }voidDisplayClkSecTens(){ //顯示秒十位 WriteAddress(0x4C); LcdWriteDat((sec/10)+'0'); Delay1ms(); }voidDisplayClkSecUnits(){ //顯示秒個(gè)位 WriteAddress(0x4D); LcdWriteDat((sec%10)+'0'); Delay1ms(); }voidScanKey4(){ if((Key4==0)&(clkFlag==1)){ Delay20ms(); if((Key4==0)&(clkFlag==1)){ clkFlag=0; beepNum=0; key4Flag=0; } }}voidInitTimer0(){ //初始化定時(shí)器0 TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; }voidmain(){ InitLcd1602(); LcdShowStr(0,0,table); LcdShowStr(6,1,table1); InitTimer0(); while(1){ if(sec==60){ sec=0; min++; } if(min==60){ min=0; hour++; } if(hour==24){ hour=0; } LcdShowStr(0,0,table); DisplayHourTens(); DisplayHourUnits(); LcdShowStr(8,1,":"); 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(); } } }//==============================================================
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 歷史街區(qū)石材裝修配送協(xié)議
- 親子酒店裝修項(xiàng)目合同
- 校園裝修合同樣本-@-1
- 鎮(zhèn)江彩鋼瓦防腐施工方案
- 木材加工配送合同模板
- 化工原料特種運(yùn)輸協(xié)議
- 2025年度網(wǎng)絡(luò)安全技術(shù)顧問(wèn)聘用協(xié)議
- 國(guó)際旅游業(yè)務(wù)居間協(xié)議
- 魚塘合作管理方案
- 象山消防通風(fēng)排煙施工方案
- 徐金桂行政法與行政訴訟法新講義
- 瀝青拌合設(shè)備結(jié)構(gòu)認(rèn)知
- GB/T 13234-2018用能單位節(jié)能量計(jì)算方法
- (課件)肝性腦病
- 北師大版五年級(jí)上冊(cè)數(shù)學(xué)教學(xué)課件第5課時(shí) 人民幣兌換
- 工程回訪記錄單
- 住房公積金投訴申請(qǐng)書
- 高考物理二輪專題課件:“配速法”解決擺線問(wèn)題
- 檢驗(yàn)科生物安全風(fēng)險(xiǎn)評(píng)估報(bào)告
- 京頤得移動(dòng)門診產(chǎn)品輸液
- 如何做一名合格的帶教老師PPT精選文檔
評(píng)論
0/150
提交評(píng)論