久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7772|回復: 11
收起左側

無字庫12864單片機驅動程序 UC1701X或兼容的IC,比如ST7565R

  [復制鏈接]
ID:537570 發表于 2020-5-4 16:16 | 顯示全部樓層 |閱讀模式
51單片機驅動lcd12864,無字庫串口屏
51hei圖片20200504161413.jpg

單片機源程序如下:
  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, 下載次數: 201)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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 來自手機 | 顯示全部樓層
不錯,有注釋,方便初學者。
回復

使用道具 舉報

ID:1067203 發表于 2023-4-7 17:47 | 顯示全部樓層
謝謝,學習了,天天向上
回復

使用道具 舉報

ID:381390 發表于 2023-6-6 17:19 | 顯示全部樓層
感謝樓主無私提供的代碼
回復

使用道具 舉報

ID:381390 發表于 2023-6-6 17:19 | 顯示全部樓層
感謝樓主無私提供的代碼
回復

使用道具 舉報

ID:1069806 發表于 2023-8-23 09:48 | 顯示全部樓層
感謝樓主無私提供的代碼學習
回復

使用道具 舉報

ID:469589 發表于 2024-5-11 16:38 | 顯示全部樓層
感謝。樓主!
我用32,但不知道支持硬件SPI不,如果支持就更好了!
回復

使用道具 舉報

ID:469589 發表于 2024-5-11 16:38 | 顯示全部樓層
感謝樓主!
但不知道支持硬件SPI不?
我用的是32
回復

使用道具 舉報

ID:469589 發表于 2024-6-8 10:05 | 顯示全部樓層
驗證了:UC1701X支持STM32硬件SPI,真方便。但是控制線還是有點多,并且需要外部復位初始化。
同時,初始化有事不是很穩定
回復

使用道具 舉報

ID:1123082 發表于 2024-6-8 11:58 | 顯示全部樓層
感謝分享,學習了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品成人av| 日日骚网 | 国产精品福利在线观看 | 亚洲成a| 好好的日在线视频 | 亚洲人精品午夜 | 日韩欧美综合 | 91精品在线播放 | 欧美综合久久 | 最新超碰| 中文字幕三区 | 欧美日韩国产三级 | 免费不卡视频 | 国内毛片毛片毛片毛片 | 精品一区av| 男人的天堂在线视频 | 成人福利在线 | 国产精品视屏 | 香蕉久久久 | 欧美精品影院 | 国产欧美精品 | 久久久久久亚洲精品 | 美女久久视频 | 精品一区久久 | 午夜在线免费观看视频 | 亚洲一区二区三区免费视频 | 另类视频区 | 性视频网 | 精品99爱视频在线观看 | 91精品国产91久久久久久 | 蜜桃精品视频在线 | 国产农村妇女毛片精品久久麻豆 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 久久天天躁狠狠躁夜夜躁2014 | 欧美视频三级 | 99精品视频一区二区三区 | 精品日韩一区二区 | 国产精品一区二区久久久久 | 一区二区三区欧美 | 激情福利视频 | 人成在线视频 |