找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4221|回复: 8
收起左侧

单片机点亮无字库LCD12864完整程序,亲测无误

  [复制链接]
ID:102939 发表于 2020-9-24 09:27 | 显示全部楼层 |阅读模式
打板实测效果如下
单片机源程序如下:
  1. #include"stc12c5axx.h"
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit e=P4^3;
  6. sbit rw=P0^3;
  7. sbit rs=P0^4;
  8. sbit cs1=P0^7;
  9. sbit cs2=P0^6;

  10. ///***********大汉字数组,取模方式32X32*****************/
  11. //uchar code tab[][128]={
  12. //
  13. ///*--  调入了一幅图像:这是您新建的图像  --*/
  14. ///*--  宽度x高度=16x16  --*/
  15. //0x02,0x00,0x01,0x00,0x21,0x00,0x63,0x02,0x06,0x00,0x05,0x04,0xB5,0x00,0x01,0x0A,
  16. //0x13,0x08,0x81,0x09,0xA3,0x0A,0x91,0x09,0xAB,0x0A,0x41,0x08,0x11,0x00,0x00,0x09
  17. //
  18. //
  19. //};
  20. /***********标准汉字数组,取模方式16X16*****************/
  21. uchar code tab_biao[][32]={

  22. /*--  文字:  代  --*/
  23. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  24. 0x00,0x80,0x60,0xF8,0x07,0x20,0x20,0x20,0x7F,0xA0,0x10,0x11,0x16,0x10,0x10,0x00,
  25. 0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0xF8,0x00,

  26. /*--  文字:  码  --*/
  27. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  28. 0x04,0x84,0xE4,0x5C,0x44,0xC4,0x00,0x02,0xF2,0x82,0x82,0x82,0xFE,0x80,0x80,0x00,
  29. 0x02,0x01,0x7F,0x10,0x10,0x3F,0x00,0x08,0x08,0x08,0x08,0x48,0x88,0x40,0x3F,0x00,

  30. /*--  文字:  书  --*/
  31. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  32. 0x00,0x00,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0xF9,0x02,0x04,0x00,0x00,0x00,
  33. 0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x21,0x41,0x21,0x1F,0x00,0x00,

  34. /*--  文字:  写  --*/
  35. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  36. 0x08,0x06,0x82,0x7A,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x0A,0x06,0x00,
  37. 0x08,0x08,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x49,0x81,0x41,0x3F,0x00,0x00,0x00,

  38. /*--  文字:  人  --*/
  39. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  40. 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  41. 0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x00,

  42. /*--  文字:  生  --*/
  43. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  44. 0x80,0x40,0x30,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,
  45. 0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x7F,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00,

  46. /*--  文字:  技  --*/
  47. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  48. 0x10,0x10,0x10,0xFF,0x10,0x90,0x08,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x08,0x00,
  49. 0x04,0x44,0x82,0x7F,0x01,0x80,0x80,0x40,0x43,0x2C,0x10,0x28,0x46,0x81,0x80,0x00,

  50. /*--  文字:  术  --*/
  51. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  52. 0x00,0x10,0x10,0x10,0x10,0xD0,0x30,0xFF,0x30,0xD0,0x12,0x1C,0x10,0x10,0x00,0x00,
  53. 0x10,0x08,0x04,0x02,0x01,0x00,0x00,0xFF,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x00,

  54. /*--  文字:  成  --*/
  55. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  56. 0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0xFF,0x08,0x09,0x0A,0xC8,0x08,0x00,
  57. 0x80,0x60,0x1F,0x00,0x10,0x20,0x1F,0x80,0x40,0x21,0x16,0x18,0x26,0x41,0xF8,0x00,

  58. /*--  文字:  就  --*/
  59. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  60. 0x04,0xE4,0x25,0x26,0x24,0xE4,0x04,0x20,0x20,0xFF,0x20,0xE2,0x2C,0x20,0x20,0x00,
  61. 0x10,0x4B,0x82,0x7E,0x02,0x0B,0x90,0x60,0x1C,0x03,0x00,0x3F,0x40,0x40,0x70,0x00,

  62. /*--  文字:  梦  --*/
  63. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  64. 0x40,0x44,0x24,0x14,0x7F,0x94,0x24,0x00,0x24,0x14,0x7F,0x14,0x24,0x44,0x40,0x00,
  65. 0x00,0x80,0x88,0x84,0x42,0x45,0x29,0x11,0x11,0x09,0x05,0x03,0x00,0x00,0x00,0x00,

  66. /*--  文字:  想  --*/
  67. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  68. 0x00,0x08,0x88,0x68,0xFF,0x48,0x88,0x00,0xFE,0x52,0x52,0x52,0xFE,0x00,0x00,0x00,
  69. 0x40,0x31,0x00,0x00,0x3B,0x40,0x40,0x44,0x5B,0x42,0x42,0x72,0x03,0x08,0x30,0x00,

  70. /*--  文字:  技  --*/
  71. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  72. 0x10,0x10,0x10,0xFF,0x10,0x90,0x08,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x08,0x00,
  73. 0x04,0x44,0x82,0x7F,0x01,0x80,0x80,0x40,0x43,0x2C,0x10,0x28,0x46,0x81,0x80,0x00,

  74. /*--  文字:  术  --*/
  75. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  76. 0x00,0x10,0x10,0x10,0x10,0xD0,0x30,0xFF,0x30,0xD0,0x12,0x1C,0x10,0x10,0x00,0x00,
  77. 0x10,0x08,0x04,0x02,0x01,0x00,0x00,0xFF,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x00,

  78. /*--  文字:  照  --*/
  79. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  80. 0x00,0xFE,0x42,0x42,0x42,0xFE,0x00,0x42,0xA2,0x9E,0x82,0xA2,0xC2,0xBE,0x00,0x00,
  81. 0x80,0x6F,0x08,0x08,0x28,0xCF,0x00,0x00,0x2F,0xC8,0x08,0x08,0x28,0xCF,0x00,0x00,

  82. /*--  文字:  亮  --*/
  83. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  84. 0x00,0x04,0x04,0x74,0x54,0x54,0x55,0x56,0x54,0x54,0x54,0x74,0x04,0x04,0x00,0x00,
  85. 0x84,0x83,0x41,0x21,0x1D,0x05,0x05,0x05,0x05,0x05,0x7D,0x81,0x81,0x85,0xE3,0x00,

  86. /*--  文字:  前  --*/
  87. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  88. 0x08,0x08,0xE8,0x29,0x2E,0x28,0xE8,0x08,0x08,0xC8,0x0C,0x0B,0xE8,0x08,0x08,0x00,
  89. 0x00,0x00,0xFF,0x09,0x49,0x89,0x7F,0x00,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00,

  90. /*--  文字:  程  --*/
  91. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  92. 0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00,
  93. 0x08,0x06,0x01,0xFF,0x01,0x06,0x40,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,

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

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

  102. /*--  文字:  成  --*/
  103. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  104. 0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0xFF,0x08,0x09,0x0A,0xC8,0x08,0x00,
  105. 0x80,0x60,0x1F,0x00,0x10,0x20,0x1F,0x80,0x40,0x21,0x16,0x18,0x26,0x41,0xF8,0x00,

  106. /*--  文字:  就  --*/
  107. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  108. 0x04,0xE4,0x25,0x26,0x24,0xE4,0x04,0x20,0x20,0xFF,0x20,0xE2,0x2C,0x20,0x20,0x00,
  109. 0x10,0x4B,0x82,0x7E,0x02,0x0B,0x90,0x60,0x1C,0x03,0x00,0x3F,0x40,0x40,0x70,0x00,

  110. /*--  文字:  未  --*/
  111. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  112. 0x80,0x80,0x88,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0x88,0x80,0x80,0x00,
  113. 0x20,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x01,0x02,0x04,0x08,0x10,0x20,0x20,0x00,

  114. /*--  文字:  来  --*/
  115. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  116. 0x00,0x08,0x08,0x28,0xC8,0x08,0x08,0xFF,0x08,0x08,0x88,0x68,0x08,0x08,0x00,0x00,
  117. 0x21,0x21,0x11,0x11,0x09,0x05,0x03,0xFF,0x03,0x05,0x09,0x11,0x11,0x21,0x21,0x00,


  118. };
  119. void Delay50us()                //@11.0592MHz
  120. {
  121.         unsigned char i, j;

  122.         _nop_();
  123.         _nop_();
  124.         _nop_();
  125.         i = 1;
  126.         j = 133;
  127.         do
  128.         {
  129.                 while (--j);
  130.         } while (--i);
  131. }


  132.   void lcd12864_write_com(uchar com) //写指令
  133.   {
  134.           rs=0;
  135.           rw=0;
  136.           e=0;
  137.           Delay50us();
  138.           P1=com;
  139.           Delay50us();
  140.           e=1;
  141.           Delay50us();
  142.           e=0;
  143.   }

  144.   void lcd12864_write_date(uchar date)//写数据
  145.   {
  146.           rs=1;
  147.           rw=0;
  148.           e=0;
  149.           Delay50us();
  150.           P1=date;
  151.           Delay50us();
  152.           e=1;
  153.           Delay50us();
  154.           e=0;
  155.   }
  156. void lcd12864_init()        //初始化
  157. {
  158.         lcd12864_write_com(0x3f);//打开屏幕        ,关闭是3e
  159.         Delay50us();
  160.         lcd12864_write_com(0xc0); //行的初始化地址
  161.         Delay50us();
  162.         lcd12864_write_com(0xb8);//页的初始化地址
  163.         Delay50us();
  164.         lcd12864_write_com(0x40);//列的初始化地址
  165.         Delay50us();                                                                                      
  166.           
  167. }
  168.   void clear_lcd12864()        //清屏
  169.   {
  170.            uchar i,j;
  171.            cs1=1;cs2=1;         //打开左右两屏,实物  注意:LCD12864实物是CS1=1;CS2=1为打开,
  172.            for(i=0;i<8;i++)          //共8页
  173.            {
  174.                            lcd12864_write_com(0xb8+i);//页的初始化地址
  175.                         lcd12864_write_com(0x40);//列的初始化地址
  176.            for(j=0;j<64;j++)  //共64列
  177.            {
  178.                            lcd12864_write_date(0x00);
  179.        }
  180.               }
  181.   }


  182. //12864显示程序:


  183.   /***********大汉字显示函数************************/
  184. //void hanzi(uchar ye,uchar lie,uchar *shuzhu)        //定义任意页、任意列、任意数组(*表示指针类型)
  185. //{
  186. //  uchar i,j;
  187. //  for(i=0;i<4;i++)        //4页
  188. //  {
  189. //  lcd12864_write_com(0xb8+ye+i);//页的初始化地址
  190. //   lcd12864_write_com(0x40+lie);//列的初始化地址
  191. //   for(j=0;j<32;j++)        //这里要显示大汉字,取模为32X32  
  192. //   {
  193. //   lcd12864_write_date(shuzhu[i*32+j]);
  194. //   }
  195. //  }
  196. //}
  197.         /***********标准汉字显示函数************************/
  198. void hanzi2(uchar ye,uchar lie,uchar *shuzhu)        //定义任意页、任意列、任意数组(*表示指针类型)
  199. {
  200.   uchar i,j;
  201.   for(i=0;i<2;i++)        //2页
  202.   {
  203.            lcd12864_write_com(0xb8+ye+i);//页的初始化地址
  204.            lcd12864_write_com(0x40+lie);//列的初始化地址
  205.    for(j=0;j<16;j++)        //这里要显示标准汉字,取模为16X16  
  206.    {
  207.               lcd12864_write_date(shuzhu[i*16+j]);
  208.    }
  209.   }
  210. }
  211. ///***********小数字显示函数************************/
  212. //  void shuzi2(uchar ye,uchar lie,uchar *shuzhu)        //定义任意页、任意列、任意数组(*表示指针类型)
  213. //{
  214. //  uchar i,j;
  215. //  for(i=0;i<2;i++)        //2页
  216. //  {
  217. //           lcd12864_write_com(0xb8+ye+i);//页的初始化地址
  218. //           lcd12864_write_com(0x40+lie);//列的初始化地址
  219. //   for(j=0;j<8;j++)        //数字取半模,这里要改为8
  220. //   {
  221. //                   lcd12864_write_date(shuzhu[i*8+j]);
  222. //   }
  223. //  }
  224. //}
  225. void lcd12864_dis() //汉字显示函数
  226. {
  227. /*******显示第一行***********/

  228. //        cs1=0;cs2=1;//打开左半屏 ,实物
  229. //       
  230. //        shuzi2(0,0,tab_banlie[10]);// Q
  231. //        shuzi2(0,8,tab_banlie[10]);// Q
  232. //        hanzi2(0,16,tab_biao[4]); //":"
  233. //        shuzi2(0,32,tab_banlie[1]);// 1
  234. //        shuzi2(0,40,tab_banlie[2]);// 2
  235. //        shuzi2(0,48,tab_banlie[3]);// 3
  236. //        shuzi2(0,56,tab_banlie[4]);// 4
  237. //       
  238. //        cs1=0;cs2=1;//打开右半屏 ,实物
  239. //       
  240. //        shuzi2(0,0,tab_banlie[5]);// 5
  241. //        shuzi2(0,8,tab_banlie[6]);// 6
  242. //        shuzi2(0,16,tab_banlie[7]);// 7
  243. //        shuzi2(0,24,tab_banlie[8]);// 8
  244. //        shuzi2(0,32,tab_banlie[9]);// 9
  245.        
  246. /*******显示第一行(标准汉字)***********/
  247.        
  248.         cs1=1;cs2=0;//打开左半屏 ,实物
  249.        
  250.         hanzi2(0,0,tab_biao[0]); //代
  251.         hanzi2(0,16,tab_biao[1]); //码
  252.         hanzi2(0,32,tab_biao[2]); //书
  253.         hanzi2(0,48,tab_biao[3]); //写
  254.        
  255.         cs1=0;cs2=1;//打开右半屏 ,实物
  256.         hanzi2(0,0,tab_biao[4]); //人
  257.         hanzi2(0,16,tab_biao[5]); //生
  258. //       

  259. /*******显示第二行(标准汉字)***********/

  260.         cs1=1;cs2=0;//打开左半屏 ,实物
  261.        
  262.         hanzi2(2,0,tab_biao[6]); //好
  263.         hanzi2(2,16,tab_biao[7]); //好
  264.         hanzi2(2,32,tab_biao[8]);        //学
  265.         hanzi2(2,48,tab_biao[9]); //习
  266. //       
  267.         cs1=0;cs2=1;//打开右半屏 ,实物
  268.         hanzi2(2,0,tab_biao[10]); //好
  269.         hanzi2(2,16,tab_biao[11]); //好
  270. //        hanzi2(4,32,tab_biao[14]);        //学
  271. //        hanzi2(4,48,tab_biao[15]); //习
  272. /*******显示第三行(标准汉字)***********/

  273.         cs1=1;cs2=0;//打开左半屏 ,实物
  274.        
  275.         hanzi2(4,0,tab_biao[12]); //好
  276.         hanzi2(4,16,tab_biao[13]); //好
  277.         hanzi2(4,32,tab_biao[14]);        //学
  278.         hanzi2(4,48,tab_biao[15]); //习
  279.        
  280.         cs1=0;cs2=1;//打开右半屏 ,实物
  281.         hanzi2(4,0,tab_biao[16]); //好
  282.         hanzi2(4,16,tab_biao[17]); //好
  283. //        hanzi2(8,32,tab_biao[6]);        //学
  284. //        hanzi2(8,48,tab_biao[7]); //习
  285. ///*******显示第四行(标准汉字)***********/
  286. //
  287.         cs1=1;cs2=0;//打开左半屏 ,实物
  288.        
  289.         hanzi2(6,0,tab_biao[18]); //好
  290.         hanzi2(6,16,tab_biao[19]); //好
  291.         hanzi2(6,32,tab_biao[20]);        //学
  292.         hanzi2(6,48,tab_biao[21]); //习
  293.        
  294.         cs1=0;cs2=1;//打开右半屏 ,实物
  295.         hanzi2(6,0,tab_biao[22]); //好
  296.         hanzi2(6,16,tab_biao[23]); //好
  297. //        hanzi2(2,32,tab_biao[6]);        //学
  298. //        hanzi2(2,48,tab_biao[7]); //习       
  299. //       
  300.        
  301.         /*******显示第三行(大汉字)***********/
  302.        
  303. //        cs1=1;cs2=0;//打开左半屏 ,实物
  304. //        hanzi(4,0,tab[4]); //天
  305. //        hanzi(4,32,tab[5]); //天
  306. //       
  307. //        cs1=0;cs2=1;//打开右半屏 ,实物
  308. //        hanzi(4,0,tab[6]); //向
  309. //        hanzi(4,32,tab[7]); //上

  310. }
  311. void main()
  312. {
  313.         lcd12864_init();
  314.         clear_lcd12864();
  315.        
  316.         while(1)
  317.         {
  318.                 lcd12864_dis();
  319.         }       
  320. }
复制代码

51hei.png

全部资料51hei下载地址:
18b20.zip (53.16 KB, 下载次数: 84)

评分

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

查看全部评分

回复

使用道具 举报

ID:795562 发表于 2020-10-2 23:25 | 显示全部楼层
楼主你这个程序,我想知道硬件接线怎么接的呢?12864的屏,接多少根线呢?
回复

使用道具 举报

ID:102939 发表于 2020-10-8 14:53 | 显示全部楼层
bfzy123 发表于 2020-10-2 23:25
楼主你这个程序,我想知道硬件接线怎么接的呢?12864的屏,接多少根线呢?

接线定义图
接线定义.png
回复

使用道具 举报

ID:102939 发表于 2020-10-8 14:53 | 显示全部楼层
bfzy123 发表于 2020-10-2 23:25
楼主你这个程序,我想知道硬件接线怎么接的呢?12864的屏,接多少根线呢?

20根线都接了
回复

使用道具 举报

ID:86450 发表于 2020-10-9 11:40 | 显示全部楼层
太好了  正好需要这个呢!!!!
回复

使用道具 举报

ID:102939 发表于 2020-10-12 08:33 | 显示全部楼层
jjwangxu2008 发表于 2020-10-9 11:40
太好了  正好需要这个呢!!!!

一起学习
回复

使用道具 举报

ID:850543 发表于 2020-12-1 09:08 | 显示全部楼层
可以给仿真图吗
回复

使用道具 举报

ID:848824 发表于 2021-1-14 21:28 | 显示全部楼层
屏怎么接啊,没图看不懂
回复

使用道具 举报

ID:230742 发表于 2021-3-9 21:03 | 显示全部楼层
感谢分享。留个记号。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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