欧美精品一二区,性欧美一级,国产免费一区成人漫画,草久久久久,欧美性猛交ⅹxxx乱大交免费,欧美精品另类,香蕉视频免费播放

[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]液晶顯示電冰箱溫控器報(bào)告

上傳人:z****2 文檔編號(hào):70547367 上傳時(shí)間:2022-04-06 格式:DOC 頁(yè)數(shù):36 大?。?21.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]液晶顯示電冰箱溫控器報(bào)告_第1頁(yè)
第1頁(yè) / 共36頁(yè)
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]液晶顯示電冰箱溫控器報(bào)告_第2頁(yè)
第2頁(yè) / 共36頁(yè)
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]液晶顯示電冰箱溫控器報(bào)告_第3頁(yè)
第3頁(yè) / 共36頁(yè)

本資源只提供3頁(yè)預(yù)覽,全部文檔請(qǐng)下載后查看!喜歡就下載吧,查找使用更方便

40 積分

下載資源

資源描述:

《[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]液晶顯示電冰箱溫控器報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]液晶顯示電冰箱溫控器報(bào)告(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、常州信息職業(yè)技術(shù)學(xué)院 智能電子產(chǎn)品綜合項(xiàng)目實(shí)踐 設(shè)計(jì)報(bào)告 2011 — 2012學(xué)年 第 二 學(xué)期 項(xiàng)目 班級(jí): 學(xué)號(hào): 姓名: 液晶顯示電冰箱溫控器的設(shè)計(jì)與實(shí)現(xiàn) ***** ****** ** 授課教師: ** 制定日期: 2012 年 6 月 20 日 摘要 第一章總體設(shè)計(jì)方案 1.1 背景 1.2系統(tǒng)功能描述. 1.3系統(tǒng)總體結(jié)構(gòu). 第二章硬件系統(tǒng)的設(shè)計(jì) 2.1微處理器(單片機(jī))

2、 4 2.2溫度傳感器DS18B20 4 2.3液晶顯示模塊 TG12864B 5 2.4定時(shí)器 6 2.5功能按鍵 7 2.6原理圖 8 第三章系統(tǒng)的軟件的設(shè)計(jì) 3.1液晶顯示模塊 9 3.2溫度傳感器 9 3.3壓縮機(jī)狀態(tài) 10 3.4總結(jié)構(gòu)框圖 10 第四章程序調(diào)試與運(yùn)行 4.1調(diào)試方法 12 4.2調(diào)試過(guò)程中遇到的問(wèn)題以及解決 12 第五章設(shè)計(jì)小結(jié) 14 附錄 15 摘要 隨著集成電路技術(shù)的發(fā)展,單片微型計(jì)算機(jī)的功能也不斷增強(qiáng), 許多高性能 的新型機(jī)種不斷涌現(xiàn)出來(lái)。單片機(jī)以其功能強(qiáng)、體積小、可靠性高、造價(jià)低和開(kāi) 發(fā)周期短等優(yōu)點(diǎn),稱為自動(dòng)化和

3、各個(gè)測(cè)控領(lǐng)域中廣泛應(yīng)用的器件, 在工業(yè)生產(chǎn)中 稱為必不可少的器件,尤其在日常生活中發(fā)揮的作用也越來(lái)越大。 人們對(duì)家用電 冰箱的控制功能越來(lái)越高,這對(duì)電冰箱控制器提出了更高的要求。 多功能,智能 化是其發(fā)展方向之一,傳統(tǒng)的機(jī)器控制,簡(jiǎn)單的電子控制已經(jīng)難以滿足發(fā)展的要 求。而采用基于單片機(jī)溫度控制系統(tǒng), 不僅可大大縮短設(shè)計(jì)新產(chǎn)品的時(shí)間, 同時(shí) 只要增加少許外圍器件在軟件設(shè)計(jì)方面就能實(shí)現(xiàn)功能的擴(kuò)展, 以及智能化方面的 提高,因此可最大限度地節(jié)約成本。本文即為基于單片機(jī)的電冰箱溫度控制系統(tǒng)。 目前市場(chǎng)銷售的雙門(mén)直冷式電冰箱, 含有冷凍室和冷藏室,冷凍室通常用于 冷凍的溫度為-6?-18 °C;冷

4、藏室用于在相對(duì)冷凍室較高的溫度下存放食品,要 求有一定的保鮮作用,不能凍傷食品,室溫一般為 0?10C . 傳統(tǒng)的電冰箱溫度一般是由冷藏室控制, 冷藏室、冷凍室的不同溫度是通過(guò) 調(diào)節(jié)蒸發(fā)器在兩室的面積大小來(lái)實(shí)現(xiàn)的,溫度調(diào)節(jié)完全依靠壓縮機(jī)的開(kāi)停來(lái)控制 但是冰箱內(nèi)的溫度受諸多因素的影響, 如放入冰箱物品初始溫度的高低、 存放品 的散熱特性及熱容量、物品在冰箱的充滿率、環(huán)境溫度的高低、開(kāi)門(mén)的頻繁程度 等.因此對(duì)這種受控參數(shù)及隨機(jī)因素很多的溫度控制,既難以建立一個(gè)標(biāo)準(zhǔn)的數(shù) 學(xué)模型,也無(wú)法用傳統(tǒng)的PID調(diào)節(jié)來(lái)實(shí)現(xiàn).一臺(tái)品質(zhì)優(yōu)良的電冰箱應(yīng)該具有較高的 溫度控制精度,同時(shí)又有最優(yōu)的節(jié)能效果,而為了達(dá)到這一

5、設(shè)計(jì)要求采用模糊控 制技術(shù)無(wú)疑是最佳的選擇。 第一章總體設(shè)計(jì)方案 1.1背景 隨著技術(shù)的發(fā)展,目前有些冰箱采用電腦只能溫控及 LCD或LED)箱門(mén)外溫度 顯示。所謂智能溫控就是通過(guò)感溫頭精確感應(yīng), 把冰箱內(nèi)溫度的變化傳遞給中央 控制芯片,由芯片控制制冷系統(tǒng)使冰箱內(nèi)溫度達(dá)到顯示屏上設(shè)定值,使用者只需 要根據(jù)食物的種類不同設(shè)定不同的溫度即可,以此達(dá)到最大的保鮮程度。 傳統(tǒng)的電冰箱的冷藏室溫控器旋鈕一般有 7個(gè)數(shù)字,這些數(shù)字并不表示冰箱內(nèi) 具體的溫度值,而是表示所控制的溫度檔位。數(shù)字越小,箱內(nèi)溫度越高。隨著人 們的生活水平的提高,對(duì)冰箱的控制功能要求越來(lái)越高,這對(duì)電冰箱控制器提出 了更高的

6、要求,傳統(tǒng)冰箱的溫控器也就無(wú)法滿足人們的需求了。 因此,能夠?qū)崿F(xiàn) 精確控制溫度、方便的設(shè)定和修改并且能夠?qū)崟r(shí)顯示當(dāng)前溫度是非常重要的。 1?2總體功能 液晶顯示電冰箱溫控器的設(shè)計(jì)是以單片機(jī) AT89C51作為核心控制器,利用 DALAS-線式溫度傳感器DS18B2C實(shí)現(xiàn)對(duì)電冰箱內(nèi)冷藏室和冷凍室的溫度采集。 通過(guò)按鍵可以對(duì)電冰箱內(nèi)冷藏室和冷凍室的溫度進(jìn)行預(yù)先設(shè)定。 當(dāng)電冰箱內(nèi)的溫 度值高于用戶設(shè)定的溫度值時(shí),系統(tǒng)將由單片機(jī)控制繼電器自動(dòng)開(kāi)啟壓縮機(jī)進(jìn)行 制冷,使冰箱內(nèi)溫度自動(dòng)降溫,當(dāng)電冰箱內(nèi)的溫度值低于設(shè)定溫度值時(shí),系統(tǒng)將 由單片機(jī)控制繼電器自動(dòng)關(guān)閉壓縮機(jī)停止制冷, 以此來(lái)自動(dòng)實(shí)現(xiàn)電冰箱內(nèi)

7、溫度的 自動(dòng)調(diào)節(jié)。同時(shí)相關(guān)的狀態(tài)信息要在點(diǎn)陣漢字液晶屏上實(shí)時(shí)地顯示。 具體顯示內(nèi)容有: 1、 實(shí)時(shí)時(shí)鐘:**:**:** 。 2、 冷藏室溫度:*** C。 3、 冷凍室溫度:一*** C。 4、 壓縮:開(kāi)或關(guān)。 5、 冰箱外環(huán)境溫度:*** C。 6、 按鍵預(yù)置的溫度值(冷藏室溫度、冷凍室溫度)。 1.3總體框圖 使用定 時(shí)器,實(shí) 現(xiàn)實(shí)時(shí) 動(dòng)走時(shí) 通過(guò)按鍵加減 預(yù)設(shè)冷藏室和 冷凍室溫度, 與冷藏室、冷 凍室溫度相比 較,決定壓縮 機(jī)的開(kāi)或關(guān) 溫度傳感器 DS18B20 調(diào) 節(jié)冷藏室、 冷凍室當(dāng)前 溫度和室外 溫度 圖1.3 T2/P1.0 C 1 5 b

8、 Vcc T2EX/FL. 1 C 2 3 PO, 0 /ABO Pl. 2 C 3 0 PQ. 1/AD1 F1.3 q 4 37 3 P0. 2MD2 Fl.4 C 5 3E 3 F0. 3/AD3 Pl 5匚 G 3S 1 F0.4/AD4 Pl & C 7 34 2 FO. 5/AD5 Fl. 7 C 占 33 3 PO. KST匸 9 32 □ LI和鹵 0 匚 10 31 □ El/VPP T){B?P3.1 c 11 30 3 ALE/PW IHT0/P3. 2 匚 12 29 J PES

9、N ilfTT/P3. 3 t 13 29 J P2. 7/Al5 T0/?3.4 c 14 27 1 F2.B/A14 T1/P3, 5 C 15 花 1 F2. S/A13 匚 16 25 1 F 2. 4/Al 2 KG/P3. 7 c 17 24 h P2 3fili KTAL2 [: 18 23 0 P2 2/A10 mu c 22 3 P2. 1/A9 FDIF 匚 20 21 3 P2. o/ie 圖 2.1 AT89S52 圖 2.2 AT89S51 實(shí)物圖(基本與AT89S52 一樣)

10、 第二章硬件系統(tǒng)的設(shè)計(jì) 2.1微處理器(單片機(jī)) AT89S52是美國(guó)ATMEL公司生產(chǎn)的低功耗,高性能 CMOS啦單片機(jī),片內(nèi) 含4k bytes的可系統(tǒng)編程的Flash只讀程序存儲(chǔ)器,器件采用 ATMEI公司的高 密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn) 8051指令系統(tǒng)及引腳。它集Flash程 序存儲(chǔ)器既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用8

11、位微處理器于單 片芯片中。 AT89S52提供以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash閃速存儲(chǔ)器,256字節(jié)內(nèi)部RAM 32個(gè)I/O 口線,看門(mén)狗(WDT,兩個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)6 向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí), AT89S52可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空 閑方式停止CPU的工作,但允許RAM定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼 續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工 作直到下一個(gè)硬件復(fù)位。 AT89S52的引腳圖和實(shí)物圖分別如上圖 2.1和圖2.2所示。 2.2溫度傳

12、感器DS18B20 nit! p] r< 畑 v n w :■ J X >-V2 i os j i i 2 3 圖 2.2.1 DS18B20(如圖)是美國(guó)DALLAS^司推出的數(shù)字溫 度傳感器,傳感器及相關(guān)的數(shù)字轉(zhuǎn)換電路都被集成到了一起, 外 形如同一只三極管,具有微型化、低耗能、高性能、抗干擾能力 強(qiáng)等優(yōu)點(diǎn);獨(dú)特的單線接口方式,DS18B2在與微處理器連接時(shí) 僅需要一條I/O 口線即可實(shí)現(xiàn)微處理器與DS18B2的雙向通訊;每 片DA18B2均有唯一的產(chǎn)品序列號(hào),所以允許在單總線上掛接數(shù) 十至百片溫度傳感器,這樣可以非常方便地構(gòu)成多路溫度測(cè)量系 統(tǒng)。 DS18B20的特點(diǎn):

13、 (1) 適應(yīng)電壓范圍寬,電壓范圍:3.0-5.5V,在寄生電源方式下可以由數(shù)據(jù) 線供電; (2) DS18B2支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B2可以并聯(lián)在唯一的三線上,實(shí) 現(xiàn)組網(wǎng)多點(diǎn)測(cè)量 (3) DS18B2在使用中不需要任何外圍元件,全部傳感元 (4) 溫度范圍-55 C?+125C,在-10?+85C時(shí)精度為土 0.5 C; (5) 可編程的分辨率為9?12位,對(duì)應(yīng)的可分辨溫度分別為0.5 C, 0.25 C, 0.125 C, 0.0625 C,可以實(shí)現(xiàn)高精度測(cè)溫;在9位分辨率時(shí)最多在93.75ms內(nèi)把 溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750mS內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速

14、度更快。 (7) 測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以“一線總線”串行傳送給 CPU同 時(shí)可以傳送CR校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力; (8) 負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因?yàn)榘l(fā)熱而燒毀,但是不能正常 工作。 2?2?3 單片機(jī)與DS18B2的接口電路(如圖 V0C LCD1 LGM126410S1R 圖 2.3.1 圖單片機(jī)與DS18B20的接口電路 2.3液晶顯示模塊TG12864B TG12864B點(diǎn)陣液晶屏(如圖) 顯示模塊是由128*64個(gè)液晶屏顯示點(diǎn)組 合的一個(gè)陣列,每個(gè)顯示點(diǎn)對(duì)應(yīng)一位二進(jìn) 制數(shù),1表示點(diǎn)亮,0表示滅,儲(chǔ)存這些點(diǎn) 陣

15、信息的RAM稱為顯示數(shù)據(jù)存儲(chǔ)器,為了 在屏幕指定位置顯示某個(gè)圖形或字符,需 要將相應(yīng)的點(diǎn)陣信息寫(xiě)入到 DDRA相應(yīng)的 單元中。 TG12864B液晶屏實(shí)際上是由左右兩塊獨(dú)立的 64*64點(diǎn)陣液晶屏拼接而成, 每半屏有一個(gè)8*64*8bitDDRAM,左右半屏驅(qū)動(dòng)電路及存儲(chǔ)分別有片選信號(hào) CS1 和CS2選擇。 顯示點(diǎn)在64*64液晶屏上的位置由行號(hào)(0~63)與列號(hào)(0~63)確定。DDRAM 中某個(gè)存儲(chǔ)單元由頁(yè)地址(0~7)和列地址(0~63)確定。每個(gè)存儲(chǔ)單元的8位 二進(jìn)制數(shù)對(duì)應(yīng)屏幕上同一列的8個(gè)點(diǎn)陣。 其引腳功能說(shuō)明如表所示 管腳號(hào) 管腳 引腳說(shuō)明 1 Vss 電源

16、地 2 Vdd 電源正極(+5V)。使用可變電阻調(diào)整,通常接地。 3 VO 液晶顯示器對(duì)比試調(diào)整端 4 D/I 數(shù)據(jù)/指令選擇:當(dāng)D/I為高電平時(shí),DB0~DB7為顯示數(shù)據(jù) 當(dāng)D/I為低電平時(shí),DB0~DB7為指令數(shù)據(jù) 5 R/W 讀/寫(xiě)選擇:當(dāng)R/W為高電平(即R/W=1 )時(shí),從液晶模塊 讀數(shù)據(jù) 當(dāng)R/W為低電平(即R/W=0)時(shí),將數(shù)據(jù)寫(xiě)入液晶模塊 6 E 讀寫(xiě)使能,高電平有效,下降沿鎖定數(shù)據(jù) 7?14 DB0~DB7 雙向數(shù)據(jù)總線的第0—7位共8位并行數(shù)據(jù)總線 15 CS1 片選擇信號(hào),高電平時(shí)選擇前64列 16 CS2 片選擇信號(hào),

17、高電平時(shí)選擇后64列 17 RST 復(fù)位信號(hào),低電平有效 18 Vee LCD驅(qū)動(dòng)電源(一10V) 19 BLA 背光電源,LED+ 20 BLK 背光電源,LED- 表 2.4定時(shí)器 在51系列單片機(jī)中有兩個(gè)16位的加法計(jì)數(shù)器,分別叫做 T0和T1.它們?cè)?計(jì)數(shù)脈沖的作用下,其計(jì)數(shù)值不斷加 1,在此過(guò)程中,計(jì)數(shù)器可能產(chǎn)生溢出(溢 出是指計(jì)數(shù)器的計(jì)數(shù)值全為“ 1”時(shí),在計(jì)數(shù)脈沖的作用下,全部歸 0的動(dòng)作), 產(chǎn)生溢出后,可以向CPU發(fā)出中斷請(qǐng)求。計(jì)數(shù)脈沖可以來(lái)源于系統(tǒng)時(shí)鐘或外部電 路。如果計(jì)數(shù)脈沖來(lái)自系統(tǒng)時(shí)鐘,稱之為”定時(shí)器”,每個(gè)機(jī)器周期 (一個(gè)機(jī)器 周

18、期由12個(gè)時(shí)鐘周期組成)計(jì)數(shù)器加1;如果計(jì)數(shù)脈沖來(lái)自外部電路,稱之為” 計(jì)數(shù)器”,此時(shí)單片機(jī)在每個(gè)機(jī)器周期對(duì)T0引腳進(jìn)行檢測(cè)。 定時(shí)器方式寄存器TMO用于控制定時(shí)器/計(jì)數(shù)器的工作方式,不具有位尋址 能力。TMO寄存器的高4位用于T1的設(shè)定,低4位用于T0的設(shè)定,其定義相 同,其中: 定時(shí)器/計(jì)數(shù)器T1 定時(shí)器/計(jì)數(shù)器T0 D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 1) M0 M1選擇定時(shí)器/計(jì)數(shù)器的工作方式,T0有4種工作方式,T1有三種工 作方式,00為方式0,01為方式1,10為方式

19、2,11為方式3,由M1, M2設(shè)定。 2) C/下:定時(shí)方式/計(jì)數(shù)方式的選擇控制位。C/下=0,選定時(shí)方式,計(jì)數(shù)脈沖 來(lái)自系統(tǒng)時(shí)鐘的12分頻;C/下=1,選計(jì)數(shù)方式,計(jì)數(shù)脈沖來(lái)自外部電路(對(duì) 于T0來(lái)說(shuō),由P3.4引腳輸入,對(duì)于T1來(lái)說(shuō),由P3.5引腳輸入)。 3) GATE位被稱為“門(mén)控位”。當(dāng)GATE=0寸,只要TR0=1,與門(mén)的輸出就為1, 計(jì)數(shù)開(kāi)始。如果GATE為1時(shí),只有TR0=1,并且P3.2-1時(shí),才允許計(jì)數(shù)。 其功能可通過(guò)圖2.4來(lái)分析。 系筑時(shí)樹(shù) 圖2.4定時(shí)器/計(jì)數(shù)器T0的邏輯示意圖 2.5功能按鍵 本設(shè)計(jì)中用到了 4個(gè)按鍵,分別為K13, K14

20、,K15, K16,通過(guò)按鍵來(lái)預(yù)設(shè)冷 藏和冷凍溫度值。其定義如下: #define KSET 0xe0 #define KSET_LONG 0xe1 #define KINC 0xd0 #define KDEC 0xb0 #defi ne KDOWN 0x70 2.6原理圖 D141BS1R ? t GN U5 DQ DS18B20 1918929303112345678 XIAL1 XTAL2 RST PSEN ALE EA 21 /A広/A広/A広/A広 012 34 56 7 aaa aa aa a ppp pp pp p P2.0/A P2.1/

21、A P2.2/A' P2.3/A' 124 P2.4/A12 P2.5/A' P2.6/A' P2.7/A' KSET C & KINC=i-. 333 3P ppp P /T 3 .O -45 67 0 D ULSA D D 1 RP1 RESPACK-8 開(kāi)始 以filldata充填液晶屏 初始化液晶屏,復(fù)位驅(qū)動(dòng)芯 片,打開(kāi)顯示 在液晶屏的cy( 0~3)行,cx( 0~7) 列顯示漢字字符點(diǎn)陣 圖3.2液晶顯示流程圖 第三章系統(tǒng)的軟件的設(shè)計(jì) 液晶顯示電冰箱溫控器含有四個(gè)模塊,分別是液晶顯示模塊,溫度傳感器

22、, 定時(shí)器走時(shí)和主函數(shù),。 3.1液晶顯示模塊 液晶顯示結(jié)果如圖 3.1所示,第一行為實(shí)時(shí)時(shí)間,第二行為冷藏溫度, 圖3.1 第三行為冷凍溫度,第四行為壓縮,開(kāi)或關(guān),液晶顯示流程圖如上圖 3.2。 TG12864B液晶屏顯示4行16*16點(diǎn)陣的漢字,每行顯示8列,如果列號(hào)小 于4,則顯示在左半屏,否則顯示在右半屏。由于一個(gè)漢字占用 2頁(yè),程序首先 必須設(shè)置上半個(gè)漢字的頁(yè)地址,起始列,并輸出 16個(gè)字節(jié)數(shù)據(jù),隨后設(shè)置下半 個(gè)漢字的頁(yè)地址、起始列地址,并輸出 16個(gè)字節(jié)數(shù)據(jù)。 3.2溫度傳感器 使用三個(gè)溫度傳感器 DS18B20實(shí)現(xiàn)冷藏室,冷凍室和當(dāng)前溫度的調(diào)節(jié)與設(shè) 置,并及時(shí)地在液

23、晶屏上顯示出來(lái),如下:圖為三個(gè)溫度傳感器。圖即為液晶屏上對(duì)應(yīng)的三個(gè)溫度的顯示。 U3 VCC DQ GND ■ ■ 9-0 1 ■: ? ? — DS18B20 U4 U5 DS13B20 VCC DQ O O GND DS18B20 3.0 圖溫度傳感器 圖 3.2.2 . 3.3壓縮機(jī)狀態(tài) 如果當(dāng)前冷藏室溫度和冷凍室溫度中只要有一個(gè)溫度值大于預(yù)設(shè)的 冷藏室,冷凍室溫度時(shí),則壓縮機(jī)狀態(tài)為開(kāi),如圖 331和332 LGM13641BS1R 圖 3.3.1 r:-.-' in 溫度設(shè)置 冷藏室’ 05 -C

24、 冷凍室: -5 "C 圖 3.3.2 如果當(dāng)前冷藏室溫度和冷凍室溫度值都小于預(yù)設(shè)的冷藏室,冷凍室溫 度時(shí),則壓縮機(jī)狀態(tài)為關(guān),如圖和圖 LGM12M1BS1R LkjM ICO in 廠 X 12: 00: 23 冷藏溫度;3.0'^ 拎涼溫豚-8.0:C 莊縮=關(guān) 3.6 C 溫度設(shè)置 冷藏室二 05 °C 冷凍室二 -5 °C 麗懿細(xì)紅盹馳酣闊弱 圖 圖 3.4總流程圖

25、 當(dāng)前溫度<0 求出絕對(duì)值 將溫度值轉(zhuǎn)換為“ XX.X ”格式的字符串,去除高 位的“ 0”字符,在LCD指定位置顯示溫度值 定時(shí)器控制當(dāng)前時(shí)間走時(shí),在屏幕指定位置顯示 溫度值減1 N 短按KSET Y 原界面:顯示冷 藏冷凍室溫度 進(jìn)入預(yù)設(shè)冷藏室冷凍室溫度的界面 Y N Y 按鍵KINC是否按下 按鍵KDEC是否按下 N Y N Y 1 f 按鍵KDOWN是否按下 k N 壓縮機(jī)狀態(tài)改變(開(kāi)或關(guān)) 1 結(jié) L r 1 束 J 長(zhǎng)按KSET 退出溫度設(shè)定 溫度值加1 溫度下移

26、 第四章程序調(diào)試與運(yùn)行 4.1調(diào)試方法 我們用Keil uVision2 以及Proteus 6 Professional 這兩個(gè)軟件調(diào)試,在 調(diào)試中,我們用Keil uVision2 編寫(xiě)和調(diào)試程序,用 Proteus 6 Professional 畫(huà)電路圖,液晶屏的DI接到單片機(jī)的P3A4, RW端連接到單片機(jī)的P3A5,CS選擇 屏端連接到單片機(jī)的 卩3八3, E端連接到單片機(jī)的 卩3八6, DB0~DB顯示數(shù)據(jù)連接到 單片的P0A0~P0A7溫度傳感器 DS

27、18B20勺—(RST)端接到單片機(jī)的 卩3八7 口,最 終將兩個(gè)軟件連接起來(lái),編譯并全速運(yùn)行,看電路圖上液晶屏的顯示是否正確。 一:檢查液晶屏上漢字是否正確顯示, 如果液晶屏沒(méi)有正確顯示,先檢查電 路,如果硬件電路圖連線沒(méi)有錯(cuò)誤,然后檢查程序,用斷點(diǎn)或單目進(jìn)行調(diào)試運(yùn)行, 看程序中哪一步出現(xiàn)錯(cuò)誤,加以修改。 二:調(diào)節(jié)溫度傳感器的溫度,檢查改變后的溫度是否正常顯示 ,當(dāng)前時(shí)間是 否正常走時(shí)。 三:短按K12進(jìn)入更改預(yù)設(shè)溫度狀態(tài),K13加數(shù)值,K14減數(shù)值,K15上下 移,長(zhǎng)按K12鍵退出設(shè)置界面,返回原來(lái)界面。檢查壓縮機(jī)狀態(tài)是否根據(jù)溫度的 變化而變化。 4.2調(diào)試過(guò)程中遇到的問(wèn)題以及

28、解決方法 問(wèn)題:DS18B2C上的溫度不能及時(shí)地顯示在TG12864B液晶屏上。 解決方法:首先檢查電路,看是否有因?yàn)榇中倪B錯(cuò)了引腳,檢查后發(fā)現(xiàn),由 于每個(gè)DS18B20都有一個(gè)屬于自己的序列號(hào),所以要更改protues仿真圖中的溫 度傳感器的序列號(hào),修改后,還是不能正常顯示,然后通過(guò)斷點(diǎn)調(diào)試,發(fā)現(xiàn)定義 的溫度字節(jié)L寫(xiě)成了 1,改正后就可以了。 問(wèn)題:預(yù)設(shè)的冷藏室溫度5C,冷凍室溫度-5 C,只能顯示一個(gè)5C,-5 C要 按KDOW鍵后才出現(xiàn)。 解決方法:缺少語(yǔ)句 LCD_DispDat(no*2+4,10,dbuf[1]) 。 問(wèn)題:壓縮機(jī)一直處于開(kāi)的狀態(tài),不能隨著溫度的改變轉(zhuǎn)變?yōu)?/p>

29、關(guān)。 解決方法:檢查相關(guān)語(yǔ)句,通過(guò)斷點(diǎn)調(diào)試以及全速運(yùn)行,發(fā)現(xiàn)小數(shù)位沒(méi)有正 確移位,編譯運(yùn)行,發(fā)現(xiàn)可以正常切換開(kāi)和關(guān)。 問(wèn)題:實(shí)時(shí)時(shí)間不能正常走時(shí)。 解決方法:仔細(xì)觀察圖,其中其它有個(gè)地方總是閃,所以試著更改實(shí)現(xiàn)走時(shí) 的時(shí)間位置,后來(lái)時(shí)間就能正常走時(shí)了。 問(wèn)題:在顯示界面,時(shí)、分、秒顯示的行和列有問(wèn)題。 解決方法:修改 LCD_DispDat2(7,5+col*3,time[col]) 使之與前面的內(nèi)容相對(duì) 應(yīng)。 426問(wèn)題:按鍵無(wú)效 解決方法:按鍵無(wú)效,硬件沒(méi)有問(wèn)題,那么問(wèn)題就出現(xiàn)在軟件,按鍵無(wú)效, 按鍵鍵值沒(méi)有正確讀取,單目運(yùn)行,發(fā)現(xiàn)在按鍵的函數(shù)中出現(xiàn)死循環(huán), 鍵值根本 沒(méi)有

30、傳遞,所以按鍵無(wú)效,更改函數(shù),可以正常使用。 第五章設(shè)計(jì)小結(jié) 這次為期三周的智能電子產(chǎn)品綜合項(xiàng)目實(shí)踐做的是液晶顯示電冰箱溫控器 的設(shè)計(jì),它是以單片機(jī)80C51為中心,加上液晶顯示屏 TG12864B溫度傳感器 DS18B20和定時(shí)器構(gòu)成的,在項(xiàng)目中涉及到了液晶顯示,溫度傳遞,定時(shí)中斷等 知識(shí),很好地讓我復(fù)習(xí)了以前的知識(shí), 溫故而知新,同時(shí)也讓我將理論知識(shí)運(yùn)用 到實(shí)踐中,領(lǐng)悟到了“紙上得來(lái)終覺(jué)淺,絕知此事要躬行”的樂(lè)趣,讓我獲益匪 淺。 第一周,老師讓我們做了幾個(gè)小項(xiàng)目,目的是讓我們回憶,復(fù)習(xí)一下以前 學(xué)習(xí)的知識(shí),為做液晶顯示電冰箱溫控器作基礎(chǔ), 我通過(guò)不斷編寫(xiě)和調(diào)試漸漸地 熟練地掌握了

31、Keil uVision2 以及Proteus 6 Professional 兩個(gè)軟件的使用, 為后面的做項(xiàng)目提供了很多方便。第二周和第三周,老師發(fā)給我們這個(gè)項(xiàng)目的任 務(wù)書(shū),要求中最基礎(chǔ)的是在液晶顯示屏上顯示冷藏室、冷凍室溫度,這個(gè)不怎么 難,以前學(xué)過(guò),然后就是要把溫度傳感器 DS18B2C和液晶顯示屏上的冷藏室、冷 凍室溫度聯(lián)系起來(lái),實(shí)現(xiàn)冷藏室、冷凍室溫度隨著溫度傳感器的調(diào)節(jié)而改變, 在 運(yùn)行與調(diào)試中,經(jīng)常出現(xiàn)問(wèn)題,后來(lái)通過(guò)對(duì)照書(shū)上的類似代碼查找錯(cuò)誤,多次修 改嘗試,終于成功聯(lián)系起來(lái)了。接著是實(shí)時(shí)時(shí)間正常走時(shí),要使用定時(shí)器中斷來(lái) 實(shí)現(xiàn),最后就是實(shí)現(xiàn)壓縮機(jī)的狀態(tài)開(kāi)或關(guān)的變換,通過(guò)將當(dāng)前冷藏室

32、與冷凍室的 溫度與預(yù)設(shè)的溫度值相比較,這個(gè)有一定的難度,自己調(diào)試了好幾次都沒(méi)實(shí)現(xiàn), 后來(lái)請(qǐng)教老師,老師用斷點(diǎn)調(diào)試,發(fā)現(xiàn)我的小數(shù)位沒(méi)有正確地移動(dòng), 修改了之后 就可以正確地切換開(kāi)和關(guān)了。 通過(guò)這次的項(xiàng)目實(shí)踐,我學(xué)到了許多知識(shí),例如液晶顯示,溫度傳感器以 及定時(shí)器的使用比以前熟練多了, 而且在老師的幫助下,學(xué)會(huì)了斷點(diǎn)調(diào)試,任何 問(wèn)題只要用這種方法,一步一步地調(diào)試和運(yùn)行,終會(huì)找到錯(cuò)誤之處,從而對(duì)癥下 藥,修改錯(cuò)誤,使我們不用做無(wú)用功,節(jié)省了很多時(shí)間,可以說(shuō)是事半功倍。更 重要的是,我認(rèn)識(shí)到了,面對(duì)遇到的問(wèn)題和錯(cuò)誤,要冷靜從容地應(yīng)對(duì),不要干著 急,或者害怕。老師說(shuō)的對(duì),遇到問(wèn)題是好事,可以讓我們?cè)诮?/p>

33、決問(wèn)題、修改錯(cuò) 誤中獲得知識(shí),提高自己的能力,怕就怕沒(méi)有問(wèn)題,那樣我們就不會(huì)去積極地思 考和不斷地嘗試,只會(huì)坐在這兒無(wú)所事事,不會(huì)提高。所以在今后的日子里,一 定要直視問(wèn)題,冷靜從容地面對(duì)困難,積極地尋找解決問(wèn)題的方法,這樣才能使 自己學(xué)到更多的知識(shí),獲得提高,從而走向成功。 附錄 一、Main.C 主函數(shù)模塊 #in elude #defi ne uchar un sig ned char #defi ne uint un sig ned int exter n void LCD_Disp In i(void); exter n void LCD_DispF

34、ill(uchar filldata); exter n void LCD_DispChar(uchar cy,uchar cx,char dispdata); exter n void LCD_DispStr(uchar cy,uchar cx,char*disp_str); exter n void LCD_DispHZ(uchar cy,uchar cx,uchar dispdata); exter n void LCD_DispHZStr(uchar cy,uchar cx,uchar*disp_str); exter n void gettemp(i nt temp[]);

35、 exter n void readid(uchar * id); exter n void Ini tTimerO(void); uchar dp[16]={0,0,1,1,2,3,3,4,5,5,6,6,7,8,8,9}; 〃小數(shù)部分轉(zhuǎn)換 #defi ne KSET OxeO #defi ne KSET_LONG 0xe1 #defi ne KINC OxdO #defi ne KDEC OxbO #defi ne KDOWN Ox7O uint count; char idata dbuf[2]={5,-5}; uchar idata str[6]={O,O,O,O

36、,O,O}; char can g=5; char don g=-5; uchar time[3]={11,59,55}; uchar bufO[]={O,1,2,3,4,Oxff}; // 冷藏溫度 uchar buf1[]={O,5,2,3,4,Oxff}; // 冷凍溫度 uchar buf2[]={6,7,4,Oxff}; // 壓縮 uchar buf3[]={15,16,11,12,Oxff}; // 溫度設(shè)置 uchar buf4[]={1O,Oxff}; // 關(guān) uchar buf5[]={9,Oxff}; // 開(kāi) uchar buf6[]={O,1,1

37、4,4,Oxff}; // 冷藏室 uchar buf7[]={0,5,14,4,0xff}; // 冷凍室 void delay(uchar t) {uchar i; while(t--) for(i=0;i<250;i++); } void LCD_DispDat(uchar cy,uchar cx,char dat) {uchar str[4]; bit zf=0; if(dat<0) { zf=1; dat=-dat; } str[1]=dat/10+0x30; str[2]=dat%10+0x30; str[3]=0; if(zf==1) { if(s

38、tr[1]=='0') { str[0]=''; str[1]='-'; } else str[0]='-'; } else { if(str[0]=='0') str[1]=''; str[0]=''; } LCD_DispStr(cy,cx,str); } //將變量dat轉(zhuǎn)換為2位字符串 //字符串用0作為結(jié)束符 〃顯示字符串 uchar GetKey(void) {uchar key; uchar t; if((key=P2&0 xfO)==OxfO) return Oxff; for(t=0;t<5;t++) delay (5); if((key=

39、P2&0xf0)==0xf0) return 0xff; while((P2&0xf0)!=0xf0) // 檢測(cè)按鍵時(shí)間 {delay(5); if(t<250) t++; } if((t>100)&&( key==0xE0)) return 0xE1; return key; } void DispTime(void) { LCD_DispDat(0,5,time[0]); // 時(shí) LCD_DispChar(0,8,':'); LCD_DispDat(0,9,time[1]); // 分 LCD_DispChar(0,12,':'); LCD_DispDat

40、(0,13,time[2]); // 秒 } void EditTemper(void) // 修改溫度 {uchar no=0; uchar key; LCD_DispDat( no*2+2,10,dbuf[0]); LCD_DispDat( no *2+4,10,dbuf[1]); while(1) {key=GetKey(); if(key==KINC) //+ {dbuf[ no ]++; LCD_DispDat( no*2+2,10,dbuf[ no]); } else if(key==KDEC) //- { dbuf[ no]--; LCD_DispD

41、at( no *2+2,10,dbuf[ no]); } else if(key==KDOWN) { LCD_DispDat( no*2+2,10,dbuf[ no]); no=( no+1)&0x01; LCD_DispDat( no*2+2,10,dbuf[ no]); } else if(key==KSET_LONG) { can g=dbuf[0]; don g=dbuf[1]; LCD_DispI ni(); break; } } } void ma in (void) { uchar str[6]={0,0,0,0,0,0}; uchar i,k

42、ey; int temp_back[2]; int temp[3]; bit zf; LCD_DispI ni(); Ini tTimer0(); while(1) { In itTimer0(); DispTime(); LCD_DispHZStr(1,0,buf0); LCD_DispHZ(1,7,13); LCD_DispHZStr(2,0,buf1); LCD_DispHZ(2,7,13); LCD_DispHZStr(3,0,buf2); LCD_DispHZ(3,7,13); key=GetKey(); if(key==KSET) { LCD_

43、DispI ni(); LCD_DispHZStr(0,2,buf3); LCD_DispHZStr(1,0,buf6); LCD_DispHZ(1,7,13); LCD_DispHZStr(2,0,buf7); LCD_DispHZ(2,7,13); EditTemper(); } gettemp(temp); for(i=0;i<2;i++) { temp_back[i]=temp[i]; temp_back[i]=temp_back[i]>>4; } if((temp_back[0]

44、pHZStr(3,3,buf4); // 關(guān) else LCD_DispHZStr(3,3,buf5); // 開(kāi) for(i=0;i<3;i++) { zf=0; if(temp[i]<0) { zf=1; temp[i]=-temp[i]; } str[4]=dp[temp[i]&0x0f]+0x30; temp[i]=temp[i]>>4; str[0]=temp[i]/100+0x30; temp[i]=temp[i]%100; str[1]=temp[i]/10+0x30; str[2]=temp[i]%10+0x30; str[3]='.'; if(z

45、f==1) { if(str[1]=='0') { str[0]=''; str[1]='-'; } else str[0]='-'; } else { if(str[0]=='0') { if(str[1]=='0') str[1]=''; str[0]=''; } } LCD_DispStr((i*2)+3,9,str); } } } 二、TG12864B.C液晶顯示模塊 #in clude #in clude #in clude #defi ne uchar un sig ned char

46、 #defi ne uint un sig ned int sbit LCD_RST= P3A7; sbit DI =卩3八4; sbit RW =卩3八5; sbit CS =卩3八3; sbit EN = P3A6; sbit RDY = P0A7; sfr LCD = 0x80; #defi ne LCD_DISPON 0x3f #defi ne LCD_STARTROW OxcO #defi ne LCD_ADDRSTRY 0xb8 #defi ne LCD_ADDRSTRX 0x40 #defi ne CS1 0 #defi ne CS2 1 void

47、LCD_WrCmd(bit port,uchar cmd) { EN=0; CS=port; DI=0; RW=0; EN=1; LCD=cmd; EN=0; } void LCD_WrDat(bit port,uchar wrdata) { EN=0; CS=port; DI=1; RW=0; EN=1; LCD=wrdata; EN=0; } uchar code ASCII_TAB[480] = 〃0x20~0x7F 之間 ASCII 碼對(duì)應(yīng)的點(diǎn)陣數(shù)據(jù) 表 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x

48、00, 0x9e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x28, 0xfe, 0x28, 0xfe, 0x28, 0x48, 0x54, 0xfe, 0x54, 0x24, 0x46, 0x26, 0x10, 0xc8, 0xc4, 0x6c, 0x92, 0xaa, 0x44, 0xa0, 0x00, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x00, 0x00, 0x82, 0x44, 0x38, 0x00, 0x28, 0x10, 0x7c, 0x10, 0x28,

49、 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, 0xa0, 0x60, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x7C, 0xA2, 0x92, 0x8A, 0x7C, 0x00, 0x84, 0xFE, 0x80, 0x00, 0x84, 0xC2, 0xA2, 0x92, 0x8C, 0x42, 0x82, 0x8A, 0x96, 0x62, 0x30, 0x28, 0x24, 0

50、xFE, 0x20, 0x4E, 0x8A, 0x8A, 0x8A, 0x72, 0x78, 0x94, 0x92, 0x92, 0x60, 0x02, 0xE2, 0x12, 0x0A, 0x06, 0x6C, 0x92, 0x92, 0x92, 0x6C, 0x0C, 0x92, 0x92, 0x52, 0x3C, 0x00, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0xAC, 0x6C, 0x00, 0x00, 0x10, 0x28, 0x44, 0x82, 0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x8

51、2, 0x44, 0x28, 0x10, 0x04, 0x02, 0xA2, 0x12, 0x0C, 0x64, 0x92, 0xF2, 0x82, 0x7C, 0xFC, 0x22, 0x22, 0x22, 0xFC, 0xFE, 0x92, 0x92, 0x92, 0x6C, 0x7C, 0x82, 0x82, 0x82, 0x44, 0xFE, 0x82, 0x82, 0x44, 0x38, 0xFE, 0x92, 0x92, 0x92, 0x82, 0xFE, 0x12, 0x12, 0x12, 0x02, 0x7C, 0x82, 0x92, 0x92, 0xF4,

52、 0xFE, 0x10, 0x10, 0x10, 0xFE, 0x00, 0x82, 0xFE, 0x82, 0x00, 0x40, 0x80, 0x82, 0x7E, 0x02, 0xFE, 0x10, 0x28, 0x44, 0x82, 0xFE, 0x80, 0x80, 0x80, 0x80, 0xFE, 0x04, 0x18, 0x04, 0xFE, 0xFE, 0x08, 0x10, 0x20, 0xFE, 0x7C, 0x82, 0x82, 0x82, 0x7C, 0xFE, 0x12, 0x12, 0x12, 0x0C, 0x7C, 0x82, 0xA2, 0x

53、42, 0xBC, 0xFE, 0x12, 0x32, 0x52, 0x8C, 0x8C, 0x92, 0x92, 0x92, 0x62, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x7E, 0x80, 0x80, 0x80, 0x7E, 0x3E, 0x40, 0x80, 0x40, 0x3E, 0x7E, 0x80, 0x70, 0x80, 0x7E, 0xC6, 0x28, 0x10, 0x28, 0xC6, 0x0E, 0x10, 0xE0, 0x10, 0x0E, 0xC2, 0xA2, 0x92, 0x8A, 0x86, 0x00, 0xFE

54、, 0x82, 0x82, 0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x82, 0x82, 0xFE, 0x00, 0x08, 0x04, 0x02, 0x04, 0x08, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x02, 0x04, 0x08, 0x00, 0x40, 0xA8, 0xA8, 0xA8, 0xF0, 0xFE, 0x90, 0x88, 0x88, 0x70, 0x70, 0x88, 0x88, 0x88, 0x40, 0x70, 0x88, 0x88, 0x90, 0xFE,

55、0x70, 0xA8, 0xA8, 0xA8, 0x30, 0x10, 0xFC, 0x12, 0x02, 0x04, 0x18, 0xA4, 0xA4, 0xA4, 0x7C, 0xFE, 0x10, 0x08, 0x08, 0xF0, 0x00, 0x88, 0xFA, 0x80, 0x00, 0x40, 0x80, 0x88, 0x7A, 0x00, 0xFE, 0x20, 0x50, 0x88, 0x00, 0x00, 0x82, 0xFE, 0x80, 0x00, 0xF8, 0x08, 0x30, 0x08, 0xF8, 0xF8, 0x10, 0x08, 0x0

56、8, 0xF0, 0x70, 0x88, 0x88, 0x88, 0x70, 0xF8, 0x28, 0x28, 0x28, 0x10, 0x10, 0x28, 0x28, 0x30, 0xF8, 0xF8, 0x10, 0x08, 0x08, 0x10, 0x90, 0xA8, 0xA8, 0xA8, 0x40, 0x08, 0x7E, 0x88, 0x80, 0x40, 0x78, 0x80, 0x80, 0x40, 0xF8, 0x38, 0x40, 0x80, 0x40, 0x38, 0x78, 0x80, 0x60, 0x80, 0x78, 0x88, 0x50,

57、 0x20, 0x50, 0x88, 0x18, 0xA0, 0xA0, 0xA0, 0x78, 0x88, 0xC8, 0xA8, 0x98, 0x88, 0x00, 0x10, 0x6C, 0x82, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x82, 0x6C, 0x10, 0x00, 0x10, 0x10, 0x54, 0x38, 0x10, 0x10, 0x38, 0x54, 0x10, 0x10}; void LCD_DispFill(uchar filldata) { uchar x, y; LCD_Wr

58、Cmd(CS1,LCD_STARTROW)//設(shè)置左半屏顯示起始行為0 LCD_WrCmd(CS2,LCD_STARTROW)〃設(shè)置右半屏顯示起始行為0 for(y=0; y<8; y++) // 循環(huán)充填 8 頁(yè) { LCD_WrCmd(CS1,LCD_ADDRSTRY+y); // 設(shè)置左半屏頁(yè)地址 LCD_WrCmd(CS1,LCD_ADDRSTRX); // 設(shè)置左半屏列地址 LCD_WrCmd(CS2,LCD_ADDRSTRY+y); // 設(shè)置右半屏頁(yè)地址 LCD_WrCmd(CS2,LCD_ADDRSTRX); // 設(shè)置右半屏列地址 for(x=0; x<64; x++)

59、//充填每頁(yè)的64個(gè)單元(列) { LCD_WrDat(CS1,filldata); LCD_WrDat(CS2,filldata); } } } //液晶模塊初始 void LCD_DispI ni(void) { uint i; LCD_RST = 0; // 復(fù)位驅(qū)動(dòng)芯 for(i=0; i<500; i++); LCD_RST = 1; LCD_WrCmd(CS1,LCD_DISPON); // 打開(kāi)顯示 LCD_WrCmd(CS1 ,LCD_STARTROW); // 設(shè)置顯示起始行為 0 LCD_WrCmd(CS2 ,L CD_DISPON); LCD

60、_WrCmd(CS2,LCD_STARTROW); LCD_DispFill(00); // 清屏 LCD_WrCmd(CS1,LCD_ADDRSTRY+0);設(shè)置頁(yè)(字符行)地址 LCD_WrCmd(CS1,LCD_ADDRSTRX+0);設(shè)置列地址 LCD_WrCmd(CS2,LCD_ADDRSTRY+0); LCD_WrCmd(CS2,LCD_ADDRSTRX+0); } //在液晶屏的cy(0-7)行、cx(0-15)列顯示字符dispdata void LCD_DispChar(uchar cy, uchar cx, char dispdata) { uchar co

61、de *pch; uchar i; bit port; cy = cy&0x07; //參數(shù)過(guò)濾 cx = cx&0x0f; pch = &ASCII_TAB[(dispdata-0X20)*5]; // 指向字符起始列的點(diǎn)陣碼 if( (cx&0x08) == 0 ) { port=CS1; i=cx<<3; // } else // { port=CS2; i = (cx&0x07)v<3; II //列號(hào)cx<8,在左半屏顯示 求出該字符在屏幕上的起始列號(hào) 列號(hào)cx>8,在右半屏顯示 求出該字符在屏幕上的起始列號(hào) } LCD_WrCmd(port,

62、LCD_ADDRSTRX+i); II LCD_WrCmd(port,LCD_ADDRSTRY+cy); II for(i=0; i<5; i++); II LCD_WrDat(port,0x00); for(i=0; i<5; i++) II { LCD_WrDat(port,*pch); pch++; } LCD_WrDat(port,0x00); for(i=0; i<5; i++); LCD_WrDat(port,0x00); 設(shè)置當(dāng)前列地址 設(shè)置當(dāng)前頁(yè)地址 II 延時(shí) II 顯示一列空格 送出字符的5列點(diǎn)陣碼 顯示一列空格 } II在液晶屏的cy

63、(0-7)行、cx(0-15)列顯示字符disp_str void LCD_DispStr(uchar cy, uchar cx, char *disp_str) { while( *disp_str != '\0') { cy = cy&0x07; cx = cx&0x0f; II 參數(shù)過(guò)濾 LCD_DispChar(cy, ex, *disp_str); // 顯示字符 disp_str++; //指向下一字符數(shù)據(jù) cx++; if(cx>15) cy++; // 指向下一顯示行 } } uchar code HZTAB[]= { 0x02,0x1C,0xC8,

64、0x30,0x40,0x20,0x10,0x0C, 0x23,0xC4,0x08,0x10,0x30,0x60,0x20,0x00, 0x02,0x7E,0x01,0x00,0x01,0x01,0x01,0x09, 0x11,0x71,0x29,0x07,0x01,0x00,0x00,0x00,/*" 冷",0*/ 0x02,0xE2,0x82,0xF2,0x12,0xDF,0x52,0xD2, 0x52,0x17,0xFA,0x16,0xDA,0x92,0x12,0x00, 0x10,0x8E,0x62,0x1F,0x00,0x1F,0x15,0x1D, 0x57,0x20,0x13,0x0

65、C,0x33,0x40,0x30,0x00,/*" 藏",1*/ 0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A, 0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00, 0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F, 0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,/*" 溫",2*/ 0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5, 0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00, 0x80,0x60,0

66、x1F,0x80,0x80,0x42,0x46,0x2A, 0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,/*" 度",3*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" : ",4*/ 0x02,0x04,0xCC,0x30,0x84,0xC4,0xA4,0x9C, 0x87,0xF4,0x84,0x84,0xC4,0x84,0x04,0x00, 0x02,0xFE,0x01,0x40,0x20,0x10,0x0E,0x44, 0x80,0x7F,0x00,0x02,0x0C,0x38,0x10,0x00,/*" 凍",5*/ 0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42, 0xFA,0x42,0x42,0x42,0x62,0x4

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!