《环境监测仪》word版_第1页
《环境监测仪》word版_第2页
《环境监测仪》word版_第3页
《环境监测仪》word版_第4页
《环境监测仪》word版_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.#include <reg52.h>#include <intrins.h>/#define LCD_data P0 /数据口typedefunsigned char unint8;typedefunsigned char unint16;#define power_down 0x00#define power_on 0x01#define reset 0x07#define h_resolution_mod 0x10#define m_resolution_mod 0x13#define l_resolution_mod 0x16#define onetime_h

2、0x20#define onetime_m 0x23#define onetime_l 0x26#define write_1710 0x46#define read_1710 0x47sbit SCL = P10;sbit SDA = P11;sbit dvi = P12;unsigned char str1=" "unsigned char str2=" "char str3=" "unsigned char code wel1 = "*"unsigned char code wel2 = "| We

3、lcome You !|"unsigned char code wel3 = "| MADE: 李培陈杰"unsigned char code wel4 = "*"unsigned char code dis1 = "温湿度检测系统:"unsigned char code dis2 = "湿度: %RH "unsigned char code dis3 = "温度: C "unsigned char code dis4 = "光强: LX "sbit TRH = P

4、36;sbit Beep = P15 ; sbit LCD_RS = P24; /寄存器选择输入 sbit LCD_RW = P25; /液晶读/写控制sbit LCD_EN = P26; /液晶使能控制sbit LCD_PSB = P21; /串/并方式控制sbit LCD_RST = P23; /液晶复位端口unint8TH_data,TL_data,RH_data,RL_data,CK_data;unint8TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;unint8com_data,untemp,temp;unint8respond;/*/void de

5、layNOP()_nop_();_nop_();_nop_();_nop_();/*/*/ 毫秒级延时子程序/*/void delay_ms(unsigned char ms)unsigned char i;while(ms-)for(i = 0; i<250; i+)_nop_();_nop_();_nop_();_nop_();/*/*/5us级延时程序/*/void delay_us()unint8 i;i-;i-;i-;i-;i-;i-; /*/ /*/ 测试LCD忙碌状态/lcd_busy()为1时,忙,等待。lcd_busy()为0时,闲,可写指令与数据。/*/bit lcd

6、_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result);/*/*/ 写入指令数据到LCD/*/void lcd_wcmd(unsigned char cmd) while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN

7、 = 0;/*/*/写显示数据到LCD /RS=高电平,RW=低电平,E=高脉冲,D0-D7=数据。 /*/void lcd_wdata(unsigned char dat) while(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() LCD_PSB = 1; /并口方式 LCD_RST = 0; /液晶复位 delay_ms(3); LCD_RST = 1; dela

8、y_ms(3); lcd_wcmd(0x34); /扩充指令操作 delay_ms(5); lcd_wcmd(0x30); /基本指令操作 delay_ms(5); lcd_wcmd(0x0C); /显示开,关光标 delay_ms(5); /lcd_wcmd(0x01); /清除LCD的显示内容 /delay_ms(5);/*/*/设定LCD显示位置/*/void lcd_dis_pos(unsigned char X,unsigned char Y)unsigned char pos; if (X=1)X=0x80; else if (X=2)X=0x90; else if (X=3)X=

9、0x88; else if (X=4)X=0x98; pos = X+Y ; lcd_wcmd(pos); /显示地址void lcd_pos(unsigned char X,unsigned char Y)unsigned char pos; if (X=2)pos=0x90; if (X=3)pos=0x88;if (X=4)pos=0x98;lcd_wcmd(Y | pos);/数据指针=80+地址变量/*/*/* * 清屏函数 * */void clr_screen() lcd_wcmd(0x34); /扩充指令操作 delay_ms(5); lcd_wcmd(0x30); /基本指令

10、操作 delay_ms(5); lcd_wcmd(0x01); /清屏 delay_ms(5); /*/*/收发信号检测,数据读取/*/char receive() unint8 i;com_data=0;for(i=0;i<=7;i+) respond=2;while(!TRH)&&respond+);delay_us();delay_us();delay_us();if(TRH)temp=1;respond=2;while(TRH)&&respond+); elsetemp=0;com_data<<=1; com_data|=temp; r

11、eturn(com_data); /*/*/湿度读取子程序 /温度高8位= TL_data/温度低8位= TH_data/湿度高8位= RH_data/湿度低8位= RH_data/校验 8位 = CK_data/调用的程序有 delay();, Delay_5us();,RECEIVE(); /*/void read_TRH()int m;/主机拉低18ms TRH=0; delay_ms(18); TRH=1;/DATA总线由上拉电阻拉高 主机延时20us delay_us(); delay_us(); delay_us(); delay_us();/delay_us();/delay_u

12、s();delay_us();delay_us();delay_us();/主机设为输入 判断从机响应信号 TRH=1;/判断DHT11是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!TRH) respond=2;/判断DHT11发出 80us 的低电平响应信号是否结束 while(!TRH)&& respond+);respond=2;/判断从机是否发出 80us 的高电平,如发出则进入数据接收状态while(TRH && respond+);/数据接收状态 RH_temp = receive(); RL_temp = receive(); TH

13、_temp = receive(); TL_temp = receive(); CK_temp = receive();TRH=1; /数据校验 untemp=(RH_temp+RL_temp+TH_temp+TL_temp);if(untemp=CK_temp) RH_data = RH_temp; RL_data = RL_temp;TH_data = TH_temp; TL_data = TL_temp; CK_data = CK_temp;/湿度整数部分str10 = (char)(0X30+RH_data/10); str11 = (char)(0X30+RH_data%10);/温

14、度整数部分str20 = (char)(0X30+TH_data/10); str21 = (char)(0X30+TH_data%10);m=(int)(RH_data);void welcome()unsigned char i;lcd_dis_pos(1,0);for(i=0;i<16;i+) /显示字符lcd_wdata(wel1i);lcd_dis_pos(2,0);for(i=0;i<16;i+) /显示字符lcd_wdata(wel2i);lcd_dis_pos(3,0);for(i=0;i<16;i+) /显示字符lcd_wdata(wel3i);lcd_di

15、s_pos(4,0);for(i=0;i<16;i+) /显示字符lcd_wdata(wel4i);/delay_ms(100000); /bh1710/void delay120ms(void) unsigned char a,b,c; for(c=199;c>0;c-) for(b=120;b>0;b-) for(a=1;a>0;a-);void delayus() ; void BH_start() /dvi = 0;SDA=1; delayus(); SCL=1; delayus(); SDA=0; delayus();/dvi = 1;/delay120ms(

16、);/dvi = 0;/delay120ms();/dvi = 1;void BH_stop() SDA=0; delayus(); SCL=1; delayus(); SDA=1;void BH_respons() unsigned char i; SCL=1; delayus(); while(SDA=1)&&(i<250)i+; SCL=0; delayus();void init_BH() SDA=1; delayus(); SCL=1; delayus(); void BH_write_byte(unsigned char date) unsigned char

17、 i,temp; for(i=0;i<8;i+) temp=date&0x80; SCL=0; delayus(); SDA=temp; delayus(); SCL=1; delayus(); date=date<<1; SCL=0; delayus(); SDA=1; delayus();unsigned char BH_read_byte() unsigned char i,k; SCL=0; delayus(); SDA=1; delayus(); for(i=0;i<8;i+) SCL=1; delayus(); k=(k<<1)|SDA;

18、 SCL=0; delayus(); return k;void write_reg(unsigned char address,unsigned char shuju) BH_start(); BH_write_byte(address); BH_respons(); BH_write_byte(shuju); BH_respons(); BH_stop();unsigned int read_reg(unsigned char address) unsigned char date2; unsigned char date1; unsigned int date; BH_start();

19、BH_write_byte(address); BH_respons(); date1=BH_read_byte(); SCL=0; delayus(); SDA=0; delayus(); SCL=1; delayus(); date2=BH_read_byte(); SCL=0; delayus(); SDA=0; delayus(); SCL=1; delayus(); BH_stop(); date=date*256+date2; return date;unsigned int bh1710_read() int bh; write_reg(write_1710,power_on); write_reg(write_1710,reset); write_reg(write_1710,h_resolution_mod); delay120ms(); delay120ms(); bh=read_reg(read_1710); return bh; void read_Dat(void)unsigned char lx;init_BH(); lx= bh1710_read();str30 = lx%1000/100+'0'str31 = lx%100/10+'0'str32 = lx%10+'0'/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论