找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7883|回复: 4
打印 上一主题 下一主题
收起左侧

为什么我用串口调试助手不能正确显示数据呢

[复制链接]
跳转到指定楼层
楼主
5黑币
#include<reg51.h>
#include<intrins.h>
# include <stdio.h>
#include  <math.h>
#define uchar unsigned char
#define uint unsigned int
/*端口定义*/
sbit dht_dat=P1^2; //用哪个I/O口自选,注意不要用P3口
uchar dht_num=0; //用于while循环中计数,超时则跳出循环
uchar dht_d1=0,dht_d2=0        ;        //依次为湿度整数部分和湿度小数部
uchar dht_t1=0,dht_t2=0        ;  //依次为温度整数部分和温度小数部分
uchar dht_j=0;        //和校验,可选择是否使用,具体参照数据手
uchar i,t11,t12,d11,d12;
uchar t21,t22,d21,d22;
/*****************ms延时函数*********************************/
void delay(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}
/*****************us延时函数*****************************/
void delay_10us()
{
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
}

void dht_init()
{
   delay(1000);          //DHT11上电前准备时间,大概1s
   dht_dat=1;             //         //总线准备
}
uchar read_date()        //接收一个8位数据,先高位后低位
{
        uchar i,dat;
        for(i=0;i<8;i++)   //也就是说程序是循环八次,把判断有“1”输出到dat中,然后输出一个八位的数据。
        {
                dht_num=2;
                while((dht_dat==0)&&(dht_num++)); //dht_dat 数据线由DH11拉低准备发送数据
                delay_10us();
                                delay_10us();
                delay_10us();
                                delay_10us();
                dat=dat<<1;
                if(dht_dat==1)
                {
                        dht_num=2;
                        dat=dat|0x01;  //如果来自DQ的数据是高电平1,则把1放到dat的最低位
                        while((dht_dat==1)&&(dht_num++));

                }
        }
        return dat;        
}

void get_temp()        //给DHT11一个开始信号,然后读取一次数据,共五个8位字节
{
        dht_dat=0;
        delay(25);
        dht_dat=1;        //单片机给起始脉冲信号

        delay_10us();
        delay_10us();
        delay_10us();
        delay_10us();
        dht_dat=1;         //稍作延时,等待DHT11返回响应(响应为低电 平)
        if(dht_dat==0)         //有响应才接收数据,否则不作处理
        {
                dht_num=2;
                while((dht_dat==0)&&(dht_num++));
                dht_num=2;
                while((dht_dat==1)&&(dht_num++));
                dht_d1=read_date();
                dht_d2=read_date();
                dht_t1=read_date();
                dht_t2=read_date();
                dht_j=read_date(); //一次读出五个数据
        }
        dht_dat=1;        //释放总线
        delay(5);
                                        
}
void main()
{       
       
        TMOD=0x21;                  
        SCON=0x50;
        TH1=0xFD;
        TL1=0xFD;
        TR1=1;
        ES = 1;                          
        TI=1;  
        EA = 1;     //开总中断
        dht_init();                          
   while(1)
   {
//                dht_init();                
                get_temp();

        d11=dht_d1/10+0x30;
        d12=dht_d1%10+0x30;
        t11=dht_t1/10+0x30;
        t12=dht_t1%10+0x30;
               
                d21=dht_d2/10+0x30;
        d22=dht_d2%10+0x30;
        t21=dht_t2/10+0x30;
        t22=dht_t2%10+0x30;

                printf("T:2%d",dht_t1);
                printf(".");
                printf("2%d",dht_t2);        
                printf("C\n");
                delay(100);
                printf("D:2%d",dht_d1);
                printf(".");
                printf("2%d",dht_d2);
                printf("RH\n");



                delay(250);                                                                                                                                                                                                               
   }
}
\

L$@U9GKPNW}(Y`M2YUHLE81.png (128.06 KB, 下载次数: 77)

串口调试助手

串口调试助手
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2018-1-16 09:43 | 只看该作者
# include <stdio.h>  多了一个空格。
回复

使用道具 举报

板凳
ID:247090 发表于 2018-1-16 13:13 | 只看该作者
wulin 发表于 2018-1-16 09:43
# include   多了一个空格。

这是可以的,不影响
回复

使用道具 举报

地板
ID:193887 发表于 2018-1-16 14:32 | 只看该作者
新手调试要注意方法,你这个可以先调通串口,然后调通dht11,最后一起调
回复

使用道具 举报

5#
ID:247090 发表于 2018-1-17 20:42 | 只看该作者
ci12 发表于 2018-1-16 14:32
新手调试要注意方法,你这个可以先调通串口,然后调通dht11,最后一起调

谢谢,不过串口调试助手已经用过了,不是他俩的问题,我已经找出来问题了,是我用的60s2芯片的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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