找回密码
 立即注册

QQ登录

只需一步,快速开始

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

小弟在调试实物中,求各位大神指导一下。

[复制链接]
跳转到指定楼层
楼主
我的显示有点问题出现乱码,并且还不走求各位大神指教一下,并且我在protues上可以仿真并且不乱码可以走,这是我的部分程序
  • void lcd_com(uchar com)
  • {rw=0;
  • rs=0;
  • en=0;
  • P0=com;
  • delay(5);
  • en=1;
  • delay(5);
  • en=0;
  • }
  • void lcd_date(uchar date)
  • {rw=0;
  • rs=1;
  • en=0;
  • P0=date;
  • delay(5);
  • en=1;
  • delay(5);
  • en=0;
  • }
  • void lcd_time(uchar add,uchar Date)
  • {
  •   uchar shi,ge;
  •   shi=Date/10;
  •   ge=Date%10;
  •   lcd_com(0x80+add);
  •   lcd_date(0x30+shi);
  •   lcd_date(0x30+ge);
  • }
  • void init()
  • {
  • flag=0;
  • flag1=0;
  • flag2=0;
  • en=0;
  • rw=0;
  • num2=0;
  • num3=0;
  • num4=0;
  • lcd_com(0x38);
  • lcd_com(0x06);
  • lcd_com(0x0c);
  • lcd_com(0x01);
  • lcd_com(0x80);
  • for(num0=0;num0<16;num0++)
  • lcd_date(table0[num0]);
  • lcd_com(0x80+0x40);
  • for(num0=0;num0<11;num0++)
  • lcd_date(table1[num0]);
  • }
  • void write_ds1302(uchar add,uchar date)
  • {
  •   uchar i,temp;
  • rst=0;
  • clk=0;
  • _nop_();
  • rst=1;
  • for(i=0;i<8;i++)
  • {
  •   clk=0;
  •   temp=add;
  •   io=temp&0x01;
  •   add>>=1;
  •   clk=1;
  •   _nop_();
  • }
  • for(i=0;i<8;i++)
  • {
  •   clk=0;
  •   temp=date;
  •   io=temp&0x01;
  •   date>>=1;
  •   clk=1;
  •   _nop_();
  • }
  • rst=0;
  • }
  • void set_ds1302(uchar add,uchar time)
  • {
  •   uchar j;
  •   write_ds1302(0x8e,0x00);
  •   j=time/10;
  •   time=time%10;
  •   time=time+j*16;
  •   write_ds1302(add,time);
  •   write_ds1302(0x8e,0x80);
  • }
  • uchar read_ds1302(uchar add)
  • {
  •   uchar i,temp,data1,j;
  •   rst=0;
  •   clk=0;
  •   _nop_();;
  •   rst=1;
  •   for(i=0;i<8;i++)
  •   {
  •    clk=0;
  •    temp=add;
  •    io=temp&0x01;
  •    add>>=1;
  •    clk=1;
  •    _nop_();
  •   }
  •   for(i=0;i<8;i++)
  •   {
  •          data1>>=1;
  •    clk=0;
  •    if(io)
  •    data1=data1|0x80;
  •    clk=1;
  •   }
  •   rst=0;
  •   _nop_();
  •   j=data1%16;
  •   data1=data1/16;
  •   data1=data1*10+j;
  •   return(data1);
  • }
  • void read_rtc()
  • {
  •   uchar i;
  •   for(i=0;i<7;i++)
  •   {
  •    date=read_ds1302(date_read_add);
  •   }
  • }
  • void display()
  • {
  •         uchar i;
  •   for(i=0;i<7;i++)
  •   {
  •    lcd_time(lcd_date_add,date);
  •   }
  • }


QQ图片20170509180954.jpg (101.25 KB, 下载次数: 48)

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

使用道具 举报

沙发
ID:84299 发表于 2017-5-9 20:21 | 只看该作者
建议代码全部贴出
回复

使用道具 举报

板凳
ID:154739 发表于 2017-5-9 20:28 | 只看该作者
是不是我没接DS1302的备用电源的问题啊?我试了好多种初始化也不行
回复

使用道具 举报

地板
ID:82765 发表于 2017-5-9 21:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

5#
ID:154739 发表于 2017-5-11 15:18 | 只看该作者
cjjcjj1 发表于 2017-5-9 21:00
这是很明显的 Ds1302 读取失败

我用的是国产DS1302,我也觉得是没读出DS1302,单我改了读写方面的编程还不能显示成功啊
回复

使用道具 举报

6#
ID:94031 发表于 2017-5-11 16:39 | 只看该作者
如果没接电池,每次都要初始化DS1302。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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