找回密码
 立即注册

QQ登录

只需一步,快速开始

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

无字库LCD12864显示程序资料分享!

[复制链接]
跳转到指定楼层
楼主

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. #define Port P3 //LCD12864数据线

  6. sbit RS=P0^3; // 数据\指令 选择
  7. sbit RW=P0^2; // 读\写 选择
  8. sbit EN=P0^1; // 读\写使能
  9. sbit cs1=P0^5; // 片选1
  10. sbit cs2=P0^4; // 片选2
  11.         

  12. /********************************/
  13. /*  定义中文字库                */
  14. /********************************/

  15. uchar code Hzk[]={
  16. /*--  文字:  各  --*/
  17. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  18. 0x00,0x20,0x20,0x10,0x08,0x8F,0xB4,0x44,0x44,0xA4,0x9C,0x04,0x00,0x00,0x00,0x00,
  19. 0x02,0x02,0x02,0x01,0x7F,0x42,0x42,0x42,0x42,0x42,0x42,0x7F,0x01,0x03,0x01,0x00,

  20. /*--  文字:  位  --*/
  21. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  22. 0x00,0xC0,0x30,0xEC,0x03,0x2A,0xC8,0x09,0x0A,0x0E,0x08,0xE8,0x48,0x08,0x00,0x00,
  23. 0x01,0x00,0x00,0x7F,0x20,0x20,0x20,0x27,0x20,0x30,0x2E,0x21,0x20,0x20,0x20,0x00,

  24. /*--  文字:  单  --*/
  25. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  26. 0x00,0x00,0xF8,0x28,0x29,0x2E,0x2A,0xF8,0x28,0x2C,0x2B,0x2A,0xF8,0x00,0x00,0x00,
  27. 0x08,0x08,0x0B,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x09,0x0B,0x08,0x08,0x00,

  28. /*--  文字:  机  --*/
  29. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  30. 0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
  31. 0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00,

  32. /*--  文字:  爱  --*/
  33. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  34. 0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30,0x00,
  35. 0x40,0x20,0xA0,0x90,0x4C,0x47,0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40,0x00,

  36. /*--  文字:  好  --*/
  37. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  38. 0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,0x82,0x82,0xF2,0x8A,0x86,0x82,0x80,0x00,
  39. 0x80,0x43,0x22,0x14,0x0C,0x73,0x20,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,

  40. /*--  文字:  者  --*/
  41. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  42. 0x00,0x20,0x24,0x24,0x24,0x24,0xA4,0xBF,0x64,0x24,0x34,0x28,0x26,0x24,0x20,0x00,
  43. 0x04,0x04,0x04,0x02,0x02,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,

  44. /*--  文字:  你  --*/
  45. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  46. 0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08,0x00,
  47. 0x00,0x00,0x7F,0x00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08,0x00,

  48. /*--  文字:  们  --*/
  49. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  50. 0x80,0x40,0xF0,0x1C,0x03,0xF0,0x01,0x0E,0x04,0x00,0x04,0x04,0x04,0xFC,0x00,0x00,
  51. 0x00,0x00,0x7F,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x3F,0x00,0x00,

  52. /*--  文字:  辛  --*/
  53. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  54. 0x80,0x84,0x84,0x94,0xA4,0xC4,0x85,0x86,0x84,0xC4,0xA4,0x94,0x84,0x84,0x80,0x00,
  55. 0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,

  56. /*--  文字:  苦  --*/
  57. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  58. 0x40,0x44,0x44,0x44,0x44,0x5F,0x44,0xF4,0x44,0x44,0x5F,0x44,0x44,0x44,0x44,0x00,
  59. 0x00,0x00,0x00,0x7E,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,0x00,

  60. /*--  文字:  了  --*/
  61. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  62. 0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xF2,0x12,0x0A,0x0A,0x06,0x06,0x02,0x00,0x00,
  63. 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  64. /*--  文字:  希  --*/
  65. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  66. 0x20,0x20,0x30,0x30,0xA9,0x6A,0x3A,0x24,0xE4,0x2A,0x29,0x30,0x20,0x20,0x20,0x00,
  67. 0x08,0x04,0x02,0x01,0x3F,0x01,0x01,0x01,0xFF,0x01,0x21,0x61,0x3F,0x00,0x00,0x00,

  68. /*--  文字:  望  --*/
  69. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  70. 0x04,0x04,0xFC,0x85,0x46,0x24,0x04,0x80,0x7E,0x2A,0x2A,0xAA,0xAA,0xFE,0x00,0x00,
  71. 0x00,0x40,0x42,0x4A,0x4A,0x4A,0x4A,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x42,0x40,0x00,

  72. /*--  文字:  大  --*/
  73. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  74. 0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
  75. 0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,

  76. /*--  文字:  家  --*/
  77. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  78. 0x00,0x18,0x04,0x14,0x94,0x94,0xD5,0xB6,0x14,0x14,0x94,0x04,0x14,0x0C,0x04,0x00,
  79. 0x00,0x29,0x29,0x15,0x14,0x4A,0x89,0x44,0x3F,0x06,0x09,0x09,0x10,0x30,0x10,0x00,

  80. /*--  文字:  能  --*/
  81. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  82. 0x10,0xB8,0x97,0x92,0x90,0x94,0xB8,0x10,0x00,0x7F,0x48,0x48,0x44,0x74,0x20,0x00,
  83. 0x00,0xFF,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x3F,0x44,0x44,0x42,0x72,0x20,0x00,

  84. /*--  文字:  多  --*/
  85. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  86. 0x00,0x00,0x00,0x20,0x90,0x88,0x54,0x53,0xA2,0x22,0x12,0x0A,0x06,0x00,0x00,0x00,
  87. 0x00,0x81,0x89,0x89,0x44,0x44,0x42,0x25,0x29,0x11,0x11,0x09,0x05,0x03,0x01,0x00,

  88. /*--  文字:  多  --*/
  89. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  90. 0x00,0x00,0x00,0x20,0x90,0x88,0x54,0x53,0xA2,0x22,0x12,0x0A,0x06,0x00,0x00,0x00,
  91. 0x00,0x81,0x89,0x89,0x44,0x44,0x42,0x25,0x29,0x11,0x11,0x09,0x05,0x03,0x01,0x00,

  92. /*--  文字:  交  --*/
  93. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  94. 0x00,0x08,0x88,0x48,0x38,0x28,0x09,0x0E,0x0C,0x08,0x98,0x28,0x68,0x48,0x08,0x00,
  95. 0x00,0x80,0x80,0x40,0x41,0x22,0x14,0x18,0x0C,0x16,0x23,0x61,0xC0,0x40,0x00,0x00,

  96. /*--  文字:  流  --*/
  97. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  98. 0x10,0x60,0x01,0x86,0x60,0x04,0x44,0x64,0x55,0x4E,0x44,0x64,0xC4,0x04,0x04,0x00,
  99. 0x04,0x04,0xFC,0x03,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x3F,0x40,0x40,0x70,0x00,

  100. /*--  文字:  学  --*/
  101. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  102. 0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
  103. 0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,

  104. /*--  文字:  习  --*/
  105. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  106. 0x00,0x00,0x02,0x02,0x0A,0x12,0x22,0x62,0x02,0x82,0x82,0x42,0x02,0xFE,0x00,0x00,
  107. 0x00,0x00,0x04,0x0C,0x04,0x02,0x02,0x01,0x01,0x00,0x20,0x40,0x80,0x7F,0x00,0x00,

  108. /*--  文字:  24   --*/
  109. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  110. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  111. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  112. };


  113. /****************************************/
  114. /* 定义ASCII字库8列*16行                */
  115. /****************************************/
  116. uchar code Ezk[]={

  117. /*--  文字:  Q  --*/
  118. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  119. 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,

  120. /*--  文字:  Q  --*/
  121. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  122. 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,

  123. /*--  文字:  1  --*/
  124. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  125. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

  126. /*--  文字:  1  --*/
  127. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  128. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

  129. /*--  文字:  8  --*/
  130. /*--  新宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  131. 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

  132. /*--  文字:  1  --*/
  133. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  134. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

  135. /*--  文字:  8  --*/
  136. /*--  新宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  137. 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

  138. /*--  文字:  2  --*/
  139. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  140. 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

  141. /*--  文字:  6  --*/
  142. /*--  新宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  143. 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,

  144. /*--  文字:  4  --*/
  145. /*--  新宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  146. 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,

  147. /*--  文字:  1  --*/
  148. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  149. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

  150. /*--  文字:  4  --*/
  151. /*--  新宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  152. 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,


  153. /*--  文字:     --*/
  154. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  155. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  156. /*--  文字:     --*/
  157. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  158. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  159. /*--  文字:     --*/
  160. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  161. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  162. /*--  文字:     --*/
  163. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  164. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  165. /*--  文字:     --*/
  166. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  167. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  168. /*--  文字:     --*/
  169. /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  170. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  171. };

  172. /*状态检查,LCD是否忙*/
  173. void Checkbusy()               
  174. {
  175.    uchar dat;//状态信息(判断是否忙)
  176.    RS=0; // 数据\指令选择,D/I(RS)=“L” ,表示 DB7∽DB0 为显示指令数据
  177.    RW=1; //R/W=“H” ,E=“H”数据被读到DB7∽DB0
  178.    do{
  179.       Port=0x00;
  180.       EN=1;        //EN下降源
  181.           _nop_(); //一个时钟延时
  182.           dat=Port;
  183.       EN=0;
  184.           dat=(0x80 & dat);
  185.       }while(!(dat==0x00)); //仅当第7位为0时才可操作(判别busy信号)
  186. }


  187. /*写命令到LCD中*/
  188. Wcmd(uchar cmd)
  189. {
  190.    Checkbusy();//状态检查,LCD是否忙
  191.    RS=0;         //向LCD发送命令。RS=0写指令,RS=1写数据
  192.    RW=0;//R/W=“L” ,E=“H→L”数据被写到 IR 或 DR
  193.    Port=cmd;         //com :命令
  194.    EN=1;//EN下降源
  195.    _nop_();
  196.    _nop_();
  197.    EN=0;
  198. }

  199. /*设置页 0xb8是页的首地址*/
  200. void Setpage(uchar page)        
  201. {
  202.   page=0xb8|page; //1011 1xxx 0<=page<=7 设定页地址--X 0-7,8行为一页64/8=8,共8页
  203.   Wcmd(page);
  204. }

  205. /*设定显示开始行,0xc0是行的首地址*/
  206. void Setx(uchar x)            
  207. {
  208.   x=0xc0|x; //1100 0000
  209.   Wcmd(x); //设置从哪行开始:0--63,一般从0 行开始显示
  210. }

  211. /*设定列地址--Y 0-63 ,0x40是列的首地址*/
  212. void Sety(uchar y)        
  213. {
  214.   y=y&0x3f; //column最大值为64,越出 0=<column<=63
  215.   y= 0x40|y; //01xx xxxx
  216.   Wcmd(y);
  217. }


  218. /*开关显示,0x3f是开显示,0x3e是关显示*/
  219. void SetOnOff(uchar onoff)           
  220. {
  221.         onoff=0x3e|onoff; //0011 111x,onoff只能为0或者1
  222.      Wcmd(onoff);
  223. }

  224. /*写显示数据 */
  225. void Writedata(uchar dat)        
  226. {
  227.    Checkbusy();//状态检查,LCD是否忙
  228.    RS=1; //RS=0写指令,RS=1写数据
  229.    RW=0;////R/W=“L” ,E=“H→L”数据被写到 IR 或 DR
  230.    Port=dat;//dat:显示数据
  231.    EN=1; //EN下降源
  232.    _nop_();
  233.    _nop_();
  234.    EN=0;
  235. }



  236. /*选择屏幕screen: 0-全屏,1-左屏,2-右屏*/
  237. void SelectScreen(uchar screen)         
  238. {                                                  
  239.    switch(screen)
  240.    { case 0: cs1=0;//全屏
  241.              _nop_(); _nop_(); _nop_();
  242.              cs2=0;
  243.              _nop_(); _nop_(); _nop_();
  244.              break;
  245.      case 1: cs1=0;//左屏
  246.              _nop_(); _nop_(); _nop_();
  247.              cs2=1;
  248.              _nop_(); _nop_(); _nop_();
  249.              break;
  250.      case 2: cs1=1;//右屏
  251.              _nop_(); _nop_(); _nop_();
  252.              cs2=0;
  253.              _nop_(); _nop_(); _nop_();
  254.              break;
  255.    }
  256. }

  257. /*清屏screen: 0-全屏,1-左屏,2-右*/
  258. void ClearScreen(uchar screen)         
  259. {         
  260.      uchar i,j;
  261.      SelectScreen(screen);

  262.          for(i=0;i<8;i++)         //控制页数0-7,共8页
  263.          {
  264.                 Setpage(i);
  265.                         Sety(0);
  266.               for(j=0;j<64;j++)           //控制列数0-63,共64列
  267.                           {
  268.                   Writedata(0x00); //写点内容,列地址自动加1
  269.               }
  270.      }
  271.                                          
  272. }

  273. /*延时程序*/
  274. void        delay(uint z)               
  275. {
  276.         uint i,j;
  277.         for(i=0; i<z; i++)
  278.                 for(j = 0; j < 110; j++);
  279. }
  280. /*向上滚屏*//*这里用做滚动显示*/
  281. /*void        lcd_rol()                                       
  282. {
  283.         uint i;
  284.         for(i = 0; i < 64; i++)
  285.         {
  286.                 cs1=0; // 片选1
  287.                 SendCommandToLCD(0xc0+i);
  288.                 cs1=1;
  289.                
  290.             cs2=0;// 片选2
  291.                 SendCommandToLCD(0xc0+62-i);
  292.                 cs2=0; // 片选2
  293.                
  294.                 delay(6);
  295.         }
  296. }        
  297.   */
  298. /*初始化LCD*/
  299. void InitLCD()           
  300. {

  301.         Checkbusy();

  302.         SelectScreen(0);
  303.         SetOnOff(0); //关显示

  304.         SelectScreen(0);
  305.         SetOnOff(1); //开显示

  306.         SelectScreen(0);
  307.         ClearScreen(0);//清屏

  308.         Setx(0); //开始行:0

  309. }


  310. /*显示全角汉字*/
  311. void Display(uchar ss,uchar page,uchar y,uchar number)
  312. {
  313.         int i;        //选屏参数,pagr选页参数,column选列参数,number选第几汉字输出
  314.                
  315.         SelectScreen(ss);
  316.         y=y&0x3f;

  317.         Setpage(page);        //写上半页
  318.         Sety(y); //控制列
  319.         for(i=0;i<16;i++)  //控制16列的数据输出
  320.         {
  321.         Writedata(Hzk[i+32*number]); //i+32*number汉字的前16个数据输出
  322.         
  323.         }

  324.         Setpage(page+1);                 //写下半页
  325.         Sety(y);           //控制列
  326.     for(i=0;i<16;i++)          //控制16列的数据输出
  327.         {
  328.         Writedata(Hzk[i+32*number+16]);        //i+32*number+16汉字的后16个数据输出
  329.         }

  330. }


  331. /*显示半角汉字和数字和字母*/
  332. void Displayen(uchar ss,uchar page,uchar y,uchar number)
  333. {
  334.         uint i;//选屏参数,pagr选页参数,column选列参数,number选第几汉字输出
  335.                
  336.         SelectScreen(ss);
  337.         y=y&0x3f;

  338.         Setpage(page);        //写上半页
  339.         Sety(y);
  340.            for(i=0;i<8;i++)
  341.         {
  342.         Writedata(Ezk[i+16*number]);
  343.         }
  344.         
  345.         Setpage(page+1);        //写下半页
  346.         Sety(y);
  347.            for(i=0;i<8;i++)
  348.         {
  349.         Writedata(Ezk[i+16*number+8]);
  350.         }
  351. }  

  352. /*主函数*/
  353. void main()
  354. {  
  355.         uint i;
  356.            InitLCD();//初始12864

  357.            //ClearScreen(0);//清屏

  358.            Setx(0);//显示开始行

  359.            while(1)
  360.            {   
  361.         /* //        可以单个显示
  362.                   Display(2,0,0*16,0);//
  363.                 Display(2,0,1*16,1);//
  364.                 Display(2,0,2*16,2);//
  365.                 Display(2,0,3*16,3);//
  366.                 Display(1,0,4*16,4);//
  367.                 Display(1,0,5*16,5);//
  368.                 Display(1,0,6*16,6);//         */

  369.                 /* 可以多个显示,这里是4个一起显示*/
  370.                    for(i=0;i<4;i++)
  371.                    {
  372.                         Display(1,0,i*16,i);//Display(选屏参数(cs0,cs1),pagr选页参数,column选列参数,number选第几汉字输出)
  373.                         _nop_();
  374.                         Display(2,0,i*16,i+4);
  375.                          _nop_();
  376.                         Display(1,0+2,i*16,i+8);
  377.                         _nop_();
  378.                         Display(2,0+2,i*16,i+12);
  379.                         _nop_();

  380.                         Display(1,0+2+2,i*16,i+16);
  381.                         _nop_();
  382.                         Display(2,0+2+2,i*16,i+20);        
  383.     }                   

  384.         for(i=0;i<8;i++)
  385.    {
  386.                 Displayen(1,0+2+2+2,i*8,i);
  387.                 _nop_(); ;
  388.                 Displayen(2,0+2+2+2,i*8,i+8);
  389.     }                       
  390. }
  391. /*        while(1)
  392.         {
  393.                 lcd_rol();
  394.                 delay(1000);
  395.         } */
  396. }
复制代码

LCD12864显示文字.zip

83.98 KB, 下载次数: 65, 下载积分: 黑币 -5

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:288468 发表于 2018-4-3 01:50 | 只看该作者
可以仿真成功吗?
回复

使用道具 举报

板凳
ID:192893 发表于 2018-4-3 08:04 来自触屏版 | 只看该作者
感谢楼主分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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