JLX12832G-037 使用說明書
單片機源程序如下:
- /* JLX12832G-037-P-FOG 測試程序****/
- /* LCD 驅動 IC:ST7567
- /* 該程序顯示 2 行中文如下:*/
- /* 全套液晶解決方案*/
- /* 質量取勝創建口碑*/
-
- //#include <reg51.H>
- //#include <intrins.h>
- //--------------------------------------------------------
- #define lcd_cs1 10 //接口定義,CS:片選
- #define lcd_reset 9 //接口定義,RESET:復位
- #define lcd_rs 11 //接口定義,RS:命令/數據寄存器選擇。也叫"A0",或“CD”
- #define lcd_sid 12 //接口定義,SID 即 SDA:串行數據
- #define lcd_sclk 13 //接口定義,sclk:串行時鐘
- //-------------------------------------------------------
-
-
- #define uchar unsigned char
- #define uint unsigned int
- #define ulong unsigned long
- #define uchar unsigned char
- #define uint unsigned int
- #define ulong unsigned long
-
- void displaygraphic(char *dp);
-
- uchar jiong1[]={/*-- 文字: 囧 --*/
- /*-- 宋體 12; 此字體下對應的點陣為:寬 x 高=16x16 --*/
- 0x00,0xFE,0x82,0x42,0xA2,0x9E,0x8A,0x82,0x86,0x8A,0xB2,0x62,0x02,0xFE,0x00,0x00,
- 0x00,0x7F,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x7F,0x00,0x00};
-
- uchar lei1[]={/*-- 文字: 畾 --*/
- /*-- 宋體 12; 此字體下對應的點陣為:寬 x 高=16x16 --*/
- 0x80,0x80,0x80,0xBF,0xA5,0xA5,0xA5,0x3F,0xA5,0xA5,0xA5,0xBF,0x80,0x80,0x80,0x00,
- 0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00,0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00};
- //寫命令到 LCD 模塊
- void transfer_command(int data1)
- {
- char i;
- digitalWrite(lcd_cs1,LOW); //cs1=0,片選清零才可以傳送命令或數據
- digitalWrite(lcd_rs,LOW); //rs=0:表示以下發送 1 個字節的命令
- for(i=0;i<8;i++)
- {
- digitalWrite(lcd_sclk,LOW);
- if(data1&0x80) digitalWrite(lcd_sid,HIGH);
- else digitalWrite(lcd_sid,LOW);
- digitalWrite(lcd_sclk,HIGH);
- data1<<=1;
- }
- digitalWrite(lcd_cs1,HIGH); //cs1=1,當不用傳數據給液晶屏時片選盡量置高,以免接收到一些干擾信號
- }
- //寫數據到 LCD 模塊
- void transfer_data(int data1)
- {
- char i;
- digitalWrite(lcd_cs1,LOW); //cs1=0,片選清零才可以傳送命令或數據
- digitalWrite(lcd_rs,HIGH); //rs=0:表示以下發送 1 個字節的數據
- for(i=0;i<8;i++)
- {
- digitalWrite(lcd_sclk,LOW);
- if(data1&0x80) digitalWrite(lcd_sid,HIGH);
- else digitalWrite(lcd_sid,LOW);
- digitalWrite(lcd_sclk,HIGH);
- data1<<=1;
- }
- digitalWrite(lcd_cs1,HIGH); //cs1=1,當不用傳數據給液晶屏時片選盡量置高,以免接收到一些干擾信號
- }
-
- /*延時*/
- void delay(int i)
- {
- int j,k;
- for(j=0;j<i;j++)
- for(k=0;k<500;k++);
- }
-
-
- /*等待一個按鍵,我的主板是用 P2.0 與 GND 之間接一個按鍵
- void waitkey()
- {
- repeat:
- if (P2&0x01) goto repeat;
- else delay(6);
- if (P2&0x01) goto repeat;
- else
- delay(40);
- }
- */
- void lcd_address(int page,int column)
- {
-
- column=column;
- transfer_command(0xb0+page-1); /*設置頁地址*/
- transfer_command(0x10+(column>>4&0x0f)); /*設置列地址的高 4 位*/
- transfer_command(column&0x0f); /*設置列地址的低 4 位*/
- }
- /*顯示 16x16 點陣圖像、漢字、生僻字或 16x16 點陣的其他圖標*/
- void display_graphic_16x16(uint page,uint column,uchar *dp)
- {
- uint i,j;
- digitalWrite(lcd_cs1,LOW);
- for(j=0;j<2;j++)
- {
- lcd_address(page,column);
- for (i=0;i<16;i++)
- {
- transfer_data(*dp); /*寫數據到 LCD,每寫完一個 8 位的數據后列地址自動加 1*/
- dp++;
- }
- page++;
- }
- digitalWrite(lcd_cs1,HIGH);
- }
-
- /*顯示 5*7 點陣圖像、ASCII, 或 5x7 點陣的自造字符、其他圖標*/
- void display_graphic_5x7(uint page,uchar column,uchar *dp)
- {
- uint col_cnt;
- digitalWrite(lcd_cs1,LOW);
- lcd_address(page,column);
- for (col_cnt=0;col_cnt<8;col_cnt++)
- {
- transfer_data(*dp);
- dp++;
- }
- digitalWrite(lcd_cs1,HIGH);
- }
-
- /*顯示 8x16 點陣圖像、ASCII, 或 8x16 點陣的自造字符、其他圖標*/
- void display_graphic_8x16(uint page,uchar column,uchar *dp)
- {
- uint i,j;
- digitalWrite(lcd_cs1,LOW);
- for(j=0;j<2;j++)
- {
- lcd_address(page,column);
- for (i=0;i<8;i++)
- {
- transfer_data(*dp); /*寫數據到 LCD,每寫完一個 8 位的數據后列地址自動加 1*/
- dp++;
- }
- page++;
- }
- digitalWrite(lcd_cs1,HIGH);
- }
-
-
- //==================display a piture of 128*64 dots================
- void displaygraphic(char *dp)
- {
- int i,j;
- for(i=0;i<4;i++)
- {
- digitalWrite(lcd_cs1,LOW);
- transfer_command(0xb0+i); //set page address,
- transfer_command(0x10);
- transfer_command(0x00);
- for(j=0;j<128;j++)
- {
- transfer_data(*dp);
- dp++;
- }
- }
-
- }
-
- char graphic1[]={
- /*-- 調入了一幅圖像:D:\Backup\我的文檔\圖片\G-037.bmp --*/
- /*-- 寬度 x 高度=128x32 --*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x2A,0x2A,0x2A,
- 0x2A,0x2A,0x2A,0x7E,0x00,0x00,0x00,0x00,0x02,0xFE,0x92,0x92,0x92,0xFE,0x12,0x11,
- 0x12,0x1C,0xF0,0x18,0x17,0x12,0x10,0x00,0x20,0x21,0x2E,0xE4,0x00,0x42,0x42,0xFE,
- 0x42,0x42,0x42,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,
- 0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,
- 0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x40,0x30,0x0E,0x84,0x00,
- 0x00,0x0E,0x10,0x60,0xC0,0x80,0x80,0x00,0x00,0x10,0x92,0x92,0x92,0x92,0x92,0x92,
- 0x92,0x92,0x12,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,
- 0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,0x08,0x1F,0x08,0x08,0x04,0xFF,0x05,0x81,
- 0x41,0x31,0x0F,0x11,0x21,0xC1,0x41,0x00,0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x7F,
- 0x00,0x00,0x00,0x00,0x3F,0x40,0x38,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,
- 0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x20,0x70,0x28,0x24,0x23,0x31,
- 0x10,0x10,0x14,0x78,0x30,0x01,0x00,0x00,0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,
- 0x04,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,
- 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,
- 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
- 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
- 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
- 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,
- 0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,
- 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
- 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
- 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,
- 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
- 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-
- };
-
- //============initial
- void initial_lcd()
- {
- digitalWrite(lcd_cs1,LOW);
- digitalWrite(lcd_reset,LOW); //Reset the chip when reset=0
- delay(20);
- digitalWrite(lcd_reset,HIGH);
- transfer_command(0xe2); /*軟復位*/
- transfer_command(0x2c); /*升壓步聚 1*/
- delay(5);
- transfer_command(0x2e); /*升壓步聚 2*/
- delay(5);
- transfer_command(0x2f); /*升壓步聚 3*/
- delay(5);
- transfer_command(0x22); /*粗調對比度,可設置范圍 20~27*/
- transfer_command(0x81); /*微調對比度*/
- transfer_command(0x1b); /*微調對比度的值,可設置范圍 0~63*/
- transfer_command(0xa2); /*1/9 偏壓比(bias)*/
- transfer_command(0xc8); /*行掃描順序:從上到下*/
- transfer_command(0xa0); /*列掃描順序:從左到右*/
- transfer_command(0x40); /*起始行:從第一行開始*/
- transfer_command(0xaf); /*開顯示*/
- digitalWrite(lcd_cs1,HIGH);
- }
- //===============clear all dot martrics=============
- void clear_screen()
- {
- unsigned char i,j;
-
- for(i=0;i<4;i++)
- {
- digitalWrite(lcd_cs1,LOW);
- transfer_command(0xb0+i);
- transfer_command(0x10);
- transfer_command(0x00);
- for(j=0;j<132;j++)
- {
- transfer_data(0x00);
- }
- }
- }
- //===============main program===================
- void setup()
- {
- pinMode(lcd_cs1,OUTPUT);
- pinMode(lcd_reset,OUTPUT);
- pinMode(lcd_rs,OUTPUT);
- pinMode(lcd_sid,OUTPUT);
- pinMode(lcd_sclk,OUTPUT);
- // int i,j,k;
- digitalWrite(lcd_cs1,LOW);
- initial_lcd();
- while(1)
- {
-
- clear_screen(); //clear all dots
- displaygraphic(graphic1); //display a picture of 128*64 dots
- //waitkey();
-
- }
- }
-
-
復制代碼
所有資料51hei提供下載:
st7567_SPI.zip
(6.86 KB, 下載次數: 24)
2018-4-12 23:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|