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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

10、ble Read Only Memory)的低電壓,高性能 CMOS位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的 AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。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 口為一個8位漏級開路雙 向I/O 口,每腳可吸收 8TTL門電流。當(dāng)P1 口的管腳第一次寫 1 時,被定義為高阻輸入。 P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在 FIASH編程時,P0 口作為原碼輸入口,當(dāng) FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1 口:

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

13、的高八位。在給出地址“1 ”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2 口輸出其特殊功能寄存器的內(nèi)容。P2 口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3 口: P3 口管腳是8個帶內(nèi)部上拉電阻的雙向I/O 口,可接收輸出 4個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 (記時器0外部輸入)P3.5 T1 (記時器1外部輸入)P3.6 /WR (外部數(shù)據(jù)存儲器寫選通)P3.7 /RD (外部數(shù)據(jù)存儲器讀選通)P3 口同時為閃爍編程和編程校驗接收一些控制信號。RST復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。ALE/PROG當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存

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

16、 編程期間,此引腳也用于施加12V編程電源(VPF)。XTAL1 :反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。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個口依次和 LCD的數(shù)據(jù)口 D0D7.3.2 1602LCD液晶顯示器LM016L液晶模塊采用HD44780控制器。HD44780具有簡單而功能較強(qiáng)的指令集,可以

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

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

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

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

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

22、計時,發(fā)光二極管和 P2.3 口相連接用以顯示鬧鐘時的廣播,按鍵K1K4分別與單片機(jī)的P1.0P1.3 口相接,以實現(xiàn)按鍵的多功能使用。4可編程作息時間控制器軟件編程設(shè)計可編程作息時間控制器軟件編程主要包括系統(tǒng)初始化、系統(tǒng)時間校正、系統(tǒng)時間設(shè)定、作息時間設(shè)定、響鈴處理、邏輯控制以及1602LCD液晶顯示,整個程序中響鈴的合理處理以及顯示部分是核心部分,只有處理好鬧鐘的及時響應(yīng)才會使得整個可編程作息時間控制器按照預(yù)定的設(shè)計進(jìn)行工作,同時各個模塊邏輯上合 理分配又將是整個功能實現(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。將定時器0的工作模式選擇為工作方式1,同時給定時器裝初值,并且開始計數(shù)。4.2系統(tǒng)時間校正32 / 31圖4.1系統(tǒng)時間校正流程圖 程序: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;首先初始化時定時器開始工作,當(dāng)計時時間到時進(jìn)入中斷服務(wù),由于方式1沒有自動裝初值的功能,因此需再次裝入初值,每一次所定的時間為50ms通過軟件計數(shù)的方法,當(dāng)計數(shù)達(dá)到20次時剛好1秒鐘,如果計數(shù)不到20次,則再次給定時器裝入初值,直到計數(shù)達(dá)到20次,把計數(shù)初值清零,并再次向計數(shù)器裝初值,重復(fù)執(zhí)行之前操作,同時

25、分加一,并顯示,如果分為60時則不顯示,先清零然后將時加一,再顯示分,如果時不是24時,則直接通過LCD顯示出來,如果時剛好為24時,則現(xiàn)需要清零,然后在用LCD顯示出來。 4.3系統(tǒng)時間設(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被按下時,則修改系統(tǒng)的的時間,同時定時器停止工作。開始時,光標(biāo)停留在分鐘上,當(dāng)再次按24時,則自動清零,從零開始下K1時,光標(biāo)將會跳到小時并且小時位的時間將會加一,如果時位

26、的數(shù)等于再往上加,如果按下 K2鍵按下則分鐘自動加一,如果分鐘達(dá)到60時則自動清零,從零開始往上加,并通過LCD顯示出此時的狀態(tài)。當(dāng)按下K3鍵時,則退出系統(tǒng)時間的更改,并啟動定時器工作,開始通過LCD在第二行顯示出修改后的時間。此程序主要的作用就是通過人為的方法來設(shè)定系統(tǒng)的時間,使得系統(tǒng)時間滿足 實際需要。4.4作息時間設(shè)定圖4.5改變鬧鐘定時分鐘流程圖 程序: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+;由于可編程時間控制器是由四路鬧鐘構(gòu)成的,所以只要通過邏輯上的先后順序便可以實現(xiàn),并且這四路鬧鐘設(shè)定上都是相同的,因此在這里將四路鬧鐘選擇其中的第一路做介紹。當(dāng)通過K4鍵

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

29、換到下一路鬧鐘,也可以進(jìn)行上述的操作,或者返回系統(tǒng)時間界面。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)四個定時鬧鐘任

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

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

35、Knum4為4,當(dāng)再次按下 K4鍵時,將經(jīng)過判斷清零,重新開始, 以此來實現(xiàn)按鍵 K4可以更換鬧鐘的功能,同時更改鬧鐘時間的功能。4.7 1602LCD液晶顯示VSS引腳接地,VDD提供電源,VEE接滑動變阻器來控制液晶屏的對比度。RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(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é)合使用才會得到想要的結(jié)果。5實

37、驗與結(jié)果分析5.1實驗的調(diào)試設(shè)計要求:一個以單片機(jī)為核心的可編程作息時間控制器,能夠按照給定的時間模擬控制,實現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示),同時具備日期和時鐘顯示。首先運(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),這樣可以及時觀察到自己所編的程序是否符合自己的目的,當(dāng)出現(xiàn)問題時及時處理,可以避免當(dāng)

38、有大量問題后無法找出錯誤的地方, 可以提高編程的效率,也有利于最終將程序編寫出來。5.2實驗的結(jié)果訪L1.1 二闿 . f -ran ix七宀3孔匚耳知時日寸忡幕盤同砂IT R首說賢wIHMH W圖5.3廣播定時響鬧時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上課定時響鬧LCO1-uk a

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

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

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

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

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

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

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

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

47、器控制端II延時函數(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”;定義初始上電時液晶默認(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;/四個按鍵 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ù)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 控制鬧鐘響起時,按下 K4停止 鬧鐘響鬧的標(biāo)記f

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

53、初始化,設(shè)置16*2顯示。5*7點陣,8位數(shù)據(jù)接口設(shè)置開顯示,不顯示光/寫一個字符后地write_com(0x0c);/ write_com(0x06);址指針自動加1write_com(0x01); write_com(0x80);到第一行,第一個字處 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);寫出時間顯示部分的兩個冒號write_date(':'); write_com(0x80+0x40+14);write_date(''); write_com(0x80+0x40+15);write_date('');write_sfm(12,fen);/送去液晶顯示秒分時write_sfm(9,shi);TM0D=0x01; /設(shè)置定時器0為工作方式1 TH0=(65536-50000)/256;定時器裝初值TL0=(65536-50000)%256;EA=1;/開總中斷ET0=1;/開定時器0中斷TR0=1;void xianshi()/系統(tǒng)時間顯示write_com(0x80+0x40

溫馨提示

  • 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

提交評論