标题: 单片机驱动LCD12864屏,秒表进位程序问题研究 [打印本页]

作者: liu.001    时间: 2021-1-22 12:33
标题: 单片机驱动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);//秒个位
      }
}


作者: liu.001    时间: 2021-1-22 12:56
到上面这步中间有几个问题也与大家分享下,1、 刚开始显示不全,原因是LCD屏初始化后紧接着中断初始化,再字符显示,解决是先LCD屏初始化,再字体显示,在中断初始化。    2、上电数码管乱显示,因P0口还并着数码管,中间有个锁存器控制,解决方法把锁存器关的使能信号从中断子程序中放到LCD屏忙子程序中   3、秒显示乱码,程序LCD1602程序过来,        write_date(0x30+shi);改成 lcd_wdat(dis[shi]);
作者: 人人学会单片机    时间: 2021-1-22 17:24
正巧,我在51hei 发了资料贴:http://www.51hei.com/bbs/dpj-200462-1.html
作者: mengsiu    时间: 2021-1-23 16:08
准确来说,现在还不是牛年。
当今人们有两种方式,①过是春节才是新的一个属相,②过了春分才是新的一个属相。
而现在春节和春分都还没到,所以现在还是庚子鼠年。
作者: liu.001    时间: 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]);//加 ‘ :’

}

作者: liu.001    时间: 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]);
  
}





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1