|
搞了一天了,下面是程序,麻烦各位大神帮忙看看- #include "msp430x14x.h"
- #include "Dht11.h"
- typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */
- typedef signed char S8; /* defined for signed 8-bits integer variable 有符号8位整型变量 */
- typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */
- typedef signed int S16; /* defined for signed 16-bits integer variable 有符号16位整型变量 */
- typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 无符号32位整型变量 */
- typedef signed long S32; /* defined for signed 32-bits integer variable 有符号32位整型变量 */
- typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
- typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */
- //
- //===============================================================================
- U8 U8temp;
- U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
- U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
- char receive(void) //接受函数
- {
- char tem,cnt=0; //临时变量用于存储接受数据
- while(cnt<8)
- {
- while(!(P3IN&BIT0)); //等待50us的低电平结束
- DelayNus(45);
- if(P3IN&BIT0) //长于30us定义为1
- {
- tem++;
- tem<<=1;
- while(P3IN&BIT0); //结束高电平
- }
- else
- {
- tem<<=1;
- }
- if(cnt!=7)
- while(!(P3IN&BIT0)); //最后一次给函数返回留下时间
- cnt++;
- }
- return tem;
- }
- void RH(void)
- {
- LOW;
- DelayNus(18000);
- HIGH;
- DelayNus(30);
- P3DIR&=~BIT0;
- while(P3IN&BIT0);
-
- while(!(P3IN&BIT0));
- while(P3IN&BIT0);
- //Data comes
- U8RH_data_H=receive();
- U8RH_data_L=receive();
- U8T_data_H=receive();
- U8T_data_L=receive();
- U8checkdata_temp=receive();
- U8checkdata=U8RH_data_H+U8RH_data_L+U8T_data_H+U8T_data_L;
- if(U8checkdata_temp==U8checkdata)
- {
- //LPM0;
- }
- }
复制代码 在定时器里对时间和温度进行显示的,同时放在主程序的话,12864液晶很容易乱码。。只有这样效果稍稍好点。求大神帮忙解答下。
这是完整工程
谢谢 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|