TSL2561 LCD結(jié)合顯示_第1頁
TSL2561 LCD結(jié)合顯示_第2頁
TSL2561 LCD結(jié)合顯示_第3頁
TSL2561 LCD結(jié)合顯示_第4頁
TSL2561 LCD結(jié)合顯示_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、#include<reg52.h>#include < intrins.h >/TSL2561地址#define uchar unsigned char#define uint unsigned int/設備讀寫地址#define SLAVE_ADDR_WR 0x52#define SLAVE_ADDR_RD 0x53/命令控制寄存器#define CONTROL 0x80#/define TIMING 0x81#define DATA0LOW 0x8C#define DATA0HIGH 0x8D#define DATA1LOW 0x8E#define DATA1HIG

2、H 0x8Fuchar DataLow0,DataHigh0,DataLow1,DataHigh1,commad;long double Channel0,Channel1;unsigned long temp=0,wet=0;float ratio;unsigned char le6;/LCD控制腳sbit LCD_RS = P25; sbit LCD_RW = P26; sbit LCD_EN = P27; sbit sda = P20;sbit scl = P21;void delay();uchar code cdis3 = "guangzhaoshiyan"uch

3、ar code cdis4 = "qdu: Lux" ;#define delayNOP() _nop_() ;_nop_() ;_nop_() ;_nop_() ; void delay1(int ms) unsigned char y ; while(ms-) for(y=0;y<250;y+) _nop_() ; _nop_() ; _nop_() ; _nop_() ; void delays(unsigned int cnt) while(-cnt);void delay1ms(uchar x)uchar a,b;for(a=x;a>0;a-)for(

4、b=100;b>0;b-);/*/*檢查LCD忙狀態(tài) */*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。 */*/ bit lcd_busy() bit result ; LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ; result = (bit)(P0&0x80) ; LCD_EN = 0 ; return(result) ; /*寫指令數(shù)據(jù)到LCD */*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 */*/void lcd_wcmd(uchar cmd) while(lcd_b

5、usy() ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /*/*寫顯示數(shù)據(jù)到LCD */*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 */*/void lcd_wdat(uchar dat) while(lcd_busy() ; LCD_RS = 1 ; LCD_RW = 0 ; LCD_EN = 0 ; P0 = dat ; delayNOP() ; LCD_EN = 1 ; del

6、ayNOP() ; LCD_EN = 0 ; /* LCD初始化設定 */*/void lcd_init() delay1(15) ; lcd_wcmd(0x01) ; /清除LCD的顯示內(nèi)容 lcd_wcmd(0x38) ; /16*2顯示,5*7點陣,8位數(shù)據(jù) delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x0c) ; /顯示開,關(guān)光標 delay1(5) ; lcd_wcmd(0x06) ; /移動光標 delay1(5) ; lcd_wcmd(0x01) ; /清除LCD的

7、顯示內(nèi)容 delay1(5) ;/* 設定顯示位置 */*/void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80) ; /數(shù)據(jù)指針=80+地址變量void start()sda=1;delay();scl=1;delay();sda=0;delay();void stop()sda=0;delay();scl=1;delay();sda=1;delay();void respons()uchar i;scl=1;delay();while(sda=1)&&(i<250)i+;scl=0;delay();void write_byte(un

8、signed char date)uchar i;for(i=0;i<8;i+)scl=0;date<<=1;sda=CY;delay();scl=1;delay();scl=0;delay();sda=1; /釋放資源delay();uchar read_byte()uchar i,k=0;scl=0;delay();sda=1; /釋放資源delay();for(i=0;i<8;i+)scl=1;delay();k=(k<<1)|sda;scl=0;delay();return k;void TSL2561_Write(uchar command,uch

9、ar date)start();write_byte(SLAVE_ADDR_WR);respons();write_byte(command);respons();write_byte(date);respons();stop();uchar TSL2561_Read(uchar command)uchar date;start();write_byte(SLAVE_ADDR_WR);respons();write_byte(command);respons();start();write_byte(SLAVE_ADDR_RD);respons();date=read_byte();respo

10、ns();stop();return date;/讀取光照強度void Read_Light()DataLow0 = TSL2561_Read(DATA0LOW);delay1(1);DataHigh0 = TSL2561_Read(DATA0HIGH);delay1(1);Channel0 = 256*DataHigh0 + DataLow0;DataLow1 = TSL2561_Read(DATA1LOW);delay1(1);DataHigh1 = TSL2561_Read(DATA1HIGH);delay1(1);Channel1 = 256*DataHigh1 + DataLow1;

11、ratio=Channel1/Channel0;/temp=Channel0;if(ratio>0)&&(ratio<=0.5)temp=0.0304*Channel0-0.062*Channel0*(ratio*ratio/1.5);else if(ratio>0.5)&&(ratio<=0.61)temp=0.0224*Channel0-0.031*Channel1;else if(ratio>0.61)&&(ratio<=0.8)temp=0.0128*Channel0-0.0153*Channel1;e

12、lse if(ratio>0.8)&&(ratio<=1.3)temp=0.00146*Channel0-0.00112*Channel1;elsetemp=0;ratio=0;void disp(void)/顯示函數(shù) wet=temp; temp=0; le0=wet%10; /最低位 wet=wet/10; le1=wet%10; /第二位 wet=wet/10; le2=wet%10; /第三位 wet=wet/10;le3=wet%10;lcd_pos(0x47);lcd_wdat(le3+48); lcd_pos(0x48) ; lcd_wdat(le2+48); lcd_pos(0x49) ; lcd_wdat(le1+48); lcd_pos(0x4a) ; lcd_wdat(le0+48); delays(100); void gzh_Menu () /顯示濕度的菜單 uchar m ; lcd_pos(0) ; /設置顯示位置為第一行的第1個字符 m = 0 ; while(cdis3m != '0') /顯示字符 lcd_wdat(cdis3m) ; m+ ; lcd_pos(0x40) ; /

溫馨提示

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

評論

0/150

提交評論