收藏 分销(赏)

温湿度传感器程序.doc

上传人:xrp****65 文档编号:5706629 上传时间:2024-11-15 格式:DOC 页数:11 大小:55.50KB
下载 相关 举报
温湿度传感器程序.doc_第1页
第1页 / 共11页
温湿度传感器程序.doc_第2页
第2页 / 共11页
温湿度传感器程序.doc_第3页
第3页 / 共11页
温湿度传感器程序.doc_第4页
第4页 / 共11页
温湿度传感器程序.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、/*基于盛群单片机开发的 获得温湿传感器dht11和光敏电阻的数据 并且发送到1602显示屏的程序*/#include #pragma vector isr_4 0x4#pragma vector isr_8 0x8#pragma vector isr_c 0xc#pragma vector isr_ad 0x10 /ad中断服务程序(r232地址是10)/ISR for safequardvoid isr_4() / external ISRvoid isr_8() / timer/event 0void isr_c() / timer/event 1/initialize register

2、s for safeguardvoid safeguard_init()_intc0=0;_intc1=0;_tmr0h=0;_tmr0l=0;_tmr0c=0;_tmr1h=0;_tmr1l=0;_tmr1c=0;_pac=0xff;_pbc =0xff; /input mode_pcc =0xff;typedef unsigned char u8;#define rs _pc2 /屏幕的控制rs#define ep _pc0 /屏幕的控制rs#define rw _pc1 /屏幕的控制rs#define dht _pb1#define ko _pb2 /外部按键定义#define ky _

3、pb3#define LED_DATA_CRL _pac /屏幕数据管脚的I/O控制#define DHT_DATA_CRL _pbc /dht数据管脚的I/O控制#define LED_DATA_DATA _pa /屏幕数据管脚的数据传递#define LED_CRL_CRL _pcc /屏幕控制管脚的I/O控制#define ad_start _26_7 /定义ad转换的start位(r232的adcr寄存器地址是0x26h)void busycheck(void);void init(void);void cmd(unsigned char);void data(int);signed

4、char U8FLAG,U8temp,U8comdata;int U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;/*中间数值,校对校验码后付给最终的结果*/int U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;/*实际数值*/int k; /外部按键常量unsigned int light; /光强的数字值int light_b; /百位int light_s;/十位int light_g;/个位int c

5、ount;void ADtrans() /ad转换开始ad_start=0;ad_start=1;ad_start=0;/-屏幕部分-/*屏幕初始*void init()LED_DATA_CRL=0;LED_CRL_CRL=0;LED_DATA_DATA=0;_pc=0;_delay(5000);_delay(5000);_delay(5000);cmd(0x38);_delay(5000);cmd(0x38);_delay(5000);cmd(0x38);_delay(5000);cmd(0x38);busycheck();cmd(0x08);busycheck();cmd(0x01);bu

6、sycheck();cmd(0x06);busycheck();cmd(0x0c);busycheck();/*/*送指令函数*void cmd(u8 mingling) /busycheck(); rs= 0; rw = 0; ep = 0; LED_DATA_DATA=mingling;_delay(100); ep=1;_delay(100); ep=0;/*/*送数据*void data(int zimu)/busycheck();rw=0; rs = 1; rw = 0; ep = 0;LED_DATA_DATA= zimu;_delay(100);ep = 1;_delay(100

7、);ep = 0; /*/*busycheck*void busycheck(void)u8 val;doep=0;LED_DATA_CRL=0xff;rs=0;rw=1;ep=1;_delay(100);val=LED_DATA_DATA;_delay(100);ep=0; while(val&(u8)0x80);rw=0;LED_DATA_CRL=0;/* /*写入地址*void pos(u8 x)cmd(x|0x80);/*/-dht21 部分-/*获取8位二进制数*/*COM获取一个8位二进制数*/ void COM(void) u8 i; for(i=0;i8;i+) U8FLAG=

8、2; while(!dht)&U8FLAG+); _delay(35); U8temp=0; if(dht)U8temp=1; U8FLAG=2; while(dht)&U8FLAG+); /超时则跳出for循环 if(U8FLAG=1)break; /判断数据位是0还是1 / 如果高电平高过预定0高电平值则数据位为 1 U8comdata=1; U8comdata|=U8temp; /rof /*/*-*/*-温湿度读取子程序 -*/*-*/*-以下变量均为全局变量-*/*-温度高8位= U8T_data_H-*/*-温度低8位= U8T_data_L-*/*-湿度高8位= U8RH_dat

9、a_H-*/*-湿度低8位= U8RH_data_L-*/*-校验 8位 = U8checkdata-*/void RH(void) int c=0; DHT_DATA_CRL=0; dht=0; _delay(20000); /主机拉低500us DHT_DATA_CRL=0xff; /主机设为输入(电平由上拉电阻拉高) 在2040us后判断从机响应信号 while(dht=1)&(c+100); /判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!dht) U8FLAG=2; while(!dht)&U8FLAG+);/判断从机是否发出 80us 的低电平响应信号是否结

10、束 U8FLAG=2; while(dht)&U8FLAG+); /判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 COM(); /数据接收状态 U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; /数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_da

11、ta_H_temp+U8RH_data_L_temp); if(U8temp=U8checkdata_temp) if(1) U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; /*/-华丽的main函数分割线-void main() /*变量定义*u8 r=r;u8 h=h;u8 t=t;u8 c=c;u8 l=l;u8 z=:;u8 si=4;u8 wu

12、=5;u8 liu=6;u8 ling=0;int rhdatas; /湿度数据十位int rhdatag; / 湿度数据个位int tdatas;int tdatag;int i=0;/*/*初始化*safeguard_init();init();DHT_DATA_CRL=0xff; _acsr=0x01; /ad转换8分频_adcr=0x08; /设置通道 pb0 an0作为ad输入ad_start=1; /设置分频和通道ad_start=0;_emi=0; /关总中断_adf=0; /清除ad中断标志位_eadi=1; / 开ad中断使能_emi=1; /开总中断/*while(1) R

13、H();ADtrans(); /ad转换开始if(ko=0)k=1; /查询键盘else if(ky=0)k=0;/*把获得的数据转换成屏幕可以显示的数字(根据屏幕的编码表)*rhdatas=U8RH_data_H/10;rhdatag=U8RH_data_H%10;rhdatas=(rhdatas|0x30)&0x3f;rhdatag=(rhdatag|0x30)&0x3f;if(ko=0)k=1;/查询键盘else if(ky=0)k=0;tdatas=U8T_data_H/10;tdatag=U8T_data_H%10;tdatas=(tdatas|0x30)&0x3f;tdatag=(

14、tdatag|0x30)&0x3f;if(ko=0)k=1; /查询键盘else if(ky=0)k=0;light_b=light/100;light_s=(light-light_b*100)/10;light_g=light%10;light_b=(light_b|0x30)&0x3f;light_s=(light_s|0x30)&0x3f;light_g=(light_g|0x30)&0x3f;/*cmd(0x08); /先关显示屏!_delay(60000);cmd(0x01); / 清屏! _delay(60000); _delay(60000); if(ko=0)k=1; /查询

15、键盘else if(ky=0)k=0;pos(0); /显示温度data(h);data(z);data(rhdatas);data(rhdatag);if(ko=0)k=1; /查询键盘else if(ky=0)k=0;pos(43); /显示湿度data(t);data(z);data(tdatas);data(tdatag);if(ko=0)k=1; /查询键盘else if(ky=0)k=0;pos(8);data(r); /显示推荐数据data(c);data(z);if(tdatas=3) if (k=1) data(si);data(ling); else data(si);da

16、ta(wu);if(U8T_data_H=25) if (k=1) data(si);data(wu); else data(wu);data(ling);if (U8T_data_H25) if (k=1) data(wu);data(wu); else data(liu);data(ling);pos(0x4a); /显示当前光强data(l);data(z);data(light_b);data(light_s);data(light_g);pos(0x48);data(count);if(ko=0)k=1; /查询键盘else if(ky=0)k=0;cmd(0xc); /开显示屏!_

17、delay(250000); if(ko=0)k=1; /查询+延时else if(ky=0)k=0; _delay(250000);if(ko=0)k=1;else if(ky=0)k=0;_delay(250000);if(ko=0)k=1;else if(ky=0)k=0;_delay(250000);if(ko=0)k=1;else if(ky=0)k=0;_delay(250000);if(ko=0)k=1;else if(ky=0)k=0;_delay(250000);if(ko=0)k=1;else if(ky=0)k=0;_delay(250000);if(ko=0)k=1;else if(ky=0)k=0;_delay(250000);if(ko=0)k=1;else if(ky=0)k=0; /_/*中断服务程序*void isr_ad()_adf=0; /清除ad中断标志位light=_adrh; /读取ad数据寄存器高八位;count+;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服