溫度測量及濕度檢測解讀_第1頁
溫度測量及濕度檢測解讀_第2頁
溫度測量及濕度檢測解讀_第3頁
溫度測量及濕度檢測解讀_第4頁
溫度測量及濕度檢測解讀_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、智能測控系統(tǒng)課程大作業(yè)作業(yè)題目 :環(huán)境溫度測量及濕度檢測學院名稱 :電氣工程學院專業(yè)班級 :測控 1303 班學生姓名 :杜棟梁學號 :201323030320完成時間:2016-6任課教師 :王威目錄1 課程大作業(yè)內容31.1 課題設計背景31.2 課題設計的意義31.3 設計目標32 系統(tǒng)設計方案42.1 溫濕度傳感器選型與論證42.2 顯示屏的選擇與論證42.2 信號采集電路52.3 供電電源的選擇63 硬件設計63.1 結構框圖73.2 溫度信號采集電路73.2.1 傳感器簡介83.3 單片機的最小電路圖94 軟件設計104.1程序模塊104.2軟件設計流程圖105 調試116 總結1

2、1參考文獻12附件12程序121 課程大作業(yè)內容1.1 課題設計背景隨著科技的發(fā)展對對檢測技術要求的不斷增高, 迫使新材料的開發(fā)及尋找檢測能力的不斷提升。 傳感器的種類與測量精度以及測量穩(wěn)定性也發(fā)生了巨大的變化,從最初的接觸式測溫到非接觸式測溫, 膨脹式、熱電阻式以及熱電偶式測溫, 使溫度檢測領域得到了快速發(fā)展。 再加上單片機技術的不斷發(fā)展,測量檢測變得更加方便。 溫濕度傳感器除電阻式、 電容式濕敏元件之外,還有電解質離子型濕敏元件、 重量型濕敏元件 (利用感濕膜重量的變化來改變振蕩頻率)、光強型濕敏元件、聲表面波濕敏元件等。濕敏元件的線性度及抗污染性差,在檢測環(huán)境濕度時,濕敏元件要長期暴露在

3、待測環(huán)境中,很容易被污染而影響其測量精度及長期穩(wěn)定性。在公共工作場所為了達到讓人感到舒適的環(huán)境溫度及濕度, 往往需要對溫度、濕度進行檢測已達到最佳的效果。 本課題以 ds18b20 溫度傳感器為溫度檢測器件,設計了一個對單點溫度實時檢測的單片機溫度檢測系統(tǒng)。以 bsp_dht11 濕度傳感器為濕度檢測器件。1.2 課題設計的意義( 1)、該設計具有以下優(yōu)點:制作簡單,便于使用,價格便宜,穩(wěn)定可靠,功耗低省電。( 2)通過設計與制作可以達到這些目的:熟悉 msp430單片機技術的應用范圍; 掌握 msp430單片機編程的特點, 提高實踐操作能力能夠在制作過程中發(fā)現并改正錯誤。達到一定的解決問題的

4、能力。提高了動手的能力。1.3 設計目標使用 ds18b20 溫度傳感器測量環(huán)境溫度并完成a/d 轉換。bsp_dht11 濕度傳感器測量濕度,把數據發(fā)送到msp430中進行轉換用 lcd進行顯示。2 系統(tǒng)設計方案系統(tǒng)設計方案的選擇是決定設計作品完整度與精度的重要前提, 一個好的作品的完成需要選擇比較多種方案, 從多種方案中選擇最優(yōu)方案, 才能使設計作品精度更高。本次設計主要從實用性,穩(wěn)定性,精度等級,可靠性,經濟性等方面進行考慮。 在完成本次課程設計要求、 目的的情況下盡可能的準確和經濟的條件下進行選擇。2.1 溫濕度傳感器選型與論證本設計采用測量精度高, 性能穩(wěn)定可靠的 ds18b20 溫

5、度傳感器作為溫度檢測器件和 bsp_dht11 溫濕度傳感器作為濕度監(jiān)測器件。 盡管 bsp_dht11 也能夠檢測出環(huán)境溫度, 但該傳感器的測溫范圍窄, 精度不夠,和要求測量的環(huán)境較為苛刻。因此選用較為精確的 ds18b20 來測量溫度。 該傳感器具有適應性強檢測迅速, 受環(huán)境影響較小。 且對溫度可以接觸和非接觸測量均可。而其他傳感器價格和測量條件較為苛刻因此不建議選取。2.2 顯示屏的選擇與論證方案一:采用lcd1602顯示。lcd1602是一種專門用于顯示字母、數字、符號等點陣式lcd,能夠同時顯示16x02 即32 個字符。它由若干個5x7或者5x11等點陣字符位組成,每個點陣字符位都

6、可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。由于它不能顯示漢字, 而溫度濕度的顯示需要顯示漢字,所以此方案不可行。方案二:采用 lcd5110 顯示。lcd5110 采用串行接口與主處理器進行通信,接口信號線數量大幅度減少,支持多種串行通信協(xié)議, 傳輸速率高達 4mbps,可全速寫入顯示數據, 無等待時間。它由 84x48 的點陣 lcd 組成,可顯示漢字和字符。 lcd5110 工作電壓 3.3v,正常顯示時工作電流200ua 以下,而且接口簡單,體積小便于安裝攜帶,速度快,價格便宜。所以采用此方案,顯示模塊選擇用lcd 5110。但屏幕色彩較

7、暗,在光線較強的地方無法清晰的辨別。方案三:采用 tft 彩屏顯示。tft-lcd 采用低壓應用,低驅動電壓,固體化使用安全性和可靠性提高;平板化,又輕薄,節(jié)省了大量原材料和使用空間;低功耗,它的功耗約為crt 顯示器的十分之一, 反射式 tft-lcd 甚至只有 crt 的百分之一左右, 節(jié)省了大量的能源;高亮度,高對比度,高響應速度。無輻射、無閃爍,對使用者的健康無損害。適用范圍寬,從 -20到 +50的溫度范圍內都可以正常使用,壽命超過3 萬小時,且價格便宜因此本次設計采用tft-lcd 作為顯示屏。2.2 信號采集電路ds18b20是一種 64 位只讀存儲器儲存器件的唯一片序列號。高速

8、暫存器含有兩個字節(jié)的溫度寄存器,這兩個寄存器用來存儲溫度傳感器輸出的數據。除此之外,高速暫存器提供一個直接的溫度報警值寄存器(th和tl),和一個字節(jié)的配置寄存器。配置寄存器允許用戶將溫度的精度設定為9,10,11 或12 位。 th,tl 和配置寄存器是非易失性的可擦除程序寄存器(eeprom),所以存儲的數據在器件掉電時不會消失。ds18b20通過達拉斯公司獨有的單總線協(xié)議依靠一個單線端口通訊。當全部器件經由一個3態(tài)端口或者漏極開路端口( dq引腳在 ds18b20上的情況下 ) 與總線連接的時候, 控制線需要連接一個上拉電阻。在這個總線系統(tǒng)中,微控制器(主器件)依靠每個器件獨有的64位片

9、序列號辨認總線上的器件和記錄總線上的器件地址。由于每個裝置有一個獨特的片序列碼 , 總線可以連接的器件數目事實上是無限的。ds18b20的另一個功能是可以在沒有外部電源供電的情況下工作。當總線處于高電平狀態(tài),dq與上拉電阻連接通過單總線對器件供電。同時處于高電平狀態(tài)的總線信號對內部電容( cpp)充電,在總線處于低電平狀態(tài)時,該電容提供能量給器件。這種提供能量的形式被稱為 “寄生電源”。作為替代選擇, ds18b20同樣可以通過 vdd引腳連接外部電源供電。如下圖2.1s18b20 的工作原理 圖 2.1用戶單片機發(fā)送一次開始信號后, dht11 從低功耗模式轉換到高速模式, 待主機開始信號結

10、束后, dht11 發(fā)送響應信號,送出 40bit 的數據,并觸發(fā)一次信采集。信號發(fā)送如圖所示。數據時序圖 2.2bsp_dht11 時序原理圖 2.22.3 供電電源的選擇本設計采用標準usb數據線 5v 為該設計供電。3 硬件設計硬件電路的設計是該系統(tǒng)重要的部分,是系統(tǒng)運行的前提, 如果硬件設計的科學合理就能大大增加該系統(tǒng)功能的穩(wěn)定性,可靠性。系統(tǒng)軟件的設計是以硬件設計為前提, 硬件設計是單片機高效工作的前提與重要保障,但是只有軟件和硬件都正確, 并且軟件與硬件能夠相互兼容、協(xié)調工作才能使系統(tǒng)工作達到我們想要的效果。 本系統(tǒng)的硬件設計部分主要包括傳感器電橋電路設計、運算放大電路的設計、單片

11、機最小系統(tǒng)設計下面進行詳細介紹。3.1 結構框圖本設計采用均采用3.3v 電源供電,溫度傳感器和溫濕度傳感器采集到數據后發(fā)送到單片機,單片機根據接收到的數據進行處理后再lcd 屏幕上顯示。如圖 3.1位系統(tǒng)結構框圖。圖 3.1系統(tǒng)結構框圖3.2 溫度信號采集電路溫度信號的獲取關系到后續(xù)電路設計的難度,因此溫度信號是獲取是本設計的關鍵。3.2.1傳感器簡介ds18b20的簡介:獨特的單線接口僅需一個端口引腳進行通訊每個器件有唯一的 64 位的序列號存儲在內部存儲器中簡單的多點分布式測溫應用無需外部器件可通過數據線供電。供電范圍為3.0v到 5.5v測溫范圍為 -55 125( 67 257)在

12、10 85范圍內精確度為 5溫度計分辨率可以被使用者選擇為912位最多在 750ms 內將溫度轉換為 12 位數字用戶可定義的非易失性溫度報警設置報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件與 ds1822兼容的軟件應用包括溫度控制、工業(yè)系統(tǒng)、消費品、溫度計或任何熱感測系統(tǒng)bsp_dht11 的簡介:data 用于微處理器與 dht11之間的通訊和同步 , 采用單總線數據格式 , 一次通訊時間 4ms左右 , 數據分小數部分和整數部分 , 當前小數部分用于以后擴展 , 現讀出為零 . 操作流程如下 :一次完整的數據傳輸為 40bit,高位先出。數據格式 :8bit濕度整數數據

13、+8bit 濕度小數數據+8bi 溫度整數數據 +8bit 溫度小數數據+8bit校驗和數據傳送正確時校驗和數據等于“ 8bit 濕度整數數據 +8bit 濕度小數數據 +8bi 溫度整數數據 +8bit 溫度小數數據”所得結果的末 8位。實際使用時發(fā)現小數位都是0,這一步忽略對結果也不造成影響。3.3 單片機的最小電路圖msp430g2553簡介:msp430g2553性能參數 (dip-20)工作電壓范圍: 1.83.6v。5 種低功耗模式。16 位的 risc 結構,62.5ns指令周期。超低功耗運行模式 -230 a ;待機模式 -0.5 a;關閉模式 -0.1 a;可以在不到 1s

14、的時間里超快速地從待機模式喚醒。基本時鐘模塊配置:具有四種校準頻率并高達16mhz 的內部頻率;內部超低功耗lf 振蕩器; 32.768khz 晶體;外部數字時鐘源。兩個16 位 timer_a,分別具有三個捕獲比較寄存器。用于模擬信號比較功能或者斜率模數(a/d) 轉換的片載比較器。帶內部基準、 采樣與保持以及自動掃描功能的10 位 200-ksps 模數 (a/d) 轉換器。16kb 閃存, 512b 的 ram 。 16 個 i/o 口。這里給出了本次實驗的最小電路圖3.1最小電路圖 3.14 軟件設計4.1 程序模塊本裝置主要用到 msp430g2553單片機的 io 功能程序設計中主

15、要包括:1. 單片機對溫度傳感器的數據接收模塊。2. 單片機對溫濕度傳感器的數據接收模塊。3. 對 lcd屏的顯示模塊。4.2 軟件設計流程圖圖 4.1 軟件流程圖5 調試本次設計最主要的工作之一就是對系統(tǒng)的調試部分, 因為一個測量顯示軟件的主要功能就是顯示正確的結果。 開始顯示的數據會因為采集的不準確和其他方面的誤差導致接收到的數據不能正確表示想要的得到的數據, 也可能會因為采集過程出現頻繁的錯誤等問題。 因此調試的工作極其重要, 在溫度傳感器的采集過程中經過和標準的溫度值的校準, 測出了誤差的范圍和誤差的大致規(guī)律最后在現實過程中消除了這種誤差讓溫度測量更加準確穩(wěn)定。在濕度傳感器的調試過程中

16、的工作更是復雜, 濕度傳感器可以返回溫度和濕度值,但經過檢測返回的溫度值與實際的溫度值偏差較大, 而濕度的計算方法是在該溫度條件下的空氣中水含量的多少,這就使得測得的溫度不準導致濕度不準確,最后查閱資料找到了濕度的測量計算方法。 將返回的濕度值加權后再顯示出來。這些工作很復雜濕度傳感器的工作要求的時序很高就導致在時序配置上要花很大功夫一點不對就不能返回正確的結果屢屢出錯??傊{試工作發(fā)雜多變。6 總結本次設計的東西看起來很簡單, 好像沒有什么技術含量。 但當實際操作時想要完美的運行卻遇到了重重的困難。因為 msp430 是開始接觸的單片機,之前也一直沒有做過關于它的太多試驗。 修改驅動顯示屏程

17、序也花費了很長時間才將原來 51 單片機的程序移植過來,結果刷屏與顯示與想要顯示的位置不符,后來請教同學計算了 lcd 的顯示位置才更改過來。接下來的濕度調試,因為開始找不到 bsp_dht11溫濕度傳感器的原理圖就在網上找了關于它的程序結果發(fā)現不能用不管怎么更改總是無法返回正確的數值,最后終于找到了關于該傳感器的詳細資料。 發(fā)現該傳感器的工作要求對時序的要求特別嚴格, 最后精確計算了延時時間并且進行了延時時間的修改才能返回結果。 但得到的濕度值與正常的濕度值存在較大的偏差, 但沒有標準濕度值可以進行比較于是選取了天氣預報軟件上面公布的濕度值進行校準。因為這次作業(yè)選用的是模塊化的傳感器且傳感器

18、對電壓的要求不太嚴格3.0v5.0v 均可以,為了降低設計設計的復雜度就選取了給單片機供電的3.3v 電壓作為傳感器和顯示屏的供電電壓。本次對單片機的實際制作成東西才感到動手的重要性, 和一些看起來簡單的東西也許不那么簡單。 在以后的學習中要增加動手的能力。參考文獻1 楊家成單片機原理與應用及 c51程序設計 北京:清華大學出版社,20072 夏路易 石宗義 protel 99se 電路原理圖與電路板設計教程北京:北京希望電子出版社, 20043 李林功單片機原理與應用基于實例驅動和 proteus 仿真北京:科學出版社, 20114 皮大能等 . 單片機課程設計指導書 . 北京:北京理工大學

19、出版社, 20105 msp430單片機 c 語言應用程序設計實例精講 電子工業(yè)出版社 2006.05附件程序主程序#include#includefont.h#includesys.h#includelcd.h#includeds18b20.h#includedht11.hvoidclk_init ( void )/ 時鐘配置if(calbc1_16mhz =0xff | caldco_16mhz = 0xff)while (1);/ if calibrationconstants erasedcpu!/ do not load, trapdcoctl=0;bcsctl1 = calbc1_

20、16mhz;/ set rangedcoctl = caldco_16mhz;/ set dco step +modulation */bcsctl2 |= 0x06;/smclk為dco的 8分頻, 2mvoid showjiemian ()/ 界面顯示lcd_fill(0,0,128,40,white); / 在指定區(qū)域填充顏色 showhanzi(0,4,0);showhanzi(32,4,1);showhanzi(64,4,2);showhanzi(96,4,3);/ 環(huán)境監(jiān)測lcd_showstring(100,68, %); /% :showhanzi1(14,42,0,red,y

21、ellow);showhanzi1(34,42,1,red,yellow); / 溫度showhanzi1(100,42,2,blue,yellow); / showhanzi1(14,68,3,red,yellow);showhanzi1(34,68,4,red,yellow); / 濕度lcd_showstring(56,42, );/ 溫度顯示lcd_showchar(72,42,.,0);lcd_showstring(70,68, );/ 濕度顯示intmain( void )wdtctl = wdtpw | wdthold; / stop watchdog timer unsigne

22、d int temp=0,temp1,temp2,temp3; /ucharrh_data_h = 0;p2dir |= 0x1f;/ 設置 p2為輸出方式輸出方式p2out |= 0x1f;back_color=yellow;point_color=blue;/ 背景色,畫筆色clk_init();lcd_init();lcd_clear(yellow);dht11_io_init();showjiemian();while (1)temp=read_temp();temp1=temp/100;temp2=temp%100/10;temp3=temp%10;lcd_shownum(56,42

23、,temp1,2);/ 顯示數字lcd_shownum(80,42,temp2,1);/ 顯示數字lcd_shownum(88,42,temp3,1);/ 顯示數字dht11();lcd_shownum(88,68, ucharrh_data_h,3);delay_ms(1000);溫度采集#include#includeds18b20.h#includesys.hvoidds18b20_init ( void )/ds18b20初始化函數dq_out;dq_l;/ 拉低總線delay_us(480);/ 精確延時大于dq_h;/ 釋放總線delay_us(48);dq_in;dq_out;d

24、q_h;delay_us(360);480usvoidds18b20_writedata(u8 dat)/ 寫一個字節(jié)u8 i;for (i=0;i=1;/ 準備下一位數據的傳送delay_us(50);dq_h;/ 釋放總線,等待總線恢復delay_us(8);u8 ds18b20_readdata( void ) / 讀一個字節(jié)u8 i;u8 dat=0;for (i=0;i=1; / 右移,準備接受新的數據位dq_l; / 拉低總線產生讀信號delay_us(5);dq_h; / 釋放總線準備讀數據delay_us(5);/ 等待 5微秒dq_in;/ 配置為輸入,開始讀取數據位_nop

25、();if (read_dq)/ 該位是否為高dat|=0x80; / 是就將此位置高delay_us(50);/ 等待 50微秒dq_out;dq_h;delay_us(5);return (dat);/ 將讀到的一個字節(jié)返回u16 read_temp( void )/ 讀取溫度u16 temp_low,temp_high,d;floatc;ds18b20_init();/ 初始化,每次寫命令都從初始化開始ds18b20_writedata(0xcc);/ 跳過 rom命令ds18b20_writedata(0x44);/ 溫度轉換命令ds18b20_init(); / 初始化,每次寫命令都

26、從初始化開始 ds18b20_writedata(0xcc); / 跳過 rom命令ds18b20_writedata(0xbe);/temp_low=ds18b20_readdata();/ 讀溫度低字節(jié) temp_high=ds18b20_readdata(); / 讀溫度高字節(jié)temp_high=8;d=temp_high|temp_low;c=d*0.0625;d=(u16)(c*100);return (d);/ 返回 16位變量濕度采集#include dht11.h#includesys.h#includeunsignedintuchartemp;unsignedcharucha

27、rt_data_h,uchart_data_l,ucharrh_data_h,ucharrh_data_l,ucharcheckd ata;unsignedcharuchart_data_h_temp,uchart_data_l_temp,ucharrh_data_h_temp,ucharrh_dat a_l_temp,ucharcheckdata_temp;voiddht11_io_init ()p1sel &= bit0;voidcom( void )unsignedchar i;unsignedchar ucharflag;uchartemp=0;p1dir &= bit0;for (i

28、=0;i8;i+)ucharflag=2;while (!(p1in&0x01)&ucharflag+);delay_us(30);uchartemp=uchartemp18msdata_h;delay_us(30);p1dir &= bit0;if (!(p1in&0x01)ucharflag=1;while (!(p1in&0x01)&ucharflag+);ucharflag=1;while (p1in&0x01)&ucharflag+);com();ucharrh_data_h_temp=uchartemp;com();ucharrh_data_l_temp=uchartemp;com

29、();uchart_data_h_temp=uchartemp;com();uchart_data_l_temp=uchartemp;com();ucharcheckdata_temp=uchartemp;uchartemp=(uchart_data_h_temp+uchart_data_l_temp+ucharrh_data_h_temp+ ucharrh_data_l_temp);if (uchartemp=ucharcheckdata_temp)ucharrh_data_h=ucharrh_data_h_temp;ucharrh_data_l=ucharrh_data_l_temp;uc

30、hart_data_h=uchart_data_h_temp;uchart_data_l=uchart_data_l_temp;ucharcheckdata=ucharcheckdata_temp;elseucharrh_data_h=12;uchart_data_h=23;/p2dir |= bit0;顯示#include#includefont.h#includesys.h#includelcd.hu16 back_color, point_color;/ 背景色,畫筆色 void lcd_writ_bus( char da) / 串行數據寫入u8 i;for (i=0; i8; i+)i

31、f (da & 0x80)sda_h;elsesda_l;sck_l;da 8);lcd_writ_bus(da);voidlcd_wr_reg( char da)ao_l;lcd_writ_bus(da);voidlcd_wr_reg_data( intreg, intda)lcd_wr_reg(reg);lcd_wr_data(da);voidaddress_set ( unsigned intx1, unsignedinty1, unsignedintx2, unsignedinty2)lcd_wr_reg(0x2a);lcd_wr_data8(x18);lcd_wr_data8(x1)

32、;lcd_wr_data8(x28);lcd_wr_data8(x2);lcd_wr_reg(0x2b);lcd_wr_data8(y18);lcd_wr_data8(y1+32);lcd_wr_data8(y28);lcd_wr_data8(y2+32);lcd_wr_reg(0x2c);voidlcd_init( void )/ 調用一次這些函數,免得編譯的時候提示警告cs_h;/*if(lcd_cs=0)lcd_wr_reg_data(0,0);lcd_showstring(0,0, );lcd_shownum(0,0,0,0);lcd_show2num(0,0,0,0);lcd_dra

33、wpoint_big(0,0);lcd_drawrectangle(0,0,0,0);draw_circle(0,0,0);*/rest_h;delayms(5);rest_l;delayms(5);rest_h;cs_h;delayms(5);cs_l;/ 打開片選使能lcd_wr_reg(0x11);/sleep outdelayms(120);/delay 120ms/-st7735s framerate-/lcd_wr_reg(0xb1);lcd_wr_data8(0x05);lcd_wr_reg(0x11);/sleep exitdelayms (120);/st7735r fram

34、e ratelcd_wr_reg(0xb1);lcd_wr_data8(0x01);lcd_wr_data8(0x2c); lcd_wr_data8(0x2d);lcd_wr_reg(0xb2);lcd_wr_data8(0x01); lcd_wr_data8(0x2c); lcd_wr_data8(0x2d);lcd_wr_reg(0xb3);lcd_wr_data8(0x01); lcd_wr_data8(0x2c); lcd_wr_data8(0x2d);lcd_wr_data8(0x01); lcd_wr_data8(0x2c); lcd_wr_data8(0x2d);lcd_wr_r

35、eg(0xb4);/column inversionlcd_wr_data8(0x07);/st7735r power sequencelcd_wr_reg(0xc0);lcd_wr_data8(0xa2); lcd_wr_data8(0x02); lcd_wr_data8(0x84); lcd_wr_reg(0xc1); lcd_wr_data8(0xc5); lcd_wr_reg(0xc2);lcd_wr_data8(0x0a); lcd_wr_data8(0x00);lcd_wr_reg(0xc3);lcd_wr_data8(0x8a); lcd_wr_data8(0x2a);lcd_w

36、r_reg(0xc4);lcd_wr_data8(0x8a); lcd_wr_data8(0xee);lcd_wr_reg(0xc5);/vcomlcd_wr_data8(0x0e);lcd_wr_reg(0x36);/mx, my, rgb modelcd_wr_data8(0xc8);/st7735r gamma sequencelcd_wr_reg(0xe0);lcd_wr_data8(0x0f); lcd_wr_data8(0x1a);lcd_wr_data8(0x0f); lcd_wr_data8(0x18);lcd_wr_data8(0x2f); lcd_wr_data8(0x28

37、);lcd_wr_data8(0x20); lcd_wr_data8(0x22);lcd_wr_data8(0x1f); lcd_wr_data8(0x1b);lcd_wr_data8(0x23); lcd_wr_data8(0x37); lcd_wr_data8(0x00);lcd_wr_data8(0x07);lcd_wr_data8(0x02); lcd_wr_data8(0x10);lcd_wr_reg(0xe1);lcd_wr_data8(0x0f); lcd_wr_data8(0x1b);lcd_wr_data8(0x0f); lcd_wr_data8(0x17);lcd_wr_d

38、ata8(0x33); lcd_wr_data8(0x2c);lcd_wr_data8(0x29); lcd_wr_data8(0x2e);lcd_wr_data8(0x30); lcd_wr_data8(0x30);lcd_wr_data8(0x39); lcd_wr_data8(0x3f);lcd_wr_data8(0x00); lcd_wr_data8(0x07);lcd_wr_data8(0x03); lcd_wr_data8(0x10);lcd_wr_reg(0x2a);lcd_wr_data8(0x00);lcd_wr_data8(0x00);lcd_wr_data8(0x00);

39、lcd_wr_data8(0x7f);lcd_wr_reg(0x2b);lcd_wr_data8(0x00);lcd_wr_data8(0x00);lcd_wr_data8(0x00);lcd_wr_data8(0x7f);lcd_wr_reg(0xf0);/enable test commandlcd_wr_data8(0x01);lcd_wr_reg(0xf6);/disable ram power save modelcd_wr_data8(0x00);lcd_wr_reg(0x3a);/65k modelcd_wr_data8(0x05);lcd_wr_reg(0x29);/displ

40、ay onlcd_wr_reg(0x2c);/ 清屏函數/color:要清屏的填充色voidlcd_clear(u16 color)u8 vh,vl;u16 i,j;vh=color8;vl=color;address_set(0,0,lcd_w-1,160);for (i=0;ilcd_w;i+)for (j=0;jlcd_h;j+)lcd_wr_data8(vh);lcd_wr_data8(vl);/ 在指定位置顯示一個漢字 (32*33 大小 ) /dcolor 為內容顏色, gbcolor 為背靜顏色voidshowhanzi ( unsignedintx, unsignedinty,

41、 unsignedchar index)unsignedchar i,j;constunsignedchar *temp=hanzi;address_set(x,y,x+31,y+31);temp+=index*128;for (j=0;j128;j+)/ 設置區(qū)域for (i=0;i8;i+)if (*temp&(1i)!=0)lcd_wr_data(point_color);elselcd_wr_data(back_color);temp+;/ 在指定位置顯示一個漢字 (16*16 大小 ) /dcolor 為內容顏色, gbcolor 為背靜顏色voidshowhanzi1( unsig

42、nedintx, unsignedinty, unsignedchar index,u16p_color,u16 b_color)unsignedchar i,j;constunsignedchar *temp=hanzi1;back_color = b_color; point_color = p_color; address_set(x,y,x+15,y+15); temp+=index*32; for (j=0;j32;j+) / 設置區(qū)域for (i=0;i8;i+)if (*temp&(1i)!=0)lcd_wr_data(point_color);elselcd_wr_data(back_color);temp+;/ 畫點/point_color:此點的顏色voidlc

溫馨提示

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

最新文檔

評論

0/150

提交評論