找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机:1602液晶,显示欢迎界面+日期 时间走(公开)

[复制链接]
跳转到指定楼层
楼主
ID:103513 发表于 2016-1-17 00:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
此程序的电路图下载:http://www.51hei.com/f/ks51.pdf   

  1. //显示欢迎界面后,清屏,显示日期+时间走
  2. //为什么我写出的时间走,必须有更新到的才能显示出来,时钟就显示不出来
  3. //最后的发现是位置放置不对,得先显示,而后再去启动定时器进行更新,否则就只显示有更新的地方。其它地方显示不了
  4. #include<reg52.h>
  5. #define uchar unsigned char       //宏定义
  6. #define uint unsigned int
  7. uchar code table[]="  hello!jasper  ";     
  8. uchar code table1[]="   xm.dabiao    ";      
  9. uchar code aa[]=" 2011-12-15 MON ";   
  10. uchar code bb[]="    13:04:00    ";      
  11. sbit lcden=P3^4;
  12. sbit lcdrs=P3^5;
  13. sbit dula=P2^6;      //数码管关断
  14. sbit wela=P2^7;
  15. sbit FM=P2^3;
  16. uchar count;
  17. char miao,fen=4,shi=13;
  18. //------------------------------
  19. void delay(uint z)      
  20. {
  21. uint x,y;
  22. for(x=z;x>0;x--)
  23.   for(y=110;y>0;y--);
  24. }
  25. //------------------------------液晶有2个函数,一个是写指令,一个是写数据
  26. void write_com(uchar com)      
  27. {
  28. lcdrs=0;      
  29. lcden=0;  
  30. P0=com;      
  31. delay(5);      
  32. lcden=1;
  33. delay(5);
  34. lcden=0;
  35. }
  36. void write_date(uchar date)
  37. {
  38. lcdrs=1;
  39. lcden=0;
  40. P0=date;
  41. delay(5);
  42. lcden=1;
  43. delay(5);
  44. lcden=0;
  45. }
  46. //222222222222222222222222222222222222222222
  47. void init()            
  48. {
  49. uchar num;
  50. dula=0;             //关闭数码管
  51. wela=0;
  52. lcden=0;         
  53. write_com(0x38);   
  54. write_com(0x0c);   
  55. write_com(0x06);     
  56. write_com(0x01);   
  57. write_com(0x80+0x10);   
  58. for(num=0;num<16;num++)      
  59.   {
  60.    write_date(table[num]);
  61.    delay(10);
  62.   }
  63. write_com(0x80+0x51);      
  64. for(num=0;num<16;num++)      
  65.   {
  66.    write_date(table1[num]);
  67.    delay(10);
  68.   }     
  69. //---------------------------让整屏左移
  70. for(num=0;num<16;num++)
  71. {
  72.   write_com(0x18);   
  73.   delay(160);  
  74. }
  75. delay(1800);

  76. }
  77. void pingxian(void)
  78. {
  79. uchar num_x;
  80. delay(500);
  81. write_com(0x01);
  82. write_com(0x80);
  83. for(num_x=0;num_x<16;num_x++)     
  84.   {
  85.    write_date(aa[num_x]);
  86.    delay(20);
  87.   }
  88. write_com(0x80+0x40);      
  89. delay(5);
  90. for(num_x=0;num_x<16;num_x++)   
  91.   {
  92.    write_date(bb[num_x]);
  93.    delay(20);
  94.   }
  95. delay(300);
  96. }
  97. void inittime(void)
  98. {
  99. TMOD=0x01;  
  100. TH0=(65536-50000)/256;
  101. TL0=(65536-50000)%256;
  102. EA=1;     
  103. ET0=1;   
  104. TR0=1;
  105. // shi=0;
  106. // fen=2;
  107. // miao=59;
  108. }
  109. void didi(di_num)
  110. {
  111.   uchar d;
  112.   for(d=di_num;d>0;d--)
  113. {
  114.    FM=0;
  115.    delay(70);
  116.    FM=1;
  117.    delay(30);
  118. }
  119. }
  120. void write_sfm(uchar add,uchar date)  
  121. {                           
  122. uchar shi,ge;         
  123. shi=date/10;
  124. ge=date%10;
  125. write_com(0x80+0x40+add);
  126. write_date(0x30+shi);   
  127. write_date(0x30+ge);      
  128. }
  129. void main(void)
  130. {
  131. init();
  132. pingxian();
  133. inittime();
  134. while(1)
  135. {
  136. }
  137. }
  138. void timer0() interrupt 1       //定时中断程序
  139. {
  140. TH0=(65536-50000)/256;
  141. TL0=(65536-50000)%256;
  142. count++;        
  143.      if(count==19)
  144.   {
  145.    count=0;
  146.    miao++;
  147.    if(miao==60)
  148.    {
  149.     miao=0;
  150.     fen++;
  151.     if(fen==60)
  152.     {
  153.      fen=0;
  154.      shi++;
  155.      if(shi==24)       //24小时
  156.      {
  157.       shi=0;
  158.      }
  159.      write_sfm(4,shi);       //不相等,则让他走,时针走
  160.     }
  161.     write_sfm(7,fen);        //不相等,则让他走,分针走
  162.    }
  163.    write_sfm(10,miao);        //不相等,则让他走;秒针走
  164.    
  165.   }
  166. }
复制代码



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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