2020年畢業(yè)設計基于單片機的可編程作息時間控制器設計_第1頁
2020年畢業(yè)設計基于單片機的可編程作息時間控制器設計_第2頁
2020年畢業(yè)設計基于單片機的可編程作息時間控制器設計_第3頁
2020年畢業(yè)設計基于單片機的可編程作息時間控制器設計_第4頁
2020年畢業(yè)設計基于單片機的可編程作息時間控制器設計_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、(時間管理)畢業(yè)設計基于單片機的可編程作息時間控制器設計20xx年xx月多年的企業(yè)落詢國問經驗,經過實戰(zhàn)驗證可以落地執(zhí)i推電越管理方案值得您下竟照盲!揚州大學能源與動力工程學院題目:可編程作息時間控制器設計課程:單片機原理及應用課程設計專業(yè):電氣工程及其自動化班 級:姓 名:學 號:第一部分單片機原理及應用課程設計任務書一、課題名稱詳見單片機課程設計題目(一)»:主要是軟件仿真,利用 proteus軟件進行仿真設計并調試;單片機課程設計題目(二)»:主要是硬件設計,利用單片機周立功實驗箱進行設計并調試。二、課程設計目的課程設計是課程教學中的一項重要內容,是達到教學目標的重要

2、環(huán)節(jié),是綜合性較強的實踐教學環(huán)節(jié),它對幫助學生全面牢固地掌握課堂教學內容、培養(yǎng)學生的實踐和實際動手能力、提高學生全面素質具有很重 要的意義。單片機原理及應用是一門理論性、實用性和實踐性都很強的課程,課程設計環(huán)節(jié)應占有更加重要的地位。單片機原理及應用課程設計的目的是讓學生在理論學習的基礎上,通過完成一個涉及 mcs-51單片機多種資源應用并具有綜合功能的小系統(tǒng)目標板的設計與編程應用,使學生不但能將課堂上學到的理論知識與實際應用結合起來,而且能進一步加深對電子電路、電子元器件等知識的認識與理解,同時在軟件編程、排錯調試、相關軟件和儀器設備的使用技能等方面得到較全面的鍛煉和提高。為今后能夠獨立進行某

3、些單片機應用系統(tǒng)的開發(fā)設計工作打下一定的基礎。通過單片機硬件和軟件設計、調試、整理資料等環(huán)節(jié)的培訓,使學生初步掌握工程設計方法和組織實踐的基本技能,逐步熟悉開展科學實踐的程序和方法。三、課程設計內容設計以89c51單片機和外圍元器件構成的單片機應用系統(tǒng),并完成相應的軟硬件調試。1 .系統(tǒng)方案設計:綜合運用單片機課程中所學到的理論知識,學生根據(jù)所選課題的任務、要求和條件進行總體方案的設計。2 .硬件電路設計:對方案中以單片機為核心的電路進行設計計算,包括元器件的選擇和電路參數(shù)的計算,并畫出總體電路圖。3 .軟件設計:根據(jù)已設計出的軟件系統(tǒng)框圖,用匯編語言或c51編制出各功能模塊的子程序和整機軟件

4、系統(tǒng)的主程序。4 .調試:在單片機 eda仿真軟件環(huán)境proteus下進行仿真設計并調試;或在單片機周立功實驗箱上進 行相關設計并調試。四、課程設計要求設計一個以單片機為核心的可編程作息時間控制器:按照給定的時間模擬控制,實現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示),同時具備日期和時鐘顯示。五、進度安排序號內容天數(shù)1布置任務,熟悉課題要求0.52總體方案確定,硬件電路設計1.53軟件編程1.54proteus仿真,或在周立功實驗箱上調試25總結,撰寫課程設計報告1.5七、課程設計報告內容:總結設計過程,寫出設計報告,設計報告具體內容要求如下:1 .課程設計的目和設計的內容。2 .課程設計的要求。

5、3 .控制系統(tǒng)總框圖及系統(tǒng)工作原理。4 .控制系統(tǒng)的硬件電路連接圖,電路的原理。5 .軟件設計流程圖及其說明。6 .電路設計,軟件編程、調試中遇到的問題及分析解決方法。7 .實驗結果及其分析。8 .體會。第二部分1課題簡介11.1 課題目的11.2 課題要求12可編程作息時間控制器方案設計 12.1 系統(tǒng)總體介紹12.2 系統(tǒng)整體框圖 12.3 系統(tǒng)工作原理13可編程作息時間控制器硬件電路及芯片介紹 23.1 at89c51 單片機23.2 1602lcd液晶顯示器33.3 其他重要元件43.4 硬件電路設計圖 54可編程作息時間控制器軟件編程設計 54.1 系統(tǒng)初始化54.2 系統(tǒng)時間校正6

6、4.3 系統(tǒng)時間設定74.4 作息時間設定74.5 響鈴處理94.6 邏輯控制1.04.7 1602lcd液晶顯示1.15實驗與結果分析1.15.1 實驗的調試.1.15.2 實驗的結果.125.3 實驗的問題146小結與體會151課題簡介1.1 課題目的由單片機at89c51芯片和lcd顯示器,輔以必要的的電路,構成一個可編程作息時間控制器。電子鐘 采用采用單片機來完成,lcd顯示“時”,“分”,led閃動來做秒計數(shù),定時時間到能發(fā)出相應的提示,從而 能夠實現(xiàn)作息時間控制?,F(xiàn)在是自動化高度發(fā)達的時代,特別是電子類產品都是靠內部的控制電路來實現(xiàn)對 產品的控制,達到自動運行的目的,這就需要我們這

7、里要做的設計中的電器元件及電路的支持。1.2 課題要求(1)在keil uvision 和proteus 上編寫軟件完成設計。(2)以at89c51單片機為核心結合字符型lcd顯示器的可編程作息時間控制器。(3)按照給定的時間模擬控制,實現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示),同時具備日期和時鐘顯示。(4)上機調試程序。(5)寫出設計報告。2可編程作息時間控制器方案設計2.1 系統(tǒng)總體介紹可編程作息時間控制器是由簡單的一路鬧鐘的基礎上增加至四路可調鬧鐘,從而實現(xiàn)依次執(zhí)行作息時間的提醒任務。系統(tǒng)主要是由時間程序和鬧鐘程序所構成,由顯示模塊、時鐘模塊以及鬧鐘模塊三大部分組成。其中時鐘運算模塊要對

8、時、分、秒的數(shù)值進行操作,并且秒算到60時,要自己清零并向分進 1;分算到60時,要自己清零并向時進 1 ,時算到24時,要清零,這樣,才能循環(huán)記時。并在不同狀態(tài)下使得四個按鍵有著不同的功能,從而實現(xiàn)系統(tǒng)時間的調整,同時可以在不同狀態(tài)下可以調整鬧鐘的時間。當定時到達時lcd將顯示出現(xiàn)在的鬧鐘是哪一路,響鈴一分鐘,并可以通過按鍵提前結束鬧鐘,恢復到時間顯示狀態(tài)。2.2 系統(tǒng)整體框圖2.3 系統(tǒng)工作原理使用at89c51單片機結合字符型 lcd顯示器設計一個簡易的可編程作息時間控制器,若lcd選擇有背光顯示的模塊,在夜晚或黑暗的場合中也可使用。程序執(zhí)行后工作指示燈led閃動,表示程序開始執(zhí)行,同時

9、顯示系統(tǒng)時間。作息時間控制器是由4路可調鬧鐘組成,從而實現(xiàn)打鈴等功能。當四路鬧鐘中的任一路到時,均會點亮燈、打鈴。其中操作鍵k1k4的功能分別為:設置限制的時間 /時的調整、顯示鬧鐘設置的時間/分的調整、設置鬧鐘的時間 /設置完成、鬧鐘更換。3可編程作息時間控制器硬件電路及芯片介紹系統(tǒng)主要是由at89c51單片機、1602lcd液晶顯示器以及其他重要元件組成,按鍵作為系統(tǒng)的控制輸入端,可以進行時間、鬧鐘等內容的設定,并通過液晶顯示器顯示出時間等內容。3.1 at89c51 單片機本設計的核心硬件就是 8051芯片,這里選擇了 at89c51,at89c51 是一種帶4k字節(jié)閃爍可編程可擦012

10、34567 p1p1p1p1p1p1p1p1)的低電壓,高性能除只讀存儲器(fperom falsh programmable and erasable read only memorycmos8位微處理器,俗稱單片機。該器件采用atmel高密度非易失存儲器制造技術制造,與工業(yè)標準的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個芯片中,atmel的at89c51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。圖3.1 at89c51弓唧圖引腳及其功能:p0 口: p0 口為一個8位漏級開路雙 向i/o 口,每腳可吸收8ttl門電流。當p

11、1 口的管腳第一次寫1 時,被定義為高阻輸入。 p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在 fiash編程時,p0 口作為原碼輸入口,當 fiash進行校3時,p0輸出原碼,此時 p0外部必須被拉高。p1 口: p1 口是一個內部提供上拉電阻的8位雙向i/o 口,p1 口緩沖器能接收輸出 4ttl門電流。p1口管腳寫入1后,被內部上拉為高,可用作輸入, p1 口被外部下拉為低電平時,將輸出電流,這是由于內 部上拉的緣故。在 flash編程和校驗時,p1 口作為第八位地址接收。p2 口: p2 口為一個內部上拉電阻的 8位雙向i/o 口,p2 口緩沖器可接收,輸出 4個

12、ttl門電流,當 p2 口被寫“ 1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2 口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。p2 口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,p2 口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,p2 口輸出其特殊功能寄存器的內容。 p2 口在flash編程和校驗時接收高八位地址信號和 控制信號。p3 口: p3 口管腳是8個帶內部上拉電阻的雙向i/o 口,可接收輸出4個ttl門電流。當p3 口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部

13、下拉為低電平,p3 口將輸出電流(ill)這是由于上拉的緣故。p3 口也可作為 at89c51的一些特殊功能口,如下所示:p3 口管腳備選功能p3.0 rxd (串行輸入口)p3.1 txd (串行輸出口)p3.2 /into (外部中斷 0)p3.3 /int1 (外部中斷1)p3.4 t0 (記時器0外部輸入)p3.5 t1 (記時器1外部輸入)p3.6 /wr (外部數(shù)據(jù)存儲器寫選通)p3.7 /rd (外部數(shù)據(jù)存儲器讀選通)p3 口同時為閃爍編程和編程校驗接收一些控制信號。rst:復位輸入。當振蕩器復位器件時,要保持rst腳兩個機器周期的高電平時間。ale/prog :當訪問外部存儲器

14、時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率白1 1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個 ale脈沖。如想禁止 ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行 movx , movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,

15、這兩次有效的/psen信號將不出現(xiàn)。ea/vpp :當/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh ),不管是否有內部程序存儲器。注意加密方式 1時,/ea將內部鎖定為 reset;當/ea端保持高電平時,此間內部程序存儲器。在 flash編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1 :反向振蕩放大器的輸入及內部時鐘工作電路的輸入。xtal2 :來自反向振蕩器的輸出。p1.0 口接 k1 按鍵,p1.1 口接 k2 按鍵,p1.2 口接 k3 按鍵,p1.3 口接 k4 按鍵,p2.0 口接 rs 口,p2.1 口接rw 口,p2.2 口接e 口,p2

16、.3 口接發(fā)光二極管 d2陽極,p2.4 口接發(fā)光二極管 d1陽極,p2.5 口接電 阻r3, p3 口的8個口依次和 lcd的數(shù)據(jù)口 d0d7.3.2 1602lcd 液晶顯示器lm016l液晶模塊采用hd44780 控制器。hd44780 具有簡單而功能較強的指令集,可以實現(xiàn)字符移動、閃爍等功能。lm016l 與單片機 mcu (microcontroller unit )通訊可采用8位或者4位并行傳輸兩 種方式。hd44780 控制器由兩個8位寄存器、指令寄存器(ir)和數(shù)據(jù)寄存器(dr)、忙標志(bf)、顯 示數(shù)據(jù) ram (ddram )、字符發(fā)生器 rom (cgrom )、字符發(fā)

17、生器 ram (cgram )、地址計數(shù)器(ac)。 ir用于寄存指令碼,只能寫入不能讀出;dr用于寄存數(shù)據(jù),數(shù)據(jù)由內部操彳自動寫入 ddram和cgram , 或者暫存從ddram 和cgram 讀出的數(shù)據(jù)。bf為1時,液晶模塊處于內部處理模式,不響應外部操作指令和接受數(shù)據(jù)。ddram 用來存儲顯示的字符,能存儲80個字符碼。cgrom 由8位字符碼生成5*7點 陣字符160種和5*10點陣字符32種,8位字符編碼和字符的對應關系,可以查看參考文獻 3中的表4。 cgram 是為用戶編寫特殊字符留用的,它的容量僅64字節(jié)??梢宰远x8個5*7點陣字符或者4個5*10點陣字符。ac可以存儲dd

18、ram 和cgram 的地址,如果地址碼隨指令寫入 ir,則ir自動把地址碼裝入 ac,同時選擇ddram 或者cgram 單元。 lm016l 液圖3.2 lcd1602引腳圖晶模塊的引腳功能見表:第1腳:vss為地電源。第2腳:vdd接5v正電源。第3腳:vl為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10k的電位器調整對比度。第4腳:rs為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:r/w為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當 rs和r/w共同為低電 平時可以寫入指令或者顯示地址

19、,當 rs為低電平r/w為高電平時可以讀忙信號,當 rs為高電平r/w為 低電平時可以寫入數(shù)據(jù)。第6腳:e端為使能端,當e端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:d0d7為8位雙向數(shù)據(jù)線。將respack-8的1 口接電源,28 口順序和p3 口相連接,并和lcd的數(shù)據(jù)口 d1d7相接,vss接地, vdd 接電源,vee接滑動變阻器, rs 口接p2.0 口,rw 口接p2.1 口,e 口接p2.2 口。3.3 其他重要元件圖3.3獨立式鍵盤(1)獨立式鍵盤的接口電路:在單片機應用系統(tǒng)中,有時只需要幾個簡單的按鍵向系統(tǒng)輸入信息。這時,可將每個按鍵接在一根i/o接口線上,這種方

20、式的連接稱為獨立式鍵盤。每個獨立式按鍵單獨占有一根i/o接口線,每根i/o接口線的工作狀態(tài)不會影響到其他i/o接口線。這種按鍵接口電路配置靈活,硬件結構簡單,但每個按鍵必須占用一根i/o接口線,i/o接口線浪費較大。故只在按鍵數(shù)量不多時采用這種按i/o接口線有確定的高電鍵電路。在此電路中,按鍵輸入都采用低電平有效。上拉電阻保證了按鍵斷開時, 平。當i/o接口內部有上拉電阻時,外電路可以不配置上拉電阻。(2)蜂鳴器:將蜂鳴器的一端電源,另一端接至晶閘管集電極,當需要鬧鐘響時,p2.5將發(fā)出有規(guī)律的電平使得晶閘管導通,從而使得蜂鳴器發(fā)出聲響。3 3) respack-8:上拉電阻鍵k1k4分別與單

21、片機的 p1.0p1.3 口相接。3.4硬件電路設計圖圖3.4系統(tǒng)整體電路圖將respack-8的1 口接電源,28 口順序和p3 口相連接,并和lcd的數(shù)據(jù)口 d1d7相接。發(fā)光二極 管d1和p2.4 口相連接用以顯示秒計時, 發(fā)光二極管和p2.3 口相連接用以顯示鬧鐘時的廣播, 按鍵k1k4 分別與單片機的 p1.0p1.3 口相接,以實現(xiàn)按鍵的多功能使用。4可編程作息時間控制器軟件編程設計可編程作息時間控制器軟件編程主要包括系統(tǒng)初始化、系統(tǒng)時間校正、系統(tǒng)時間設定、作息時間設定、響鈴處理、邏輯控制以及1602lcd液晶顯示,整個程序中響鈴的合理處理以及顯示部分是核心部分,只有處理好鬧鐘的及

22、時響應才會使得整個可編程作息時間控制器按照預定的設計進行工作,同時各個模塊邏輯上 合理分配又將是整個功能實現(xiàn)的基礎。4.1系統(tǒng)初始化sbit k1=p1a0;sbit k4=p1a3;sbit k2=p1a1;sbit rs=p2a0;sbit k3=p1a2;sbit rw=p2al;sbit lcden=p2a2;sbit beep=p2a5;sbit led2=p2a3;th0=(65536-50000)/256;sbit led=p2a4;tl0=(65536-50000)%256;此段程序主要是是定義電路的外部接口,包括k1k4 按鍵,lcd的rs 口、rw 口、廣播控制端 led2

23、、發(fā)光二極管控制端led以及蜂鳴器控制端 beep。將定時器0的工作模式選擇為工作方式1 ,同時給定時器裝初值,并且開始計數(shù)。4.2系統(tǒng)時間校正lcd顯示圖4.1系統(tǒng)時間校正流程圖程序: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_sfm(9,shi);write_sfm(12,fen);首先初始化時定時器開始工作,當計時時間到時進入中斷服務,由于方式1沒有自動裝初值的功能,

24、因此需再次裝入初值,每一次所定的時間為50ms ,通過軟件計數(shù)的方法,當計數(shù)達到20次時剛好1秒鐘,如果計數(shù)不到20次,則再次給定時器裝入初值,直到計數(shù)達到20次,把計數(shù)初值清零,并再次向計數(shù)器裝初值,重復執(zhí)行之前操作,同時分加一,并顯示,如果分為60時則不顯示,先清零然后將時加一,再顯示分,如果時不是 24時,則直接通過lcd顯示出來,如果時剛好為 24時,則現(xiàn)需要清零,然后在用lcd顯不出來。4.3系統(tǒng)時間設定圖4.2改變小時流程圖程序:if(k1=0)圖4.3改變分鐘流程圖tr0=0;while(!k1)if(k1=0)shi+;if(fen=60)if(shi=24) shi=0;fe

25、n=0;if(k2=0)if(k3=0)while(!k2);tr0=1;fen+;當k1被按下時,則修改系統(tǒng)的的時間,同時定時器停止工作。開始時,光標停留在分鐘上,當再次按下k1時,光標將會跳到小時并且小時位的時間將會加一,如果時位的數(shù)等于24時,則自動清零,從零開始再往上加,如果按下 k2鍵按下則分鐘自動加一,如果分鐘達到60時則自動清零,從零開始往上加,并通過lcd顯示出此時的狀態(tài)。當按下 k3鍵時,則退出系統(tǒng)時間的更改,并啟動定時器工作,開始通過lcd在第二行顯示出修改后的時間。此程序主要的作用就是通過人為的方法來設定系統(tǒng)的時間,使得系統(tǒng)時間滿足實際需要。4.4 作息時間設定圖4.4改

26、變鬧鐘定時小時流程圖圖4.5改變鬧鐘定時分鐘流程圖if(shi2=24)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);程序: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);wr

27、ite_sfm(9,shi);if(k1=0)while(!k1);shi1+;由于可編程時間控制器是由四路鬧鐘構成的,所以只要通過邏輯上的先后順序便可以實現(xiàn),并且這四路鬧鐘設定上都是相同的,因此在這里將四路鬧鐘選擇其中的第一路做介紹。當通過k4鍵進入鬧鐘設定電路后,如果處于廣播的鬧鐘時間設定時,此時如果沒有按下任何開關鍵,lcd將顯示此時的鬧鐘標志“ gb”并且再其后面顯示現(xiàn)在的系統(tǒng)時間,在沒有按下 k3鍵之前,如果按下k2鍵,則lcd將顯示此處鬧鐘時間,并且在其前面有此路標志,如“ gb”,松開按鍵k2時,lcd將顯示之前的狀態(tài);如果按下首次按下k3鍵,則開始修改鬧鐘的時間,此時光標在分鐘

28、上閃爍,此時按下k2鍵則修改鬧鐘的分鐘,如果分等于60時,則自動清零,否則繼續(xù)往上加;如果按下k1鍵則修改鬧鐘的小時,如果小時數(shù)等于24 ,則自動清零,否則繼續(xù)往上加。當?shù)诙伟聪?k3鍵,則完成次鬧鐘的設定, 并顯示之前的狀態(tài),如果繼續(xù)按k4鍵則切換到下一 路鬧鐘,也可以進行上述的操作,或者返回系統(tǒng)時間界面。4.5 響鈴處理圖4.6響鈴處理流程圖程序:if(fen=fen1)&&(shi=shi1)|(fen=fen2)&&(shi=shi2)|(fen=fen3)&&(shi=shi3)|(fen=fen4)&&(shi=sh

29、i4)&&(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=shi2)&&(flag2=1)if(fen=fen2)&&(shi=shi2)&&(flag2=0)|(fen-1=fen2)&&

30、;(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)&&(shi=shi4)&&(flag2=1)if(fen=fen4)&&(shi=shi4)&&(flag2=0)|(fen-1=fen4)&

31、amp;&(shi=shi4)&&(flag4=0)if(k4=0&&flag3=0)當四個定時鬧鐘任意一路到達時,在沒有按下響鈴終止鍵k4時,flag2者b等于1,此時鬧鐘響起,同時使彳# flag3等于0。在鬧鐘響鬧完一個周期后將繼續(xù)向下執(zhí)行,并且根據(jù)以后程序的判定是哪一路鬧鐘在響鬧,執(zhí)行這一路所要求的內容,但是不論哪一路時間到都會響鈴并且燈閃,不同的是根據(jù)判斷選擇出時間到的那一路并通過 lcd顯示出來鬧鐘時間及某路鬧鐘;此時若按下k4鍵,則使得flag2等于0,當進行是否鬧鐘響鬧時將會不在響應,也就是鬧鐘被手動關閉,從而不需要一定要響鈴一分鐘后在關

32、閉鬧鐘,實現(xiàn)手動關斷鬧鐘的功能。當鬧鐘關斷過后將及時跳出,并且使得lcd顯示當前的時間。使得可編程時間控制器能夠在響鈴時能夠顯示當前的鬧鈴及時間,同時可以手動關斷鬧鈴,并且當鬧鈴關斷過后可以跳出當前顯示返回到系統(tǒng)時間。4.6邏輯控制程序:圖4.7邏輯控制流程圖if(k4num=2) shangke();flag4=1; if(k4num=3)xiake();flag4=1;if(k4num=4)dengkong();flag4=1; clock();因為在鬧鐘響鬧時k4鍵將會作為鬧鐘的k4鍵才會早為鬧鐘的更換,同時變量while(1)if(k4=0)&&(flag3=1) k4

33、num+;if(k4num=5)k4num=0;if(k4num=0)time();flag4=0;if(k4num=1)guangbo();flag4=1;只有當沒有一路鬧鐘響鬧時才會執(zhí)行此程序, 停止的功能鍵使用,所以只有在沒有鬧鐘響鬧時,k4num 將作為k4鍵所處的鬧鐘或者系統(tǒng)時間區(qū)別出來,以實現(xiàn)邏輯上的合理。系統(tǒng)剛啟動時,按鍵k4處于系統(tǒng)時間狀態(tài),在此狀態(tài)下可以利用之前所介紹的功能進行所需要的修改,當?shù)谝淮伟聪?k4鍵時,就會進入廣播定時的控制口,此時可以根據(jù)需要修改所要定的時間,并可以顯示自己所定的鬧鐘時間,再次按下k4鍵時,將會進入上課定時的鬧鐘,和之前的鬧鐘一樣,可以進行相同的

34、操作,當再次按下k4鍵時將進入下課鬧鈴狀態(tài),然后將要進入的的是燈光控制定時,此時knum4為4,當再次按下 k4鍵時,將經過判斷清零,重新開始,以此來實現(xiàn)按鍵k4可以更換鬧鐘的功能,同時更改鬧鐘時間的功能。4.7 1602lcd 液晶顯示vss引腳接地,vdd提供電源,vee接滑動變阻器來控制液晶屏的對比度。rs為寄存r/w為讀寫信號線,高電器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。平時進行讀操作,低電平時進行寫操作。當rs和r/w共同為低電平時可以寫入指令或者顯示地址,當rs為低電平r/w為高電平時可以讀忙信號,當 rs為高電平r/w為低電平時可以寫入數(shù)據(jù)。e端為使能端,當e端

35、由高電平跳變成低電平時,液晶模塊執(zhí)行命令。程序:void write_com(uchar com)rs=0;rw=0;lcden=0;p3=com;lcden=1;lcden=0; 液晶寫命令函數(shù)void write_date(uchar date)rs=1;rw=0;lcden=0;p3=date;lcden=1;lcden=0; 液晶寫數(shù)據(jù)函數(shù)當需要將內容顯示到 lcd顯示器上之前,首先要向液晶顯示器輸入寫命令函數(shù),有上 硬件分析可以得到 lcd液晶顯示上一排地址從 80h8fh , 一共16位,下面一排地址從 c0hcfh,同樣是16位,所以在進行液晶顯示之前首先確定要將結果在哪一位上顯

36、示,然 后在調用液晶寫數(shù)據(jù)函數(shù),只有兩者結合使用才會得到想要的結果。5實驗與結果分析5.1實驗的調試設計要求:一個以單片機為核心的可編程作息時間控制器,能夠按照給定的時間模擬控制,實現(xiàn)廣播、上下課打鈴、燈光控制(屏幕顯示),同時具備日期和時鐘顯示。首先運用keil軟件編輯程序,按上圖要生成目標代碼文件,不斷地調試程序。聯(lián)調:加載目標代碼文件打開元器件單片機屬性窗口,在“ program file ”欄中添加上面編譯好的目標代碼文件“keil-17.hex 在"clock frequency ”欄中輸入晶振頻率為11.0592mhz 。每一小塊程序編寫過后都進行聯(lián)調,這樣可以及時觀察到

37、自己所編的程序是否符合自己的目的,當出現(xiàn)問題時及時處理,可以避免當有大量問題后無法找出錯誤的地方,可以提高編程的效率,也有利于最終將程序編寫出來。5.2 實驗的結果圖5.3廣播定時響鬧時hleak5ftmirniibjir w 5-n1nesl產方七4# m一14al<lh ljki ftl rmfl j>r k -.r irr;34.id - vxutl i*e!*.*1?-eetk圖5.4上課定時響鬧圖5.5下課定時響鬧口jfek* 矍*型s1市l(wèi)uim*? ta-1-cl vtil門ecrain,ifnt3,rh.i.t chcnflleshtcng一“!-,-圖5.6燈控定

38、時響鬧圖5.7上課定時設定5.3 實驗的問題實驗中出現(xiàn)問題最多的就是 lcd顯示,又是顯示出亂碼,又是是不斷閃爍的輸入標題, 有的則是光標的來來回回閃爍而不是固定在某一位,這些問題基本上都是由于lcd刷新的問題上,有時候由于邏輯上的先后順序沒有做好,有的完全是由于缺少必要的邏輯區(qū)分,使得顯示在程序執(zhí)行的過程中 lcd不單單刷新了我所需要的內容,也將我此時不需要的內容 也刷新出來,所以屏幕上的內容是閃爍的,因此我加了4個基本變量進行控制,以此來實現(xiàn)所需要的刷新。同時整個延時又是非常重要的,在進行按鍵設定時這個問題就出現(xiàn)了,有時候按一下會會進行幾個需要的操作,使得結果不符合我的要求,所以應用剛開始

39、編寫程序 時不斷適當增加延時使得程序漸漸符合要求。6小結與體會通過此次的單片機課程設計讓我學到了許多新的知識,讓我受益匪淺,其中對1602lcd液晶顯示器有了非常深刻的認識。剛開始分到課題時,我便開始研究這個課題,由于我們的課題是在題目4的基礎上改過來的,因此我先研究了一下題目4的要求以及原理,再結合我們的課題讓我對這個課題有了一些了解,下午時我們和大多數(shù)同學一樣先將電路圖畫了出來,但是當我做完這個課題過后,我很同意老師的意見,不應當立即畫電路圖,因為我們對整個課題還不是很了解,對于proteus軟件也不懂,結果就是我們用了一下午只畫了一張圖,而且對于整個課程設計課題的理解毫無幫助。由于我們對

40、課題的理解有困難,不能夠將課題所要求的內容完全弄明白,因此我們向李老師尋求幫助,幫我們把我們的課題分析了一下,聽過之后我們基本已經理解了這個課題,但是對于具體實施還是沒有頭路,當我在實驗室糾結1602lcd液晶顯示器到底是如何工作時,夏老師告訴我proteus軟件中就有相關的例子,于是我便通過自己所找到的資料以及這個例子自學了lcd顯示器,由于例子是用 c語言寫的,所以最終我也選擇使用c語言來編寫程序,但是在以后我所遇到的困難遠遠不止這些。首先我要自學相關的c語言,同時我在網上找到了一些相關的資料學習了一下,并結合李老師對課題的分析, 讓我對這個課題有了自己的思路。首先,我就把我的思路認真的整

41、理下來,然后規(guī)劃好每一塊所要完成的任務,然后再用 keil軟件編寫出來,在進行聯(lián)調,每一小步的調試都必須做 到沒有問題,只有這樣在總的聯(lián)調時不會因為問題太多而做不出來。在以后的幾天里我都在學習和使用c語言,讓我對lcd顯示器有了更多的認識,但是在整個程序編寫過程中問題基本都處在lcd顯示上,一遍遍的嘗試后總會出現(xiàn)一些問題,曾經我也因為最后的一點點問題想向老師請教,最后自己沒有解決的時候甚至想放棄,但是最終我還是堅持下來, 并最終完成了程序的基本要求,并且通過了李老師的第一次檢查,并對李老師提出的一些不滿足的地方進行了修改,但是這些修改在進過之前所設計中遇到的問題來說也挺難得,但是我很快就解決掉

42、了,因為我對自己的程序以及l(fā)cd顯示器有了好好地認識,從而最后實現(xiàn)了比較好的結果,當李老師驗收過后感到非常的高興,在此我非常感謝李老師對我設計過程中提供的幫助,以及最后對我設計成果的認可。雖然在這一周半的課程設計中每時每刻都讓我在思考我的課題,同時由于相關網絡資源的不足曾經使我在用匯編語言還是應用c語言徘徊過,但是當我選擇其中一個時我就堅持了下來,并通過不斷地努力在不斷地更改程序,可以說整個課程設計是非常的痛苦的,因為我曾經想放棄過,但是我最終還是堅持了下來, 并通過自己堅持不懈的努力完成此次課題任務。 雖然整個課程設計的過程有點痛苦,但是當我看到自己的最終成果時還是很開心,因為我這幾天的努力

43、沒有白白浪費, 培養(yǎng)了我獨立思考的能力,提高我的自學以及應用能力,這將是我以后學習生活的非常寶貴的經歷。在編寫程序的過程中每一塊的認真編寫才為以后整個程 序的完成奠定基礎,正如我們在平時的生活中一樣,只有不斷地積累,才會為以后更大的收獲打下堅實的基礎, 而此次的課程設計就可以當做我的一次小小的積累,可以說這是我大學以來最讓我糾結的一次課程設計,也是第一個讓我有放棄的念頭的課程設計,當我最終調出程序的那一刻讓我明白, 有時候在那自暴自棄還不如竭盡自己的權力去解決這個問題,在這過程中的確會有許多麻煩, 有時會把本來沒有的問題弄出來,有時經過一次次的調試還是達不到自己的要求,但是只要我們堅持住,不放

44、棄還是會解決的?;厥走@一周多的單片機課程設計,發(fā)現(xiàn)自己的程序按模塊劃分還不是很難,和當初剛剛拿到題目時的各種不明白、 各種不懂發(fā)現(xiàn)自己真的收獲了很多,并且在看看相關類似的課題時能夠基本找出基本的設計思路,對于用到602lcd液晶顯示器相關的內容能夠做出相關的反應,這個顯示器曾經讓我絞盡腦汁依舊不懂,曾經讓我的程序漏洞百出,但是最終我征服了它,這是我的一大收獲。同時在李老師和夏老師的督促下能夠按時到達實驗室,從而合理的分配和合理使用了課程設計的時間。最后,我要非常感謝李老師和夏老師在課程設計中提供的幫助,以及李老師最后對我課程設計結果的肯定。參考文獻1張毅剛主編,單片機原理及應用,北京:高等教育

45、出版社,20042陳濤編著,單片機應用及c51程序設計,北京:機械工業(yè)出版社,20083周潤景主編,proteus入門實用教程,北京:機械工業(yè)出版社,20074皮大能主編,單片機課程設計指導書,北京:北京理工大學出版社,20105樓然苗主編,單片機實驗與課程設計(proteus仿真版),浙江:浙江大學出版社2010附錄設計程序uchar code deng="lightinguchar code alarm_00="gbuchar code alarm_11="skuchar code alarm_22="xkuchar code alarm_33=&q

46、uot;dk函數(shù)rs=0;rw=0;lcden=0;#include<reg52.h>#define uint unsigned int#define uchar unsigned charuinti,miao,fen,fen1,fen2,fen3,fen4,shi,shi1,shi2,shi3,shi4,flag1,flag2,flag3,flag4,flag5,aa,k1num,k2num,k3num,k4num,n;/k1num-k1按鍵被按下的標記變量,k2num-k2 按鍵被按下的標記變量,k3num=0-k3按鍵被按下的標記變量uchar code table尸&quo

47、t;h.i.t china”;/定義初始上電時液晶默認顯示狀態(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"sbit k1=p1a0;/ 四個按鍵sbit k2=p1a1;sbit k3=p1a2;sbit k4=p1a3;sbit rs=p2a0;sbit rw=p2al;/燈光控制

48、端sbit lcden=p2a2;sbit led2=p2a3;/廣播控制端sbit led=p2a4;/發(fā)光二極管控制端sbit beep=p2a5;/蜂鳴器控制端void delay(uint z)/延時函數(shù)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)/液晶寫命令p3=com;delay(5);lcden=1;delay(5);lcden=0; void write_date(uchar date)/ 液晶寫數(shù)據(jù)函數(shù) rs=1;rw=0;lcden=0;p3=date;delay(5);l

49、cden=1;delay(5);lcden=0; void write_sfm(uchar add,uchar date)/液晶寫時分秒函數(shù)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+ge);void init()/初始化函數(shù)uint num;寫液晶的循環(huán)控制變量aa=0;/中斷次數(shù)標志k1num=0;/k1按鍵被按下的標記變量k2num=0;/k2按鍵被按下的標記變量k3num=0;/k3按鍵被按下的標記變量k4num=0; /k4按鍵被按下的標記變量flag1=1; /控制lcd屏

50、刷新的變量flag2=1;/ 控制鬧鐘響鬧開啟關閉的標記flag3=1;/ 控制鬧鐘響起時,按下k4停止鬧鐘響鬧的標記flag4=1;/進入鬧鐘設置時的標記變量flag5=1;/ 進入時間設置時的標記變量led=1;發(fā)光二極管初始化led2=0;/廣播初始化rw=0;n=100;系統(tǒng)啟動時,鬧鐘時間到發(fā)出的聲音為連續(xù)三次發(fā)出“嘩”的一聲miao=0;/系統(tǒng)初始化時間write_date(0x30+shi);shi=7;fen=0;fen1=6;/初始化鬧鐘的時間shi1=7;fen2=8;/初始化鬧鐘的時間shi2=7;fen3=10;/初始化鬧鐘的時間shi3=7;fen4=12;/初始化鬧

51、鐘的時間shi4=7;beep=0;/蜂鳴器初始化lcden=0;/液晶使能端初始化write_com(0x38); /1602 液晶初始化,設置16*2顯示。5*7點陣,8位數(shù)據(jù)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);tmod=0x01;

52、/設置定時器0為工作方式1接口write_com(0x0c);/設置開顯示,不顯示光write_com(0x06); / 寫一個字符后地址指針自動加1write_com(0x01);/ 顯示清0數(shù)據(jù)指針清0write_com(0x80); /將數(shù)據(jù)指針定位th0=(65536-50000)/256;定時器裝初值tl0=(65536-50000)%256;ea=1;開總中斷et0=1; /開定時器0中斷tr0=1; 到第一行,第一個字處for(num=0;num<15;num+)示鬧鐘標示:h.i.t china write_date(tablenum);delay(10);void xi

53、anshi() /系統(tǒng)時間顯示/ 顯 write_com(0x80+0x40);for(i=0;i<9;i+) write_date(table2i);write_com(0x80+0x40+11)寫出時間 tr0=0;關閉計數(shù)器0顯示部分的兩個冒號write_com(0x0f); /光標開始閃爍write_date(':');write_com(0x80+0x40+14);write_date('');write_com(0x80+0x40+15);write_date('');write_sfm(12,fen); /送去液晶顯示秒分時write_sfm(9,shi); void time()/更改系統(tǒng)時間if( (k1num=0)&&(flag3=1)write_com(0x80+0x40);write_com(0x80+0x40+13);if(k1=0&&k1num=1)判斷 k1按下,修改系統(tǒng)時間的小時 delay(5);if(k1=0)write_com(0x80+0x40+10); 光標定位到小時位置k1num=1; / 置 k1num=1w

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論