找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机驱动LCD12864屏,秒表进位程序问题研究

[复制链接]
跳转到指定楼层
楼主



本人小白一枚,51单片机刚学,想请教群里的朋友,第四行这种格式,60秒到进位后怎么处理,望各位朋友赐教呢,多谢
如果把秒,分,时放各放一个地址字节,前面年月日显示不全又不好看,


单片机源程序如下:
uchar code dis[]={"0123456789"};

void write_sfm(uchar add,uchar date)//显示个,十分离
{
  uchar ge,shi;
  shi=date/10;
  ge=date%10 ;
  lcd_wcmd(0x98+add);//第四行地址+目的显示的地址
  lcd_wdat(dis[shi]);//先写高位,地址指针自动往后加1
  lcd_wdat(dis[ge]);//写数据个位

}


void  exter1() interrupt 1
{
  TH0=(65536-50000)/256;//高8位最大装50000/256整个数
  TL0=(65536-50000)%256; //低8位最大装50000%256余的个数
  t++;
  if(t==20)
      {
       t=0;
       miao++;
       if(miao==60)
         {
           miao=0;
           fen++;
           if(fen==60)
            {
               fen=0;
               shi++;
               if(shi==24)
                {
                  shi=0;
                }
                //write_sfm(5,shi);
            }   
            write_sfm(6,fen);
         }
         write_sfm(7,miao);//秒个位
      }
}

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

使用道具 举报

沙发
ID:879659 发表于 2021-1-22 12:56 | 只看该作者
到上面这步中间有几个问题也与大家分享下,1、 刚开始显示不全,原因是LCD屏初始化后紧接着中断初始化,再字符显示,解决是先LCD屏初始化,再字体显示,在中断初始化。    2、上电数码管乱显示,因P0口还并着数码管,中间有个锁存器控制,解决方法把锁存器关的使能信号从中断子程序中放到LCD屏忙子程序中   3、秒显示乱码,程序LCD1602程序过来,        write_date(0x30+shi);改成 lcd_wdat(dis[shi]);

评分

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

查看全部评分

回复

使用道具 举报

板凳
ID:390416 发表于 2021-1-22 17:24 | 只看该作者
正巧,我在51hei 发了资料贴:http://www.51hei.com/bbs/dpj-200462-1.html
回复

使用道具 举报

地板
ID:16255 发表于 2021-1-23 16:08 | 只看该作者
准确来说,现在还不是牛年。
当今人们有两种方式,①过是春节才是新的一个属相,②过了春分才是新的一个属相。
而现在春节和春分都还没到,所以现在还是庚子鼠年。
回复

使用道具 举报

5#
ID:879659 发表于 2021-1-23 18:42 | 只看该作者
mengsiu 发表于 2021-1-23 16:08
准确来说,现在还不是牛年。
当今人们有两种方式,①过是春节才是新的一个属相,②过了春分才是新的一个属 ...

在网上看看人家写的,整整思路,原则就是写地址赋值,上机后很好
void write_sfm_a(uchar add,uchar date)//显示个,十分分离
{
  uchar ge,shi;
  shi=date/10;
  ge=date%10 ;
  lcd_wcmd(0x98+add);//地址9d
  lcd_wdat(dis6[0]);//先写高位,地址指针自动往后加1
  lcd_wdat(dis[shi]);
  lcd_wcmd(0x98+(add+1));9e
  lcd_wdat(dis[ge]);
  lcd_wdat(dis6[0]);//加 ‘ :’

}
回复

使用道具 举报

6#
ID:879659 发表于 2021-1-23 18:57 | 只看该作者
多谢关注,自己在网上看看人家的,原则就是写地址,赋值,现上电ok
程序修改如下:
void write_sfm_a(uchar add,uchar date)//显示个,十分离
{
  uchar ge,shi;
  shi=date/10;
  ge=date%10 ;
  lcd_wcmd(0x98+add);//
  lcd_wdat(dis6[0]);//写 ‘ :’
  lcd_wdat(dis[shi]);
  lcd_wcmd(0x98+(add+1));
  lcd_wdat(dis[ge]);
  lcd_wdat(dis6[0]);
  
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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