找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2253|回复: 0
收起左侧

51单片机LCD1602显示时、分、秒 含源码 proteus仿真

[复制链接]
ID:882819 发表于 2021-2-6 10:23 | 显示全部楼层 |阅读模式
自己写的 ,已测试运行,请大家指教。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下:
  1. //LCD1602显示时分秒
  2. #include <reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit rs=P3^7;
  6. sbit rw=P3^6;
  7. sbit en=P3^5;
  8. uchar code table[]="www.51hei.com";  //1602第一行显示内容
  9. void write_command(uchar);        //声明写指令
  10. void write_date(uchar);          //声明写数据
  11. uint a,b,num,shi,fen,miao;
  12. void delay(uint x)              //延时函数
  13. {
  14.         uint i,j;
  15.         for(i=x;i>0;i--)
  16.           for(j=110;j>0;j--);
  17. }
  18. void init()
  19. {
  20.         en=0;
  21.         rs=1;
  22.         rw=1;
  23.         P0=0xff;
  24.         TMOD=0X01;
  25.         TH0=(65536-1000)/256;
  26.         TL0=(65536-1000)%256;
  27.         TR0=1;
  28.         ET0=1;
  29.         EA=1;
  30. }
  31. /*----------------------------------------------------------------------------------------*/
  32. void main()
  33. {
  34.         init();    //初始化
  35.         
  36.         while(1)     // 循环内 不断扫描
  37.         {write_command(0x38);//设置16*2显示  7*5点阵 8位数据口
  38.   //write_command(0x06);//地址加1  光标右移
  39.         //write_command(0x08);//只开显示
  40.   //write_command(0x01);//清屏
  41.     write_command(0x0c);//开显示 不开光标
  42.                 write_command(0x80);//第一行第一位地址
  43.             for(a=0;a<13;a++)
  44.             write_date(table[a]);
  45.                
  46.                   write_command(0x80+0x40);//第二行第一位地址
  47.                   write_date(0x30+shi/10);
  48.                         write_date(0x30+shi%10);//下面这几行 显示时分秒,ASCII表中十六进制与字符阿拉伯数字相差30
  49.                         write_date(':');
  50.                         write_date(0x30+fen/10);
  51.                         write_date(0x30+fen%10);
  52.                         write_date(':');
  53.                         write_date(0x30+miao/10);
  54.                         write_date(0x30+miao%10);
  55.                
  56.    }
  57. }
  58. void write_command(uchar com)   //1602 写指令
  59. {
  60.         en=0;
  61.   rs=0;
  62.         rw=0;
  63.         P1=com;
  64.         delay(5);
  65.         en=1;
  66.         delay(5);
  67.         en=0;

  68. }
  69. void write_date(uchar date)//1602 写数据
  70. {
  71.                         en=0;
  72.             rs=1;
  73.             rw=0;
  74.                         P1=date;
  75.                         delay(5);
  76.                         en=1;
  77.                         delay(5);
  78.                         en=0;
  79. }
  80. void timer0() interrupt 1    //定时器0 中断计时
  81. {
  82.          
  83.   TH0=(65536-1000)/256;
  84.         TL0=(65536-1000)%256;
  85.         num++;
  86.         if(num==1000)
  87.         {
  88.                 num=0;
  89.                 miao++;
  90.                         if(miao==60)
  91.                         {
  92.                                 miao=0;
  93.                           fen++;
  94.                                                         if(fen==60)
  95.                                                         {
  96.                                                                  fen=0;
  97.                                                                  shi++;
  98.                                                                 if(shi==24)
  99.                                                                         shi=0;
  100.                                                         }
  101.                         }
  102.                 }
  103. }
复制代码
全部资料51hei下载地址:
1602显示时分秒---含源码 proteus仿真.rar (50.32 KB, 下载次数: 45)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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