找回密码
 立即注册

QQ登录

只需一步,快速开始

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

无字库12864单片机驱动程序 UC1701X或兼容的IC,比如ST7565R

  [复制链接]
跳转到指定楼层
楼主
51单片机驱动lcd12864,无字库串口屏


单片机源程序如下:
  1. /*  液晶演示程序
  2.         液晶模块型号:JLX12864G-086-PN(或12864G-0088),串行接口!
  3.            驱动IC是:UC1701X或兼容的IC,比如ST7565R
  4.            编写:叶先生,11月5日,13年
  5.            版权所有:晶联讯
  6. */
  7. #include <reg52.H>
  8. #include <intrins.h>
  9. #include<string.h>

  10. //======================================================
  11. sbit sclk=P2^3;  //接口定义:lcd_sclk就是LCD的sclk
  12. sbit sid=P2^4;   //接口定义:lcd_sid就是LCD的sid
  13. sbit rs=P2^5;    //接口定义:lcd_rs就是LCD的rs
  14. sbit reset=P2^6; //接口定义:lcd_reset就是LCD的reset
  15. sbit cs1=P2^7;   //接口定义:lcd_cs1就是LCD的cs1

  16. sbit key=P2^0;                //定义一个按键


  17. #define uchar unsigned char
  18. #define uint unsigned int
  19. #define ulong unsigned long



  20. char code huang[]={
  21. /*--  文字:  黄  --*/
  22. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  23. 0x10,0x10,0x12,0xD2,0x52,0x5F,0x52,0xF2,0x52,0x5F,0x52,0xD2,0x12,0x10,0x10,0x00,
  24. 0x00,0x00,0x00,0x9F,0x52,0x32,0x12,0x1F,0x12,0x32,0x52,0x9F,0x00,0x00,0x00,0x00};

  25. char code he[]={
  26. /*--  文字:  河  --*/
  27. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  28. 0x10,0x60,0x02,0x8C,0x00,0x04,0xE4,0x24,0x24,0xE4,0x04,0x04,0xFC,0x04,0x04,0x00,
  29. 0x04,0x04,0x7E,0x01,0x00,0x00,0x0F,0x04,0x04,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00};

  30. char code yuan[]={
  31. /*--  文字:  远  --*/
  32. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  33. 0x40,0x40,0x42,0xCC,0x00,0x20,0x22,0xE2,0x22,0x22,0xE2,0x22,0x22,0x20,0x00,0x00,
  34. 0x00,0x80,0x40,0x3F,0x40,0xA0,0x98,0x87,0x80,0x80,0x9F,0xA0,0xA0,0xBC,0x80,0x00};

  35. char code shang[]={
  36. /*--  文字:  上  --*/
  37. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  38. 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
  39. 0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00};

  40. char code bai[]={
  41. /*--  文字:  白  --*/
  42. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  43. 0x00,0x00,0xF8,0x08,0x08,0x0C,0x0A,0x09,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,
  44. 0x00,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00,0x00};

  45. char code yun[]={
  46. /*--  文字:  云  --*/
  47. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  48. 0x40,0x40,0x42,0x42,0x42,0x42,0xC2,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00,
  49. 0x00,0x20,0x70,0x28,0x24,0x23,0x20,0x20,0x20,0x24,0x28,0x30,0xE0,0x00,0x00,0x00};

  50. char code jian[]={
  51. /*--  文字:  间  --*/
  52. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  53. 0x00,0xF8,0x01,0x06,0x00,0xF0,0x12,0x12,0x12,0xF2,0x02,0x02,0x02,0xFE,0x00,0x00,
  54. 0x00,0xFF,0x00,0x00,0x00,0x1F,0x11,0x11,0x11,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00};

  55. char code dou[]={
  56. /*--  文字:  ,  --*/
  57. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  58. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  59. 0x00,0x00,0x58,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  60. char code yi[]={
  61. /*--  文字:  一  --*/
  62. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  63. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
  64. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  65. char code pian[]={
  66. /*--  文字:  片  --*/
  67. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  68. 0x00,0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,
  69. 0x00,0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00};

  70. char code gu[]={
  71. /*--  文字:  孤  --*/
  72. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  73. 0x02,0x02,0xF2,0x8A,0x46,0x00,0xFC,0x04,0xFC,0x04,0x02,0xFE,0x03,0x02,0x00,0x00,
  74. 0x42,0x82,0x7F,0x00,0x80,0x60,0x1F,0x00,0x7F,0x28,0x10,0x61,0x0E,0x30,0x40,0x00};

  75. char code cheng[]={
  76. /*--  文字:  城  --*/
  77. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  78. 0x20,0x20,0xFF,0x20,0x20,0xF8,0x88,0x88,0x88,0x08,0xFF,0x08,0x09,0xCA,0x08,0x00,
  79. 0x10,0x30,0x1F,0x88,0x68,0x1F,0x10,0x20,0x9F,0x40,0x27,0x18,0x26,0x41,0xF0,0x00};

  80. char code wan[]={
  81. /*--  文字:  万  --*/
  82. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  83. 0x04,0x04,0x04,0x04,0x04,0xFC,0x44,0x44,0x44,0x44,0x44,0xC4,0x04,0x04,0x04,0x00,
  84. 0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00};

  85. char code ren[]={
  86. /*--  文字:  仞  --*/
  87. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  88. 0x00,0x80,0x60,0xF8,0x07,0x00,0xE4,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
  89. 0x01,0x00,0x00,0xFF,0x80,0x41,0x20,0x18,0x07,0x00,0x40,0x80,0x40,0x3F,0x00,0x00};

  90. char code shan[]={
  91. /*--  文字:  山  --*/
  92. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  93. 0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,
  94. 0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,0x00};



  95. char code qiang[]={
  96. /*--  文字:  羌  --*/
  97. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  98. 0x00,0x08,0x48,0x48,0x49,0x4E,0xC8,0x78,0x48,0x4C,0x4B,0x48,0x48,0x08,0x00,0x00,
  99. 0x82,0x82,0x42,0x22,0x12,0x0E,0x03,0x02,0x7E,0x82,0x82,0x82,0x82,0x82,0xE2,0x00};

  100. char code di[]={
  101. /*--  文字:  笛  --*/
  102. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  103. 0x20,0x10,0xCC,0x47,0x4C,0x54,0x44,0xF4,0x48,0x47,0x44,0x4C,0xD4,0x04,0x04,0x00,
  104. 0x00,0x00,0xFF,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00};

  105. char code he1[]={
  106. /*--  文字:  何  --*/
  107. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  108. 0x00,0x80,0x60,0xF8,0x07,0x04,0xE4,0x24,0x24,0xE4,0x04,0x04,0xFC,0x04,0x04,0x00,
  109. 0x01,0x00,0x00,0xFF,0x00,0x00,0x0F,0x04,0x04,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00};

  110. char code xu[]={
  111. /*--  文字:  须  --*/
  112. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  113. 0x20,0x10,0x08,0x84,0x63,0x00,0x00,0xF2,0x12,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
  114. 0x84,0x42,0x21,0x10,0x08,0x06,0x80,0x4F,0x20,0x18,0x07,0x10,0x20,0x4F,0x80,0x00};

  115. char code yuan1[]={
  116. /*--  文字:  怨  --*/
  117. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  118. 0x10,0x08,0x14,0xA7,0x44,0x24,0x1C,0x00,0xFE,0x02,0x12,0x22,0x1E,0xC0,0x00,0x00,
  119. 0x42,0x32,0x01,0x00,0x38,0x40,0x40,0x44,0x58,0x41,0x41,0x71,0x01,0x09,0x30,0x00};

  120. char code yang[]={
  121. /*--  文字:  杨  --*/
  122. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  123. 0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0x42,0xE2,0x52,0x4A,0xC6,0x42,0x40,0xC0,0x00,
  124. 0x04,0x03,0x00,0xFF,0x00,0x23,0x10,0x8C,0x43,0x20,0x18,0x47,0x80,0x40,0x3F,0x00};

  125. char code liu[]={
  126. /*--  文字:  柳  --*/
  127. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  128. 0x10,0x10,0xD0,0xFF,0x90,0x10,0xFC,0x04,0x02,0xF8,0x00,0xFC,0x04,0x04,0xFC,0x00,
  129. 0x04,0x03,0x00,0xFF,0x00,0x01,0x8F,0x44,0x32,0x0F,0x00,0xFF,0x04,0x08,0x07,0x00};


  130. char code chun[]={
  131. /*--  文字:  春  --*/
  132. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  133. 0x40,0x44,0x54,0x54,0xD4,0x54,0x74,0x5F,0x54,0x54,0xD4,0x54,0x54,0x44,0x40,0x00,
  134. 0x04,0x04,0x02,0x01,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x01,0x02,0x04,0x04,0x00};

  135. char code feng[]={
  136. /*--  文字:  风  --*/
  137. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  138. 0x00,0x00,0xFE,0x02,0x12,0x22,0xC2,0x02,0xC2,0x32,0x02,0xFE,0x00,0x00,0x00,0x00,
  139. 0x80,0x60,0x1F,0x00,0x20,0x10,0x0C,0x03,0x0C,0x30,0x00,0x0F,0x30,0x40,0xF8,0x00};

  140. char code bu[]={
  141. /*--  文字:  不  --*/
  142. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  143. 0x00,0x02,0x02,0x02,0x02,0x82,0x42,0xF2,0x0E,0x42,0x82,0x02,0x02,0x02,0x00,0x00,
  144. 0x10,0x08,0x04,0x02,0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x01,0x02,0x0C,0x00,0x00};

  145. char code du[]={
  146. /*--  文字:  度  --*/
  147. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  148. 0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
  149. 0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00};

  150. char code yu[]={
  151. /*--  文字:  玉  --*/
  152. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  153. 0x00,0x02,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,0x00,
  154. 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x44,0x58,0x40,0x40,0x40,0x00};

  155. char code men[]={
  156. /*--  文字:  门  --*/
  157. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  158. 0x00,0xF8,0x01,0x06,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,
  159. 0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00};

  160. char code guan[]={
  161. /*--  文字:  关  --*/
  162. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  163. 0x00,0x00,0x10,0x11,0x16,0x10,0x10,0xF0,0x10,0x10,0x14,0x13,0x10,0x00,0x00,0x00,
  164. 0x81,0x81,0x41,0x41,0x21,0x11,0x0D,0x03,0x0D,0x11,0x21,0x41,0x41,0x81,0x81,0x00};

  165. char code ju[]={
  166. /*--  文字:  。  --*/
  167. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  168. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  169. 0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


  170. /*延时*/
  171. void delay(int i)               
  172. {
  173.         int j,k;
  174.         for(j=0;j<i;j++)
  175.                 for(k=0;k<110;k++);
  176. }

  177. /*
  178. //短延时
  179. void delay_us(int i)               
  180. {
  181.         int j,k;
  182.         for(j=0;j<i;j++)
  183.                 for(k=0;k<1;k++);
  184. }
  185. */

  186. void waitkey()
  187. {
  188.         repeat:        if(key==1)        goto repeat;
  189.                         else                delay(200);                        
  190. }

  191. /*写指令到LCD模块*/
  192. void transfer_command(int data1)   
  193. {
  194.         char i;
  195.         cs1=0;
  196.         rs=0;
  197.         for(i=0;i<8;i++)
  198.         {
  199.                 sclk=0;
  200.                 if(data1&0x80) sid=1;
  201.                 else sid=0;
  202.                 sclk=1;
  203.                 data1<<=1;
  204.         }
  205.         cs1=1;
  206. }

  207. /*写数据到LCD模块*/
  208. void transfer_data(int data1)
  209. {
  210.         char i;
  211.         cs1=0;
  212.         rs=1;
  213.         for(i=0;i<8;i++)
  214.         {
  215.                 sclk=0;
  216.                 if(data1&0x80) sid=1;
  217.                 else sid=0;
  218.                 sclk=1;
  219.                 data1<<=1;
  220.         }
  221.         cs1=1;
  222. }


  223. /*LCD模块初始化*/
  224. void initial_lcd()
  225. {
  226.         cs1=0;
  227.           reset=0;        /*低电平复位*/
  228.           delay(500);
  229.           reset=1;                    /*复位完毕*/
  230.           delay(200);        
  231.         transfer_command(0xe2);         /*软复位*/
  232.         delay(50);
  233.         transfer_command(0x2c);  /*升压步聚1*/
  234.         delay(50);        
  235.         transfer_command(0x2e);  /*升压步聚2*/
  236.         delay(50);
  237.         transfer_command(0x2f);  /*升压步聚3*/
  238.         delay(50);
  239.         transfer_command(0x23);  /*粗调对比度,可设置范围0x20~0x27*/
  240.         transfer_command(0x81);  /*微调对比度*/
  241.         transfer_command(0x28);  /*0x28,微调对比度的值,可设置范围0x00~0x3f*/
  242.         transfer_command(0xa2);  /*1/9偏压比(bias)*/
  243.         transfer_command(0xc8);  /*行扫描顺序:从上到下*/
  244.         transfer_command(0xa0);  /*列扫描顺序:从左到右*/
  245.         transfer_command(0x40);  /*起始行:第一行开始*/
  246.         transfer_command(0xaf);  /*开显示*/
  247. }


  248. void lcd_address(uchar page,uchar column)
  249. {
  250.         column=column-1;                                                          //我们平常所说的第1列,在LCD驱动IC里是第0列。所以在这里减去1.
  251.         page=page-1;
  252.         transfer_command(0xb0+page);                           //设置页地址。每页是8行。一个画面的64行被分成8个页。我们平常所说的第1页,在LCD驱动IC里是第0页,所以在这里减去1*/
  253.         transfer_command(((column>>4)&0x0f)+0x10);        //设置列地址的高4位
  254.         transfer_command(column&0x0f);                                //设置列地址的低4位
  255. }

  256. /*全屏清屏*/
  257. void clear_screen()
  258. {
  259.         uchar i,j;
  260.          for(i=0;i<9;i++)
  261.         {
  262.                 lcd_address(1+i,1);
  263.                 for(j=0;j<132;j++)
  264.                 {
  265.                         transfer_data(0x00);
  266.                 }
  267.         }
  268. }




  269. //显示16x16点阵图像、汉字。
  270. //括号里的参数分别是(页,列,闪烁与否,反显与否,数据指针)
  271. void disp_blink_16x16(uchar page,uchar column,uchar blink,uchar reverse,uchar *dp)
  272. {
  273.         uchar i,j,k,*data_temp;
  274.         if(blink==0)
  275.         {
  276.                 data_temp=dp;
  277.                 for(j=0;j<2;j++)
  278.                 {
  279.                         lcd_address(page+j,column);
  280.                         for (i=0;i<16;i++)
  281.                         {        
  282.                                 if(reverse==1)
  283.                                 {
  284.                                         transfer_data(~*data_temp);        /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  285.                                 }
  286.                                 else
  287.                                 {
  288.                                         transfer_data(*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  289.                                 }
  290.                                 data_temp++;
  291.                         }
  292.                 }
  293.         }
  294.         else
  295.         {
  296.                 for(k=0;k<10;k++)
  297.                 {
  298.                         data_temp=dp;
  299.                         for(j=0;j<2;j++)
  300.                         {
  301.                                 lcd_address(page+j,column);
  302.                                 for (i=0;i<16;i++)
  303.                                 {        
  304.                                         transfer_data(~*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  305.                                         data_temp++;
  306.                                 }
  307.                         }
  308.                         delay(2000);
  309.                         data_temp=dp;
  310.                         for(j=0;j<2;j++)
  311.                         {
  312.                                 lcd_address(page+j,column);
  313.                                 for (i=0;i<16;i++)
  314.                                 {        
  315.                                         transfer_data(*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  316.                                         data_temp++;
  317.                                 }
  318.                         }
  319.                         delay(2000);

  320.                    }
  321.         }
  322. }

  323. //显示16x16点阵图像、汉字。
  324. //括号里的参数分别是(页,列,带下划线闪烁与否,反显与否,数据指针)
  325. void disp_underline_16x16(uchar page,uchar column,uchar under,uchar reverse,uchar *dp)
  326. {
  327.         uchar i,j,k,*data_temp,data1;
  328.         if(under==0)
  329.         {
  330.                 data_temp=dp;
  331.                 for(j=0;j<2;j++)
  332.                 {
  333.                         lcd_address(page+j,column);
  334.                         for (i=0;i<16;i++)
  335.                         {        
  336.                                 if(reverse==1)
  337.                                 {
  338.                                         transfer_data(~*data_temp);        /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  339.                                 }
  340.                                 else
  341.                                 {
  342.                                         transfer_data(*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  343.                                 }
  344.                                 data_temp++;
  345.                         }
  346.                 }
  347.         }

  348.         else
  349.         {
  350.                 for(k=0;k<10;k++)
  351.                 {
  352.                         data_temp=dp;
  353.         
  354.                         lcd_address(page,column);
  355.                         for (i=0;i<16;i++)
  356.                         {        
  357.                                 transfer_data(*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  358.                                 data_temp++;
  359.                         }
  360.                         lcd_address(page+1,column);
  361.                         for (i=0;i<16;i++)
  362.                         {        
  363.                                 data1=*data_temp|0x80;
  364.                                 transfer_data(data1);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  365.                                 data_temp++;
  366.                         }
  367.                         delay(2000);


  368.                         data_temp=dp;
  369.                         for(j=0;j<2;j++)
  370.                         {
  371.                                 lcd_address(page+j,column);
  372.                                 for (i=0;i<16;i++)
  373.                                 {        
  374.                                         transfer_data(*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  375.                                         data_temp++;
  376.                                 }
  377.                         }
  378.                         delay(2000);

  379.                    }
  380.         }
  381. }
  382. //显示16x16点阵图像、汉字。
  383. //括号里的参数分别是(页,列,带右竖线光标闪烁与否,反显与否,数据指针)
  384. void disp_cursor_16x16(uchar page,uchar column,uchar cursor,uchar reverse,uchar *dp)
  385. {
  386.         uchar i,j,k,*data_temp;
  387.         if(cursor==0)
  388.         {
  389.                 data_temp=dp;
  390.                 for(j=0;j<2;j++)
  391.                 {
  392.                         lcd_address(page+j,column);
  393.                         for (i=0;i<16;i++)
  394.                         {        
  395.                                 if(reverse==1)
  396.                                 {
  397.                                         transfer_data(~*data_temp);        /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  398.                                 }
  399.                                 else
  400.                                 {
  401.                                         transfer_data(*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  402.                                 }
  403.                                 data_temp++;
  404.                         }
  405.                 }
  406.         }

  407.         else
  408.         {
  409.                 for(k=0;k<10;k++)
  410.                 {
  411.                         data_temp=dp;
  412.         
  413.                         lcd_address(page,column);
  414.                         for (i=0;i<15;i++)
  415.                         {        
  416.                                 transfer_data(*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  417.                                 data_temp++;
  418.                         }
  419.                         transfer_data(0xff);
  420.                         data_temp++;
  421.                         lcd_address(page+1,column);
  422.                         for (i=0;i<15;i++)
  423.                         {        
  424.                                 transfer_data(*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  425.                                 data_temp++;
  426.                         }
  427.                         transfer_data(0xff);
  428.                         data_temp++;
  429.                         delay(2000);


  430.                         data_temp=dp;
  431.                         for(j=0;j<2;j++)
  432.                         {
  433.                                 lcd_address(page+j,column);
  434.                                 for (i=0;i<16;i++)
  435.                                 {        
  436.                                         transfer_data(*data_temp);                /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
  437.                                         data_temp++;
  438.                                 }
  439.                         }
  440.                         delay(2000);

  441.                    }
  442.         }
  443. }



  444. //主函数:
  445. void main(void)
  446. {
  447.         initial_lcd();        //初始化LCD
  448.                 clear_screen();                                                    //清屏
  449.         while(1)
  450.         {                        
  451.                 disp_blink_16x16(1, 1,0,0,huang);         //显示单个汉字"状". 括号里的参数分别是(页,列,闪烁与否,反显与否,数据指针)
  452.                 disp_blink_16x16(1,17,0,0,he);                //显示单个汉字"态",不闪烁,反显
  453.                 disp_blink_16x16(1,33,0,0,yuan);                 //显示单个汉字"使",闪烁,不反显
  454.                 disp_blink_16x16(1,49,0,0,shang);                //显示单个汉字"用",闪烁,反显(当有闪烁时,反显不起作用)
  455.                 disp_blink_16x16(1,65,0,0,bai);         //显示单个汉字"状". 括号里的参数分别是(页,列,闪烁与否,反显与否,数据指针)
  456.                 disp_blink_16x16(1,81,0,0,yun);                //显示单个汉字"态",不闪烁,反显
  457.                 disp_blink_16x16(1,97,0,0,jian);                 //显示单个汉字"使",闪烁,不反显
  458.                 disp_blink_16x16(1,113,0,0,dou);                //显示单个汉字"用",闪烁,反显(当有闪烁时,反显不起作用)

  459.                 disp_blink_16x16(3, 1,0,0,yi);                         //显示单个汉字"状". 括号里的参数分别是(页,列,闪烁与否,反显与否,数据指针)
  460.                 disp_blink_16x16(3,17,0,0,pian);                //显示单个汉字"态",不闪烁,反显
  461.                 disp_blink_16x16(3,33,0,0,gu);                         //显示单个汉字"使",闪烁,不反显
  462.                 disp_blink_16x16(3,49,0,0,cheng);                //显示单个汉字"用",闪烁,反显(当有闪烁时,反显不起作用)
  463.                 disp_blink_16x16(3,65,0,0,wan);                 //显示单个汉字"状". 括号里的参数分别是(页,列,闪烁与否,反显与否,数据指针)
  464.                 disp_blink_16x16(3,81,0,0,ren);                        //显示单个汉字"态",不闪烁,反显
  465.                 disp_blink_16x16(3,97,0,0,shan);                 //显示单个汉字"使",闪烁,不反显
  466.                 disp_blink_16x16(3,113,0,0,dou);                //显示单个汉字"用",闪烁,反显(当有闪烁时,反显不起作用)

  467.                 disp_blink_16x16(5, 1,0,0,qiang);         //显示单个汉字"状". 括号里的参数分别是(页,列,闪烁与否,反显与否,数据指针)
  468.                 disp_blink_16x16(5,17,0,0,di);                //显示单个汉字"态",不闪烁,反显
  469.                 disp_blink_16x16(5,33,0,0,he1);                 //显示单个汉字"使",闪烁,不反显
  470.                 disp_blink_16x16(5,49,0,0,xu);                //显示单个汉字"用",闪烁,反显(当有闪烁时,反显不起作用)
  471.                 disp_blink_16x16(5,65,0,0,yuan1);         //显示单个汉字"状". 括号里的参数分别是(页,列,闪烁与否,反显与否,数据指针)
  472.                 disp_blink_16x16(5,81,0,0,yang);                //显示单个汉字"态",不闪烁,反显
  473.                 disp_blink_16x16(5,97,0,0,liu);                 //显示单个汉字"使",闪烁,不反显
  474.                 disp_blink_16x16(5,113,0,0,dou);                //显示单个汉字"用",闪烁,反显(当有闪烁时,反显不起作用)

  475.                 disp_blink_16x16(7, 1,0,0,chun);         //显示单个汉字"状". 括号里的参数分别是(页,列,闪烁与否,反显与否,数据指针)
  476.                 disp_blink_16x16(7,17,0,0,feng);                //显示单个汉字"态",不闪烁,反显
  477.                 disp_blink_16x16(7,33,0,0,bu);                 //显示单个汉字"使",闪烁,不反显
  478.                 disp_blink_16x16(7,49,0,0,du);                //显示单个汉字"用",闪烁,反显(当有闪烁时,反显不起作用)
  479.                 disp_blink_16x16(7,65,0,0,yu);         //显示单个汉字"状". 括号里的参数分别是(页,列,闪烁与否,反显与否,数据指针)
  480.                 disp_blink_16x16(7,81,0,0,men);                //显示单个汉字"态",不闪烁,反显
  481.                 disp_blink_16x16(7,97,0,0,guan);                 //显示单个汉字"使",闪烁,不反显
  482.                 disp_blink_16x16(7,113,0,0,ju);                //显示单个汉字"用",闪烁,反显(当有闪烁时,反显不起作用)

  483.         }
  484. }
复制代码

所有资料51hei提供下载:
program.rar (44.18 KB, 下载次数: 186)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:215984 发表于 2021-1-4 20:48 | 只看该作者
非常感谢楼主的无私奉献,使我的几乎成为摆设的12864能够正常使用了,当时经过分析找到了5个引脚,并且试出来了,但对比度太淡,几乎看不清楚字,后又分析了楼主给的代码,由楼主代码后面备注找到调整对比度的参数,成功地清晰显示出来了!再次表示感谢楼主,也感谢51黑子论坛这个得力的平台!

回复

使用道具 举报

板凳
ID:880987 发表于 2021-9-16 10:51 | 只看该作者
感谢楼主无私提供的代码,最近搞到几个便宜的ST7565R驱动的128*64的LCD,就是找不到例程驱动不了,现在可以参考你的代码研究一把了
回复

使用道具 举报

地板
ID:1008454 发表于 2022-3-9 18:36 来自手机 | 只看该作者
不错,有注释,方便初学者。
回复

使用道具 举报

5#
ID:1067203 发表于 2023-4-7 17:47 | 只看该作者
谢谢,学习了,天天向上
回复

使用道具 举报

6#
ID:381390 发表于 2023-6-6 17:19 | 只看该作者
感谢楼主无私提供的代码
回复

使用道具 举报

7#
ID:381390 发表于 2023-6-6 17:19 | 只看该作者
感谢楼主无私提供的代码
回复

使用道具 举报

8#
ID:1069806 发表于 2023-8-23 09:48 | 只看该作者
感谢楼主无私提供的代码学习
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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