温湿度采集DHT11ATMEGA16_第1页
温湿度采集DHT11ATMEGA16_第2页
温湿度采集DHT11ATMEGA16_第3页
温湿度采集DHT11ATMEGA16_第4页
温湿度采集DHT11ATMEGA16_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、2012.8.92012.6.7功能:温湿度采集程序DHT11开发环境: 控制芯片: 控制对彖:iccavrATmegal6DHT11温湿度传感器#include <ioml6v.h>#inelude <macros.h> #include,lLCD_12864_chuankou.c,1#define uchar unsigned char #define uint unsigned int #define mclk 8000000 #defi ne DINA_1 DDRA|=BIT(PA0) #define DINA_0 DDRA&"BIT(PA0)

2、 #define MOSIN (PINA&0X01)数据采集端I 1 PAO uchar U8T_data_H/U8T_data_L/U8RH_data_HzU8RH_data_L/U8checkdata;uchar bet5;uchar U8temp;void port_init_LCD() PORTC=OXFF; DDRC=OXFF;采集数据函数数据格式为:数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和void COM(void) uchar i jm;for(i=0;i<5;i+)beti=OXOO;for(j

3、=0;j<8;j+)while(!MOSIN);/等待高电平的到来,当高电平到来后便开始计时 for(m=0;m<50;m+); /延时50us后看还是不是高电平,如果是高那么这位就为1.否则为0if(MOSIN)/50us就是时隙,构成电平的一部分beti|=BIT(7-j);while(MOSIN);似乎不能辨别高低电平初始化DHT进行工作,即驱动DHTT作函数void RH(void)主机拉低18msuchar i;DINA.l;PORTA&丁BIT(O);delay(20);PORTA|=BIT(0);总线由上拉电阻拉高主机延时20us for(i=0;i<2

4、3;i+); /此操作为微秒级的延时主机设为输入判断从机响应信号DINA_0;for(i=0;i<10;i+);判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!MOSIN) /x判断从机是否发出80us的低电平响应信号是否结束while(!MOSIN);判断从机是否发出80us的高电平,如发出则进入数据接收状态 while(MOSIN);数据接收状态COM();DDRA=OXFF;PORTA=OX01;数据校验U8temp=(bet0+betl+bet2+bet );if(bet4=U8temp)U8RH-data_H=bet0);U8RH_data_L=betl;U8

5、T_data_H=bet2;U8T_data_L=bet3;U8checkdata=bet4;采集的数据拆分显示到液晶12864 ±, x,y要显示的位置忆要显示的数据void digital(uchar x,uchar y,uchar z)uchar j,m;j=z/10;m=z%10;/write_com(0x80+0x42+y);LocateXY(x,y); write_data(j+0x30); write_data(m+0x30); /*houmiantianjia void show_wenshidu()write_string(0,0,"湿度:”);显示测量项

6、目 delay(200);write_string(OJ温度:");delay(200);RH();digital(3QU8RH_data_H); 湿度 write_data(0x25);digital(3#l/U8T_data_H);/ 温度write_string(5U °C");读取模块数据周期不易小于2S delay(2000);void main(void)/port_init_LCD(); LCDJnit(); delay(lOOO);while(l)show_w en shidu();调用头文件:2012.8.9功能:驱动Icdl2864,串行通信模

7、式 开发环境:ICCAVR控制芯片:ATMEGA16串口数据传输#in clude<ioml6v.h>#in clude<macros.h>#define uchar unsigned char#define uint unsigned int#define CS_OPORTC&"(1«PCO)片选高电平有效单片机使用固定高电平#define CS_1PORTCI =(1«PCO)#define SID_OPORTC&=(1<<PC1)串II数据输入端#define SID_1PORTCI =(1«PC

8、1)#define SCLK_OPORTC&=(1«PC2) 串 1 1 时钟#define SCLK_1PORTC |=(1«PC2)#define PSB_OPORTC&=(1«PC3)并II串丨|选择端,高电平为并II#define PSB_1PORTC| =(1«PC3)低电平为串口输入#define RST_OPORTC&=(1«PC4)复位信号,电平有效#define RSTJLPORTC |=(1«PC4)/#define Dataport PORTA数据端II为Allvoid delay(uin

9、t ms)系统延时函数uint izj;for(i=0;i<ms;i+)for (j=0; j< 1140; j+);void delay_us(uint n)/ 最小延时 if(n=0)return;while(-n);发送字节函数写入一个字节*uchar i; /for(i=0;i<8;i+) 少写的数据if(byte&0x80) 判断应写入1或者0 SID_1;else D_0;SCLK_1;SCLK_0;byte«=l; 左移写指令函数规定写指令操作写命令取高四位uchar sta rt_d ata, H data, Ldata; start_dat

10、a=0xf8;Hdata=com&0xf0;Ldata=(com«4)&0xf0;取低四位sendbyte(start_data);/ 发送起始信号 delay_us(l);sendbyte(Hdata);/ 发送高四位 delay_us(l);sendbyte(Ldata);/ 发送低四位 delays ;写数据函数规定写数据的流程*/void write_data(uchar data)/datauchar start_data,Hdata,Ldata;start_data=Oxfa;写数据Hdata=data&OxfO;取高四位Ldata=(data&#

11、171;4)&0xf0;取低四位sendbyte(start_data);/ 发送起始信号 delay_us(l);sendbyte(Hdata);/ 发送高四位 delay_us(l);sendbyte(Ldata);/ 发送低四位 delay_us(l);LCD初始化函数He*void LCD_init()write_com(0x01);delay; PSB_O; RST_0;delay ;清屏指令并1数据传输模式低电平复位RST_1; delay ;/cs_i;write_com(0x34);扩充指令操作delay(5); write_com(0x30);delay(3);基本指令操作write_com(OxOC); delay(5);write_com(0x01);显示开/关光标清除LCD的显示,即清屏指令delay(5);光标定位函数,X显示列,Y显示行void LocateXY(uchar xzuchar y)if(y=O)write_com(0x80+x);/)else if(y=l)write_c

温馨提示

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

评论

0/150

提交评论