找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5331|回复: 4
收起左侧

51单片机Proteus仿真12864显示中文+文字取模软件

[复制链接]
ID:272932 发表于 2020-4-26 20:20 | 显示全部楼层 |阅读模式
51hei图片_20200426201624.png
51hei图片_20200426201804.png

单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. sbit  E=P3^0;
  4. sbit  RW=P3^1;
  5. sbit  DI=P3^2;
  6. sbit  CS2=P3^3;
  7. sbit  CS1=P3^4;

  8. #define uchar unsigned char
  9. #define uint unsigned int
  10. unsigned char cons,cont;

  11. uchar code  
  12. shuzi[16][32]={{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  13. 0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"0",0*/
  14. {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  15. 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"1",1*/
  16. {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  17. 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"2",2*/
  18. {0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  19. 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"3",3*/
  20. {0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  21. 0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"4",4*/
  22. {0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  23. 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"5",5*/
  24. {0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  25. 0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"6",6*/
  26. {0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  27. 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"7",7*/
  28. {0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  29. 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"8",8*/
  30. {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  31. 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"9",9*/
  32. {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  33. 0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"a",
  34. 0*/
  35. {0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  36. 0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"b",
  37. 1*/
  38. {0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  39. 0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"c",
  40. 2*/
  41. {0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  42. 0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"d",
  43. 3*/
  44. {0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,0xF0,0x10,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,
  45. 0x00,0x87,0x40,0x30,0x0F,0x00,0x00,0x1F,0x00,0x00,0xFF,0x08,0x10,0x0F,0x00,0x00},/*"帅",
  46. 4*/

  47. {0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0x20,0xFF,0x20,0x22,0x2C,0xA0,0x20,0x00,
  48. 0x00,0x08,0x48,0x84,0x7F,0x02,0x41,0x40,0x20,0x13,0x0C,0x14,0x22,0x41,0xF8,0x00}};/*"我"
  49. ,5*/
  50. unsigned char i;
  51. void delay(uint x)//延时
  52. {
  53.         uint a,b;
  54.         for(a=x;a>0;a--)
  55.         for(b=10;b>0;b--);
  56. }

  57. void keydelay(uint i)
  58. {
  59.         while(i--);        
  60. }

  61. void delay2s(void)   //误差 0us
  62. {
  63.     unsigned char a,b,c;
  64.     for(c=127;c>0;c--)
  65.         for(b=235;b>0;b--)
  66.             for(a=32;a>0;a--);
  67.     _nop_();  //if Keil,require use intrins.h
  68. }
  69. void readbusy(void)     /* 判断最高位是否为 1,为 0 才读写数据 */
  70. {
  71.         P0=0x00;
  72.         cons=P0;
  73.         DI=0;
  74.         RW=1;
  75.         E=1;  
  76.         while(cons&0x80);
  77.         E=0;
  78. }  
  79. void Select(uchar i)
  80. {
  81.         switch(i)
  82.         {
  83.             case 0:CS1=0;CS2=0;break;
  84.                     case 1:CS1=0;CS2=1;break;
  85.                     case 2:CS1=1;CS2=0;break;
  86.                    default:break;
  87.     }
  88. }
  89. void xieminling(uchar value)
  90. {  
  91.         readbusy();/* 每次读写都要忙判断 */
  92.         DI=0;
  93.         RW=0;  
  94.         P0=value;  
  95.         E=1;
  96.         _nop_();
  97.         _nop_();
  98.         E=0;  
  99. }
  100. void Setonoff(uchar onoff)
  101. {
  102.         onoff=0x3e|onoff;
  103.         xieminling(onoff);   
  104. }
  105. void xieshuju(uchar dat)
  106. {  
  107.         readbusy();
  108.         DI=1;
  109.         RW=0;  
  110.         P0=dat;
  111.         E=1;   
  112.         _nop_();
  113.         _nop_();
  114.         E=0;  
  115. }
  116. void  Setpage(uchar page)/* 设置页 */
  117. {  
  118.         page=0xb8|page;   
  119.         xieminling(page);  
  120. }
  121. void Setline(uchar line) /* 设置列 */
  122. {  
  123.         line=0x40|line;
  124.         xieminling(line);
  125. }  
  126. void qingping(uchar screen)   /* 清屏*/
  127. {
  128.         uchar i,j;  
  129.         Select(screen);  
  130.         for(i=0;i<8;i++)
  131.           {   
  132.                   Setline(0);
  133.                    Setpage(i);  
  134.              for(j=0;j<64;j++)
  135.               {  
  136.                        xieshuju(0x00);
  137.               }
  138.           }
  139. }  
  140. void chushihua(void)
  141. {
  142.         Select(0);
  143.         Setonoff(0);
  144.         Select(0);
  145.         Setonoff(1);
  146.         Select(0);  
  147.         qingping(0);
  148. }
  149. void xianshi(uchar ss,uchar lie,uchar page1,uchar *p)
  150. {
  151.         uchar i;
  152.         Select(ss);
  153.         Setpage(page1);
  154.         Setline(lie);
  155.         for(i=0;i<16;i++)
  156.         {
  157.                 xieshuju(p[i]);
  158.         }
  159.         Setpage(page1+1);
  160.     Setline(lie);
  161.         for(i=0;i<16;i++)
  162.          {
  163.                 xieshuju(p[i+16]);
  164.          }
  165. }


  166. void main()
  167. {
  168.    chushihua();
  169.         while(1)
  170.         {
  171.         
  172.                 xianshi(1,0,0,shuzi[15]);             //第一个1开左边显示、2开右边显示
  173.                 xianshi(2,0,0,shuzi[14]);                 //第二个0/16/32第一个字、第二个字
  174.                 xianshi(1,0,2,shuzi[15]);             //第三个0/2/4第一行、第二行
  175.                 xianshi(2,0,2,shuzi[14]);
  176.                 xianshi(1,16,4,shuzi[15]);            
  177.                 xianshi(2,16,4,shuzi[14]);        
  178.         }
  179. }
复制代码
全部资料51hei下载地址:
proteus仿真12864 取模软件.zip (1 MB, 下载次数: 222)

评分

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

查看全部评分

回复

使用道具 举报

ID:502460 发表于 2020-5-2 11:26 | 显示全部楼层
VCC和GND接反了
回复

使用道具 举报

ID:373102 发表于 2020-6-2 01:52 | 显示全部楼层
什么取模方式
回复

使用道具 举报

ID:375637 发表于 2021-4-12 12:30 | 显示全部楼层

VCC和GND接反
回复

使用道具 举报

ID:1085685 发表于 2023-6-24 14:46 来自手机 | 显示全部楼层
VCC和GND接反了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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