找回密码
 立即注册

QQ登录

只需一步,快速开始

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

无字库12864液晶屏滚动显示单片机源程序与效果图

[复制链接]
跳转到指定楼层
楼主
无字库12864液晶屏滚动显示的效果图:


51单片机控制的无字库12864液晶屏滚动显示程序(纵向取模,取模软件zimo221)
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<absacc.h>  
  4. #define Lcd_Bus P0 //MCU P0
  5. #define Disp_On 0x3f//开显示
  6. #define Disp_Off 0x3e//关显示
  7. #define Col_Add 0x40//列地址
  8. #define Page_Add 0xb8//页地址
  9. #define Start_Line 0xc0// 起始页
  10. sbit cs1=P2^3; //Master chip enable
  11. sbit cs2=P2^4; //Slave chip enable
  12. sbit Enable=P2^2; // mode Enable single
  13. sbit Di=P2^0; //Data or Instrument Select
  14. sbit RW=P2^1; //Write or Read
  15. sbit Lcd_Rst=P2^5; //Lcm reset
  16. /***************************** 字模此字体下对应的点阵为:宽x高=16x16 *****************************/  
  17. unsigned char code Chinese_character[][32]= {
  18. /*--  文字:  曾  --*/
  19. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  20. 0x00,0x00,0x7C,0x44,0x55,0x66,0x44,0x7C,0x44,0x66,0x55,0x44,0x7C,0x00,0x00,0x00,
  21. 0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,

  22. /*--  文字:  经  --*/
  23. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  24. 0x20,0x30,0xAC,0x63,0x20,0x18,0x80,0x82,0x42,0x22,0x12,0x1A,0x26,0x42,0x80,0x00,
  25. 0x22,0x67,0x22,0x12,0x12,0x12,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x40,0x00,

  26. /*--  文字:  沧  --*/
  27. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  28. 0x20,0xC2,0x0C,0x00,0x40,0x20,0xD0,0x48,0x44,0x43,0x44,0xC8,0x10,0x20,0x40,0x00,
  29. 0x04,0x04,0x7E,0x01,0x00,0x00,0x3F,0x40,0x40,0x44,0x48,0x47,0x40,0x70,0x00,0x00,

  30. /*--  文字:  海  --*/
  31. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  32. 0x10,0x60,0x02,0x0C,0xC0,0x10,0x08,0xF7,0x14,0x54,0x94,0x14,0xF4,0x04,0x00,0x00,
  33. 0x04,0x04,0x7C,0x03,0x00,0x01,0x1D,0x13,0x11,0x55,0x99,0x51,0x3F,0x11,0x01,0x00,

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

  38. /*--  文字:  为  --*/
  39. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  40. 0x00,0x20,0x22,0x2C,0x20,0x20,0xE0,0x3F,0x20,0x20,0x20,0x20,0xE0,0x00,0x00,0x00,
  41. 0x80,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x01,0x46,0x80,0x40,0x3F,0x00,0x00,0x00,

  42. /*--  文字:  水  --*/
  43. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  44. 0x00,0x20,0x20,0x20,0xA0,0x60,0x00,0xFF,0x60,0x80,0x40,0x20,0x18,0x00,0x00,0x00,
  45. 0x20,0x10,0x08,0x06,0x01,0x40,0x80,0x7F,0x00,0x01,0x02,0x04,0x08,0x10,0x10,0x00,

  46. /*--  文字:  ,  --*/
  47. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  48. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  49. 0x00,0x00,0x58,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  50. /*--  文字:  除  --*/
  51. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  52. 0x00,0xFE,0x22,0x5A,0x86,0x20,0x10,0x28,0x24,0xE3,0x24,0x28,0x10,0x20,0x20,0x00,
  53. 0x00,0xFF,0x04,0x08,0x27,0x11,0x0D,0x41,0x81,0x7F,0x01,0x05,0x09,0x31,0x00,0x00,

  54. /*--  文字:  却  --*/
  55. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  56. 0x80,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x80,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
  57. 0x10,0x38,0x14,0x13,0x10,0x14,0x18,0x30,0x00,0xFF,0x00,0x08,0x10,0x0F,0x00,0x00,

  58. /*--  文字:  巫  --*/
  59. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  60. 0x00,0x04,0x04,0xE4,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xE4,0x04,0x04,0x00,0x00,
  61. 0x48,0x44,0x43,0x40,0x43,0x4C,0x40,0x7F,0x48,0x44,0x43,0x40,0x43,0x4C,0x40,0x00,

  62. /*--  文字:  山  --*/
  63. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  64. 0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,
  65. 0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,0x00,

  66. /*--  文字:  不  --*/
  67. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  68. 0x00,0x02,0x02,0x02,0x02,0x82,0x42,0xF2,0x0E,0x42,0x82,0x02,0x02,0x02,0x00,0x00,
  69. 0x10,0x08,0x04,0x02,0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x01,0x02,0x0C,0x00,0x00,

  70. /*--  文字:  是  --*/
  71. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  72. 0x00,0x00,0x00,0x7F,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x7F,0x00,0x00,0x00,0x00,
  73. 0x81,0x41,0x21,0x1D,0x21,0x41,0x81,0xFF,0x89,0x89,0x89,0x89,0x89,0x81,0x81,0x00,

  74. /*--  文字:  云  --*/
  75. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  76. 0x40,0x40,0x42,0x42,0x42,0x42,0xC2,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00,
  77. 0x00,0x20,0x70,0x28,0x24,0x23,0x20,0x20,0x20,0x24,0x28,0x30,0xE0,0x00,0x00,0x00,

  78. /*--  文字:  。  --*/
  79. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  80. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  81. 0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

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

  86. /*--  文字:  山  --*/
  87. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  88. 0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,
  89. 0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,0x00,

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

  94. /*--  文字:  路  --*/
  95. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  96. 0x00,0x3E,0x22,0xE2,0x22,0x3E,0x00,0x10,0x88,0x57,0x24,0x54,0x8C,0x00,0x00,0x00,
  97. 0x40,0x7E,0x40,0x3F,0x22,0x22,0x00,0x01,0xFE,0x42,0x42,0x42,0xFE,0x01,0x01,0x00,

  98. /*--  文字:  勤  --*/
  99. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  100. 0x04,0xC4,0x5F,0x54,0xF4,0x54,0x5F,0xC4,0x14,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,
  101. 0x80,0x95,0x95,0x95,0x7F,0x55,0xD5,0x55,0x20,0x18,0x47,0x80,0x40,0x3F,0x00,0x00,

  102. /*--  文字:  为  --*/
  103. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  104. 0x00,0x20,0x22,0x2C,0x20,0x20,0xE0,0x3F,0x20,0x20,0x20,0x20,0xE0,0x00,0x00,0x00,
  105. 0x80,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x01,0x46,0x80,0x40,0x3F,0x00,0x00,0x00,

  106. /*--  文字:  径  --*/
  107. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  108. 0x00,0x10,0x88,0xC4,0x33,0x80,0x82,0x42,0x22,0x12,0x1A,0x26,0x22,0x40,0x80,0x00,
  109. 0x02,0x01,0x00,0xFF,0x00,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0x40,0x00,

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

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

  118. /*--  文字:  海  --*/
  119. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  120. 0x10,0x60,0x02,0x0C,0xC0,0x10,0x08,0xF7,0x14,0x54,0x94,0x14,0xF4,0x04,0x00,0x00,
  121. 0x04,0x04,0x7C,0x03,0x00,0x01,0x1D,0x13,0x11,0x55,0x99,0x51,0x3F,0x11,0x01,0x00,

  122. /*--  文字:  无  --*/
  123. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  124. 0x00,0x40,0x42,0x42,0x42,0xC2,0x7E,0x42,0xC2,0x42,0x42,0x42,0x40,0x40,0x00,0x00,
  125. 0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x70,0x00,0x00,

  126. /*--  文字:  涯  --*/
  127. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  128. 0x10,0x60,0x02,0x8C,0x00,0xFE,0x82,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x82,0x00,
  129. 0x04,0x04,0x7E,0x81,0x60,0x1F,0x40,0x48,0x48,0x48,0x7E,0x48,0x48,0x48,0x40,0x00,

  130. /*--  文字:  苦  --*/
  131. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  132. 0x84,0x84,0x84,0x84,0x9F,0x84,0x84,0xF4,0x84,0x84,0x9F,0x84,0x84,0x84,0x84,0x00,
  133. 0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x47,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,0x00,

  134. /*--  文字:  作  --*/
  135. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  136. 0x00,0x80,0x60,0xF8,0x07,0x40,0x30,0x0F,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0x00,
  137. 0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08,0x08,0x08,0x00,0x00,

  138. /*--  文字:  舟  --*/
  139. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  140. 0x80,0x80,0x80,0xFC,0x84,0x86,0x95,0xE4,0x84,0x84,0x84,0xFC,0x80,0x80,0x80,0x00,
  141. 0x80,0x40,0x30,0x0F,0x00,0x00,0x02,0x0C,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,

  142. /*--  文字:  。  --*/
  143. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  144. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  145. 0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
  146. /***********************延时子程序***********************/
  147. void delay(unsigned int k)
  148. {  
  149. unsigned int i;
  150. unsigned int j;
  151. for(i=0;i<k;i++)
  152. for(j=0;j<20;j++);
  153. }  
  154. /***********************写命令左***********************/
  155. void write_cmd_1(unsigned char command)
  156. {  
  157. cs1=1;cs2=0;
  158. Di=0;
  159. RW=0;  
  160. Lcd_Bus=command;
  161. delay(0);
  162. Enable=1;
  163. delay(0);
  164. Enable=0;
  165. }  
  166. /***********************写命令右***********************/
  167. void write_cmd_2(unsigned char command)
  168. {  
  169. cs1=0;cs2=1;
  170. Di=0;
  171. RW=0;  
  172. Lcd_Bus=command;
  173. delay(0);
  174. Enable=1;
  175. delay(0);
  176. Enable=0;
  177. }  
  178. /***********************写数据左***********************/
  179. void write_data_1(unsigned char dis_data)
  180. {  
  181. cs1=1;cs2=0;  
  182. Di=1;
  183. RW=0;  
  184. Lcd_Bus=dis_data;
  185. delay(0);
  186. Enable=1;
  187. delay(0);
  188. Enable=0;
  189. }  
  190. /***********************写数据右***********************/
  191. void write_data_2(unsigned char dis_data)
  192. {  
  193. cs1=0;cs2=1;
  194. Di=1;
  195. RW=0;  
  196. Lcd_Bus=dis_data;
  197. delay(0);
  198. Enable=1;
  199. delay(0);
  200. Enable=0;
  201. }  
  202. /***********************清内存左***********************/
  203. void clear_1(void)
  204. {  
  205. unsigned char j,k;
  206. cs1=1;cs2=0;  
  207. write_cmd_1(Page_Add+0);
  208. write_cmd_1(Col_Add+0);
  209. for(k=0;k<8;k++){  
  210. write_cmd_1(Page_Add+k);
  211. for(j=0;j<64;j++)write_data_1(0x00);
  212. }
  213. }  
  214. /***********************清内存右***********************/
  215. void clear_2(void)
  216. {  
  217. unsigned char j,k;
  218. cs1=0;cs2=1;  
  219. write_cmd_2(Page_Add+0);
  220. write_cmd_2(Col_Add+0);
  221. for(k=0;k<8;k++){  
  222. write_cmd_2(Page_Add+k);
  223. for(j=0;j<64;j++)write_data_2(0x00);
  224. }  
  225. }  
  226. /***********************显示汉字16*16左************************/  
  227. void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n)
  228. {  
  229. unsigned char i=0;
  230. unsigned char j=0;
  231. cs1=1;cs2=0;
  232. for(i=0;i<2;i++)
  233. {
  234. write_cmd_1(Page_Add+pag+i);
  235. write_cmd_1(Col_Add+col);
  236. for(j=0;j<16;j++)  
  237. write_data_1(Chinese_character[n][16*i+j]);
  238. }
  239. }  
  240. /***********************显示汉字16*16右**********************/  
  241. void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n)
  242. {  
  243. unsigned char i=0;
  244. unsigned char j=0;
  245. cs1=0;cs2=1;
  246. for(i=0;i<2;i++)
  247. {
  248. write_cmd_2(Page_Add+pag+i);
  249. write_cmd_2(Col_Add+col);
  250. for(j=0;j<16;j++)  
  251. write_data_2(Chinese_character[n][16*i+j]);
  252. }
  253. }  


  254. /***********************液晶屏初始化***********************/
  255. void init_lcd()
  256. {  
  257. Lcd_Rst=0;
  258. delay(100);
  259. Lcd_Rst=1;
  260. delay(100);  
  261. write_cmd_1(Disp_Off);     
  262. write_cmd_2(Disp_Off);
  263. write_cmd_1(Page_Add+0);   
  264. write_cmd_2(Page_Add+0);
  265. write_cmd_1(Start_Line+0);
  266. write_cmd_2(Start_Line+0);
  267. write_cmd_1(Col_Add+0);   
  268. write_cmd_2(Col_Add+0);
  269. write_cmd_1(Disp_On);      
  270. write_cmd_2(Disp_On);
  271. }  
  272. /***********************LCD显示子程序***********************/
  273. void display(void)
  274. {   
  275. unsigned char i;  
  276. for(i=Start_Line;i<0xff;i++)
  277. {
  278. Chinese_disp_1(0,0, 0);
  279. Chinese_disp_1(0,16,1);
  280. Chinese_disp_1(0,32,2);
  281. Chinese_disp_1(0,48,3);
  282. Chinese_disp_2(0,0, 4);
  283. Chinese_disp_2(0,16,5);
  284. Chinese_disp_2(0,32,6);
  285. Chinese_disp_2(0,48,7);

  286. Chinese_disp_2(2,32,14);
  287. Chinese_disp_2(2,48,15);

  288. Chinese_disp_1(2,0,8);
  289. Chinese_disp_1(2,16,9);   
  290. Chinese_disp_1(2,32,10);
  291. Chinese_disp_1(2,48,11);  
  292. Chinese_disp_2(2,0,12);
  293. Chinese_disp_2(2,16,13);


  294. Chinese_disp_1(4,0,16);
  295. Chinese_disp_1(4,16,17);
  296. Chinese_disp_1(4,32,18);
  297. Chinese_disp_1(4,48,19);
  298. Chinese_disp_2(4,0,20);
  299. Chinese_disp_2(4,16,21);
  300. Chinese_disp_2(4,32,22);
  301. Chinese_disp_2(4,48,23);

  302. Chinese_disp_1(6,0,24);
  303. Chinese_disp_1(6,16,25);
  304. Chinese_disp_1(6,32,26);
  305. Chinese_disp_1(6,48,27);
  306. Chinese_disp_2(6,0,28);
  307. Chinese_disp_2(6,16,29);
  308. Chinese_disp_2(6,32,30);
  309. Chinese_disp_2(6,48,31);

  310. write_cmd_1(i);
  311. write_cmd_2(i);  
  312. delay(3000);// 调整滚动速度
  313. }  //delay(60000);
  314. }  
  315. /***********主程序************/
  316. void main(void)
  317. {
  318. init_lcd();
  319. clear_1();
  320. clear_2();
  321. while(1)
  322. {
  323. display();
  324. }
  325. }
复制代码

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:382315 发表于 2018-8-2 21:01 | 只看该作者
人才,这字库还是调用起来比较方便,纯手工活吃不消
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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