找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于Atmega16在proteus下仿真这个lmo16l显示的怎么不是电脑的时间呀?

[复制链接]
跳转到指定楼层
楼主
我已经把ds1302中“显示电脑时间”勾选上了,为什么显示的还是之前的时间?
#include <iom16v.h>
#include <macros.h>
#include "ds1302.h"
#include "LCD1602.h"

void main(void)
{
        unsigned char temp;

        delay_ms(200); //延时,使用上电稳定
        Port_init();   //端口初始化
        LCD_init();    //LCD初始化
        LCD_clear();
        ds1302_init(); //DS1302初始化
        delay_ms(10);
        ds1302_write_time(); //写入初始值

        while (1)
        {
                delay_ms(200);       //每200ms更新一次时间
                ds1302_read_time();  //读取时间
                LCD_clear();         //清屏
                               
                temp = (time_buf[0] >> 4) + '0';
                LCD_write_char(0, 0, temp);/*年*/
                temp = (time_buf[0] & 0x0F) + '0';
                LCD_write_char(1, 0, temp);
                temp = (time_buf[1] >> 4) + '0';
                LCD_write_char(2, 0, temp);
                temp = (time_buf[1] & 0x0F) + '0';
                LCD_write_char(3, 0, temp);
                LCD_write_char(4, 0, '-');
               
                temp = (time_buf[2] >> 4) + '0';
                LCD_write_char(5, 0, temp);/*月*/
                temp = (time_buf[2] & 0x0F) + '0';
                LCD_write_char(6, 0, temp);
                LCD_write_char(7, 0, '-');
               
                temp = (time_buf[3] >> 4) + '0';
                LCD_write_char(8, 0, temp);/*日*/
                temp = (time_buf[3] & 0x0F) + '0';
                LCD_write_char(9, 0, temp);
               
                LCD_write_str(0,1,"week:");
                temp = (time_buf[7]) + '0';
                LCD_write_char(5, 1, temp);  //周
               
                temp = (time_buf[4] >> 4) + '0';
                LCD_write_char(8, 1, temp);  //时
                temp = (time_buf[4] & 0x0F) + '0';
                LCD_write_char(9, 1, temp);
                LCD_write_char(10, 1, ':');
               
                temp = (time_buf[5] >> 4) + '0';
                LCD_write_char(11, 1, temp);/*分*/
                temp = (time_buf[5] & 0x0F) + '0';
                LCD_write_char(12, 1, temp);
                LCD_write_char(13, 1, ':');
               
                temp = (time_buf[6] >> 4) + '0';
                LCD_write_char(14, 1, temp);/*秒*/
                temp = (time_buf[6] & 0x0F) + '0';
                LCD_write_char(15, 1, temp);
        }
}


111111111111.png (85.71 KB, 下载次数: 82)

111111111111.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:88256 发表于 2022-11-5 02:14 | 只看该作者
这个只是示例程序,不是实用的程序,你是使用仿真进行学习,那么在意时间是不是实时的干什么?难道你就看不出程序每次运行都是从一个固定的时间开始的吗?想要程序正常使用,就不能每次都给1302写入初始值
回复

使用道具 举报

板凳
ID:586333 发表于 2022-11-5 16:25 | 只看该作者
hhdsdy 发表于 2022-11-5 02:14
这个只是示例程序,不是实用的程序,你是使用仿真进行学习,那么在意时间是不是实时的干什么?难道你就看不 ...

非常感谢指点。
回复

使用道具 举报

地板
ID:908826 发表于 2022-11-5 19:10 | 只看该作者
不用太在意这个,你懂这个通信协议就好,实物的话我建议你用示波器去抓捕一下,直观的感受协议这也是我今年秋招被一个大佬点出来的问题
回复

使用道具 举报

5#
ID:586333 发表于 2022-11-5 20:56 | 只看该作者
13205495918 发表于 2022-11-5 19:10
不用太在意这个,你懂这个通信协议就好,实物的话我建议你用示波器去抓捕一下,直观的感受协议这也是 ...

好的,感谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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