这个程序是我参考官方的说明书(官方的使用说明书在百度文库有),根据时序图写的,本来出来那时非常happy!结果放了两天再去单片机运行加载我的主体程序(结合si4432无线报火警项目),发现程序竟然奇葩的在51运行不出来,再次回头单运行温湿度程序结果伤了!!!求大神答疑!!!!!!! 截取am2303.c文件,本来是在12864显示的
#include
#include"am2303.h"
#include"suidao.h"
//extern DataPort;
bit Flag_sign = 0; //温度正负符号
unsigned char T_H,T_L,H_H,H_L,Check_data; //温度高8位,温度低8位,湿度高8位,湿度低8位,校验位
unsigned int Temperature,Humidity; //温度,湿度
unsigned char tab[6]={0x00,0x00,0x00,0x00,0x00,0x00};//存储温湿度共6位数据, 显示在12864为 湿度 xx.x% 温度 +xx.xC
/*******************初始化******************/
void Am2303_init()
{
delay_ms(2500); //响应主机起始信号
SDA = 0;
delay_ms(1); //拉低延时800us
SDA = 1; +
delay_us(3); // 释放总线 20us以上
//传感器响应信号,拉低80us,再拉高80us
while(!SDA); // if(!SDA){delay();delay();delay();delay();} LED1 =0;程序会卡在这,原因初步分析是与51单总线启动时启动不了,但是不知道为何会
这样,本来就运行出来过,即使有事卡过来了,但是不会出正确数据
while(SDA);
}
/*********************读8位0/1的位数据***********/
unsigned char Am2303_read()
{
unsigned char i,dat=0,temp;
for(i = 0; i
需求补充: /*********************读8位0/1的位数据***********/
unsigned char Am2303_read()
{
unsigned char i,dat=0,temp;
for(i = 0; i