找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3313|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

JLX12832G cog 128x32 28pin單片機(jī)驅(qū)動(dòng)程序源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:307026 發(fā)表于 2018-4-12 23:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
JLX12832G-037 使用說(shuō)明書
單片機(jī)源程序如下:
  1. /* JLX12832G-037-P-FOG 測(cè)試程序****/
  2. /* LCD 驅(qū)動(dòng) IC:ST7567

  3. /* 該程序顯示 2 行中文如下:*/
  4. /* 全套液晶解決方案*/
  5. /* 質(zhì)量取勝創(chuàng)建口碑*/

  6. //#include <reg51.H>
  7. //#include <intrins.h>

  8. //--------------------------------------------------------  
  9. #define lcd_cs1 10  //接口定義,CS:片選
  10. #define lcd_reset 9  //接口定義,RESET:復(fù)位  
  11. #define lcd_rs  11  //接口定義,RS:命令/數(shù)據(jù)寄存器選擇。也叫"A0",或“CD”  
  12. #define lcd_sid 12  //接口定義,SID 即 SDA:串行數(shù)據(jù)  
  13. #define lcd_sclk 13  //接口定義,sclk:串行時(shí)鐘  
  14. //-------------------------------------------------------  




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

  21. void displaygraphic(char *dp);

  22. uchar jiong1[]={/*--  文字:  囧  --*/
  23. /*--  宋體 12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬 x 高=16x16   --*/
  24. 0x00,0xFE,0x82,0x42,0xA2,0x9E,0x8A,0x82,0x86,0x8A,0xB2,0x62,0x02,0xFE,0x00,0x00,
  25. 0x00,0x7F,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x7F,0x00,0x00};

  26. uchar lei1[]={/*--  文字:  畾  --*/
  27. /*--  宋體 12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬 x 高=16x16   --*/
  28. 0x80,0x80,0x80,0xBF,0xA5,0xA5,0xA5,0x3F,0xA5,0xA5,0xA5,0xBF,0x80,0x80,0x80,0x00,
  29. 0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00,0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00};

  30. //寫命令到 LCD 模塊  
  31. void transfer_command(int data1)     
  32. {  
  33. char i;  
  34. digitalWrite(lcd_cs1,LOW);   //cs1=0,片選清零才可以傳送命令或數(shù)據(jù)  
  35. digitalWrite(lcd_rs,LOW);   //rs=0:表示以下發(fā)送 1 個(gè)字節(jié)的命令  
  36. for(i=0;i<8;i++)  
  37. {  
  38.   digitalWrite(lcd_sclk,LOW);  
  39.   if(data1&0x80) digitalWrite(lcd_sid,HIGH);  
  40.   else digitalWrite(lcd_sid,LOW);  
  41.   digitalWrite(lcd_sclk,HIGH);
  42.    data1<<=1;  
  43. }  
  44. digitalWrite(lcd_cs1,HIGH);   //cs1=1,當(dāng)不用傳數(shù)據(jù)給液晶屏?xí)r片選盡量置高,以免接收到一些干擾信號(hào)
  45. }  
  46. //寫數(shù)據(jù)到 LCD 模塊  
  47. void transfer_data(int data1)  
  48. {  
  49. char i;  
  50. digitalWrite(lcd_cs1,LOW);   //cs1=0,片選清零才可以傳送命令或數(shù)據(jù)  
  51. digitalWrite(lcd_rs,HIGH);   //rs=0:表示以下發(fā)送 1 個(gè)字節(jié)的數(shù)據(jù)  
  52. for(i=0;i<8;i++)  
  53. {  
  54.   digitalWrite(lcd_sclk,LOW);  
  55.   if(data1&0x80) digitalWrite(lcd_sid,HIGH);  
  56.   else digitalWrite(lcd_sid,LOW);  
  57.   digitalWrite(lcd_sclk,HIGH);  
  58.    data1<<=1;  
  59. }  
  60. digitalWrite(lcd_cs1,HIGH);      //cs1=1,當(dāng)不用傳數(shù)據(jù)給液晶屏?xí)r片選盡量置高,以免接收到一些干擾信號(hào)
  61. }



  62. /*延時(shí)*/
  63. void delay(int i)               
  64. {
  65. int j,k;
  66. for(j=0;j<i;j++)
  67. for(k=0;k<500;k++);
  68. }


  69. /*等待一個(gè)按鍵,我的主板是用 P2.0 與 GND 之間接一個(gè)按鍵
  70. void waitkey()
  71. {
  72. repeat:
  73.    if (P2&0x01) goto repeat;
  74. else delay(6);
  75. if (P2&0x01) goto repeat;
  76. else
  77. delay(40);
  78. }
  79. */
  80. void lcd_address(int page,int column)
  81. {

  82. column=column;
  83. transfer_command(0xb0+page-1);   /*設(shè)置頁(yè)地址*/
  84. transfer_command(0x10+(column>>4&0x0f)); /*設(shè)置列地址的高 4 位*/
  85. transfer_command(column&0x0f); /*設(shè)置列地址的低 4 位*/
  86. }
  87. /*顯示 16x16 點(diǎn)陣圖像、漢字、生僻字或 16x16 點(diǎn)陣的其他圖標(biāo)*/
  88. void display_graphic_16x16(uint page,uint column,uchar *dp)
  89. {
  90. uint i,j;
  91. digitalWrite(lcd_cs1,LOW);
  92. for(j=0;j<2;j++)
  93. {
  94.   lcd_address(page,column);
  95.   for (i=0;i<16;i++)
  96.   {  
  97.    transfer_data(*dp);     /*寫數(shù)據(jù)到 LCD,每寫完一個(gè) 8 位的數(shù)據(jù)后列地址自動(dòng)加 1*/
  98.    dp++;
  99.   }
  100.   page++;
  101. }
  102. digitalWrite(lcd_cs1,HIGH);
  103. }

  104. /*顯示 5*7 點(diǎn)陣圖像、ASCII, 或 5x7 點(diǎn)陣的自造字符、其他圖標(biāo)*/
  105. void display_graphic_5x7(uint page,uchar column,uchar *dp)
  106. {
  107. uint col_cnt;
  108. digitalWrite(lcd_cs1,LOW);  
  109. lcd_address(page,column);
  110. for (col_cnt=0;col_cnt<8;col_cnt++)
  111. {  
  112.   transfer_data(*dp);
  113.   dp++;
  114. }
  115. digitalWrite(lcd_cs1,HIGH);
  116. }


  117. /*顯示 8x16 點(diǎn)陣圖像、ASCII, 或 8x16 點(diǎn)陣的自造字符、其他圖標(biāo)*/
  118. void display_graphic_8x16(uint page,uchar column,uchar *dp)
  119. {
  120. uint i,j;
  121. digitalWrite(lcd_cs1,LOW);  
  122. for(j=0;j<2;j++)
  123. {
  124.   lcd_address(page,column);
  125.   for (i=0;i<8;i++)
  126.   {  
  127.    transfer_data(*dp);     /*寫數(shù)據(jù)到 LCD,每寫完一個(gè) 8 位的數(shù)據(jù)后列地址自動(dòng)加 1*/
  128.    dp++;
  129.   }
  130.   page++;
  131. }
  132. digitalWrite(lcd_cs1,HIGH);
  133. }



  134. //==================display a piture of 128*64 dots================
  135. void displaygraphic(char *dp)
  136. {
  137.         int i,j;
  138.         for(i=0;i<4;i++)
  139.         {
  140.         digitalWrite(lcd_cs1,LOW);
  141.   transfer_command(0xb0+i);   //set page address,
  142.   transfer_command(0x10);
  143.   transfer_command(0x00);
  144.   for(j=0;j<128;j++)
  145.   {
  146.          transfer_data(*dp);     
  147.    dp++;   
  148.   }
  149.           }
  150.    
  151. }


  152. char graphic1[]={
  153. /*--  調(diào)入了一幅圖像:D:\Backup\我的文檔\圖片\G-037.bmp  --*/
  154. /*--  寬度 x 高度=128x32  --*/
  155. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x2A,0x2A,0x2A,
  156. 0x2A,0x2A,0x2A,0x7E,0x00,0x00,0x00,0x00,0x02,0xFE,0x92,0x92,0x92,0xFE,0x12,0x11,
  157. 0x12,0x1C,0xF0,0x18,0x17,0x12,0x10,0x00,0x20,0x21,0x2E,0xE4,0x00,0x42,0x42,0xFE,
  158. 0x42,0x42,0x42,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,
  159. 0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,
  160. 0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x40,0x30,0x0E,0x84,0x00,
  161. 0x00,0x0E,0x10,0x60,0xC0,0x80,0x80,0x00,0x00,0x10,0x92,0x92,0x92,0x92,0x92,0x92,
  162. 0x92,0x92,0x12,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  163. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,
  164. 0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,0x08,0x1F,0x08,0x08,0x04,0xFF,0x05,0x81,
  165. 0x41,0x31,0x0F,0x11,0x21,0xC1,0x41,0x00,0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x7F,
  166. 0x00,0x00,0x00,0x00,0x3F,0x40,0x38,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,
  167. 0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,
  168. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x20,0x70,0x28,0x24,0x23,0x31,
  169. 0x10,0x10,0x14,0x78,0x30,0x01,0x00,0x00,0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,
  170. 0x04,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  171. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,
  172. 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,
  173. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
  174. 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
  175. 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,
  176. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
  177. 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
  178. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  179. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,
  180. 0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,
  181. 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
  182. 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
  183. 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,
  184. 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
  185. 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
  186. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  187. };

  188. //============initial
  189. void initial_lcd()
  190. {
  191.     digitalWrite(lcd_cs1,LOW);
  192.     digitalWrite(lcd_reset,LOW);                 //Reset the chip when reset=0  
  193.     delay(20);
  194.     digitalWrite(lcd_reset,HIGH);
  195. transfer_command(0xe2);  /*軟復(fù)位*/
  196. transfer_command(0x2c);  /*升壓步聚 1*/
  197. delay(5);  
  198. transfer_command(0x2e);  /*升壓步聚 2*/
  199. delay(5);
  200. transfer_command(0x2f);  /*升壓步聚 3*/
  201. delay(5);
  202. transfer_command(0x22);  /*粗調(diào)對(duì)比度,可設(shè)置范圍 20~27*/
  203. transfer_command(0x81);  /*微調(diào)對(duì)比度*/
  204. transfer_command(0x1b);  /*微調(diào)對(duì)比度的值,可設(shè)置范圍 0~63*/
  205. transfer_command(0xa2);  /*1/9 偏壓比(bias)*/
  206. transfer_command(0xc8);  /*行掃描順序:從上到下*/
  207. transfer_command(0xa0);  /*列掃描順序:從左到右*/
  208. transfer_command(0x40);  /*起始行:從第一行開始*/
  209. transfer_command(0xaf);  /*開顯示*/
  210.     digitalWrite(lcd_cs1,HIGH);
  211. }

  212. //===============clear all dot martrics=============
  213. void clear_screen()
  214. {
  215. unsigned char i,j;
  216.         
  217.   for(i=0;i<4;i++)
  218.         {
  219.         digitalWrite(lcd_cs1,LOW);
  220.   transfer_command(0xb0+i);
  221.   transfer_command(0x10);
  222.   transfer_command(0x00);
  223.   for(j=0;j<132;j++)
  224.   {
  225.           transfer_data(0x00);
  226.   }
  227.          }
  228. }
  229. //===============main program===================
  230. void setup()
  231. {
  232.   pinMode(lcd_cs1,OUTPUT);
  233.   pinMode(lcd_reset,OUTPUT);
  234.   pinMode(lcd_rs,OUTPUT);
  235.   pinMode(lcd_sid,OUTPUT);
  236.   pinMode(lcd_sclk,OUTPUT);      
  237. //  int i,j,k;
  238. digitalWrite(lcd_cs1,LOW);
  239. initial_lcd();
  240.         while(1)
  241.         {
  242.    
  243.   clear_screen();    //clear all dots   
  244.          displaygraphic(graphic1);  //display a picture of 128*64 dots         
  245.   //waitkey();
  246.      
  247.     }
  248. }


復(fù)制代碼

所有資料51hei提供下載:
st7567_SPI.zip (6.86 KB, 下載次數(shù): 24)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表