第一范文网 - 专业文章范例文档资料分享平台

基于单片机的环境温度湿度检测仪课程设计 - 图文

来源:用户分享 时间:2025/6/7 21:59:00 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

{

unint8 i; i--; i--; i--; i--; i--; i--; }

bit lcd_busy() {

bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP();

result = (bit)(P0&0x80); LCD_EN = 0; return(result); }

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 = 0; }

void lcd_wdata(unsigned char dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP();

13

LCD_EN = 1; delayNOP(); LCD_EN = 0; }

void lcd_init() {

delay_ms(15);

lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据 delay_ms(5);

lcd_wcmd(0x38); delay_ms(5);

lcd_wcmd(0x38); delay_ms(5);

lcd_wcmd(0x0c); //显示开,关光标 delay_ms(5);

lcd_wcmd(0x06); //移动光标 delay_ms(5);

//lcd_wcmd(0x01); //清除LCD的显示内容,如果屏幕过暗,可将这俩句删除

//delay_ms(5); }

void lcd_dis_pos(unsigned char pos) {

lcd_wcmd(pos | 0x80); //数据指针=80+地址变量 }

char receive() {

unint8 i; ST=0;

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++);

14

} else

temp=0; com_data<<=1;

com_data|=temp; }

return(com_data); }

void read_TRH() {

//主机拉低18ms TRH=0;

delay_ms(18); TRH=1;

//DATA总线由上拉电阻拉高 主机延时20us delay_us(); delay_us(); delay_us(); delay_us(); //delay_us();

//delay_us();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_temp = receive(); TL_temp = receive(); CK_temp = receive(); TRH=1;ST=1; //数据校验

untemp=(RH_temp+RL_temp+TH_temp+TL_temp); if(untemp==CK_temp)

15

{

RH_data = RH_temp; RL_data = RL_temp; TH_data = TH_temp; TL_data = TL_temp; CK_data = CK_temp; } }

//湿度整数部分

str1[0] = (char)(0X30+RH_data/10); str1[1] = (char)(0X30+RH_data); str1[2] = 0x2e; //小数点 //湿度小数部分

str1[3] = (char)(0X30+RL_data/10); str1[5] = 0X25; //\ str1[6] = 0X52; //\ str1[7] = 0X48; //\ //温度整数部分

str2[0] = (char)(0X30+TH_data/10); str2[1] = (char)(0X30+TH_data); str2[2] = 0x2e; //小数点 //温度小数部分

str2[3] = (char)(0X30+TL_data/10); str2[5] = 0XDF; //\ str2[6] = 0X43; //\}

void main() {

unsigned char i,n=0x40,m; lcd_init(); delay_us(); while(1) {

read_TRH(); //写字符

for(i=0;i<=7;i++) {

lcd_dis_pos(n+i); //显示字符 lcd_wdata(dis2[i]);

lcd_dis_pos(i); //显示字符 lcd_wdata(dis1[i]);

}

//写湿度数据

16

基于单片机的环境温度湿度检测仪课程设计 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2m8c196by1036aw5uk13_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top