找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机+LCD1602上怎么同时实时显示温度和时间问题求救

查看数: 6382 | 评论数: 3 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-2-11 11:24

正文摘要:

把两个程序合在一起温度就只显示00.00了,按键是设置时间的,这是主函数,大家看看 void main() {         unsigned char i;         Int0Confi ...

回复

ID:719762 发表于 2020-4-13 17:45
HC6800-ES-V2.0 发表于 2019-2-11 12:45
前面我回复过,因为有其它论坛的链接,没有通过!今天直接给你结果:

老哥,太感谢了,我也是被这个问题困惑了好久,按你的方法试了一下问题就解决了,感谢感谢。
ID:277550 发表于 2019-2-11 12:59
温度采集的部分,有问题

~~~~~~~~~~
ID:164602 发表于 2019-2-11 12:45
前面我回复过,因为有其它论坛的链接,没有通过!今天直接给你结果:


同学们,我只需要修改一个地方就可以了!!!!
首先,要感谢你,试验出了正确的结果!
在你的结果基础之上,我反复阅读程序,注意到,你的红色部分程序,其实就是1302的使能为高电平。
所以,最终的结果是:
在1302读数据之后,将原程序中的使能为低电平去掉,就可以了。
即:
原程序:
unsigned char Ds1302Read(unsigned char addr)//从DS1302读单字节数据
{
        unsigned char n,dat,dat1;//n为8位计数,dat为最终返回的数据
                                                        //dat1为接收的一位数据
        CE = 0;
        _nop_();

        SCLK = 0;//先将SCLK置低电平。
        _nop_();
        CE = 1;//然后将CE置高电平。
        _nop_();

        for(n=0; n<8; n++)//开始传送八位地址命令
        {
                DSIO = addr & 0x01;//数据从低位开始传送
                addr >>= 1;
                SCLK = 1;//数据在上升沿时,DS1302读取数据
                _nop_();
                SCLK = 0;//DS1302下降沿时,放置数据
                _nop_();
        }
        _nop_();
        for(n=0; n<8; n++)//读取8位数据
        {
                dat1 = DSIO;//从最低位开始接收
                dat = (dat>>1) | (dat1<<7);//此处可以用595的方法判断是0或是1
                SCLK = 1;
                _nop_();
                SCLK = 0;//DS1302下降沿时,放置数据
                _nop_();
        }

//        CE = 0;
        _nop_();//以下为DS1302复位的稳定时间,必须的。
        SCLK = 1;
        _nop_();
        DSIO = 0;
        _nop_();
        DSIO = 1;
        _nop_();

        return dat;        
}

红色那一条语句,原来有,现在我将它去掉,就好了。其它的什么都不用改。

究其原因,可能是两器件使能冲突。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

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

Powered by 单片机教程网

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