可編程作息時(shí)間控制器設(shè)計(jì)31_第1頁
可編程作息時(shí)間控制器設(shè)計(jì)31_第2頁
可編程作息時(shí)間控制器設(shè)計(jì)31_第3頁
可編程作息時(shí)間控制器設(shè)計(jì)31_第4頁
可編程作息時(shí)間控制器設(shè)計(jì)31_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、揚(yáng)州大學(xué)能源與動(dòng)力工程學(xué)院題目:可編程作息時(shí)間控制器設(shè)計(jì)課程:單片機(jī)原理及應(yīng)用課程設(shè)計(jì)專業(yè): 電氣工程及其自動(dòng)化班 級(jí):姓 名:學(xué) 號(hào):4 / 31第一部分單片機(jī)原理及應(yīng)用課程設(shè)計(jì)任務(wù)書一、課題名稱詳見單片機(jī)課程設(shè)計(jì)題目(一):主要是軟件仿真,利用 Proteus軟件進(jìn)行仿真設(shè)計(jì)并調(diào)試;單片機(jī)課程設(shè)計(jì)題目(二):主要是硬件設(shè)計(jì),利用單片機(jī)周立功實(shí)驗(yàn)箱進(jìn)行設(shè)計(jì)并調(diào)試。二、課程設(shè)計(jì)目的課程設(shè)計(jì)是課程教學(xué)中的一項(xiàng)重要內(nèi)容,是達(dá)到教學(xué)目標(biāo)的重要環(huán)節(jié),是綜合性較強(qiáng)的實(shí)踐教學(xué)環(huán)節(jié),它對(duì)幫助學(xué)生全面牢固地掌握課堂教學(xué)內(nèi)容、培養(yǎng)學(xué)生的實(shí)踐和實(shí)際動(dòng)手能力、提高學(xué)生全面素質(zhì)具有很重 要的意義。單片機(jī)原理及應(yīng)用是一

2、門理論性、實(shí)用性和實(shí)踐性都很強(qiáng)的課程,課程設(shè)計(jì)環(huán)節(jié)應(yīng)占有更加重要的地位。單片機(jī)原理及應(yīng)用課程設(shè)計(jì)的目的是讓學(xué)生在理論學(xué)習(xí)的基礎(chǔ)上,通過完成一個(gè)涉及MCS-51單片機(jī)多種資源應(yīng)用并具有綜合功能的小系統(tǒng)目標(biāo)板的設(shè)計(jì)與編程應(yīng)用,使學(xué)生不但能將課堂上學(xué)到的理論知識(shí)與實(shí)際應(yīng)用結(jié)合起來,而且能進(jìn)一步加深對(duì)電子電路、電子元器件等知識(shí)的認(rèn)識(shí)與理解,同時(shí)在軟件編程、排 錯(cuò)調(diào)試、相關(guān)軟件和儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。為今后能夠獨(dú)立進(jìn)行某些單片機(jī) 應(yīng)用系統(tǒng)的開發(fā)設(shè)計(jì)工作打下一定的基礎(chǔ)。通過單片機(jī)硬件和軟件設(shè)計(jì)、調(diào)試、整理資料等環(huán)節(jié)的培訓(xùn),使 學(xué)生初步掌握工程設(shè)計(jì)方法和組織實(shí)踐的基本技能,逐步熟悉

3、開展科學(xué)實(shí)踐的程序和方法。三、課程設(shè)計(jì)內(nèi)容設(shè)計(jì)以89C51單片機(jī)和外圍元器件構(gòu)成的單片機(jī)應(yīng)用系統(tǒng),并完成相應(yīng)的軟硬件調(diào)試。1. 系統(tǒng)方案設(shè)計(jì):綜合運(yùn)用單片機(jī)課程中所學(xué)到的理論知識(shí),學(xué)生根據(jù)所選課題的任務(wù)、要求和條件進(jìn)行總體方案的設(shè)計(jì)。2. 硬件電路設(shè)計(jì):對(duì)方案中以單片機(jī)為核心的電路進(jìn)行設(shè)計(jì)計(jì)算,包括元器件的選擇和電路參數(shù)的計(jì)算,并畫出總體電路圖。3. 軟件設(shè)計(jì):根據(jù)已設(shè)計(jì)出的軟件系統(tǒng)框圖,用匯編語言或C51編制出各功能模塊的子程序和整機(jī)軟件系統(tǒng)的主程序。4. 調(diào)試:在單片機(jī) EDA仿真軟件環(huán)境Proteus下進(jìn)行仿真設(shè)計(jì)并調(diào)試;或在單片機(jī)周立功實(shí)驗(yàn)箱上進(jìn) 行相關(guān)設(shè)計(jì)并調(diào)試。四、課程設(shè)計(jì)要求設(shè)計(jì)

4、一個(gè)以單片機(jī)為核心的可編程作息時(shí)間控制器:按照給定的時(shí)間模擬控制,實(shí)現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示),同時(shí)具備日期和時(shí)鐘顯示。五、進(jìn)度安排序號(hào)內(nèi)容天數(shù)1布置任務(wù),熟悉課題要求0.52總體方案確定,硬件電路設(shè)計(jì)1.53軟件編程1.54Proteus仿真,或在周立功實(shí)驗(yàn)箱上調(diào)試25總結(jié),撰寫課程設(shè)計(jì)報(bào)告1.5七、課程設(shè)計(jì)報(bào)告內(nèi)容:總結(jié)設(shè)計(jì)過程,寫出設(shè)計(jì)報(bào)告,設(shè)計(jì)報(bào)告具體內(nèi)容要求如下:1課程設(shè)計(jì)的目和設(shè)計(jì)的內(nèi)容。2 課程設(shè)計(jì)的要求。3 控制系統(tǒng)總框圖及系統(tǒng)工作原理。4 控制系統(tǒng)的硬件電路連接圖,電路的原理。5 軟件設(shè)計(jì)流程圖及其說明。6電路設(shè)計(jì),軟件編程、調(diào)試中遇到的問題及分析解決方法。7

5、實(shí)驗(yàn)結(jié)果及其分析。8體會(huì)。第二部分課 程 設(shè) 計(jì) 報(bào)1課題簡介 01.1課題目的 01.2課題要求 02可編程作息時(shí)間控制器方案設(shè)計(jì) 02.1系統(tǒng)總體介紹 02.2系統(tǒng)整體框圖 02.3系統(tǒng)工作原理 03可編程作息時(shí)間控制器硬件電路及芯片介紹 13.1 AT89C51 單片機(jī) 13.2 1602LCD液晶顯示器 23.3其他重要元件 33.4硬件電路設(shè)計(jì)圖 44可編程作息時(shí)間控制器軟件編程設(shè)計(jì) 44.1系統(tǒng)初始化 44.2系統(tǒng)時(shí)間校正 54.3 系統(tǒng)時(shí)間設(shè)定 64.4作息時(shí)間設(shè)定 64.5響鈴處理 84.6邏輯控制 94.7 1602LCD 液晶顯示 105實(shí)驗(yàn)與結(jié)果分析 105.1 實(shí)驗(yàn)的調(diào)

6、試 105.2實(shí)驗(yàn)的結(jié)果 115.3實(shí)驗(yàn)的問題 136小結(jié)與體會(huì) 140 / 311課題簡介1.1課題目的由單片機(jī)AT89C51芯片和LCD顯示器,輔以必要的的電路,構(gòu)成一個(gè)可編程作息時(shí)間控制器。電子鐘采 用采用單片機(jī)來完成丄CD顯示“時(shí)”,“分”,LED閃動(dòng)來做秒計(jì)數(shù),定時(shí)時(shí)間到能發(fā)出相應(yīng)的提示,從而能 夠?qū)崿F(xiàn)作息時(shí)間控制?,F(xiàn)在是自動(dòng)化高度發(fā)達(dá)的時(shí)代,特別是電子類產(chǎn)品都是靠內(nèi)部的控制電路來實(shí)現(xiàn)對(duì)產(chǎn) 品的控制,達(dá)到自動(dòng)運(yùn)行的目的,這就需要我們這里要做的設(shè)計(jì)中的電器元件及電路的支持。1.2課題要求(1)在keil uVision 和proteus上編寫軟件完成設(shè)計(jì)。(2) 以AT89C51單片機(jī)

7、為核心結(jié)合字符型LCD顯示器的可編程作息時(shí)間控制器。(3) 按照給定的時(shí)間模擬控制,實(shí)現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示),同時(shí)具備日期和時(shí) 鐘顯示。(4)上機(jī)調(diào)試程序。(5)寫出設(shè)計(jì)報(bào)告。2可編程作息時(shí)間控制器方案設(shè)計(jì)2.1系統(tǒng)總體介紹可編程作息時(shí)間控制器是由簡單的一路鬧鐘的基礎(chǔ)上增加至四路可調(diào)鬧鐘,從而實(shí)現(xiàn)依次執(zhí)行作息時(shí)間 的提醒任務(wù)。系統(tǒng)主要是由時(shí)間程序和鬧鐘程序所構(gòu)成,由顯示模塊、時(shí)鐘模塊以及鬧鐘模塊三大部分組成。其中時(shí)鐘運(yùn)算模塊要對(duì)時(shí)、分、秒的數(shù)值進(jìn)行操作,并且秒算到60時(shí),要自己清零并向分進(jìn) 1 ;分算到60時(shí),要自己清零并向時(shí)進(jìn) 1,時(shí)算到24時(shí),要清零,這樣,才能循環(huán)記時(shí)。

8、并在不同狀態(tài)下使得四個(gè)按鍵有 著不同的功能,從而實(shí)現(xiàn)系統(tǒng)時(shí)間的調(diào)整,同時(shí)可以在不同狀態(tài)下可以調(diào)整鬧鐘的時(shí)間。當(dāng)定時(shí)到達(dá)時(shí)LCD將顯示出現(xiàn)在的鬧鐘是哪一路,響鈴一分鐘,并可以通過按鍵提前結(jié)束鬧鐘,恢復(fù)到時(shí)間顯示狀態(tài)。2.2系統(tǒng)整體框圖LCD顯示r單片機(jī)按鍵AT89C511/JA廣r廣播LJ揚(yáng)聲器和燈閃2.3系統(tǒng)工作原理使用AT89C51單片機(jī)結(jié)合字符型 LCD顯示器設(shè)計(jì)一個(gè)簡易的可編程作息時(shí)間控制器,若LCD選擇有背光顯示的模塊,在夜晚或黑暗的場(chǎng)合中也可使用。程序執(zhí)行后工作指示燈LED閃動(dòng),表示程序開始執(zhí)行,同時(shí)顯示系統(tǒng)時(shí)間。作息時(shí)間控制器是由 4路可調(diào)鬧鐘組成,從而實(shí)現(xiàn)打鈴等功能。 當(dāng)四路鬧鐘

9、中的任一路到時(shí), 均會(huì)點(diǎn)亮燈、打鈴。其中操作鍵K1K4的功能分別為:設(shè)置限制的時(shí)間 /時(shí)的調(diào)整、顯示鬧鐘設(shè)置的時(shí)間 /分的調(diào)整、設(shè)置鬧鐘的時(shí)間 /設(shè)置完成、鬧鐘更換。3可編程作息時(shí)間控制器硬件電路及芯片介紹系統(tǒng)主要是由AT89C51單片機(jī)、1602LCD液晶顯示器以及其他重要元件組成,按鍵作為系統(tǒng)的控制輸入 端,可以進(jìn)行時(shí)間、鬧鐘等內(nèi)容的設(shè)定,并通過液晶顯示器顯示出時(shí)間等內(nèi)容。3.1 AT89C51 單片機(jī)本設(shè)計(jì)的核心硬件就是 8051芯片,這里選擇了 AT89C51,AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只 讀存儲(chǔ)器(FPEROFalsh Programmable and Erasa

10、ble Read Only Memory)的低電壓,高性能 CMOS位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的 AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。KX.TALIXTAL201234567P1P1P1P1P1P1P1P1STALL'Ll C/ADOPD 1/ACjIPO 2/AD2PO 3/AD3FQ4/AD4P0.5/AD5 POPO 7/AD fP2.0/ASP2 1/A9 P2 2/A1

11、0 P2.3/A1 1 F2-VA12 P2 5/A13 P2.6/A14 P2 7/A15P3 1/TXD f-'3.2.1NFl< r-iAiKTrTF3.4/T0 ra 5/riP-S.C/vTrP3.7/RD圖3.1 AT89C51引腳圖引腳及其功能:P0 口: P0 口為一個(gè)8位漏級(jí)開路雙 向I/O 口,每腳可吸收 8TTL門電流。當(dāng)P1 口的管腳第一次寫 1 時(shí),被定義為高阻輸入。 P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在 FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng) FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1 口:

12、P1 口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O 口,P1 口緩沖器能接收輸出 4TTL門電流。P1 口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入, P1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上 拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1 口作為第八位地址接收。P2 口: P2 口為一個(gè)內(nèi)部上拉電阻的 8位雙向I/O 口,P2 口緩沖器可接收,輸出 4個(gè)TTL門電流,當(dāng)P2口被寫“ 1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2 口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2 口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2 口輸出地址

13、的高八位。在給出地址“1 ”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2 口輸出其特殊功能寄存器的內(nèi)容。P2 口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3 口: P3 口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O 口,可接收輸出 4個(gè)TTL門電流。當(dāng)P3 口寫入“ 1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL)這是由于上拉的緣故。P3 口也可作為AT89C51的一些特殊功能口,如下所示:P3 口管腳備選功能P3.0 RXD (串行輸入口)P3.1 TXD (串行輸出口)P3.2 /INTO (外部中斷0)

14、P3.3 /INT1 (外部中斷1)P3.4 T0 (記時(shí)器0外部輸入)P3.5 T1 (記時(shí)器1外部輸入)P3.6 /WR (外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 /RD (外部數(shù)據(jù)存儲(chǔ)器讀選通)P3 口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存

15、儲(chǔ)器時(shí),將 跳過一個(gè)ALE脈沖。如想禁止 ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行 MOVX MOVC旨令 是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSE N信號(hào)將不出現(xiàn)。EA/VPP :當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為 RESET當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。 在FLASH

16、 編程期間,此引腳也用于施加12V編程電源(VPF)。XTAL1 :反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2 :來自反向振蕩器的輸出。P1.0 口接 K1 按鍵,P1.1 口接 K2按鍵,P1.2 口接 K3按鍵,P1.3 口接 K4按鍵,P2.0 口接 RS口,P2.1 口接RW口, P2.2 口接E 口,P2.3 口接發(fā)光二極管 D2陽極,P2.4 口接發(fā)光二極管 D1陽極,P2.5 口接電阻 R3, P3 口的8個(gè)口依次和 LCD的數(shù)據(jù)口 D0D7.3.2 1602LCD液晶顯示器LM016L液晶模塊采用HD44780控制器。HD44780具有簡單而功能較強(qiáng)的指令集,可以

17、實(shí)現(xiàn)字符移動(dòng)、閃爍等功能。LM016L與單片機(jī) MCU( Microco ntrollerUn it )通訊可采用8位或者4位并行傳輸兩種方式。HD44780控制器由兩個(gè)8位寄存器、指令寄存器(IR)和數(shù)據(jù)寄存器(DR、忙標(biāo)志(BF)、顯示數(shù)據(jù)RAMDDRA) 字符發(fā)生器 ROM(CGROM字符發(fā)生器 RAM(CGRA)地址計(jì)數(shù)器(AC) o IR用于寄存指令碼,只能寫入不 能讀出;DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫入DDRAM和 CGRAM或者暫存從 DDRAM和 CGRAM賣出的數(shù)據(jù)。BF為1時(shí),液晶模塊處于內(nèi)部處理模式,不響應(yīng)外部操作指令和接受數(shù)據(jù)。DDRAM用來存儲(chǔ)顯示的字符,能存

18、儲(chǔ)80個(gè)字符碼。CGROMb 8位字符碼生成5*7點(diǎn)陣字符160種和5*10點(diǎn)陣字符32種,8位 字符編碼和字符的對(duì)應(yīng)關(guān)系,可以查看參考文獻(xiàn)3中的表4o CGRAM是為用戶編寫特殊字符留用的,它的容5 / 31量僅64字節(jié)??梢宰远x 8個(gè)5*7點(diǎn)陣字符或者 4個(gè)5*10點(diǎn)陣字符。AC可以存儲(chǔ)DDRAM和CGRA的地 址,如果地址碼隨指令寫入 IR,貝U IR自動(dòng)把地址碼裝入 AC,同時(shí)選擇DDRAM或者 CGRAM單元。LM016L液LCD1LMO1 6L 一TEXTaFS9 f 86日二口芝圖3.2 LCD1602引腳圖晶模塊的引腳功能見表:第1腳:VSS為地電源。第2腳:VDD接5V正電

19、源。第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì) 產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng) RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng) RS為高電平R/W為低電平時(shí) 可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。將respack-8 的1 口接電源,28 口

20、順序和 P3 口相連接,并和LCD的數(shù)據(jù)口 D1D7相接,VSS接地,VDD 接電源,VEE接滑動(dòng)變阻器, RS口接P2.0 口,RW口接P2.1 口,E 口接P2.2 口。3.3其他重要元件丘洋鬧訓(xùn)隱21屮讓討“|畀的劇站圖3.3獨(dú)立式鍵盤(1)獨(dú)立式鍵盤的接口電路:在單片機(jī)應(yīng)用系統(tǒng)中,有時(shí)只需要幾個(gè)簡單的按鍵向系統(tǒng)輸入信息。這 時(shí),可將每個(gè)按鍵接在一根I/O接口線上,這種方式的連接稱為獨(dú)立式鍵盤。每個(gè)獨(dú)立式按鍵單獨(dú)占有一根I/O接口線,每根I/O接口線的工作狀態(tài)不會(huì)影響到其他I/O接口線。這種按鍵接口電路配置靈活,硬件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根I/O接口線,I/O接口線浪費(fèi)較大。故只

21、在按鍵數(shù)量不多時(shí)采用這種按鍵電路。在此電路中,按鍵輸入都采用低電平有效。上拉電阻保證了按鍵斷開時(shí),I/O接口線有確定的高電平。當(dāng)I/O接口內(nèi)部有上拉電阻時(shí),外電路可以不配置上拉電阻。(2) 蜂鳴器:將蜂鳴器的一端電源,另一端接至晶閘管集電極,當(dāng)需要鬧鐘響時(shí),P2.5將發(fā)出有規(guī)律 的電平使得晶閘管導(dǎo)通,從而使得蜂鳴器發(fā)出聲響。(3)respack-8:上拉電阻鍵K1K4分別與單片機(jī)的 P1.0P1.3 口相接。3.4硬件電路設(shè)計(jì)圖圖3.4系統(tǒng)整體電路圖將respack-8的1 口接電源,28 口順序和P3 口相連接,并和 LCD的數(shù)據(jù)口 D1D7相接。發(fā)光二極管D1和P2.4 口相連接用以顯示秒

22、計(jì)時(shí),發(fā)光二極管和 P2.3 口相連接用以顯示鬧鐘時(shí)的廣播,按鍵K1K4分別與單片機(jī)的P1.0P1.3 口相接,以實(shí)現(xiàn)按鍵的多功能使用。4可編程作息時(shí)間控制器軟件編程設(shè)計(jì)可編程作息時(shí)間控制器軟件編程主要包括系統(tǒng)初始化、系統(tǒng)時(shí)間校正、系統(tǒng)時(shí)間設(shè)定、作息時(shí)間設(shè)定、響鈴處理、邏輯控制以及1602LCD液晶顯示,整個(gè)程序中響鈴的合理處理以及顯示部分是核心部分,只有處理好鬧鐘的及時(shí)響應(yīng)才會(huì)使得整個(gè)可編程作息時(shí)間控制器按照預(yù)定的設(shè)計(jì)進(jìn)行工作,同時(shí)各個(gè)模塊邏輯上合 理分配又將是整個(gè)功能實(shí)現(xiàn)的基礎(chǔ)。4.1系統(tǒng)初始化sbit K仁 P1A0;sbit rw=P2A1;sbit K2=P1A1;sbit K3=P

23、1A2;sbit K4=P1A3;sbit rs=P2A0;sbit lede n=P2A2;sbit LED2=P2A3;sbit led=P2A4;sbit beep=P2A5;TH0=(65536-50000)/256;TL0=(65536-50000)%256;此段程序主要是是定義電路的外部接口,包括K1K4按鍵,LCD的rs 口、rw 口、廣播控制端 LED2發(fā)光二極管控制端led以及蜂鳴器控制端 beep。將定時(shí)器0的工作模式選擇為工作方式1,同時(shí)給定時(shí)器裝初值,并且開始計(jì)數(shù)。4.2系統(tǒng)時(shí)間校正32 / 31圖4.1系統(tǒng)時(shí)間校正流程圖 程序:fen+;if(fen=60)fen=0

24、;shi+;if(shi=24)shi=0; write_sfm(9,shi);write_sfm(12,fe n);TH0=(65536-50000)/256;TL0=(65536-50000)%256; aa+;if(aa=20)aa=0;miao+;if(miao=60)miao=0;首先初始化時(shí)定時(shí)器開始工作,當(dāng)計(jì)時(shí)時(shí)間到時(shí)進(jìn)入中斷服務(wù),由于方式1沒有自動(dòng)裝初值的功能,因此需再次裝入初值,每一次所定的時(shí)間為50ms通過軟件計(jì)數(shù)的方法,當(dāng)計(jì)數(shù)達(dá)到20次時(shí)剛好1秒鐘,如果計(jì)數(shù)不到20次,則再次給定時(shí)器裝入初值,直到計(jì)數(shù)達(dá)到20次,把計(jì)數(shù)初值清零,并再次向計(jì)數(shù)器裝初值,重復(fù)執(zhí)行之前操作,同時(shí)

25、分加一,并顯示,如果分為60時(shí)則不顯示,先清零然后將時(shí)加一,再顯示分,如果時(shí)不是24時(shí),則直接通過LCD顯示出來,如果時(shí)剛好為24時(shí),則現(xiàn)需要清零,然后在用LCD顯示出來。 4.3系統(tǒng)時(shí)間設(shè)定if(K1=0) while(!K1)while(!K2);fen+;if(fen=60) fen=O; if(K3=0) TR0=1;TRO=O; if(K1=0) shi+; if(shi=24) shi=0;if(K2=0)當(dāng)K1被按下時(shí),則修改系統(tǒng)的的時(shí)間,同時(shí)定時(shí)器停止工作。開始時(shí),光標(biāo)停留在分鐘上,當(dāng)再次按24時(shí),則自動(dòng)清零,從零開始下K1時(shí),光標(biāo)將會(huì)跳到小時(shí)并且小時(shí)位的時(shí)間將會(huì)加一,如果時(shí)位

26、的數(shù)等于再往上加,如果按下 K2鍵按下則分鐘自動(dòng)加一,如果分鐘達(dá)到60時(shí)則自動(dòng)清零,從零開始往上加,并通過LCD顯示出此時(shí)的狀態(tài)。當(dāng)按下K3鍵時(shí),則退出系統(tǒng)時(shí)間的更改,并啟動(dòng)定時(shí)器工作,開始通過LCD在第二行顯示出修改后的時(shí)間。此程序主要的作用就是通過人為的方法來設(shè)定系統(tǒng)的時(shí)間,使得系統(tǒng)時(shí)間滿足 實(shí)際需要。4.4作息時(shí)間設(shè)定圖4.5改變鬧鐘定時(shí)分鐘流程圖 程序:if(K3=0)while(!K3);write_sfm(12,fe n1); write_sfm(9,shi1);if(K2=0) write_sfm(12,fe n1);write_sfm(9,shi1); while(!K2);w

27、rite_sfm(12,fe n); write_sfm(9,shi);if(K1=0) while(!K1);if(shi2=24)shi 1=0;write_sfm(9,shi1); if(K2=0) while(!K2);fen 1+;if(fen 1=60) fen 1=0; write_sfm(12,fe n1); if(K3=0) write_sfm(12,fe n); write_sfm(9,shi);shi1+;由于可編程時(shí)間控制器是由四路鬧鐘構(gòu)成的,所以只要通過邏輯上的先后順序便可以實(shí)現(xiàn),并且這四路鬧鐘設(shè)定上都是相同的,因此在這里將四路鬧鐘選擇其中的第一路做介紹。當(dāng)通過K4鍵

28、進(jìn)入鬧鐘設(shè)定電路后,如果處于廣播的鬧鐘時(shí)間設(shè)定時(shí),此時(shí)如果沒有按下任何開關(guān)鍵,LCD將顯示此時(shí)的鬧鐘標(biāo)志“ GB并且再其后面顯示現(xiàn)在的系統(tǒng)時(shí)間,在沒有按下K3鍵之前,如果按下 K2鍵,貝U LCD將顯示此處鬧鐘時(shí)間,并且在其前面有此路標(biāo)志,如“ GB ,松開按鍵K2時(shí),LCD將顯示之前的狀態(tài);如果按下首次按下K3鍵,則開始修改鬧鐘的時(shí)間,此時(shí)光標(biāo)在分鐘上閃爍,此時(shí)按下K2鍵則修改鬧鐘的分鐘,如果分等于60時(shí),則自動(dòng)清零,否則繼續(xù)往上加;如果按下K1鍵則修改鬧鐘的小時(shí),如果小時(shí)數(shù)等于24,則自動(dòng)清零,否則繼續(xù)往上加。當(dāng)?shù)诙伟聪?K3鍵,則完成次鬧鐘的設(shè)定,并顯示之前的狀態(tài),如果繼續(xù)按K4鍵則切

29、換到下一路鬧鐘,也可以進(jìn)行上述的操作,或者返回系統(tǒng)時(shí)間界面。4.5響鈴處理圖4.6響鈴處理流程圖程序:if(fe n=fe n1)&&( shi=shi1)|(fe n=fe n2)&&(shi=shi2)|(fe n=fe n3) &&( shi=shi3)|(fen=fe n4)&&(shi=shi4)&&(flag2=1)if(fe n=fe n1) &&(shi=shi1)&&( flag2=1)if(fe n=fe n1)&&( shi=shi1) &

30、;&(flag2=0)|(fe n-1=fe n1) &&(shi=shi1)&&( flag4=0)if(fe n=fe n2) &&(shi=shi2)&&( flag2=1)if(fe n=fe n2)&&(shi=shi2) &&( flag2=0)|(fe n-1=fe n2) &&(shi=shi2)&&( flag4=0)if(fe n=fe n3) &&(shi=shi3)&&( flag2=1)if(fe n=

31、fe n3)&&(shi=shi3) &&( flag2=0)|(fe n-1=fe n3) &&(shi=shi3)&&( flag4=0)if(fe n=fe n4) &&(shi=shi4)&&( flag2=1)if(fe n=fe n4)&&(shi=shi4) &&(flag2=0)|(fe n-1=fe n4)&&(shi=shi4)&&( flag4=0)if(K4=0&&flag3=0)當(dāng)四個(gè)定時(shí)鬧鐘任

32、意一路到達(dá)時(shí),在沒有按下響鈴終止鍵K4時(shí),flag2都等于1,此時(shí)鬧鐘響起,同時(shí)使得flag3等于0。在鬧鐘響鬧完一個(gè)周期后將繼續(xù)向下執(zhí)行,并且根據(jù)以后程序的判定是哪一路鬧鐘在響 鬧,執(zhí)行這一路所要求的內(nèi)容,但是不論哪一路時(shí)間到都會(huì)響鈴并且燈閃,不同的是根據(jù)判斷選擇出時(shí)間到 的那一路并通過 LCD顯示出來鬧鐘時(shí)間及某路鬧鐘;此時(shí)若按下 K4鍵,則使得flag2等于0,當(dāng)進(jìn)行是否鬧 鐘響鬧時(shí)將會(huì)不在響應(yīng),也就是鬧鐘被手動(dòng)關(guān)閉,從而不需要一定要響鈴一分鐘后在關(guān)閉鬧鐘,實(shí)現(xiàn)手動(dòng)關(guān) 斷鬧鐘的功能。當(dāng)鬧鐘關(guān)斷過后將及時(shí)跳出,并且使得LCD顯示當(dāng)前的時(shí)間。使得可編程時(shí)間控制器能夠在響鈴時(shí)能夠顯示當(dāng)前的鬧鈴

33、及時(shí)間,同時(shí)可以手動(dòng)關(guān)斷鬧鈴,并且當(dāng)鬧鈴關(guān)斷過后可以跳出當(dāng)前顯示返回到 系統(tǒng)時(shí)間。4.6邏輯控制圖4.7邏輯控制流程圖程序: K4nu m+;while(1)if(K4 nu m=5)if(K4=0)&&( flag3=1)K4n um=O; if(K4 nu m=0) time(); flag4=O; if(K4 nu m=1) gua ngbo(); flag4=1; if(K4 nu m=2) sha ngke();flag4=1; if(K4 nu m=3)xiake();flag4=1;if(K4 nu m=4)de ngko ng();flag4=1; clock(

34、);只有當(dāng)沒有一路鬧鐘響鬧時(shí)才會(huì)執(zhí)行此程序,因?yàn)樵隰[鐘響鬧時(shí)K4鍵將會(huì)作為鬧鐘的停止的功能鍵使用,所以只有在沒有鬧鐘響鬧時(shí),K4鍵才會(huì)早為鬧鐘的更換,同時(shí)變量K4num 將作為K4鍵所處的鬧鐘或者系統(tǒng)時(shí)間區(qū)別出來,以實(shí)現(xiàn)邏輯上的合理。系統(tǒng)剛啟動(dòng)時(shí),按 鍵K4處于系統(tǒng)時(shí)間狀態(tài),在此狀態(tài)下可以利用之前所介紹的功能進(jìn)行所需要的修改,當(dāng)?shù)?一次按下K4鍵時(shí),就會(huì)進(jìn)入廣播定時(shí)的控制口,此時(shí)可以根據(jù)需要修改所要定的時(shí)間,并 可以顯示自己所定的鬧鐘時(shí)間,再次按下K4鍵時(shí),將會(huì)進(jìn)入上課定時(shí)的鬧鐘,和之前的鬧鐘一樣,可以進(jìn)行相同的操作,當(dāng)再次按下K4鍵時(shí)將進(jìn)入下課鬧鈴狀態(tài),然后將要進(jìn)入的的是燈光控制定時(shí),此時(shí)

35、Knum4為4,當(dāng)再次按下 K4鍵時(shí),將經(jīng)過判斷清零,重新開始, 以此來實(shí)現(xiàn)按鍵 K4可以更換鬧鐘的功能,同時(shí)更改鬧鐘時(shí)間的功能。4.7 1602LCD液晶顯示VSS引腳接地,VDD提供電源,VEE接滑動(dòng)變阻器來控制液晶屏的對(duì)比度。RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。程序:void write_com(u

36、char com)void write_date(uchar date)rs=0; rw=0;rs=1; rw=0;lcden=0;P3=com;Icden=1; lcden=0; lcde n=0; P3=date;lcde n=1;lcde n=0; 液晶寫命令函數(shù)液晶寫數(shù)據(jù)函數(shù)當(dāng)需要將內(nèi)容顯示到 LCD顯示器上之前,首先要向液晶顯示器輸入寫命令函數(shù),有上硬件分析可以得到 LCD液晶顯示上一排地址從 80H8FH 共16位,下面一排地址從 C0HCFH, 同樣是16位,所以在進(jìn)行液晶顯示之前首先確定要將結(jié)果在哪一位上顯示,然后在調(diào)用液 晶寫數(shù)據(jù)函數(shù),只有兩者結(jié)合使用才會(huì)得到想要的結(jié)果。5實(shí)

37、驗(yàn)與結(jié)果分析5.1實(shí)驗(yàn)的調(diào)試設(shè)計(jì)要求:一個(gè)以單片機(jī)為核心的可編程作息時(shí)間控制器,能夠按照給定的時(shí)間模擬控制,實(shí)現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示),同時(shí)具備日期和時(shí)鐘顯示。首先運(yùn)用Keil軟件編輯程序,按上圖要生成目標(biāo)代碼文件,不斷地調(diào)試程序。聯(lián)調(diào):加載目標(biāo)代碼文件打開元器件單片機(jī)屬性窗口,在“ Program File ”欄中添加上面編譯好的目標(biāo)代碼文件"keil-17.hex ”;在“ Clock Frequency ”欄中輸入晶振頻率為 11.0592MHz。每一小塊程序編寫過后都進(jìn)行聯(lián)調(diào),這樣可以及時(shí)觀察到自己所編的程序是否符合自己的目的,當(dāng)出現(xiàn)問題時(shí)及時(shí)處理,可以避免當(dāng)

38、有大量問題后無法找出錯(cuò)誤的地方, 可以提高編程的效率,也有利于最終將程序編寫出來。5.2實(shí)驗(yàn)的結(jié)果訪L1.1 二闿 . f -ran ix七宀3孔匚耳知時(shí)日寸忡幕盤同砂IT R首說賢wIHMH W圖5.3廣播定時(shí)響鬧時(shí)l4母和.<TMbI亞LH*L T CHIN-IO?IS3U« Flmy eh-kF吐D"O?IS35ES8£S!£“ J kr*nflfciri H -_r.askRH-nttrij® fliTWnirtlM"町<133-11 rs*E*-i« fZluuit圖5.4上課定時(shí)響鬧LCO1-uk a

39、. TOf- 5| :=-_PLDL 4>屯.Elf - B"T1 ?_SW"NuF11B-1EH5T.d, L.ron ta亠a圖5.5下課定時(shí)響鬧圖5.6燈控定時(shí)響鬧圖5.7上課定時(shí)設(shè)定5.3實(shí)驗(yàn)的問題實(shí)驗(yàn)中出現(xiàn)問題最多的就是LCD顯示,又是顯示出亂碼,又是是不斷閃爍的輸入標(biāo)題,有的則是光標(biāo)的來來回回閃爍而不是固定在某一位,這些問題基本上都是由于 LCD刷新的問題上,有時(shí)候由于邏輯上的先后順序沒有做好,有的完全是由于缺少必要的邏輯區(qū)分,使得顯示在程序執(zhí)行的過程中 LCD不單單刷新了我所需要的內(nèi)容,也將我此時(shí)不需要的內(nèi)容也刷 新出來,所以屏幕上的內(nèi)容是閃爍的,因此我

40、加了 4個(gè)基本變量進(jìn)行控制, 以此來實(shí)現(xiàn)所需要的刷新。同時(shí)整個(gè)延時(shí)又是非常重要的,在進(jìn)行按鍵設(shè)定時(shí)這個(gè)問題就出現(xiàn)了,有時(shí)候按一下會(huì)會(huì)進(jìn)行幾個(gè)需要的操作,使得結(jié)果不符合我的要求,所以應(yīng)用剛開始編寫程序時(shí)不斷適當(dāng)增加延時(shí)使得程序漸漸符合要求。6小結(jié)與體會(huì)通過此次的單片機(jī)課程設(shè)計(jì)讓我學(xué)到了許多新的知識(shí),讓我受益匪淺,其中對(duì)1602LCD液晶顯示器有了非常深刻的認(rèn)識(shí)。剛開始分到課題時(shí),我便開始研究這個(gè)課題, 由于我們的課題是在題目 4的基礎(chǔ)上改過 來的,因此我先研究了一下題目 4的要求以及原理,再結(jié)合我們的課題讓我對(duì)這個(gè)課題有了 一些了解,下午時(shí)我們和大多數(shù)同學(xué)一樣先將電路圖畫了出來,但是當(dāng)我做完這個(gè)

41、課題過后,我很同意老師的意見,不應(yīng)當(dāng)立即畫電路圖,因?yàn)槲覀儗?duì)整個(gè)課題還不是很了解,對(duì)于 Proteus軟件也不懂,結(jié)果就是我們用了一下午只畫了一張圖,而且對(duì)于整個(gè)課程設(shè)計(jì)課題 的理解毫無幫助。由于我們對(duì)課題的理解有困難,不能夠?qū)⒄n題所要求的內(nèi)容完全弄明白, 因此我們向李老師尋求幫助,幫我們把我們的課題分析了一下,聽過之后我們基本已經(jīng)理解了這個(gè)課題,但是對(duì)于具體實(shí)施還是沒有頭路,當(dāng)我在實(shí)驗(yàn)室糾結(jié)1602LCD液晶顯示器到底是如何工作時(shí),夏老師告訴我Proteus軟件中就有相關(guān)的例子, 于是我便通過自己所找到的 資料以及這個(gè)例子自學(xué)了 LCD顯示器,由于例子是用 c語言寫的,所以最終我也選擇使用c

42、語言來編寫程序,但是在以后我所遇到的困難遠(yuǎn)遠(yuǎn)不止這些。首先我要自學(xué)相關(guān)的c語言,同時(shí)我在網(wǎng)上找到了一些相關(guān)的資料學(xué)習(xí)了一下,并結(jié)合李老師對(duì)課題的分析,讓我對(duì)這個(gè)課題有了自己的思路。 首先,我就把我的思路認(rèn)真的整理下來,然后規(guī)劃好每一塊所要完成的任務(wù),然后再用Keil軟件編寫出來,在進(jìn)行聯(lián)調(diào),每一小步的調(diào)試都必須做到?jīng)]有問題, 只有這樣在總的聯(lián)調(diào)時(shí)不會(huì)因?yàn)閱栴}太多而做不出來。在以后的幾天里我都在學(xué)習(xí)和使用c語言,讓我對(duì)LCD顯示器有了更多的認(rèn)識(shí), 但是在整個(gè)程序編寫過程中問題基本都處在LCD顯示上,一遍遍的嘗試后總會(huì)出現(xiàn)一些問題,曾經(jīng)我也因?yàn)樽詈蟮囊稽c(diǎn)點(diǎn)問題想向老師請(qǐng)教,最后自己沒有解決的時(shí)候甚

43、至想放棄,但是最終我還是堅(jiān)持下來,并最終完成了程序的基本要求,并且通過了李老師的第一次檢查,并對(duì)李老師提出的一些不滿足的地方進(jìn)行了修改,但是這些修改在進(jìn)過之前所設(shè)計(jì)中遇到的問題來說也挺難得,但是我很快就解決掉了,因?yàn)槲覍?duì)自己的程序以及 LCD顯示器有了好好地認(rèn)識(shí), 從而最后實(shí)現(xiàn)了比較好的結(jié)果,當(dāng)李老師驗(yàn)收過后感到非常的高興,在此我非常感謝李老師對(duì)我設(shè)計(jì)過程中提供的幫助,以及最后對(duì)我設(shè)計(jì)成果的認(rèn)可。雖然在這一周半的課程設(shè)計(jì)中每時(shí)每刻都讓我在思考我的課題,同時(shí)由于相關(guān)網(wǎng)絡(luò)資源的不足曾經(jīng)使我在用匯編語言還是應(yīng)用c語言徘徊過,但是當(dāng)我選擇其中一個(gè)時(shí)我就堅(jiān)持了下來,并通過不斷地努力在不斷地更改程序,可以

44、說整個(gè)課程設(shè)計(jì)是非常的痛苦的,因?yàn)槲以?jīng)想放棄過,但是我最終還是堅(jiān)持了下來, 并通過自己堅(jiān)持不懈的努力完成此次課題任務(wù)。 雖然整個(gè)課程設(shè)計(jì)的過程有點(diǎn)痛苦,但是當(dāng)我看到自己的最終成果時(shí)還是很開心,因?yàn)槲疫@幾天的努力沒有白白浪費(fèi),培養(yǎng)了我獨(dú)立思考的能力,提高我的自學(xué)以及應(yīng)用能力,這將是我以后學(xué)習(xí)生活的非常寶貴的經(jīng)歷。在編寫程序的過程中每一塊的認(rèn)真編寫才為以后整個(gè)程 序的完成奠定基礎(chǔ),正如我們?cè)谄綍r(shí)的生活中一樣,只有不斷地積累,才會(huì)為以后更大的收獲打下堅(jiān)實(shí)的基礎(chǔ), 而此次的課程設(shè)計(jì)就可以當(dāng)做我的一次小小的積累,可以說這是我大學(xué)以來最讓我糾結(jié)的一次課程設(shè)計(jì),也是第一個(gè)讓我有放棄的念頭的課程設(shè)計(jì),當(dāng)我最

45、終調(diào)出程序的那一刻讓我明白, 有時(shí)候在那自暴自棄還不如竭盡自己的權(quán)力去解決這個(gè)問題,在這過程中的確會(huì)有許多麻煩, 有時(shí)會(huì)把本來沒有的問題弄出來,有時(shí)經(jīng)過一次次的調(diào)試還是達(dá)不到自己的要求,但是只要我們堅(jiān)持住,不放棄還是會(huì)解決的?;厥走@一周多的單片機(jī)課程設(shè)計(jì),發(fā)現(xiàn)自己的程序按模塊劃分還不是很難,和當(dāng)初剛剛拿到題目時(shí)的各種不明白、 各種不懂發(fā)現(xiàn)自己真的收獲了很多,并且在看看相關(guān)類似的課題時(shí)能夠基本找出基本的設(shè)計(jì)思路,對(duì)于用到602LCD液晶顯示器相關(guān)的內(nèi)容能夠做出相關(guān)的反應(yīng),這個(gè)顯示器曾經(jīng)讓我絞盡腦汁依舊不懂,曾經(jīng)讓我的程序漏洞百出, 但是最終我征服了它,這是我的一大收獲。同時(shí)在李老師和夏老師的督促

46、下能夠按時(shí)到達(dá)實(shí)驗(yàn)室,從而合理的分配和合理使用了課程設(shè)計(jì)的時(shí)間。最后,我要非常感謝李老師和夏老師在課程設(shè)計(jì)中提供的幫助,以及李老師最后對(duì)我課程設(shè)計(jì)結(jié)果的肯定。參考文獻(xiàn)1 張毅剛主編,單片機(jī)原理及應(yīng)用,北京:高等教育出版社,20042 陳濤編著,單片機(jī)應(yīng)用及 C51程序設(shè)計(jì),北京:機(jī)械工業(yè)出版社,20083 周潤景主編,PROTEU入門實(shí)用教程,北京:機(jī)械工業(yè)出版社,20074 皮大能主編,單片機(jī)課程設(shè)計(jì)指導(dǎo)書,北京:北京理工大學(xué)出版社,20105 樓然苗主編,單片機(jī)實(shí)驗(yàn)與課程設(shè)計(jì) (Proteus仿真版),浙江:浙江大學(xué)出版社2010附錄設(shè)計(jì)程序II燈光控制端廣播控制端發(fā)光二極管控制端II蜂鳴

47、器控制端II延時(shí)函數(shù)#in clude<reg52.h>#defi ne uint un sig ned int #defi ne uchar un sig ned char Uinti,miao,fe n,fe n1,fe n2,fe n3,fe n4,shi,sh i1,shi2,shi3,shi4,flag1,flag2,flag3,f lag4,flag5,aa,K1 num,K2 nu m,K3 num,K4 num ,N; K1 num-K1按鍵被按下的標(biāo)記變量,K2num-K2按鍵被按下的標(biāo)記變量,K3num=0-K3按鍵被按下的標(biāo)記變量 uchar code tab

48、le=" H.l.T CHINA”;定義初始上電時(shí)液晶默認(rèn)顯示狀態(tài) uchar code table2=" TIME "uchar code Alarm_0=" GBDS " uchar code Alarm_1=" SKDS " uchar code Alarm_2=" XKDS " uchar code Alarm_3=" DKDS " uchar code Alarm_00=" GB " uchar code Alarm_11=" SK "

49、 uchar code Alarm_22=" XK " uchar code Alarm_33=" DK "uchar code den g=" LIGHTING " sbit K仁P1A0;/四個(gè)按鍵 sbit K2=P1A1;sbit K3=P1A2;sbit K4=P1A3;sbit rs=P2A0;sbit rw=P2A1;sbit lcde n=P2A2;sbit LED2=P2A3; / sbit led=P2A4; III sbit beep=P2A5; void delay( uint z) ui nt x,y;for

50、(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)II 液晶寫命令 函數(shù)rs=0;rw=0;lcden=0;P3=com; delay(5);lcde n=1;delay(5);lcde n=0;void write_date(uchar date)II液晶寫數(shù)據(jù)函數(shù) rs=1;rw=0;lcde n=0;P3=date; delay(5);lcde n=1;delay(5);lcde n=0;void write_sfm(uchar add,uchar date)II液晶寫時(shí)分秒函數(shù)uchar shi,ge; shi=d

51、ateI10;ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi);write_date(0x30+ge);void init()II初始化函數(shù)uint num;II寫液晶的循環(huán)控制變量aa=0;II中斷次數(shù)標(biāo)志K1nu m=0;K1按鍵被按下的標(biāo)記變量K2num=0;K2按鍵被按下的標(biāo)記變量K3num=0;K3按鍵被按下的標(biāo)記變量K4n um=0; K4按鍵被按下的標(biāo)記變量flag1=1;II控制lcd屏刷新的變量flag2=1;II控制鬧鐘響鬧開啟關(guān)閉的標(biāo)記flag3=1;II 控制鬧鐘響起時(shí),按下 K4停止 鬧鐘響鬧的標(biāo)記f

52、lag4=1;II 進(jìn)入鬧鐘設(shè)置時(shí)的標(biāo)記變量 flag5=1;II 進(jìn)入時(shí)間設(shè)置時(shí)的標(biāo)記變量 led=1;II發(fā)光二極管初始化LED2=0; II廣播初始化rw=0;N=100;II系統(tǒng)啟動(dòng)時(shí),鬧鐘時(shí)間到發(fā)出的聲音為連續(xù)三次發(fā)出“嘩”的一聲miao=0;II系統(tǒng)初始化時(shí)間fen=0;shi=7;fen 1=6;/初始化鬧鐘的時(shí)間shi 1=7;fen2=8;/初始化鬧鐘的時(shí)間shi2=7;fen3=10;/初始化鬧鐘的時(shí)間shi3=7;fen4=12;/初始化鬧鐘的時(shí)間shi4=7;beep=O; /蜂鳴器初始化Icden=0;/液晶使能端初始化write_com(0x38);/1602 液晶

53、初始化,設(shè)置16*2顯示。5*7點(diǎn)陣,8位數(shù)據(jù)接口設(shè)置開顯示,不顯示光/寫一個(gè)字符后地write_com(0x0c);/ write_com(0x06);址指針自動(dòng)加1write_com(0x01); write_com(0x80);到第一行,第一個(gè)字處 for(num=0; num <15; nu m+) 鐘標(biāo)示:H.l.T CHINA顯示清0數(shù)據(jù)指針清/將數(shù)據(jù)指針定位/顯示鬧 write_date(table num);delay(10); write_com(0x80+0x40+11);寫出時(shí)間顯示部分的兩個(gè)冒號(hào)write_date(':'); write_com(0x80+0x40+14);write_date(''); write_com(0x80+0x40+15);write_date('');write_sfm(12,fen);/送去液晶顯示秒分時(shí)write_sfm(9,shi);TM0D=0x01; /設(shè)置定時(shí)器0為工作方式1 TH0=(65536-50000)/256;定時(shí)器裝初值TL0=(65536-50000)%256;EA=1;/開總中斷ET0=1;/開定時(shí)器0中斷TR0=1;void xianshi()/系統(tǒng)時(shí)間顯示write_com(0x80+0x40

溫馨提示

  • 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)論