找回密码
 立即注册

QQ登录

只需一步,快速开始

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

12864显示可调时钟天气日历

[复制链接]
跳转到指定楼层
楼主
ID:375092 发表于 2018-7-19 19:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序简单清晰,有疑问帖子留言回复!

单片机源程序如下:
  1. #include "reg51.h"
  2. #define uchar unsigned char
  3. #define        uint unsigned int
  4. sbit RS=P2^6;
  5. sbit RW=P2^5;
  6. sbit EP=P2^7;
  7. sbit K1=P3^1;
  8. sbit K2=P3^0;
  9. sbit K3=P3^2;
  10. uchar num,t;
  11. uchar K1num;
  12. char s,f,m;
  13. uchar code table  []="2017-05-21 MON";
  14. uchar code table1 []="  00: 00: 00 AM";
  15. uchar code table2 []="重庆今日 多云";
  16. uchar code table3 []="东方  20-25 *C";
  17. void init1();
  18. void delay(uint k)
  19. {
  20.         uint i,j;
  21.         for(i=k;i>0;i--)
  22.                 for(j=110;j>0;j--);
  23. }
  24. void write(uchar com)
  25. {
  26.         RS=0;
  27.         RW=0;
  28.         P0=com;
  29.         delay(5);
  30.         EP=1;
  31.         delay(5);
  32.         EP=0;
  33. }
  34. void read(uchar date)
  35. {
  36.         RS=1;
  37.         RW=0;
  38.         P0=date;
  39.         delay(5);
  40.         EP=1;
  41.         delay(5);
  42.         EP=0;
  43. }
  44. void init()
  45. {
  46.         RS=0;
  47.         RW=0;
  48.         EP=0;
  49.         write(0x38);
  50.         write(0x0c);
  51.         write(0x06);
  52.         write(0x01);
  53.         write(0x80);
  54.         for(num=0;num<14;num++)
  55.         {
  56.                 read(table[num]);
  57.                 delay(20);
  58.         }
  59.         write(0x90);
  60.         for(num=0;num<11;num++)
  61.         {
  62.                 read(table2[num]);
  63.                 delay(20);
  64.         }
  65.         write(0x98);
  66.         for(num=0;num<14;num++)
  67.         {
  68.                 read(table3[num]);
  69.                 delay(20);
  70.         }
  71.         write(0x88);
  72.         for(num=0;num<16;num++)
  73.         {
  74.                 read(table1[num]);
  75.                 delay(20);
  76.         }
  77. }
  78. void write_sfm(uchar add,uchar date)
  79. {
  80.         uchar shi,ge;
  81.         shi=date/10;
  82.         ge=date%10;
  83.         write(0x83+add);
  84.         read(0x30+shi);
  85.         read(0x30+ge);
  86. }
  87. void key()
  88. {
  89.         if(K1==0)
  90.         {
  91.                 delay(5);
  92.                 if(K1==0)
  93.                 {
  94.                         K1num++;
  95.                         while(!K1);
  96.                         if(K1num==1)
  97.                         {
  98.                                 TR0=0;
  99.                                 write(0x83+10);                  //为啥子是 0x83  ???
  100.                                 write(0x0f);                 //重新规定,显示光标
  101.                         }
  102.                 }
  103.                 if(K1num==2)
  104.                 {
  105.                         write(0x83+8);
  106.                 }
  107.                 if(K1num==3)
  108.                 {
  109.                         write(0x83+6);
  110.                 }
  111.                 if(K1num==4)
  112.                 {
  113.                         K1num=0;
  114.                         write(0x0c);                          //无光标 ,不闪烁
  115.                         TR0=1;
  116.                 }
  117.         }
  118.         if(K1num!=0)
  119.         {
  120.                 if(K2==0)
  121.                 {
  122.                         delay(5);
  123.                         if(K2==0)
  124.                         {
  125.                                 while(!K2);
  126.                                 if(K1num==1)
  127.                                 {
  128.                                         m++;
  129.                                         if(m==60)
  130.                                         m=0;
  131.                                         write_sfm(10,m);
  132.                                         write(0x83+10);
  133.                                 }
  134.                                 if(K1num==2)
  135.                                 {
  136.                                         f++;
  137.                                         if(f==60)
  138.                                         f=0;
  139.                                         write_sfm(8,f);
  140.                                         write(0x83+8);
  141.                                 }
  142.                                 if(K1num==3)
  143.                                 {
  144.                                         s++;
  145.                                         if(s==23)
  146.                                         s=0;
  147.                                         write_sfm(6,s);
  148.                                         write(0x83+6);
  149.                                 }
  150.                         }
  151.                 }
  152.                 if(K3==0)
  153.                 {
  154.                         delay(5);
  155.                         if(K3==0)
  156.                         {
  157.                                 while(!K3);
  158.                                 if(K1num==1)
  159.                                 {
  160.                                         m--;
  161.                                         if(m==1)
  162.                                         m=59;
  163.                                         write_sfm(10,m);
  164.                                         write(0x83+10);
  165.                                 }
  166.                                 if(K1num==2)
  167.                                 {
  168.                                         f--;
  169.                                         if(f==1)
  170.                                         f=59;
  171.                                         write_sfm(8,f);
  172.                                         write(0x83+8);
  173.                                 }
  174.                                 if(K1num==3)
  175.                                 {
  176.                                         s--;
  177.                                         if(s==1)
  178.                                         m=23;
  179.                                         write_sfm(6,s);
  180.                                         write(0x83+6);
  181.                                 }
  182.                         }
  183.                 }
  184.         }
  185. }
  186. void main()
  187. {
  188.         init();
  189.         init1();
  190.         while(1)
  191.         {
  192.                 key();
  193.         }
  194. }
  195. void init1()
  196. {
  197.         TMOD=0x01;
  198.         EA=1;
  199.         ET0=1;
  200.         TR0=1;
  201.         TH0=(65636-50000)/256;
  202.         TL0=(65636-50000)%256;
  203. }
  204. void time0() interrupt 1
  205. {
  206.         TH0=(65636-50000)/256;
  207.         TL0=(65636-50000)%256;
  208.         t++;
  209.         if(t==18)           //与上面的50000有一秒左右
  210.         {
  211.                 t=0;
  212.                 m++;
  213.                 if(m==60)
  214.                 {
  215.                         m=0;
  216.                         f++;
  217.                         if(f==60)
  218.                         {
  219.                                 f=0;
  220.                                 s++;
  221.                                 if(s==24)
  222.                                 {
  223.                                         s=0;
  224.                                 }
  225.                                 write_sfm(6,s);
  226.                         }
  227.                         write_sfm(8,f);
  228.                 }
  229.                 write_sfm(10,m);
  230.         }
  231. }
复制代码

所有资料51hei提供下载:

12864显示可调时钟天气日历.zip (41.23 KB, 下载次数: 26)


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

使用道具 举报

沙发
ID:1 发表于 2018-7-19 20:19 | 只看该作者
本帖需要分享原理图后才可获得100积分
回复

使用道具 举报

板凳
ID:375092 发表于 2018-7-20 10:32 | 只看该作者
12864显示的开发板原理图,有问题留言回复,谢谢!

HC6800-ES V2.0 新版.pdf

759.71 KB, 下载次数: 12, 下载积分: 黑币 -5

51板子程序原理图

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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