版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、揚(yáng)州大學(xué)能源與動(dòng)力工程學(xué)院題 目: 可編程作息時(shí)間控制器設(shè)計(jì) 課 程: 單片機(jī)原理及應(yīng)用課程設(shè)計(jì) 專(zhuān) 業(yè): 電氣工程及其自動(dòng)化 班 級(jí): 姓 名: 學(xué) 號(hào): 第 一 部 分任務(wù)書(shū)單片機(jī)原理及應(yīng)用課程設(shè)計(jì)任務(wù)書(shū)一、課題名稱(chēng)詳見(jiàn)單片機(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ì)具有很重要的意義。
2、單片機(jī)原理及應(yīng)用是一門(mén)理論性、實(shí)用性和實(shí)踐性都很強(qiáng)的課程,課程設(shè)計(jì)環(huán)節(jié)應(yīng)占有更加重要的地位。單片機(jī)原理及應(yīng)用課程設(shè)計(jì)的目的是讓學(xué)生在理論學(xué)習(xí)的基礎(chǔ)上,通過(guò)完成一個(gè)涉及MCS-51單片機(jī)多種資源應(yīng)用并具有綜合功能的小系統(tǒng)目標(biāo)板的設(shè)計(jì)與編程應(yīng)用,使學(xué)生不但能將課堂上學(xué)到的理論知識(shí)與實(shí)際應(yīng)用結(jié)合起來(lái),而且能進(jìn)一步加深對(duì)電子電路、電子元器件等知識(shí)的認(rèn)識(shí)與理解,同時(shí)在軟件編程、排錯(cuò)調(diào)試、相關(guān)軟件和儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。為今后能夠獨(dú)立進(jìn)行某些單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)工作打下一定的基礎(chǔ)。通過(guò)單片機(jī)硬件和軟件設(shè)計(jì)、調(diào)試、整理資料等環(huán)節(jié)的培訓(xùn),使學(xué)生初步掌握工程設(shè)計(jì)方法和組織實(shí)踐的基本
3、技能,逐步熟悉開(kāi)展科學(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ì)算,并畫(huà)出總體電路圖。3. 軟件設(shè)計(jì):根據(jù)已設(shè)計(jì)出的軟件系統(tǒng)框圖,用匯編語(yǔ)言或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è)
4、計(jì)要求設(shè)計(jì)一個(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é),撰寫(xiě)課程設(shè)計(jì)報(bào)告1.5七、課程設(shè)計(jì)報(bào)告內(nèi)容:總結(jié)設(shè)計(jì)過(guò)程,寫(xiě)出設(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ì)流程圖及其說(shuō)明。6電路設(shè)計(jì),軟件編程、調(diào)試中遇到的問(wèn)題及分析解決方法。
5、7實(shí)驗(yàn)結(jié)果及其分析。8體會(huì)。第 二 部 分課程設(shè)計(jì)報(bào)目 錄 1 課題簡(jiǎn)介11.1 課題目的11.2 課題要求12 可編程作息時(shí)間控制器方案設(shè)計(jì)12.1 系統(tǒng)總體介紹12.2 系統(tǒng)整體框圖12.3系統(tǒng)工作原理13可編程作息時(shí)間控制器硬件電路及芯片介紹23.1 AT89C51單片機(jī)23.2 1602LCD液晶顯示器33.3 其他重要元件43.4 硬件電路設(shè)計(jì)圖54 可編程作息時(shí)間控制器軟件編程設(shè)計(jì)54.1 系統(tǒng)初始化54.2 系統(tǒng)時(shí)間校正64.3 系統(tǒng)時(shí)間設(shè)定74.4 作息時(shí)間設(shè)定74.5 響鈴處理94.6 邏輯控制104.7 1602LCD液晶顯示115 實(shí)驗(yàn)與結(jié)果分析115.1 實(shí)驗(yàn)的調(diào)試11
6、5.2 實(shí)驗(yàn)的結(jié)果125.3 實(shí)驗(yàn)的問(wèn)題146 小結(jié)與體會(huì)151 課題簡(jiǎn)介1.1 課題目的 由單片機(jī)AT89C51芯片和LCD顯示器,輔以必要的的電路,構(gòu)成一個(gè)可編程作息時(shí)間控制器。電子鐘采用采用單片機(jī)來(lái)完成,LCD顯示“時(shí)”,“分”,LED閃動(dòng)來(lái)做秒計(jì)數(shù),定時(shí)時(shí)間到能發(fā)出相應(yīng)的提示,從而能夠?qū)崿F(xiàn)作息時(shí)間控制?,F(xiàn)在是自動(dòng)化高度發(fā)達(dá)的時(shí)代,特別是電子類(lèi)產(chǎn)品都是靠?jī)?nèi)部的控制電路來(lái)實(shí)現(xiàn)對(duì)產(chǎn)品的控制,達(dá)到自動(dòng)運(yùn)行的目的,這就需要我們這里要做的設(shè)計(jì)中的電器元件及電路的支持。1.2 課題要求(1) 在keil uVision 和proteus上編寫(xiě)軟件完成設(shè)計(jì)。(2) 以AT89C51單片機(jī)為核心結(jié)合字符
7、型LCD顯示器的可編程作息時(shí)間控制器。(3) 按照給定的時(shí)間模擬控制,實(shí)現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示),同時(shí)具備日期和時(shí)鐘顯示。(4) 上機(jī)調(diào)試程序。(5) 寫(xiě)出設(shè)計(jì)報(bào)告。2 可編程作息時(shí)間控制器方案設(shè)計(jì)2.1 系統(tǒng)總體介紹 可編程作息時(shí)間控制器是由簡(jiǎn)單的一路鬧鐘的基礎(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í)。并在不同狀態(tài)下
8、使得四個(gè)按鍵有著不同的功能,從而實(shí)現(xiàn)系統(tǒng)時(shí)間的調(diào)整,同時(shí)可以在不同狀態(tài)下可以調(diào)整鬧鐘的時(shí)間。當(dāng)定時(shí)到達(dá)時(shí)LCD將顯示出現(xiàn)在的鬧鐘是哪一路,響鈴一分鐘,并可以通過(guò)按鍵提前結(jié)束鬧鐘,恢復(fù)到時(shí)間顯示狀態(tài)。2.2 系統(tǒng)整體框圖 LCD顯示 揚(yáng)聲器和燈閃 廣播單片機(jī)AT89C51按 鍵2.3系統(tǒng)工作原理使用AT89C51單片機(jī)結(jié)合字符型LCD顯示器設(shè)計(jì)一個(gè)簡(jiǎn)易的可編程作息時(shí)間控制器,若LCD選擇有背光顯示的模塊,在夜晚或黑暗的場(chǎng)合中也可使用。程序執(zhí)行后工作指示燈LED閃動(dòng),表示程序開(kāi)始執(zhí)行,同時(shí)顯示系統(tǒng)時(shí)間。作息時(shí)間控制器是由4路可調(diào)鬧鐘組成,從而實(shí)現(xiàn)打鈴等功能。當(dāng)四路鬧鐘中的任一路到時(shí),均會(huì)點(diǎn)亮燈、打
9、鈴。其中操作鍵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è)定,并通過(guò)液晶顯示器顯示出時(shí)間等內(nèi)容。3.1 AT89C51單片機(jī)本設(shè)計(jì)的核心硬件就是8051芯片,這里選擇了AT89C51,AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低
10、電壓,高性能CMOS8位微處理器,俗稱(chēng)單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 圖3.1 AT89C51引腳圖引腳及其功能:P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙 向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0
11、輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地
12、址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:P3口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中
13、斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)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)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁
14、止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(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編程期間,此引腳也用于施加12V編程電源(V
15、PP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來(lái)自反向振蕩器的輸出。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陽(yáng)極,P2.4口接發(fā)光二極管D1陽(yáng)極,P2.5口接電阻R3,P3口的8個(gè)口依次和LCD的數(shù)據(jù)口D0D7.3.2 1602LCD液晶顯示器LM016L 液晶模塊采用HD44780 控制器。HD44780 具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng)、閃爍等功能。LM016L 與單片機(jī)MCU(Microcontroller U
16、nit)通訊可采用8 位或者4 位并行傳輸兩種方式。HD44780 控制器由兩個(gè)8 位寄存器、指令寄存器(IR)和數(shù)據(jù)寄存器(DR)、忙標(biāo)志(BF)、顯示數(shù)據(jù)RAM(DDRAM)、字符發(fā)生器ROM(CGROM)、字符發(fā)生器RAM(CGRAM)、地址計(jì)數(shù)器(AC)。IR 用于寄存指令碼,只能寫(xiě)入不能讀出;DR 用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫(xiě)入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM 讀出的數(shù)據(jù)。BF 為1 時(shí),液晶模塊處于內(nèi)部處理模式,不響應(yīng)外部操作指令和接受數(shù)據(jù)。DDRAM 用來(lái)存儲(chǔ)顯示的字符,能存儲(chǔ)80 個(gè)字符碼。CGROM 由8 位字符碼生成5*7 點(diǎn)陣字符160 種和
17、5*10 點(diǎn)陣字符32 種,8 位字符編碼和字符的對(duì)應(yīng)關(guān)系,可以查看參考文獻(xiàn)3中的表4。CGRAM 是為用戶(hù)編寫(xiě)特殊字符留用的,它的容量?jī)H64 字節(jié)??梢宰远x8 個(gè)5*7 點(diǎn)陣字符或者4 個(gè)5*10 點(diǎn)陣字符。AC 可以存儲(chǔ)DDRAM 和CGRAM的地址,如果地址碼隨指令寫(xiě)入IR,則IR 自動(dòng)把地址碼裝入AC,同時(shí)選擇DDRAM 或者CGRAM 單元。LM016L 液圖3.2 LCD1602引腳圖晶模塊的引腳功能見(jiàn)表:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)
18、10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。將respack-8的1口接電源,28口順序和P3口相連接,并和LCD的數(shù)據(jù)口D1D7相接,VSS接地,VDD接電源,VEE接滑動(dòng)變阻器,RS口接P2.0口,RW口接P2.1口,E口
19、接P2.2口。3.3 其他重要元件圖3.3 獨(dú)立式鍵盤(pán) (1)獨(dú)立式鍵盤(pán)的接口電路:在單片機(jī)應(yīng)用系統(tǒng)中,有時(shí)只需要幾個(gè)簡(jiǎn)單的按鍵向系統(tǒng)輸入信息。這時(shí),可將每個(gè)按鍵接在一根I/O接口線上,這種方式的連接稱(chēng)為獨(dú)立式鍵盤(pán)。每個(gè)獨(dú)立式按鍵單獨(dú)占有一根 I/O接口線,每根I/O接口線的工作狀態(tài)不 會(huì)影響到其他 I/O接口線 。這種按鍵接口電路配置靈活,硬件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O接口線,I/O接口線浪費(fèi)較大。故只在按鍵數(shù)量不多時(shí)采用這種按鍵電路。在此電路中,按鍵輸入都采用低電平有效。上拉電阻保證了按鍵斷開(kāi)時(shí),I/O接口線有確定的高電平。當(dāng)I/O接口內(nèi)部有上拉電阻時(shí),外電路可以不配置上拉電阻
20、。(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口相連接用以顯示秒計(jì)時(shí),發(fā)光二極管和P2.3口相連接用以顯示鬧鐘時(shí)的廣播,按鍵K1K4分別與單片機(jī)的P1.0P1.3口相接,以實(shí)現(xiàn)按鍵的多功能使用。4 可編程作息時(shí)間控制器軟件編程設(shè)計(jì) 可編程作息時(shí)間控制器軟件
21、編程主要包括系統(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 K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit rs=P20;sbit rw=P21; sbit lcden=P22;sbit LED2=P23;sbit led=P24; sbit beep=P25;TH0=(65536-5000
22、0)/256;TL0=(65536-50000)%256;此段程序主要是是定義電路的外部接口,包括K1K4按鍵,LCD的rs口、rw口、廣播控制端LED2、發(fā)光二極管控制端led以及蜂鳴器控制端beep。將定時(shí)器0的工作模式選擇為工作方式1,同時(shí)給定時(shí)器裝初值,并且開(kāi)始計(jì)數(shù)。4.2 系統(tǒng)時(shí)間校正 圖4.1 系統(tǒng)時(shí)間校正流程圖程序:TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa+;if(aa=20)aa=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0; write
23、_sfm(9,shi);write_sfm(12,fen);首先初始化時(shí)定時(shí)器開(kāi)始工作,當(dāng)計(jì)時(shí)時(shí)間到時(shí)進(jìn)入中斷服務(wù),由于方式1沒(méi)有自動(dòng)裝初值的功能,因此需再次裝入初值,每一次所定的時(shí)間為50ms,通過(guò)軟件計(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í)分加一,并顯示,如果分為60時(shí)則不顯示,先清零然后將時(shí)加一,再顯示分,如果時(shí)不是24時(shí),則直接通過(guò)LCD顯示出來(lái),如果時(shí)剛好為24時(shí),則現(xiàn)需要清零,然后在用LCD顯示出來(lái)。4.3 系統(tǒng)時(shí)間設(shè)定 圖4.2 改變小時(shí)流程圖 圖4.3
24、改變分鐘流程圖 程序:if(K1=0) while(!K1)TR0=0;if(K1=0)shi+; if(shi=24) shi=0;if(K2=0)while(!K2);fen+; if(fen=60)fen=0;if(K3=0) TR0=1; 當(dāng)K1被按下時(shí),則修改系統(tǒng)的的時(shí)間,同時(shí)定時(shí)器停止工作。開(kāi)始時(shí),光標(biāo)停留在分鐘上,當(dāng)再次按下K1時(shí),光標(biāo)將會(huì)跳到小時(shí)并且小時(shí)位的時(shí)間將會(huì)加一,如果時(shí)位的數(shù)等于24時(shí),則自動(dòng)清零,從零開(kāi)始再往上加,如果按下K2鍵按下則分鐘自動(dòng)加一 ,如果分鐘達(dá)到60時(shí)則自動(dòng)清零,從零開(kāi)始往上加,并通過(guò)LCD顯示出此時(shí)的狀態(tài)。當(dāng)按下K3鍵時(shí),則退出系統(tǒng)時(shí)間的更改,并啟動(dòng)
25、定時(shí)器工作,開(kāi)始通過(guò)LCD在第二行顯示出修改后的時(shí)間。此程序主要的作用就是通過(guò)人為的方法來(lái)設(shè)定系統(tǒng)的時(shí)間,使得系統(tǒng)時(shí)間滿(mǎn)足實(shí)際需要。4.4 作息時(shí)間設(shè)定 圖4.4 改變鬧鐘定時(shí)小時(shí)流程圖 圖4.5 改變鬧鐘定時(shí)分鐘流程圖 程序: if(K3=0)while(!K3);write_sfm(12,fen1);write_sfm(9,shi1); if(K2=0)write_sfm(12,fen1);write_sfm(9,shi1);while(!K2);write_sfm(12,fen);write_sfm(9,shi); if(K1=0)while(!K1);shi1+; if(shi2=24
26、) shi1=0;write_sfm(9,shi1);if(K2=0)while(!K2);fen1+; if(fen1=60)fen1=0;write_sfm(12,fen1);if(K3=0)write_sfm(12,fen); write_sfm(9,shi); 由于可編程時(shí)間控制器是由四路鬧鐘構(gòu)成的,所以只要通過(guò)邏輯上的先后順序便可以實(shí)現(xiàn),并且這四路鬧鐘設(shè)定上都是相同的,因此在這里將四路鬧鐘選擇其中的第一路做介紹。當(dāng)通過(guò)K4鍵進(jìn)入鬧鐘設(shè)定電路后,如果處于廣播的鬧鐘時(shí)間設(shè)定時(shí),此時(shí)如果沒(méi)有按下任何開(kāi)關(guān)鍵,LCD將顯示此時(shí)的鬧鐘標(biāo)志“GB”并且再其后面顯示現(xiàn)在的系統(tǒng)時(shí)間,在沒(méi)有按下K3鍵之
27、前,如果按下K2鍵,則LCD將顯示此處鬧鐘時(shí)間,并且在其前面有此路標(biāo)志,如“GB”,松開(kāi)按鍵K2時(shí),LCD將顯示之前的狀態(tài);如果按下首次按下K3鍵,則開(kāi)始修改鬧鐘的時(shí)間,此時(shí)光標(biāo)在分鐘上閃爍,此時(shí)按下K2鍵則修改鬧鐘的分鐘,如果分等于60時(shí),則自動(dòng)清零,否則繼續(xù)往上加;如果按下K1鍵則修改鬧鐘的小時(shí),如果小時(shí)數(shù)等于24,則自動(dòng)清零,否則繼續(xù)往上加。當(dāng)?shù)诙伟聪翶3鍵,則完成次鬧鐘的設(shè)定,并顯示之前的狀態(tài),如果繼續(xù)按K4鍵則切換到下一路鬧鐘 ,也可以進(jìn)行上述的操作,或者返回系統(tǒng)時(shí)間界面。 4.5 響鈴處理 圖4.6 響鈴處理流程圖程序:if(fen=fen1)&&(shi=shi
28、1)|(fen=fen2)&&(shi=shi2)|(fen=fen3)&&(shi=shi3)|( (fen=fen4)&&(shi=shi4)&&(flag2=1) if(fen=fen1)&&(shi=shi1)&&(flag2=1)if(fen=fen1)&&(shi=shi1)&&(flag2=0)|(fen-1=fen1)&&(shi=shi1)&&(flag4=0)if(fen=fen2)&&(shi=sh
29、i2)&&(flag2=1)if(fen=fen2)&&(shi=shi2)&&(flag2=0)|(fen-1=fen2)&&(shi=shi2)&&(flag4=0)if(fen=fen3)&&(shi=shi3)&&(flag2=1)if(fen=fen3)&&(shi=shi3)&&(flag2=0)|(fen-1=fen3)&&(shi=shi3)&&(flag4=0)if(fen=fen4)&&
30、;(shi=shi4)&&(flag2=1)if(fen=fen4)&&(shi=shi4)&&(flag2=0)|(fen-1=fen4)&&(shi=shi4)&&(flag4=0) )if(K4=0&&flag3=0)當(dāng)四個(gè)定時(shí)鬧鐘任意一路到達(dá)時(shí),在沒(méi)有按下響鈴終止鍵K4時(shí),flag2都等于1,此時(shí)鬧鐘響起,同時(shí)使得flag3等于0。在鬧鐘響?hù)[完一個(gè)周期后將繼續(xù)向下執(zhí)行,并且根據(jù)以后程序的判定是哪一路鬧鐘在響?hù)[,執(zhí)行這一路所要求的內(nèi)容,但是不論哪一路時(shí)間到都會(huì)響鈴并且燈閃,不同的是根據(jù)判斷選擇
31、出時(shí)間到的那一路并通過(guò)LCD顯示出來(lái)鬧鐘時(shí)間及某路鬧鐘;此時(shí)若按下K4鍵,則使得flag2等于0,當(dāng)進(jìn)行是否鬧鐘響?hù)[時(shí)將會(huì)不在響應(yīng),也就是鬧鐘被手動(dòng)關(guān)閉,從而不需要一定要響鈴一分鐘后在關(guān)閉鬧鐘,實(shí)現(xiàn)手動(dòng)關(guān)斷鬧鐘的功能。當(dāng)鬧鐘關(guān)斷過(guò)后將及時(shí)跳出,并且使得LCD顯示當(dāng)前的時(shí)間。使得可編程時(shí)間控制器能夠在響鈴時(shí)能夠顯示當(dāng)前的鬧鈴及時(shí)間,同時(shí)可以手動(dòng)關(guān)斷鬧鈴,并且當(dāng)鬧鈴關(guān)斷過(guò)后可以跳出當(dāng)前顯示返回到系統(tǒng)時(shí)間。 4.6 邏輯控制 圖4.7 邏輯控制流程圖程序:while(1)if(K4=0)&&(flag3=1) K4num+;if(K4num=5)K4num=0; if(K4num=0
32、)time();flag4=0;if(K4num=1)guangbo();flag4=1;if(K4num=2) shangke();flag4=1; if(K4num=3)xiake();flag4=1;if(K4num=4)dengkong(); flag4=1; clock();只有當(dāng)沒(méi)有一路鬧鐘響?hù)[時(shí)才會(huì)執(zhí)行此程序,因?yàn)樵隰[鐘響?hù)[時(shí)K4鍵將會(huì)作為鬧鐘的停止的功能鍵使用,所以只有在沒(méi)有鬧鐘響?hù)[時(shí),K4鍵才會(huì)早為鬧鐘的更換,同時(shí)變量K4num將作為K4鍵所處的鬧鐘或者系統(tǒng)時(shí)間區(qū)別出來(lái),以實(shí)現(xiàn)邏輯上的合理。系統(tǒng)剛啟動(dòng)時(shí),按鍵K4處于系統(tǒng)時(shí)間狀態(tài),在此狀態(tài)下可以利用之前所介紹的功能進(jìn)行所需要的
33、修改,當(dāng)?shù)谝淮伟聪翶4鍵時(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í)Knum4為4,當(dāng)再次按下K4鍵時(shí),將經(jīng)過(guò)判斷清零,重新開(kāi)始,以此來(lái)實(shí)現(xiàn)按鍵K4可以更換鬧鐘的功能,同時(shí)更改鬧鐘時(shí)間的功能。4.7 1602LCD液晶顯示VSS引腳接地,VDD提供電源,VEE接滑動(dòng)變阻器來(lái)控制液晶屏的對(duì)比度。RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。R/W為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操
34、作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。程序:void write_com(uchar com)rs=0;rw=0;lcden=0;P3=com;lcden=1;lcden=0; 液晶寫(xiě)命令函數(shù) void write_date(uchar date)rs=1;rw=0;lcden=0;P3=date;lcden=1;lcden=0; 液晶寫(xiě)數(shù)據(jù)函數(shù)當(dāng)需要將內(nèi)容顯示到LCD顯示器上之前,首先要向液晶顯示器輸入寫(xiě)
35、命令函數(shù),有上硬件分析可以得到LCD液晶顯示上一排地址從80H8FH,一共16位,下面一排地址從C0HCFH,同樣是16位,所以在進(jìn)行液晶顯示之前首先確定要將結(jié)果在哪一位上顯示,然后在調(diào)用液晶寫(xiě)數(shù)據(jù)函數(shù),只有兩者結(jié)合使用才會(huì)得到想要的結(jié)果。5 實(shí)驗(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)代碼文件 打開(kāi)元器件單片機(jī)屬性窗口,在“Program File”欄中添加上面編譯好的目標(biāo)
36、代碼文件“keil-17.hex”;在“Clock Frequency”欄中輸入晶振頻率為11.0592MHz。每一小塊程序編寫(xiě)過(guò)后都進(jìn)行聯(lián)調(diào),這樣可以及時(shí)觀察到自己所編的程序是否符合自己的目的,當(dāng)出現(xiàn)問(wèn)題時(shí)及時(shí)處理,可以避免當(dāng)有大量問(wèn)題后無(wú)法找出錯(cuò)誤的地方,可以提高編程的效率,也有利于最終將程序編寫(xiě)出來(lái)。5.2 實(shí)驗(yàn)的結(jié)果圖5.3 廣播定時(shí)響?hù)[時(shí) 圖5.4 上課定時(shí)響?hù)[圖5.5 下課定時(shí)響?hù)[圖5.6 燈控定時(shí)響?hù)[ 圖5.7 上課定時(shí)設(shè)定5.3 實(shí)驗(yàn)的問(wèn)題實(shí)驗(yàn)中出現(xiàn)問(wèn)題最多的就是LCD顯示,又是顯示出亂碼,又是是不斷閃爍的輸入標(biāo)題,有的則是光標(biāo)的來(lái)來(lái)回回閃爍而不是固定在某一位,這些問(wèn)題基本上都
37、是由于LCD刷新的問(wèn)題上,有時(shí)候由于邏輯上的先后順序沒(méi)有做好,有的完全是由于缺少必要的邏輯區(qū)分,使得顯示在程序執(zhí)行的過(guò)程中LCD不單單刷新了我所需要的內(nèi)容,也將我此時(shí)不需要的內(nèi)容也刷新出來(lái),所以屏幕上的內(nèi)容是閃爍的,因此我加了4個(gè)基本變量進(jìn)行控制,以此來(lái)實(shí)現(xiàn)所需要的刷新。同時(shí)整個(gè)延時(shí)又是非常重要的,在進(jìn)行按鍵設(shè)定時(shí)這個(gè)問(wèn)題就出現(xiàn)了,有時(shí)候按一下會(huì)會(huì)進(jìn)行幾個(gè)需要的操作,使得結(jié)果不符合我的要求,所以應(yīng)用剛開(kāi)始編寫(xiě)程序時(shí)不斷適當(dāng)增加延時(shí)使得程序漸漸符合要求。6 小結(jié)與體會(huì)通過(guò)此次的單片機(jī)課程設(shè)計(jì)讓我學(xué)到了許多新的知識(shí),讓我受益匪淺,其中對(duì)1602LCD液晶顯示器有了非常深刻的認(rèn)識(shí)。剛開(kāi)始分到課題時(shí),
38、我便開(kāi)始研究這個(gè)課題,由于我們的課題是在題目4的基礎(chǔ)上改過(guò)來(lái)的,因此我先研究了一下題目4的要求以及原理,再結(jié)合我們的課題讓我對(duì)這個(gè)課題有了一些了解,下午時(shí)我們和大多數(shù)同學(xué)一樣先將電路圖畫(huà)了出來(lái),但是當(dāng)我做完這個(gè)課題過(guò)后,我很同意老師的意見(jiàn),不應(yīng)當(dāng)立即畫(huà)電路圖,因?yàn)槲覀儗?duì)整個(gè)課題還不是很了解,對(duì)于Proteus軟件也不懂,結(jié)果就是我們用了一下午只畫(huà)了一張圖,而且對(duì)于整個(gè)課程設(shè)計(jì)課題的理解毫無(wú)幫助。由于我們對(duì)課題的理解有困難,不能夠?qū)⒄n題所要求的內(nèi)容完全弄明白,因此我們向李老師尋求幫助,幫我們把我們的課題分析了一下,聽(tīng)過(guò)之后我們基本已經(jīng)理解了這個(gè)課題,但是對(duì)于具體實(shí)施還是沒(méi)有頭路,當(dāng)我在實(shí)驗(yàn)室糾結(jié)
39、1602LCD液晶顯示器到底是如何工作時(shí),夏老師告訴我Proteus軟件中就有相關(guān)的例子,于是我便通過(guò)自己所找到的資料以及這個(gè)例子自學(xué)了LCD顯示器,由于例子是用c語(yǔ)言寫(xiě)的,所以最終我也選擇使用c語(yǔ)言來(lái)編寫(xiě)程序,但是在以后我所遇到的困難遠(yuǎn)遠(yuǎn)不止這些。首先我要自學(xué)相關(guān)的c語(yǔ)言,同時(shí)我在網(wǎng)上找到了一些相關(guān)的資料學(xué)習(xí)了一下,并結(jié)合李老師對(duì)課題的分析,讓我對(duì)這個(gè)課題有了自己的思路。首先,我就把我的思路認(rèn)真的整理下來(lái),然后規(guī)劃好每一塊所要完成的任務(wù),然后再用Keil軟件編寫(xiě)出來(lái),在進(jìn)行聯(lián)調(diào),每一小步的調(diào)試都必須做到?jīng)]有問(wèn)題,只有這樣在總的聯(lián)調(diào)時(shí)不會(huì)因?yàn)閱?wèn)題太多而做不出來(lái)。在以后的幾天里我都在學(xué)習(xí)和使用c
40、語(yǔ)言,讓我對(duì)LCD顯示器有了更多的認(rèn)識(shí),但是在整個(gè)程序編寫(xiě)過(guò)程中問(wèn)題基本都處在LCD顯示上,一遍遍的嘗試后總會(huì)出現(xiàn)一些問(wèn)題,曾經(jīng)我也因?yàn)樽詈蟮囊稽c(diǎn)點(diǎn)問(wèn)題想向老師請(qǐng)教,最后自己沒(méi)有解決的時(shí)候甚至想放棄,但是最終我還是堅(jiān)持下來(lái),并最終完成了程序的基本要求,并且通過(guò)了李老師的第一次檢查,并對(duì)李老師提出的一些不滿(mǎn)足的地方進(jìn)行了修改,但是這些修改在進(jìn)過(guò)之前所設(shè)計(jì)中遇到的問(wèn)題來(lái)說(shuō)也挺難得,但是我很快就解決掉了,因?yàn)槲覍?duì)自己的程序以及LCD顯示器有了好好地認(rèn)識(shí),從而最后實(shí)現(xiàn)了比較好的結(jié)果,當(dāng)李老師驗(yàn)收過(guò)后感到非常的高興,在此我非常感謝李老師對(duì)我設(shè)計(jì)過(guò)程中提供的幫助,以及最后對(duì)我設(shè)計(jì)成果的認(rèn)可。雖然在這一周半
41、的課程設(shè)計(jì)中每時(shí)每刻都讓我在思考我的課題,同時(shí)由于相關(guān)網(wǎng)絡(luò)資源的不足曾經(jīng)使我在用匯編語(yǔ)言還是應(yīng)用c語(yǔ)言徘徊過(guò),但是當(dāng)我選擇其中一個(gè)時(shí)我就堅(jiān)持了下來(lái),并通過(guò)不斷地努力在不斷地更改程序,可以說(shuō)整個(gè)課程設(shè)計(jì)是非常的痛苦的,因?yàn)槲以?jīng)想放棄過(guò),但是我最終還是堅(jiān)持了下來(lái),并通過(guò)自己堅(jiān)持不懈的努力完成此次課題任務(wù)。雖然整個(gè)課程設(shè)計(jì)的過(guò)程有點(diǎn)痛苦,但是當(dāng)我看到自己的最終成果時(shí)還是很開(kāi)心,因?yàn)槲疫@幾天的努力沒(méi)有白白浪費(fèi),培養(yǎng)了我獨(dú)立思考的能力,提高我的自學(xué)以及應(yīng)用能力,這將是我以后學(xué)習(xí)生活的非常寶貴的經(jīng)歷。在編寫(xiě)程序的過(guò)程中每一塊的認(rèn)真編寫(xiě)才為以后整個(gè)程序的完成奠定基礎(chǔ),正如我們?cè)谄綍r(shí)的生活中一樣,只有不斷地
42、積累,才會(huì)為以后更大的收獲打下堅(jiān)實(shí)的基礎(chǔ),而此次的課程設(shè)計(jì)就可以當(dāng)做我的一次小小的積累,可以說(shuō)這是我大學(xué)以來(lái)最讓我糾結(jié)的一次課程設(shè)計(jì),也是第一個(gè)讓我有放棄的念頭的課程設(shè)計(jì),當(dāng)我最終調(diào)出程序的那一刻讓我明白,有時(shí)候在那自暴自棄還不如竭盡自己的權(quán)力去解決這個(gè)問(wèn)題,在這過(guò)程中的確會(huì)有許多麻煩,有時(shí)會(huì)把本來(lái)沒(méi)有的問(wèn)題弄出來(lái),有時(shí)經(jīng)過(guò)一次次的調(diào)試還是達(dá)不到自己的要求,但是只要我們堅(jiān)持住,不放棄還是會(huì)解決的。回首這一周多的單片機(jī)課程設(shè)計(jì),發(fā)現(xiàn)自己的程序按模塊劃分還不是很難,和當(dāng)初剛剛拿到題目時(shí)的各種不明白、各種不懂發(fā)現(xiàn)自己真的收獲了很多,并且在看看相關(guān)類(lèi)似的課題時(shí)能夠基本找出基本的設(shè)計(jì)思路,對(duì)于用到602
43、LCD液晶顯示器相關(guān)的內(nèi)容能夠做出相關(guān) 的反應(yīng),這個(gè)顯示器曾經(jīng)讓我絞盡腦汁依舊不懂,曾經(jīng)讓我的程序漏洞百出,但是最終我征服了它,這是我的一大收獲。同時(shí)在李老師和夏老師的督促下能夠按時(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 周潤(rùn)景主編,PROTEUS入門(mén)實(shí)用教程,北京:機(jī)械工業(yè)出版社,20074 皮大能主編,單片機(jī)課程設(shè)計(jì)指導(dǎo)書(shū),北京:北
44、京理工大學(xué)出版社,20105 樓然苗主編, 單片機(jī)實(shí)驗(yàn)與課程設(shè)計(jì)(Proteus仿真版),浙江:浙江大學(xué)出版社, 2010 附錄 設(shè)計(jì)程序#include<reg52.h>#define uint unsigned int #define uchar unsigned char Uint i,miao,fen,fen1,fen2,fen3,fen4,shi,shi1,shi2,shi3,shi4,flag1,flag2,flag3,flag4,flag5,aa,K1num,K2num,K3num,K4num,N;/K1num-K1按鍵被按下的標(biāo)記變量,K2num-K2按鍵被按下的標(biāo)
45、記變量,K3num=0-K3按鍵被按下的標(biāo)記變量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 "uchar code Alarm_22=
46、" XK "uchar code Alarm_33=" DK "uchar code deng=" LIGHTING "sbit K1=P10;/四個(gè)按鍵sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit rs=P20;sbit rw=P21; /燈光控制端sbit lcden=P22;sbit LED2=P23;/廣播控制端sbit led=P24; /發(fā)光二極管控制端sbit beep=P25;/蜂鳴器控制端void delay(uint z)/延時(shí)函數(shù)uint x,y;for(x=z;x>0;
47、x-)for(y=110;y>0;y-);void write_com(uchar com)/液晶寫(xiě)命令函數(shù)rs=0;rw=0;lcden=0;P3=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)/液晶寫(xiě)數(shù)據(jù)函數(shù) rs=1;rw=0;lcden=0;P3=date;delay(5);lcden=1;delay(5);lcden=0;void write_sfm(uchar add,uchar date)/液晶寫(xiě)時(shí)分秒函數(shù)uchar shi,ge;shi=date/10;ge=date%10;write_c
48、om(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void init()/初始化函數(shù)uint num;/寫(xiě)液晶的循環(huán)控制變量aa=0;/中斷次數(shù)標(biāo)志K1num=0;/K1按鍵被按下的標(biāo)記變量K2num=0;/K2按鍵被按下的標(biāo)記變量K3num=0;/K3按鍵被按下的標(biāo)記變量K4num=0; /K4按鍵被按下的標(biāo)記變量flag1=1;/控制lcd屏刷新的變量flag2=1;/控制鬧鐘響?hù)[開(kāi)啟關(guān)閉的標(biāo)記flag3=1;/控制鬧鐘響起時(shí),按下K4停止鬧鐘響?hù)[的標(biāo)記flag4=1;/進(jìn)入鬧鐘設(shè)置時(shí)的標(biāo)記變量flag5=1;/進(jìn)入時(shí)間設(shè)
49、置時(shí)的標(biāo)記變量led=1; /發(fā)光二極管初始化LED2=0; /廣播初始化rw=0; N=100;/系統(tǒng)啟動(dòng)時(shí),鬧鐘時(shí)間到發(fā)出的聲音為連續(xù)三次發(fā)出“嘩”的一聲miao=0;/系統(tǒng)初始化時(shí)間fen=0;shi=7;fen1=6;/初始化鬧鐘的時(shí)間shi1=7;fen2=8;/初始化鬧鐘的時(shí)間shi2=7;fen3=10;/初始化鬧鐘的時(shí)間shi3=7;fen4=12;/初始化鬧鐘的時(shí)間shi4=7;beep=0;/蜂鳴器初始化lcden=0;/液晶使能端初始化write_com(0x38);/1602液晶初始化,設(shè)置16*2顯示。5*7點(diǎn)陣,8位數(shù)據(jù)接口write_com(0x0c);/設(shè)置開(kāi)顯
50、示,不顯示光write_com(0x06);/寫(xiě)一個(gè)字符后地址指針自動(dòng)加1write_com(0x01);/顯示清0數(shù)據(jù)指針清0write_com(0x80);/將數(shù)據(jù)指針定位到第一行,第一個(gè)字處 write_date(tablenum);delay(10);write_com(0x80+0x40+11);/寫(xiě)出時(shí)間顯示部分的兩個(gè)冒號(hào)write_date(':');write_com(0x80+0x40+14);write_date(' ');write_com(0x80+0x40+15);write_date(' ');write_sfm(12
51、,fen);/送去液晶顯示秒分時(shí)write_sfm(9,shi);TMOD=0x01;/設(shè)置定時(shí)器0為工作方式1TH0=(65536-50000)/256;/定時(shí)器裝初值TL0=(65536-50000)%256;EA=1;/開(kāi)總中斷ET0=1;/開(kāi)定時(shí)器0中斷TR0=1;void xianshi() /系統(tǒng)時(shí)間顯示write_com(0x80+0x40);for(i=0;i<9;i+)write_date(table2i);write_com(0x80+0x40+11);/寫(xiě)出時(shí)間顯示部分的兩個(gè)冒號(hào)write_date(':');write_com(0x80+0x40+
52、14);write_date(' ');write_com(0x80+0x40+15);write_date(' ');write_sfm(12,fen);/送去液晶顯示秒分時(shí)write_sfm(9,shi); void time()/更改系統(tǒng)時(shí)間if(K1num=0)&&(flag3=1) )write_com(0x80+0x40);for(i=0;i<9;i+)write_date(table2i); if(K1=0)/判斷K1按下,則開(kāi)始修改時(shí)間delay(5);flag5=1;if(K1=0&&K1num=0)K1n
53、um=1;while(!K1)/判斷是否松開(kāi)按鍵,后同if(K1num=1) TR0=0;/關(guān)閉計(jì)數(shù)器0write_com(0x0f);/光標(biāo)開(kāi)始閃爍write_com(0x80+0x40+13);if(K1=0&&K1num=1)/判斷K1按下,修改系統(tǒng)時(shí)間的小時(shí) delay(5);if(K1=0)write_com(0x80+0x40+10);/光標(biāo)定位到小時(shí)位置K1num=1;/置K1num=1while(!K1);shi+; /則調(diào)整時(shí)加1if(shi=24) shi=0;/若滿(mǎn)24后將清零write_sfm(9,shi);/每調(diào)節(jié)一次送液晶顯示write_com(0x80+0x40+10);if(K2=0&&K1num=1)/判K2按下,修改系統(tǒng)時(shí)間的分鐘delay(5);if
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中科學(xué)實(shí)驗(yàn)中基于視覺(jué)傳感器的機(jī)器人避障探究活動(dòng)教學(xué)研究課題報(bào)告
- 2026年泰順縣人民醫(yī)院護(hù)理崗位工作人員招聘?jìng)淇碱}庫(kù)參考答案詳解
- 2026年荔城區(qū)教師進(jìn)修學(xué)校公開(kāi)選聘教研員備考題庫(kù)及參考答案詳解
- 六年級(jí)數(shù)學(xué)上冊(cè)《圖形的展開(kāi)與折疊》魯教版五四制教學(xué)設(shè)計(jì)
- 倉(cāng)儲(chǔ)物流作業(yè)操作規(guī)范指南(標(biāo)準(zhǔn)版)
- 2025年金融科技創(chuàng)新與風(fēng)險(xiǎn)防控指南
- 技術(shù)人工意識(shí)狀態(tài)合同
- 海關(guān)進(jìn)出口貨物檢疫技術(shù)機(jī)構(gòu)管理辦法
- 建筑行業(yè)質(zhì)量檢測(cè)與驗(yàn)收指南(標(biāo)準(zhǔn)版)
- 2025年企業(yè)環(huán)境保護(hù)與污染治理操作指南
- 2026年直播服務(wù)合同
- 2026秋招:澳森特鋼集團(tuán)試題及答案
- 哲學(xué)史重要名詞解析大全
- 2026年寧夏黃河農(nóng)村商業(yè)銀行科技人員社會(huì)招聘?jìng)淇碱}庫(kù)及答案詳解(易錯(cuò)題)
- 銀行借款抵押合同范本
- DB37-T4975-2025分布式光伏直采直控技術(shù)規(guī)范
- 兒童糖尿病的發(fā)病機(jī)制與個(gè)體化治療策略
- 脫硫廢水零排放項(xiàng)目施工方案
- 2026年海南衛(wèi)生健康職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)參考答案詳解
- 水泥產(chǎn)品生產(chǎn)許可證實(shí)施細(xì)則2025
- 急性心梗合并急性心衰護(hù)理
評(píng)論
0/150
提交評(píng)論