找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2193|回复: 1
收起左侧

用51单片机驱动P12864F液晶屏显示控制菜单系统Proteus仿真程序

[复制链接]
ID:581139 发表于 2020-10-23 17:43 | 显示全部楼层 |阅读模式
用51单片机驱动LCD P12864F点阵式液晶屏显示控制菜单系统
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png
图片3.png 图片2.png 图片4.png
图片1.png


单片机程序代码 主函数
  1. #include <reg52.h>
  2. #include"LCD.H"
  3. #include "DS1302.h"
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uchar code hz4[4][32]=
  7. {         //'*'
  8.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0xD6,0x00,0x38,0x00,
  9.         0x38,0x00,0xD6,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  10.         //
  11.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  12.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  13.         /*--  文字:  元  --*/
  14. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  15. 0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x04,0x40,0x04,0x40,
  16. 0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x42,0x10,0x42,0x20,0x42,0x40,0x3E,0x80,0x00,
  17. /*--  文字:  —  --*/
  18. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  19. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,
  20. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  21. };

  22. uchar code hz10[4][32]={
  23. /*--  文字:  本  --*/
  24. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  25. 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFC,0x03,0x80,0x05,0x40,0x05,0x40,
  26. 0x09,0x20,0x11,0x10,0x21,0x08,0x4F,0xE4,0x81,0x02,0x01,0x00,0x01,0x00,0x01,0x00,

  27. /*--  文字:  次  --*/
  28. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  29. 0x00,0x80,0x40,0x80,0x20,0x80,0x20,0xFC,0x01,0x04,0x09,0x08,0x0A,0x40,0x14,0x40,
  30. 0x10,0x40,0xE0,0xA0,0x20,0xA0,0x21,0x10,0x21,0x10,0x22,0x08,0x24,0x04,0x08,0x02,

  31. /*--  文字:  点  --*/
  32. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  33. 0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xFC,0x02,0x00,0x02,0x00,0x3F,0xF0,0x20,0x10,
  34. 0x20,0x10,0x20,0x10,0x3F,0xF0,0x00,0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x80,0x04,

  35. /*--  文字:  菜  --*/
  36. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  37. 0x08,0x20,0x08,0x20,0xFF,0xFE,0x08,0x20,0x00,0x10,0x00,0xF8,0x3F,0x00,0x11,0x10,
  38. 0x08,0x20,0x01,0x00,0x7F,0xFC,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,0x01,0x00,
  39. };
  40. uchar code hz5[10][32]=
  41. {/*--  文字:  0  --*/
  42. 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x24,0x00,0x42,0x00,0x42,0x00,0x42,0x00,
  43. 0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x24,0x00,0x18,0x00,0x00,0x00,0x00,0x00,
  44. /*--  文字:  1  --*/
  45. 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x38,0x00,0x08,0x00,0x08,0x00,0x08,0x00,
  46. 0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,
  47. /*--  文字:  2  --*/
  48. 0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x02,0x00,
  49. 0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x42,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,
  50. /*--  文字:  3  --*/
  51. 0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x42,0x00,0x42,0x00,0x02,0x00,0x04,0x00,
  52. 0x18,0x00,0x04,0x00,0x02,0x00,0x42,0x00,0x42,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
  53. /*--  文字:  4  --*/
  54. 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x0C,0x00,0x14,0x00,0x24,0x00,
  55. 0x24,0x00,0x44,0x00,0x7F,0x00,0x04,0x00,0x04,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,
  56. /*--  文字:  5  --*/
  57. 0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x78,0x00,
  58. 0x44,0x00,0x02,0x00,0x02,0x00,0x42,0x00,0x44,0x00,0x38,0x00,0x00,0x00,0x00,0x00,
  59. /*--  文字:  6  --*/
  60. 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x24,0x00,0x40,0x00,0x40,0x00,0x5C,0x00,
  61. 0x62,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x22,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
  62. /*--  文字:  7  --*/
  63. 0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x42,0x00,0x04,0x00,0x04,0x00,0x08,0x00,
  64. 0x08,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
  65. /*--  文字:  8  --*/
  66. 0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x24,0x00,
  67. 0x18,0x00,0x24,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
  68. /*--  文字:  9  --*/
  69. 0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x44,0x00,0x42,0x00,0x42,0x00,0x42,0x00,
  70. 0x46,0x00,0x3A,0x00,0x02,0x00,0x02,0x00,0x24,0x00,0x18,0x00,0x00,0x00,0x00,0x00,
  71. };
  72. uchar code hz11[5][32]=
  73. {
  74. /*--  文字:  好  --*/
  75. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  76. 0x10,0x00,0x10,0xFC,0x10,0x04,0x10,0x08,0xFC,0x10,0x24,0x20,0x24,0x20,0x25,0xFE,
  77. 0x24,0x20,0x48,0x20,0x28,0x20,0x10,0x20,0x28,0x20,0x44,0x20,0x84,0xA0,0x00,0x40,

  78. /*--  文字:  运  --*/
  79. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  80. 0x00,0x00,0x23,0xF8,0x10,0x00,0x10,0x00,0x00,0x00,0x07,0xFC,0xF0,0x40,0x10,0x80,
  81. 0x11,0x10,0x12,0x08,0x17,0xFC,0x12,0x04,0x10,0x00,0x28,0x00,0x47,0xFE,0x00,0x00,

  82. /*--  文字:  来  --*/
  83. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  84. 0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x11,0x10,0x09,0x10,0x09,0x20,
  85. 0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,0x01,0x00,0x01,0x00,

  86. /*--  文字:  菜  --*/
  87. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  88. 0x08,0x20,0x08,0x20,0xFF,0xFE,0x08,0x20,0x00,0x10,0x00,0xF8,0x3F,0x00,0x11,0x10,
  89. 0x08,0x20,0x01,0x00,0x7F,0xFC,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,0x01,0x00,

  90. /*--  文字:  馆  --*/
  91. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  92. 0x20,0x40,0x20,0x20,0x23,0xFE,0x3A,0x02,0x4C,0x04,0x51,0xF8,0x81,0x08,0x21,0x08,
  93. 0x21,0xF8,0x21,0x00,0x21,0x00,0x21,0xFC,0x29,0x04,0x31,0x04,0x21,0xFC,0x01,0x04,
  94. };
  95. uchar code hz12[2][32]=
  96. {
  97. /*--  文字:  星  --*/
  98. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  99. 0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x01,0x00,0x11,0x00,
  100. 0x1F,0xF8,0x21,0x00,0x41,0x00,0x1F,0xF0,0x01,0x00,0x01,0x00,0x7F,0xFC,0x00,0x00,

  101. /*--  文字:  期  --*/
  102. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  103. 0x22,0x00,0x22,0x7C,0x7F,0x44,0x22,0x44,0x22,0x44,0x3E,0x7C,0x22,0x44,0x22,0x44,
  104. 0x3E,0x44,0x22,0x7C,0x22,0x44,0xFF,0x44,0x04,0x84,0x22,0x84,0x41,0x14,0x82,0x08,
  105. };

  106. void welcome3()
  107. {
  108.          uchar i;
  109.          for(i=0;i<8;i++)
  110.                 display_hz(0,0+i,hz4[1]);
  111.          for(i=0;i<8;i++)
  112.                  display_hz(1,0+i,hz4[1]);
  113.          for(i=0;i<8;i++)
  114.                  display_hz(2,0+i,hz4[1]);
  115.          for(i=0;i<8;i++)
  116.                  display_hz(3,0+i,hz4[1]);
  117. }
  118. void welcome2()
  119. {
  120.          uchar i;
  121.          for(i=0;i<5;i++)
  122.                 display_hz(0,1+i,hz11[i]);
  123.          Ds1302ReadTime();
  124.      display_hz(1,0,hz5[2]);
  125.          display_hz(1,1,hz5[0]);
  126.          display_hz(1,2,hz5[TIME[6]/16]);
  127.          display_hz(1,3,hz5[(TIME[6]&0x0f)]);
  128.          display_hz(1,4,hz4[3]);
  129.          display_hz(1,5,hz5[TIME[4]/16]);
  130.          display_hz(1,6,hz5[(TIME[4]&0x0f)]);
  131.          display_hz(1,7,hz4[3]);
  132.          display_hz(2,0,hz5[TIME[3]/16]);
  133.          display_hz(2,1,hz5[(TIME[3]&0x0f)]);
  134.          display_hz(2,2,hz4[3]);
  135.          display_hz(2,3,hz5[TIME[2]/16]);
  136.          display_hz(2,4,hz5[(TIME[2]&0x0f)]);
  137.          display_hz(2,5,hz4[3]);
  138.          display_hz(2,6,hz5[TIME[1]/16]);
  139.          display_hz(2,7,hz5[(TIME[1]&0x0f)]);
  140.          display_hz(3,0,hz4[3]);
  141.          display_hz(3,1,hz5[TIME[0]/16]);
  142.          display_hz(3,2,hz5[(TIME[0]&0x0f)]);
  143.          display_hz(3,4,hz12[0]);
  144.          display_hz(3,5,hz12[1]);
  145.          display_hz(3,6,hz5[(TIME[5]&0x07)]);        
  146. }

  147. void main()
  148. {
  149.          uchar i=0,j,t;
  150.          uint s;
  151.          init_12864();
  152.          Ds1302Init();
  153.          while(1)
  154.          {        
  155.                  if(i==0) welcome2();                                                
  156.                 if(k1==0)
  157.                         {
  158.                                 delay(5);
  159.                                 if(k1==0)
  160.                                 {
  161.                                         while(!k1);
  162.                                         i++;

  163.                                         switch(i)
  164.                                         {
  165.                                                 case 1:
  166.                                                         welcome3();        
  167.                                                         welcome();
  168.                                                         display_hz(0,0,hz4[0]);                                                
  169.                                                         break;
  170.                                                 case 2:
  171.                                                         s+=58*j;
  172.                                                         display_hz(0,0,hz4[1]);
  173.                                                         display_hz(1,0,hz4[0]);                                                
  174.                                                         break;
  175.                                                 case 3:
  176.                                                         s+=15*j;
  177.                                                         display_hz(1,0,hz4[1]);
  178.                                                         display_hz(2,0,hz4[0]);
  179.                                                         
  180.                                                         break;
  181.                                                 case 4:
  182.                                                         s+=12*j;
  183.                                                         display_hz(2,0,hz4[1]);
  184.                                                         display_hz(3,0,hz4[0]);
  185.                                                         
  186.                                                         break;
  187.                                                 case 5:
  188.                                                         s+=8*j;
  189.                                                         display_hz(3,0,hz4[1]);
  190.                                                         welcome1();
  191.                                                         display_hz(0,0,hz4[0]);                                                
  192.                                                         break;
  193.                                                 case 6:
  194.                                                         s+=78*j;
  195.                                                         display_hz(0,0,hz4[1]);                                                
  196.                                                         display_hz(1,0,hz4[0]);                                
  197.                                                         break;
  198.                                                 case 7:
  199.                                                         s+=8*j;
  200.                                                         display_hz(1,0,hz4[1]);
  201.                                                         display_hz(2,0,hz4[0]);                                                
  202.                                                         break;
  203.                                                 case 8:
  204.                                                         s+=88*j;
  205.                                                         display_hz(2,0,hz4[1]);
  206.                                                         display_hz(3,0,hz4[0]);                                                
  207.                                                         break;
  208.                                                 case 9:
  209.                                                         s+=12*j;
  210.                                                         i=1;
  211.                                                         display_hz(3,0,hz4[1]);
  212.                                                         welcome();
  213.                                                         display_hz(0,0,hz4[0]);
  214.                                                         break;
  215.                                         }
  216.                                         j=0;
  217.                                 }
  218.                         }
  219.                   if(k2==0)
  220.                   {
  221.                           delay(5);
  222.                         if(k2==0)
  223.                         {
  224.                                 while(!k2);
  225.                                 j++;
  226.                                 if(j==10)j=1;
  227.                                 switch(i)
  228.                                 {
  229.                                                 case 1:
  230.                                                         display_hz(0,7,hz5[j]);
  231.                                                         break;
  232.                                                 case 2:
  233.                                                         display_hz(1,7,hz5[j]);                                                
  234.                                                         break;
  235.                                                 case 3:
  236.                                                         display_hz(2,7,hz5[j]);                                                
  237.                                                         break;
  238.                                                 case 4:
  239.                                                         display_hz(3,7,hz5[j]);
  240.                                                         break;
  241.                                                 case 5:
  242.                                                         display_hz(0,7,hz5[j]);                                                
  243.                                                         break;
  244.                                                 case 6:
  245.                                                         display_hz(1,7,hz5[j]);                                                
  246.                                                         break;
  247.                                                 case 7:
  248.                                                         display_hz(2,7,hz5[j]);
  249.                                                         
  250.                                                         break;
  251.                                                 case 8:
  252.                                                         display_hz(3,7,hz5[j]);                                                
  253.                                                         break;
  254.                                 }
  255.                         }
  256.                   }
  257.                   if(k3==0)
  258.                   {
  259.                         delay(5);
  260.                         if(k3==0)
  261.                         {
  262.                                 uint ge,shi,bai;
  263.                                 while(!k3);
  264.                                 switch(i)
  265.                                 {
  266.                                                 case 1:
  267.                                                         s+=58*j;
  268.                                                         break;
  269.                                                 case 2:
  270.                                                         s+=15*j;                                       
  271.                                                         break;
  272.                                                 case 3:
  273.                                                         s+=12*j;                                                
  274.                                                         break;
  275.                                                 case 4:
  276.                                                         s+=8*j;
  277.                                                         break;
  278.                                                 case 5:
  279.                                                         s+=78*j;                                       
  280.                                                         break;
  281.                                                 case 6:
  282.                                                         s+=8*j;                                                
  283.                                                         break;
  284.                                                 case 7:
  285.                                                         s+=88*j;                                                
  286.                                                         break;
  287. ……………………

  288. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
51hei.png
全部资料51hei下载地址:
用51 驱动P 12864F显示控制菜单系统.zip (108.23 KB, 下载次数: 56)

评分

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

查看全部评分

回复

使用道具 举报

ID:477152 发表于 2020-11-2 13:21 | 显示全部楼层
并口好耗费接口啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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