|
本人在使用LCD12864時(shí),用到了JLX12864G-086-pc 也就是帶字庫(kù)的LCD12864屏,采用SPI串口方式,根據(jù)廠家提供的標(biāo)準(zhǔn)例程,進(jìn)行了修改,做成了一個(gè)可被調(diào)用的獨(dú)立函數(shù)模塊,并可對(duì)顯示的文字進(jìn)行反白顯示,并提供了相應(yīng)的頭文件。
1、將例程提供的P3.0,P3.1,P3.2 接口轉(zhuǎn)換到 P3.4,P3.5,P3.6
2、在調(diào)用顯示中參數(shù)中增加了是否反白顯示的參數(shù):0=不反白,1=反白
3、對(duì)5X8顯示的反白顯示,增加了1列顯示,消除了字間空白,使字跡更清楚。
單片機(jī)源程序如下:- #ifndef __JLX1286486PC_H_
- #define __JLX1286486PC_H_
- /**********************************
- JLX12864G-086S-PC 使用SPI串口,通信,帶字庫(kù),共12腳
- 1 ROM_IN 字庫(kù) IC 接口 SI 串行數(shù)據(jù)輸入
- 2 ROM_OUT 字庫(kù) IC 接口 SO 串行數(shù)據(jù)輸出
- 3 ROM_SCK 字庫(kù) IC 接口 SCLK 串行時(shí)鐘輸入
- 4 ROM_CS 字庫(kù) IC 接口 CS# 片選輸入
- 5 LEDA 背光電源 背光電源正極,同 VDD 電壓(5V 或 3.3V)
- 6 VSS 接地 0V
- 7 VDD 電路電源 5V,或 3.3V 可選
- 8 SCLK I/O 串行時(shí)鐘
- 9 SDA I/O 串行數(shù)據(jù)
- 10 RS 寄存器選擇信號(hào) H:數(shù)據(jù)寄存器 0:指令寄存器(IC 資料上所寫(xiě)為”A0”)
- 11 RESET 復(fù)位 低電平復(fù)位,復(fù)位完成后,回到高電平,液晶模塊開(kāi)始工作
- 12 CS 片選 低電平片選
- *********************************/
- /**********************************
- 包含頭文件
- **********************************/
- #include<stc8.h>
- #include <intrins.h>
- //---重定義關(guān)鍵詞---//
- #ifndef uchar
- #define uchar unsigned char
- #endif
- #ifndef uint
- #define uint unsigned int
- #endif
- #ifndef ulong
- #define ulong unsigned long
- #endif
- /**********************************
- PIN口定義
- **********************************/
- sbit lcd_sclk =P3^6; //示例中 =P3^2;接口定義:lcd_sclk 就是 LCD 的 SCLK
- sbit lcd_sid =P3^5; //示例中 =P3^1;接口定義:lcd_sid 就是 LCD 的 SDA
- sbit lcd_rs =P3^4; //示例中 =P3^0;接口定義:lcd_rs 就是 LCD 的 RS,也叫“CD”
- sbit lcd_reset=P1^0; //接口定義:lcd_reset就是LCD的RESET
- sbit lcd_cs1 =P1^1; //接口定義:lcd_cs1就是LCD的CS1
- sbit Rom_IN =P1^2; //字庫(kù)IC接口定義:Rom_IN就是字庫(kù)IC的SI
- sbit Rom_OUT=P1^3; //字庫(kù)IC接口定義:Rom_OUT就是字庫(kù)IC的SO
- sbit Rom_SCK=P1^4; //字庫(kù)IC接口定義:Rom_SCK就是字庫(kù)IC的SCK
- sbit Rom_CS =P1^5; //字庫(kù)IC接口定義Rom_CS就是字庫(kù)IC的CS#
- /**********************************+
- 函數(shù)聲明
- **********************************/
- //延時(shí)
- void lcddelay(int n_ms);
- //短延時(shí)
- void lcddelay_us(int n_us) ;
- //寫(xiě)指令到LCD模塊
- void transfer_command_lcd(int data1);
- //寫(xiě)數(shù)據(jù)到LCD模塊
- void transfer_data_lcd(int data1);
- //LCD模塊初始化
- void initial_lcd();
- void lcd_address(uint page,uint column);
- //全屏清屏
- void clear_screen();
- //顯示128x64點(diǎn)陣圖像
- void display_128x64(uchar *dp);
- //顯示16x16點(diǎn)陣圖像、漢字、生僻字或16x16點(diǎn)陣的其他圖標(biāo)
- void display_graphic_16x16(uchar page,uchar column,uchar *dp);
- //顯示8x16點(diǎn)陣圖像、ASCII, 或8x16點(diǎn)陣的自造字符、其他圖標(biāo)
- void display_graphic_8x16(uchar page,uchar column,uchar *dp);
- //顯示5X8點(diǎn)陣圖像、ASCII, 或5x8點(diǎn)陣的自造字符、其他圖標(biāo)
- void display_graphic_5x8(uchar page,uchar column,uchar *dp);
- //送指令到晶聯(lián)訊字庫(kù)IC
- void send_command_to_ROM( uchar datu );
- //從晶聯(lián)訊字庫(kù)IC中取漢字或字符數(shù)據(jù)(1個(gè)字節(jié))
- static uchar get_data_from_ROM( );
- //從指定地址讀出數(shù)據(jù)寫(xiě)到液晶屏指定(page,column)座標(biāo)中, uchar fb 指定是否反白顯示
- void get_and_write_16x16(ulong fontaddr,uchar page,uchar column,uchar fb);
- //從指定地址讀出數(shù)據(jù)寫(xiě)到液晶屏指定(page,column)座標(biāo)中 uchar fb 指定是否反白顯示
- void get_and_write_8x16(ulong fontaddr,uchar page,uchar column,uchar fb);
- //從指定地址讀出數(shù)據(jù)寫(xiě)到液晶屏指定(page,column)座標(biāo)中 uchar fb 指定是否反白顯示
- void get_and_write_5x8(ulong fontaddr,uchar page,uchar column,uchar fb) ;
- //uchar fb 指定是否反白顯示
- void display_GB2312_string(uchar page,uchar column,uchar *text,uchar fb);
- //uchar fb 指定是否反白顯示
- void display_string_5x8(uchar page,uchar column,uchar *text,uchar fb);
-
- #endif
復(fù)制代碼
lcd12864.rar
(3.63 KB, 下載次數(shù): 105)
2020-8-18 17:51 上傳
點(diǎn)擊文件名下載附件
|
|