分享

LCD上实现数字时钟

 共同成长888 2016-05-28
这里使用1602液晶实现数字时钟,这里需要注意的是LCD1602液晶的驱动写法,可以参考太阳人公司出品的datasheet,具体的程序如下:
#include
# define uchar unsigned char
# define uint unsigned int
sbit rs=P1^0;
sbit rw=P1^1;
sbit e=P1^2;
uchar table[]={'0','1','2','3','4','5','6','7','8','9'};
uchar num,shi,fen,miao;
void delay(uchar dly)
{
  uint x,y;
  for(x=0;x<=110;x++)
    for(y=0;y
;
}
void write_com(uchar com)//写命令
{
   rs=0;
   P2=com;
   delay(1);
   e=1;
   delay(1);
   e=0;
}
void write_data(uchar num)//写数据
{
   rs=1;
   P2=num;
   delay(1);
   e=1;
   delay(1);
   e=0;
}
void init()
{
   e=0;
   rw=0;
   num=0;
   miao=0;
   fen=0;
   shi=0;
   TMOD=0x01;
   EA=1;
   TR0=1;
   ET0=1;
   write_com(0x38);//初始化命令
   write_com(0x0e);
   write_com(0x06);
   write_com(0x01);
   write_com(0x80);
}
void time() interrupt 1
{
  TH0=(65535-46080)/256;
  TL0=(65535-46080)% 256;
  num++;
}
void main()
{
   init();
   write_com(0x80);
   write_data(table[0]);
   write_com(0x81);
   write_data(table[0]);
   write_com(0x83);
   write_data(table[0]);
   write_com(0x84);
   write_data(table[0]);
   write_com(0x86);
   write_data(table[0]);
   write_com(0x87);
   write_data(table[0]);
   write_com(0x82);
   write_data(':');
   write_com(0x85);
   write_data(':');
   while(1)
    {
  if(num==20)
    {
  miao++;
  num=0;  
}
  if(miao==60)
    {
  fen++;
  miao=0;
  write_com(0x83);
      write_data(table[fen/10]);
  write_com(0x84);
      write_data(table[fen ]);// % 10 ,神马情况,% 咋个写不进去
}
  if(fen==24)
    {
  shi++;
  fen=0;
  write_com(0x80);
      write_data(table[shi/10]);
  write_com(0x81);
      write_data(table[shi ]);// % 10
}
  write_com(0x86);
       write_data(table[miao/10]);
  write_com(0x87);
       write_data(table[miao ]); // % 10 
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多