液晶 LCD電子鐘設計論文_第1頁
液晶 LCD電子鐘設計論文_第2頁
液晶 LCD電子鐘設計論文_第3頁
液晶 LCD電子鐘設計論文_第4頁
液晶 LCD電子鐘設計論文_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 液晶lcd電子鐘設計 姓 名: 余興強、林貞濤、林環(huán)宇 專 業(yè): 光電子專業(yè)技術與科學 輔導教師: 張育釗、劉偉、陳邦 完成日期: 2013 年 8 月 2 日 目錄引言、. .41、 方案設計及方案論證 1.時鐘溫度的總體設計思路.5 2.時鐘溫度系統(tǒng)方案論證.5 1)時鐘系統(tǒng)方案選擇.5 2)單片機的選擇.5 3)顯示系統(tǒng)的方案比較.5 4)鬧鈴系統(tǒng)的方案比較.6 5)溫度系統(tǒng)方案選擇.6 6)鍵盤控制方案選擇.6 7)呼吸燈系統(tǒng)方案選擇.7 3.時鐘溫度系統(tǒng)總體設計. 7二硬件設計部分 1.單片機最小系統(tǒng)電路設計.7 1)單片機芯片選擇.7 2)單片機管腳說明.8 3)單片機最小系統(tǒng).

2、10 2.時鐘系統(tǒng)電路設計.11 3.溫度系統(tǒng)電路.11 1)溫度芯片的選擇.11 2)ds18b20內部結構描述.11 3)ds18b20溫度系統(tǒng)電路.12 4.鍵盤控制系統(tǒng)設計.13 5.鬧鐘電路系統(tǒng)設計.13 6.液晶顯示系統(tǒng)設計.13 1)1602液晶顯示簡介.13 2)1602引腳說明.14 3)1602液晶顯示特性.14 4)12864f液晶顯示電路.15 7.總體硬件系統(tǒng)設計.15三軟件設計部分 1.主程序.16 2.液晶程序.16 3.時鐘數(shù)據(jù)處理程序.17 4.ds18b20溫度數(shù)據(jù)處理程序.17 5.鍵盤控制程序.17 6.液晶顯示程序.17 7.其他程序.18 8.程序中

3、的注意點.18四軟硬件調試部分 1.軟件調試.18 2.硬件調試.195 總結與體會.19 參考文獻.20 附件:.20lcd液晶時鐘設計原理電路圖.20 另外再附上我們的pcb圖.21 六.lcd液晶時鐘設計部分參考程序.21 摘要 我們設計的lcd時鐘溫度系統(tǒng)是由中央控制器、溫度檢測器、時鐘系統(tǒng)、鬧鈴設定系統(tǒng)、顯示器以及鍵盤部分組成。控制器采用單片機at89c51,溫度檢測部分采用ds18b20溫度傳感器、用lcd1602液晶顯示作為顯示器,用壓電式蜂鳴器構成鬧鈴。單片機通過外部設定時間獲取時間數(shù)據(jù),對數(shù)據(jù)處理后顯示時間;單片機再把時間數(shù)據(jù)和溫度數(shù)據(jù)傳送到lcd液晶顯示屏上顯示;還可以設定

4、鬧鈴,到設定時間發(fā)出鬧鈴聲;不僅如此,1602還可以顯示星期、年月日、時分秒;4x4矩陣鍵盤可以設定年月日,時間,鬧鈴。 關鍵字:lcd1602 at89c51 ds18b20 溫度 時間 星期1.引言隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從數(shù)單片機技術入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本設計是數(shù)據(jù)采集及處理,矩陣鍵盤控制,顯示系統(tǒng)及鬧鈴系統(tǒng)與單片機有效結合,本設計是通過在“單片機原理及應用”課堂上學習的知識的綜合應用,以及查閱資料,培養(yǎng)一種自學的能力。并且引導一種創(chuàng)

5、新的思維,把學到的知識應用到日常生活當中。在設計的過程中,不斷的學習,思考和同學間的相互討論,運用科學的分析問題的方法解決遇到的困難,掌握單片機系統(tǒng)一般的開發(fā)流程,學會對常見問題的處理方法,積累設計系統(tǒng)的經驗,充分發(fā)揮教學與實踐的結合。全能提高個人系統(tǒng)開發(fā)的綜合能力,開拓了思維,為今后能在相應工作崗位上的工作打下了堅實的基礎。 一 方案設計及方案論證1.時鐘溫度的總體設計思路 按照系統(tǒng)的設計功能要求,本時鐘溫度系統(tǒng)的設計必須采用單片機軟件系統(tǒng)實現(xiàn),用單片機的自動控制能力配合按鍵控制,來控制時鐘、溫度,鬧鈴的調整及顯示。獲得時鐘溫度數(shù)據(jù)信息,單片機對其進行一系列的處理,最后通過液晶顯示出來。2.

6、時鐘溫度系統(tǒng)方案論證 2.1時鐘系統(tǒng)方案選擇方案1:通過單片機內部的定時器/計數(shù)器,用軟件實現(xiàn),直接用單片機的定時器編程以實現(xiàn)時鐘;方案2:用專門的時鐘芯片實現(xiàn)時鐘的記時,再把時間數(shù)據(jù)送入單片機,由單片機控制顯示。雖然使用專用時鐘芯片硬件的精度很高,軟件編程也很簡單,但是成本相對使用軟件來說大大增加了。用軟件實現(xiàn)時鐘硬件線路簡單,雖然程序運行的每一步都需要時間,或多或少都會影響記時的準確度,但是比賽時對于精度的要求不高,而且復雜的軟件編程有利于培養(yǎng)我們學生的能力,不僅如此,軟件實現(xiàn)大大降低了成本。綜上所述,選擇方案1.2.2單片機的選擇對于單片機的選擇,stm32系列基于專為要求高性能、低成本

7、、低功耗的嵌入式應用專門設計的arm cortex-m3內核。雖然功能強大,但是費用也較高。;51系列單片機的rom為4k,足以滿足我們的設計需求,并且平時接觸過得主要都是51單片機,對于它的參數(shù)比較熟悉,運用起來更加方便。我們選擇51系列的單片機。2.3 顯示系統(tǒng)的方案比較 方案1:用數(shù)碼管或led顯示。 方案2:用液晶1602顯示。方案3:用液晶12864顯示。 時鐘和溫度的顯示可以用數(shù)碼管或led,而且價格便宜。但是數(shù)碼管的只能顯示簡單的設計的系統(tǒng),與我們設計要求也不相符。有很多東西需要顯示,還是用顯示功能更好的液晶顯示器比較好,它能顯示更多的數(shù)據(jù),用1602液晶顯示數(shù)據(jù)有限,顯示數(shù)據(jù)的

8、可讀性不好,但是足以滿足現(xiàn)階段所需。用可以顯示漢字的12864液晶顯示器還可以增加顯示信息的可讀性,讓人看起來會很方便。另外它們在價格上差距很大,考慮成本我們首選1602。因此我們選擇方案2。2.4 鬧鈴系統(tǒng)的方案比較方案1:用壓電式蜂鳴器實現(xiàn)鬧鐘鈴聲。方案2:用電磁式蜂鳴器實現(xiàn)鬧鐘鈴聲。壓電式蜂鳴器,用的是壓電材料,即當受到外力導致壓電材料發(fā)生形變時壓電材料會產生電荷。同樣,當通電時壓電材料會發(fā)生形變。電磁式蜂鳴器,主要是利用通電導體會產生磁場的特性,用一個固定的永久性磁鐵與通電導體產生磁力推動固定在線圈上的鼓膜。兩種蜂鳴器發(fā)音原理不同,壓電式結構簡單但是音調單一音色差,適用于報警器等設備。

9、而電磁式由于音色好,所以多用于語音、音樂等設備。但是電磁式價格遠遠高于壓電式,考慮成本以及所需實現(xiàn)的功能,我們選擇方案1。2.5 溫度系統(tǒng)方案選擇方案1:用熱敏電阻等測溫元件測出電壓,再轉換成對應的溫度。需要比較多的外部元件支持,且硬件電路復雜,制作成本相對較高。方案2:用ds18b20直接測溫。ds18b20溫度傳感器是美國dallas半導體公司最新推出的一種改進型智能溫度傳感器,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。經比較,我們選擇方案2。溫度實現(xiàn)只能通過外部的溫度傳感器來實現(xiàn)。經上網查閱及市場考察,ds18b20體積小,只有3只腳,電路接法簡

10、單。內部含有寄存器為我們設計實現(xiàn)上下限報警功能提供保障。精度為0.5c,足以滿足我們設計要求。ds18b20也是我們通常使用的型號,因此溫度傳感器用ds18b20。2.6 鍵盤控制方案選擇方案1:購買集成鍵盤,采用矩陣形式連接。方案2:購買單個復位開關做成鍵盤。雖然集成鍵盤美觀,與單片機的接口少,但是它的成本比較高。單片機的io口對于我們的設計綽綽有余。通常我們選用價格便宜單個復位開關做成鍵盤。因此我們選擇方案2.2.7 呼吸燈系統(tǒng)方案選擇方案1:通過陽極控制led燈使其發(fā)光。方案2:通過陰極控制led燈使其發(fā)光。雖然呼吸燈陽極陰極控制原理相似,但是用陽極控制更加方便,也較為熟悉,因此我們選擇

11、方案1.3. 時鐘溫度系統(tǒng)總體設計 初步確定設計系統(tǒng)由單片機主控模塊、時鐘模塊、測溫模塊、呼吸燈模塊、顯示模塊、鍵盤接口模塊共6個模塊組成,電路系統(tǒng)框圖如圖(1)所示。 二硬件設計部分 1 單片機最小系統(tǒng)電路設計 1.1 單片機芯片選擇單片機采用51系列單片機。其代表型號是atmel公司的at89系列,它廣泛應用于工業(yè)測控系統(tǒng)之中。at89c51是一種帶4k字節(jié)flash存儲器(fperomflash programmable and erasable read only memory)的低電壓、高性能cmos 8位微處理器,俗稱單片機。該器件采用atmel高密度非易失存儲器制造技術制造,與工

12、業(yè)標準的mcs-51指令集和輸出管腳相兼容。at89c51具有以下標準功能: 4k字節(jié)flash,128字節(jié)ram,32 位i/o 口線,兩個16 位定時器/計數(shù)器,5個中斷源,可編程串行通道片,片內振蕩器和時鐘電路??臻e模式下,cpu停止工作,允許ram、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,ram內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。其芯片外觀及引腳圖如下: 圖1.1_1 圖1.1_21.2 單片機管腳說明vcc:供電電壓gnd:接地。p0口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當p0口的管腳第一次寫1時,被定

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

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

15、口,如下表所示:口管腳 備選功能p3.0 rxd(串行輸入口)p3.1 txd(串行輸出口)p3.2 /int0(外部中斷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:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出

16、正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。/psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。/ea/vpp:當/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內部程序

17、存儲器。注意加密方式1時,/ea將內部鎖定為reset;當/ea端保持高電平時,此間內部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。xtal2:來自反向振蕩器的輸出。1.3 單片機最小系統(tǒng)單片機最小系統(tǒng)主要由復位電路,晶振電路,電源等幾部分組成。1) 復位電路 復位電路有兩種方式:上電復位和按鈕復位,我們主要用按鈕復位方式。 如下圖所示:2) 晶振電路晶振電路原理圖如3-2:3-2晶振模塊原理圖 選取原則:電容選取30pf,晶振為12mhz。3) 電源at89c51單片機的供電電源是5v的直流電。4) e

18、a非/vpp 腳我們沒有用外部擴展rom,因此ea非/vpp為高電平,即接+5v電源。2 時鐘系統(tǒng)電路設計通過單片機內部的定時器/計數(shù)器,用軟件實現(xiàn),直接用單片機的定時器編程以實現(xiàn)時鐘。3 溫度系統(tǒng)電路 3.1 溫度芯片的選擇 溫度實現(xiàn)只能通過外部的溫度傳感器來實現(xiàn)。經上網查閱資料及市場考察,ds18b20體積小,只有3只腳,電路接法簡單。它能夠直接讀出被測溫度。內部含有寄存器為我們設計實現(xiàn)上下限報警功能提供保障。用戶可定義的非易失性溫度報警設置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;精度為0.5c,也符合我們設計的要求。ds18b20也是我們通常使用的型號,因此溫度傳

19、感器用ds18b20。3.2 ds18b20內部結構描述ds18b20溫度傳感器的內部存儲器還包括一個高速暫存ram和一個非易失性的可電擦除的eeram。高速暫存ram的結構為8個字節(jié)的存儲器,結構如圖4.1所示。頭兩個字節(jié)包含測得的溫度信息,第三和第四字節(jié)是th和tl的拷貝,是易失的,每次上電復位時被刷新。第五個字節(jié)為配置寄存器,它的內容用于確定溫度值的數(shù)字轉換分辨率。ds18b20工作時按此寄存器中的分辨率將溫度轉換為相應精度的數(shù)值。該字節(jié)各位的定義如圖4.2所示。低5位一直為1,tm是測試模式位,用于設置ds18b20在工作模式還是在測試模式。溫度 lsb溫度 msbth 用戶字節(jié)1tl

20、 用戶字節(jié)2配置寄存器保留保留保留 crc圖 4.1高速暫存ram結構圖1字節(jié)2字節(jié) 3字節(jié) 4字節(jié) 5字節(jié)6字節(jié) 7字節(jié) 8字節(jié)9字節(jié)eeromth 用戶字節(jié)1tl 用戶字節(jié)2tmr1r011111圖 4.2 配置寄存器3.3 ds18b20溫度系統(tǒng)電路 ds18b20系統(tǒng)電路如下: ds18b20有兩種接法:一是單線接法即只接qt。這種方法應用它內部的寄生電源,因此在qt上要用一個mosfet把i/o線只接拉到電源上。二是從vdd腳加上電源。方法一適合于遠距離溫度監(jiān)控,不需要本地電源。而我們只是設計測溫系統(tǒng),選擇方法二就行了,還有mosfet極容易燒,我們不用它。vdd接5v電源,vss接

21、地,qt與p2.7相連。因為ds18b20的工作電流約為1ma,因此qt端還要加上拉電阻為其提供電流。若用5v電源,則r=5/1ma=5k。r取4.7k。4 鍵盤控制系統(tǒng)設計 按鍵需要4個,分別實現(xiàn)為時間調整、時間的加、時間的減、退出四個功能。用單片機的4x4矩陣鍵盤i/o口接收控制信號,其電路圖如下: 4x4按鍵的一端與地相連,另一端分別與p1.0、p1.1、 p1.2、p1.3、p1.4、p1.5、 p1.6、p1.7、相連。這時當按鍵按下就輸入低電平。5 鬧鐘電路系統(tǒng)設計鬧鈴電路由蜂鳴器、三極管、電阻等構成電路圖如下: 它與單片機的接口是p2.4。6 液晶顯示系統(tǒng)設計6.1 1602液晶

22、顯示簡介 1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5x7或者5x11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義cgram,顯示效果也不好)。 1602lcd是指顯示的內容為16x2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。6.2 1602引腳說明1602采用標準的16腳接口,其中:第1腳:vss為電源地。第2腳:vcc接5v電源正極。第3腳:v0為液晶顯示器對比度調整端,接正電源時對比度最

23、弱,接地電源時對比度最高(對比度過高時會 產生“鬼影”,使用時可以通過一個10k的電位器調整對比度)。第4腳:rs為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。第5腳:rw為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。第6腳:e(或en)端為使能(enable)端,高電平(1)時讀取信息,負跳變時執(zhí)行指令。第714腳:d0d7為8位雙向數(shù)據(jù)端。第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負極。6.3 1602液晶顯示特性3.3v或5v工作電壓,對比度可調內含復位電路提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能有80字節(jié)顯

24、示數(shù)據(jù)存儲器ddram內建有192個5x7點陣的字型的字符發(fā)生器cgrom8個可由用戶自定義的5x7的字符發(fā)生器cgram6.4 12864f液晶顯示電路設計中采用 lcd12864液晶顯示。它一般串口、并口兩種方式顯示,而我們一般采用并口顯示。12864的4、5、6、15、17腳分別與單片機的p3.0、p3.4相連。714腳與單片機的p0口相連。1、20號腳接地,2號腳接電源,19號腳背光燈正端串一個電阻與電源相連,電阻起限流的作用,我們取r=10k。3號腳是對比度(亮度)調整,這里要用一個滑動變阻器來調整亮度,這里我們取電位器大小為10k。 lcd1602顯示電路如下圖所示:7 總體硬件系

25、統(tǒng)設計1. 由于材料有限,我們只能使用大小為10x15(cm)大的雙面都帶有銅的銅板,通過altiun designed軟件畫好pcb圖,通過油紙打印出來把電路圖附在銅板上,通過腐蝕液腐蝕掉多余的銅,從來制作出電路板。2. 各電氣元件的連接,我們采用單、排針和杜邦線相連。這樣為我們避免各元件的跨接,對我們對線路的排錯提供方便。3. 上述六個模塊可以按原理圖整齊的焊接在電路板。最后效果,板子正面連線錯橫復雜,板子反面橫整齊。三軟件設計部分 本系統(tǒng)的軟件系統(tǒng)主要分為主程序、液晶程序、時鐘程序、溫度程序、鍵盤控制程序、液晶顯示程序。 3.1 主程序 系統(tǒng)主程序首先對系統(tǒng)進行初始化,包括設置定時器、液

26、晶、ds18b20和端口的初始化;由于單片機沒有命令指令,所以可以設計系統(tǒng)程序不斷地循環(huán)執(zhí)行液晶顯示時間程序即show_time()程序。如果單片機接收命令指令,就執(zhí)行相應的程序及鬧鐘是否到的判斷,執(zhí)行相應的及鈴聲程序。簡單流程圖如下: 3.2 液晶程序lcd1602的程序主要是對內部控制指令進行指定如液晶初始化,顯示空白,讀,寫,判斷液晶是否忙及指定字符的位置等函數(shù)構成。了解lcd1602的內部結構及控制指令和網上大部分程序模塊大致相同。3.3 時鐘數(shù)據(jù)處理程序單片機通過控制運行自行編程的時鐘程序,從而獲得年月日,時分秒,星期等數(shù)據(jù),并且通過顯示器顯示。3.4 ds18b20溫度數(shù)據(jù)處理程序

27、 ds18b20數(shù)據(jù)處理對芯片內部數(shù)據(jù)處理獲得液晶的顯示字符。它主要包括ds18b20的初始化,讀寫一個字節(jié),讀取ds18b20中的數(shù)據(jù)和對數(shù)據(jù)的轉換液晶顯示的字符。對ds18b20的精度進行不同定義可得到不同精度。部分流程如圖3.1 。3.5 鍵盤控制程序 鍵盤的控制是本系統(tǒng)的核心,也是本系統(tǒng)的最復雜的部分。通過按鍵設置,改變芯片內數(shù)據(jù)達到調時的效果,設置鬧鐘,設置溫度上下限等功能。我們設置4x4個按鍵分別是設置(set),上(up),下(down),退出(out)。我們首先按set就進入功能選擇界面,通過上下鍵選擇功能,再按set進入功能設置界面,按set改變設置項目及退出,按上下鍵改變所

28、設置的值。按out鍵退出到時鐘顯示界面。3.6 液晶顯示程序液晶顯示程序是對單片機內數(shù)據(jù)視化,讓用戶更直觀方便觀察結果及對功能的設置。在程序中加入閃爍,使顯示更加直觀。yesyesnono初始化調用顯示子程序讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新發(fā)溫度轉換開始命令1秒到?初次上電?圖3.1 ds18b20溫度計主程序流程圖 3.7 其他程序 其他程序包括延時程序,鬧鈴程序、呼吸燈程序。鬧鈴程序、呼吸燈程序用延時函數(shù)來實現(xiàn)。3.8 程序中的注意點1. 按鍵處理防抖動應加延時函數(shù)。2. 程序用調用函數(shù),最好在頭文件申明函數(shù),主函數(shù)一般最后寫。3. 為了使程序更加容易寫,我們要分模塊來完成程序。四軟硬件

29、調試部分 1) 軟件調試 軟件調試,我是在keil軟件平臺和單片機學習板上來完成的。當我寫部分程序在keil軟件經過調試,開始出現(xiàn)很多錯誤和警告。通過逐個錯誤排錯及修改。得出下列經驗,(1)調用函數(shù)最好在頭文件中進行申明,主函數(shù)寫在最后; (2) 特別注意一些字母的大小寫,一般要用英語文字寫,不要用中文漢寫,這是最不容易檢查的,如我在檢查液晶顯示程序時,時鐘沒檢查到錯誤,最后我刪掉此行重新寫,錯誤排除了,據(jù)我分析可能是中英文變換時出現(xiàn)問題。 經過一系列排錯,最后文件沒有錯誤但還有警告。由于c語言中有警告是沒關系的,我將hex文件下在到單片機竟顯示一些亂碼。我有回到文件,經過對警告的分析及上網查

30、閱。將程序稍微修改警告慢慢被排除,最后沒有錯誤和警告了,下載到單片機,發(fā)現(xiàn)亂碼竟然還出現(xiàn),還有多個界面疊加顯示,里面還有一些亂碼。經過分析,疊屏現(xiàn)象是沒有對液晶清平所致。于是我又在不同界面程序前加入調用填充空格函數(shù)(void clrram_lcd ()),然后又下載,結果與前面一樣,崩潰啊!經過幾個小時后,無意間我去掉 調用函數(shù)前void。結果疊屏現(xiàn)象解決。但是顯示還是亂碼。謝天謝地??!有進步! 又經過幾天,排錯,上網查閱與參考程序對照。最后在void r1302()函數(shù)中ds1302inputbyte(ucaddr|0x01);掉了|0x01,加上生成hex文件,下載到單片機中。能夠正常顯示

31、了。呵呵!又進一步!最后對程序進行相應的擴展完善,由于按鍵不靈敏我們加上聲音程序。加上另一個鬧鐘實現(xiàn)設計需求。 通過單片機學習板對照,程序基本實現(xiàn)我所預期的要求,但是界面顯示鬧鐘1,鬧鐘2閃爍時,液晶竟然出現(xiàn)顯示淡化。據(jù)分析,可能使程序的問題。由于這部分顯示復雜,用了多個if語句,可能出現(xiàn)語句冗余。我只有問度娘啰! 2)硬件調試 硬件調試,我們用萬用表,單片機學習板來完成的。首先,我們調試lcd1602顯示。我將液晶顯示程序下載到單片機內,連好所有的線,通電后,觀察顯示結果。唉!液晶竟然不顯示。我們用萬用表測試各連線是否導通及某些點的電壓,發(fā)現(xiàn)沒問題。最后在網上發(fā)現(xiàn)我的p0口竟然沒接上拉電阻,

32、通過計算電阻應該去5k至10k,我們選用4.7k的電阻。由于沒準備多的電阻,我在以前買的電阻找到了4.7k的電阻。開始布局沒有為上拉電阻留下空間,我們在單片機插槽里插電阻,解決一些連線的復雜度。后來在調試液晶能夠顯示了。然后,我們調試ds1302時鐘芯片。連上按鍵模塊,液晶顯示模塊,單片機 最小系統(tǒng),時鐘系統(tǒng),溫度系統(tǒng),連接所有線,通上電源后,我們觀察到液晶顯示 20858585 85:85:85 20.125c 溫度能正常顯示,時鐘不能正常顯示。我們還是用萬用表檢查所用線路,對照電路原理圖,最后發(fā)現(xiàn)時鐘上拉電阻沒焊上電源。接上電源后,時鐘能夠正常顯示,按鍵也能控制。 最后,我們對報警模塊進行

33、簡單調試。最后發(fā)現(xiàn)沒問題 整個硬件調試完成。 五總結與體會經過將近一個星期的設計,終于完成lcd液晶時鐘設計,雖然達到設計要求,但單片機的資源并沒完全應用,畢竟這次設計把實物都做了出來,心底是很高興的,這次不是用單片機學習板而是自己動手制作的作品。在本次設計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設計但這次設計真的讓我長進了很多,單片機課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法。這次設計是液晶,單片機,鍵盤控制的綜合應用,其間,遇到許多困難,甚至,有時竟然想放棄。從這次的課程設計中,我真真正正的意識到,在寫程序時,邏輯思維要清晰,要有耐心。在以后的學習中,要理論聯(lián)系實際,

34、把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的寫與讀的過程中才能提高,這就是我在這次設計中的最大收獲。參考文獻:1.單片機學習板配套資料2.c語言程序設計 譚浩強編 清華大學出版社3.單片機原理與應用及c51程序設計 謝維成 楊加國 主編 清華大學出版社附件:lcd液晶時鐘設計原理電路圖另外再附上我們的pcb圖lcd液晶時鐘設計部分參考程序液晶部分顯示程序: #include#include #define uchar unsigned char #define uint unsigned intsbit beep = p37; sbit rs=p20;sbit rw

35、=p21;sbit ep=p22;sbit s1=p10;sbit s2=p11;sbit s3=p12;sbit s4=p13;sbit rd=p14;sbit dq = p33 ; /定義ds18b20端口dq bit presence ; /檢測18b20是否插好uchar count,s1num,num,num2;char m,n,miao,shi,fen,yue,ri,week;uchar data armhour,armmin,armsec;/鬧鐘時、分、秒uint nian;unsigned char code dis_week=thu,fri,sat,sun,mon,tue,w

36、ed;uchar code table=b 2013-01-01 ;uchar code table1=23:59:55 ;bitarm;/標識是否啟用鬧鐘,1-啟用,0-關閉unsigned char code para_month13=0,0,3,3,6,1,4,6,2,5,0,3,5;/星期月參變數(shù)unsigned char data temp_data2 = 0x00,0x00 ;unsigned char data display5 = 0x00,0x00,0x00,0x00,0x00 ;unsigned char code ditab16 = 0x00,0x01,0x01,0x02

37、,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09 ;void beep() ; unsigned char code mytab8 = 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00 ;#define delaynop() ; _nop_() ;_nop_() ;_nop_() ;_nop_() ; ;/ 延時程序void delay(unsigned char ms)while(ms-)unsigned char i;for(i = 0; i 250; i+) _nop_(); /執(zhí)行一

38、條_nop_()指令為一個機器周期_nop_();_nop_();_nop_();/測試lcd忙碌狀態(tài)bit lcd_busy()bit result;rs = 0;rw = 1;ep = 1;_nop_();_nop_();_nop_();_nop_();result =(bit)(p0&0x80);/lcd的d0-d7中,d7=1為忙碌,d7=0為空閑ep = 0;return result;/寫入指令到lcdvoid lcd_wcmd(char cmd)while(lcd_busy();/當lcd_busy為1時,再次檢測lcd忙碌狀態(tài),lcd-busy為0時,開始寫指令rs = 0;r

39、w = 0;ep = 0;_nop_();_nop_();p0 = cmd;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;/寫入數(shù)據(jù)到lcdvoid lcd_wdat(char dat)while(lcd_busy();/當lcd_busy為1時,再次檢測lcd忙碌狀態(tài),lcd-busy為0時,開始寫數(shù)據(jù)rs = 1;rw = 0;ep = 0;p0 = dat;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_()

40、;_nop_();ep = 0;/ 設定顯示位置 void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80) ; /數(shù)據(jù)指針=80+地址變量/自定義字符寫入cgram void writetab() unsigned char i ; lcd_wcmd(0x40) ; /寫cgram for (i = 0 ; i 0 ; i-) dq = 0 ; / 給脈沖信號 dat = 1 ; dq = 1 ; / 給脈沖信號 if(dq) dat |= 0x80 ; delay1(4) ; return (dat) ;/* 寫一個字節(jié) */ writeonechar(uns

41、igned char dat) unsigned char i = 0 ; for (i = 8 ; i 0 ; i-) dq = 0 ; dq = dat&0x01 ; delay1(5) ; dq = 1 ; dat=1 ; / 讀取溫度 read_temperature(void) init_ds18b20() ; writeonechar(0xcc) ; / 跳過讀序號列號的操作 writeonechar(0x44) ; / 啟動溫度轉換 init_ds18b20() ; writeonechar(0xcc) ; /跳過讀序號列號的操作 writeonechar(0xbe) ; /讀取

42、溫度寄存器 temp_data0 = readonechar() ; /溫度低8位 temp_data1 = readonechar() ; /溫度高8位 / 數(shù)據(jù)轉換與溫度顯示 disp_temperature() display4=temp_data0&0x0f ; display0=ditabdisplay4+0x30 ;/查表得小數(shù)位的值 display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)4) ; display3=display4/100+0x30 ; display1=display4%100 ; display2=display1/10+0x30 ; display1=display1%10+0x30 ; if(display3=0x30) /高位為0,不顯示 display3=0x20 ; if(display2=0x30) /次高位為0,不顯示 display2=0x20 ; lcd_pos(0x48) ; lcd_wdat(display3) ; lcd_pos(0x49) ; lcd_wdat(display3) ; /百位數(shù)顯示 lcd_pos(0x4a) ; lcd_wdat(display2) ; /十位數(shù)顯示 lcd_pos(0x4b) ; lcd_wdat(display1) ; /個位數(shù)顯示

溫馨提示

  • 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

提交評論