TSL2561 LCD结合显示.doc

上传人:罗晋 文档编号:10771660 上传时间:2021-06-03 格式:DOC 页数:17 大小:17.30KB
返回 下载 相关 举报
TSL2561 LCD结合显示.doc_第1页
第1页 / 共17页
TSL2561 LCD结合显示.doc_第2页
第2页 / 共17页
TSL2561 LCD结合显示.doc_第3页
第3页 / 共17页
TSL2561 LCD结合显示.doc_第4页
第4页 / 共17页
TSL2561 LCD结合显示.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《TSL2561 LCD结合显示.doc》由会员分享,可在线阅读,更多相关《TSL2561 LCD结合显示.doc(17页珍藏版)》请在三一文库上搜索。

1、#include#include /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 DATA1HIGH 0x8Fuchar DataLow0,DataHigh0,Dat

2、aLow1,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;uchar code cdis4 = qdu: Lux ;#define delayNOP()

3、_nop_() ;_nop_() ;_nop_() ;_nop_() ; void delay1(int ms) unsigned char y ; while(ms-) for(y=0;y0;a-)for(b=100;b0;b-);/*/*检查LCD忙状态 */*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */*/ bit lcd_busy() bit result ; LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ; result = (bit)(P0&0x80) ; LCD_EN = 0 ; ret

4、urn(result) ; /*写指令数据到LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */*/void lcd_wcmd(uchar cmd) while(lcd_busy() ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /*/*写显示数据到LCD */*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */*/void lcd_wdat(uchar dat) wh

5、ile(lcd_busy() ; LCD_RS = 1 ; LCD_RW = 0 ; LCD_EN = 0 ; P0 = dat ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /* LCD初始化设定 */*/void lcd_init() delay1(15) ; lcd_wcmd(0x01) ; /清除LCD的显示内容 lcd_wcmd(0x38) ; /16*2显示,5*7点阵,8位数据 delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; l

6、cd_wcmd(0x0c) ; /显示开,关光标 delay1(5) ; lcd_wcmd(0x06) ; /移动光标 delay1(5) ; lcd_wcmd(0x01) ; /清除LCD的显示内容 delay1(5) ;/* 设定显示位置 */*/void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80) ; /数据指针=80+地址变量void start()sda=1;delay();scl=1;delay();sda=0;delay();void stop()sda=0;delay();scl=1;delay();sda=1;delay();void re

7、spons()uchar i;scl=1;delay();while(sda=1)&(i250)i+;scl=0;delay();void write_byte(unsigned char date)uchar i;for(i=0;i8;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;i8;i+)scl=1;delay();k=(k0)&(rat

8、io0.5)&(ratio0.61)&(ratio0.8)&(ratio=1.3)temp=0.00146*Channel0-0.00112*Channel1;elsetemp=0;ratio=0;void disp(void)/显示函数 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);

9、 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个字符 m = 0 ; while(cdis4m != 0) lcd_wdat(cdis4m) ; /显示字符 m+ ; void main()lcd_init();gzh_Menu();TSL2561_Write(CONTROL,0x03); /设置TSL2561未开启状态while(1)Read_Light();disp();/delay1(100);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1