proteus论坛|仿真论坛
直播中

刘菁_040610889

3年用户 9经验值
擅长:模拟技术
私信 关注
[资料]

ampire 12864液晶proteus仿真电路和源码。

  1. #include
  2. #include
  3. #include
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. void delay(uchar x);
  7. void wrcom(uchar);
  8. void wrdata(uchar );
  9. ***it rs=0xb0^7;//0xb0是P3的字节地址,这样可少按一次shift键。
  10. ***it wr=0xb0^6;
  11. ***it e=0xb0^5;
  12. ***it cs2=0xb0^4;
  13. ***it cs1=0xb0^3;
  14. ***it d=P1^0;
  15. //void checkbusy();
  16. uchar code datable[24][16]={/*--  文字:  单  --*/
  17. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  18. 0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xF8,0x00,0x00,0x00,
  19. 0x10,0x10,0x13,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x00,

  20. /*--  文字:  片  --*/
  21. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  22. 0x00,0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,
  23. 0x00,0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,

  24. /*--  文字:  机  --*/
  25. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  26. 0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,
  27. 0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,

  28. /*--  文字:  学  --*/
  29. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  30. 0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
  31. 0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,

  32. /*--  文字:  习  --*/
  33. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  34. 0x00,0x02,0x02,0x02,0x12,0x22,0xC2,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
  35. 0x00,0x08,0x18,0x08,0x04,0x04,0x04,0x02,0x02,0x41,0x81,0x40,0x3F,0x00,0x00,0x00,

  36. /*--  文字:  ,  --*/
  37. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  38. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  39. 0x00,0x00,0x58,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  40. /*--  文字:  真  --*/
  41. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  42. 0x00,0x04,0x04,0xF4,0x54,0x54,0x54,0x5F,0x54,0x54,0x54,0xF4,0x04,0x04,0x00,0x00,
  43. 0x10,0x10,0x90,0x5F,0x35,0x15,0x15,0x15,0x15,0x15,0x35,0x5F,0x90,0x10,0x10,0x00,

  44. /*--  文字:  的  --*/
  45. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  46. 0x00,0xF8,0x0C,0x0B,0x08,0x08,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0xF8,0x00,0x00,
  47. 0x00,0x7F,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,0x00,0x43,0x80,0x40,0x3F,0x00,0x00,

  48. /*--  文字:  有  --*/
  49. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  50. 0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00,
  51. 0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00,

  52. /*--  文字:  点  --*/
  53. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  54. 0x00,0x00,0xC0,0x40,0x40,0x40,0x7F,0x48,0x48,0x48,0x48,0xC8,0x08,0x08,0x00,0x00,
  55. 0x80,0x40,0x37,0x04,0x04,0x14,0x64,0x04,0x14,0x64,0x04,0x07,0x10,0xE0,0x00,0x00,

  56. /*--  文字:  难  --*/
  57. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  58. 0x04,0x24,0xC4,0x04,0xE4,0x5C,0x20,0xF8,0x4F,0x48,0x49,0xFA,0x48,0x48,0x08,0x00,
  59. 0x20,0x10,0x0C,0x03,0x04,0x18,0x00,0xFF,0x22,0x22,0x22,0x3F,0x22,0x22,0x20,0x00,

  60. /*--  文字:  !  --*/
  61. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  62. 0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  63. 0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

  64. };

  65.    
  66. void delay(uchar x)
  67. {
  68.          uchar a=100;
  69.          while(x--)
  70.                  while(a--);
  71.          }

  72.         /* void checkbusy()
  73.          {
  74.                 uchar a;
  75.                 // P2=0xff;
  76.                         wr=1;
  77.                  rs=0;
  78.                        
  79.                         e=1;
  80.                 while(1)
  81.                 {
  82.                         //d=0;
  83.                         e=0;
  84.                         a=P2;
  85.                         while(!(a&0x80))
  86.                        
  87.                                 break;
  88.                         d=0;
  89.                         e=1;
  90.                         //P1=0;
  91.                         }       
  92.                  }*/
  93. void wrcom( uchar com)
  94.                  {
  95.                         // checkbusy();//加忙检测后,数据正常无显示,没搞懂。
  96.                          rs=0;
  97.                          wr=0;
  98.                          e=1;
  99.                          P2=com;
  100.                          _nop_();
  101.                          e=0;
  102.                          }
  103. void wrdata(uchar data0)
  104.                          {
  105.                                 //checkbusy();
  106.                                  rs=1;
  107.                                  wr=0;
  108.                                  e=1;
  109.                                  P2=data0;
  110.                                  delay(1);
  111.                                  
  112.                                  e=0;
  113.                                  }
  114.                                  
  115.                                  
  116.                                  
  117. void main()
  118.         {  
  119.                                          uchar i,j;
  120.                                          
  121.                                          wrcom(0x0c);
  122.                                          wrcom(0x30);
  123.                                          wrcom(0x01);
  124.                                          wrcom(0x06);
  125.                                          while(1)
  126.                                          {
  127.                                                  
  128.                                                  cs1=0;//左屏显示第一、第二、第三、第四(第一行)和第七、第八、第九、第十(第二行)八个字。
  129.                                              cs2=1;
  130.                                                  wrcom(0xb8); //左屏第一行第一页
  131.                                                
  132.                                                  for(i=0;i<4;i++)
  133.                                                  {
  134.                                                          wrcom(0x40+16*i);//第一列开始
  135.                                                          for(j=0;j<16;j++)
  136.                                                      {
  137.                                                           
  138.                                                          wrdata(datable[2*i][j]);
  139.                                                          }
  140.                                                  }
  141.                                                   wrcom(0xb9); //左屏第一行第二页
  142.                                                  
  143.                                                  for(i=0;i<4;i++)
  144.                                                  {
  145.                                                         wrcom(0x40+16*i);//第一列开始
  146.                                                          for(j=0;j<16;j++)
  147.                                                      {
  148.                                                           
  149.                                                          wrdata(datable[2*i+1][j]);
  150.                                                          }
  151.                                                  }
  152.                                                  wrcom(0xbc); delay(1);//左屏第二行第五页
  153.                                                
  154.                                                  for(i=6;i<10;i++)
  155.                                                  {
  156.                                                          wrcom(0x40+16*(i-6));//第一列
  157.                                                          for(j=0;j<16;j++)
  158.                                                      {
  159.                                                           
  160.                                                          wrdata(datable[2*i][j]);
  161.                                                          }
  162.                                                  }
  163.                                                   wrcom(0xbd); delay(1);//左屏第二行第六页
  164.                                                  
  165.                                                  for(i=6;i<10;i++)
  166.                                                  {
  167.                                                         wrcom(0x40+16*(i-6));//第一列
  168.                                                          for(j=0;j<16;j++)
  169.                                                      {
  170.                                                           
  171.                                                          wrdata(datable[2*i+1][j]);
  172.                                                          }
  173.                                                  }
  174.                                                
  175.                                                  cs1=1;//右屏显示第五、第六(第一行)和第十一、第十二(第二行)共四个字。
  176.                                              cs2=0;
  177.                                                   wrcom(0xb8); //右屏第一行第一页
  178.                                                
  179.                                                  for(i=4;i<6;i++)
  180.                                                  {
  181.                                                          wrcom(0x40+16*(i-4));//第一列
  182.                                                          for(j=0;j<16;j++)
  183.                                                      {
  184.                                                           
  185.                                                          wrdata(datable[2*i][j]);
  186.                                                          }
  187.                                                  }
  188.                                                   wrcom(0xb9); delay(1);//右屏第一行第二页
  189.                                                  
  190.                                                  for(i=4;i<6;i++)
  191.                                                  {
  192.                                                         wrcom(0x40+16*(i-4));//第一列
  193.                                                          for(j=0;j<16;j++)
  194.                                                      {
  195.                                                           
  196.                                                          wrdata(datable[2*i+1][j]);
  197.                                                          }
  198.                                                  }
  199.                                                  wrcom(0xbc); delay(1);//右屏第二行第五页
  200.                                                
  201.                                                  for(i=10;i<12;i++)
  202.                                                  {
  203.                                                          wrcom(0x40+16*(i-10));//第一列
  204.                                                          for(j=0;j<16;j++)
  205.                                                      {
  206.                                                           
  207.                                                          wrdata(datable[2*i][j]);
  208.                                                          }
  209.                                                  }
  210.                                                   wrcom(0xbd); //右屏第二行第六页
  211.                                                  
  212.                                                  for(i=10;i<12;i++)
  213.                                                  {
  214.                                                         wrcom(0x40+16*(i-10));//第一列
  215.                                                          for(j=0;j<16;j++)
  216.                                                      {
  217.                                                           
  218.                                                          wrdata(datable[2*i+1][j]);
  219.                                                          }
  220.                                                  }
  221.                                                   
  222.                                         }
  223.                                        
  224. }

  • 捕获.PNG

回帖(2)

刘菁_040610889

2021-8-26 16:50:52
程序运行后显示效果图。
举报
  • 运行显示

刘菁_040610889

2021-8-26 16:55:09
proteus8 的项目文件,版本是8的应该可以直接运行。
举报

    12864.rar (2021-8-26 16:53 上传)

    21.71 KB, 下载次数: 10

更多回帖

发帖
×
20
完善资料,
赚取积分