搜索
bottom↓
回复: 0

请老师看看下面这个程序那里出错了……不会了!

[复制链接]

出0入0汤圆

发表于 2012-6-3 12:51:30 | 显示全部楼层 |阅读模式
#include <mega16.h>
#include <delay.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>


// Declare your global variables here
#define DHT11_DATA PORTD.3
#define DHT11_DATA_SET  DHT11_DATA=1
#define DHT11_DATA_CLI DHT11_DATA=0
#define DHT11_DATA_OUT DDRD.3=1
#define DHT11_DATA_IN DDRD.3=0
#define DHT11_DATA_READ PIND.3


char test[2];

unsigned int dht11_data[2];
unsigned int dht11_readdata;
bit dht11_flag=0;
unsigned char humidity;//湿度8位数据值
unsigned char humidity1;
unsigned char temp;  //温度8位数据值
unsigned char  dht11_start(void)//dht11开始标志
{
unsigned char count=0;
DHT11_DATA_OUT;
DHT11_DATA_CLI;//将数据线拉低18ms以上
delay_ms(25);//延迟18ms以上即可
DHT11_DATA_IN;
DHT11_DATA_SET;//释放数据线
while(DHT11_DATA_READ)
{
delay_us(5);
count++;
if(count>10)
return 0;//延迟等待50us,超过则失败
}
while(!DHT11_DATA_READ);//等待低电平结束
return 1;//返回1 ,表示dht11响应
}



void dht11_getdata(void)//读数据函数
{
unsigned char i=0,j=0,count=0;
while(DHT11_DATA_READ);//等待数据线高电平结束

for(j=0;j<2;j++)       //舍去校验位
{
for(i=0;i<=15;i++)//读16位数据
{
while(!DHT11_DATA_READ);//1bit开始低电平信号结束
delay_us(30);
if(DHT11_DATA_READ)
{
dht11_readdata<<=1;
dht11_readdata|=0x0001;
}
else
dht11_readdata<<=1;//判断位值
while(DHT11_DATA_READ);//等待高电平结束
}
dht11_data[count++]=dht11_readdata; //将读出的16位数据一位位的放入数组保存
dht11_readdata=0;
}
dht11_flag=1;       //40位数完成标识
}




void dht11_switchcode(void)
{
  humidity1=dht11_data[0]>>8;
  if((humidity1>0)&&(humidity1<100)) //判断,如果湿度值大于100直接否定不取
   humidity=humidity1;
  temp=dht11_data[1]>>8;
  //shis=humidity/10;
  //shig=humidity%10;
}  



void main(void)
{
DHT11_DATA_OUT;
DHT11_DATA_SET;

lcd_init(16);

while(1)  
{
   while(!dht11_start());//等待温湿度传感器响应
   dht11_getdata();      //读数值
   if(dht11_flag==1)     //如果数读完
     {
        dht11_flag=0;
        dht11_switchcode();
        test[0]=humidity;  
        test[1]=temp;
     }   
      lcd_clear();
      lcd_putsf("****liu song****");
      lcd_gotoxy(0,1);
      lcd_puts(test);

// Place your code here

      };
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 08:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表