本人在使用LCD12864时,用到了JLX12864G-086-pc 也就是带字库的LCD12864屏,采用SPI串口方式,根据厂家提供的标准例程,进行了修改,做成了一个可被调用的独立函数模块,并可对显示的文字进行反白显示,并提供了相应的头文件。
1、将例程提供的P3.0,P3.1,P3.2 接口转换到 P3.4,P3.5,P3.6
2、在调用显示中参数中增加了是否反白显示的参数:0=不反白,1=反白
3、对5X8显示的反白显示,增加了1列显示,消除了字间空白,使字迹更清楚。
单片机源程序如下:
#ifndef __JLX1286486PC_H_
#define __JLX1286486PC_H_
/**********************************
JLX12864G-086S-PC 使用SPI串口,通信,带字库,共12脚
1 ROM_IN 字库 IC 接口 SI 串行数据输入
2 ROM_OUT 字库 IC 接口 SO 串行数据输出
3 ROM_SCK 字库 IC 接口 SCLK 串行时钟输入
4 ROM_CS 字库 IC 接口 CS# 片选输入
5 LEDA 背光电源 背光电源正极,同 VDD 电压(5V 或 3.3V)
6 VSS 接地 0V
7 VDD 电路电源 5V,或 3.3V 可选
8 SCLK I/O 串行时钟
9 SDA I/O 串行数据
10 RS 寄存器选择信号 H:数据寄存器 0:指令寄存器(IC 资料上所写为”A0”)
11 RESET 复位 低电平复位,复位完成后,回到高电平,液晶模块开始工作
12 CS 片选 低电平片选
*********************************/
/**********************************
包含头文件
**********************************/
#include #include //---重定义关键词---// #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; //字库IC接口定义:Rom_IN就是字库IC的SI sbit Rom_OUT=P1^3; //字库IC接口定义:Rom_OUT就是字库IC的SO sbit Rom_SCK=P1^4; //字库IC接口定义:Rom_SCK就是字库IC的SCK sbit Rom_CS =P1^5; //字库IC接口定义Rom_CS就是字库IC的CS# /**********************************+ 函数声明 **********************************/ //延时 void lcddelay(int n_ms); //短延时 void lcddelay_us(int n_us) ; //写指令到LCD模块 void transfer_command_lcd(int data1); //写数据到LCD模块 void transfer_data_lcd(int data1); //LCD模块初始化 void initial_lcd(); void lcd_address(uint page,uint column); //全屏清屏 void clear_screen(); //显示128x64点阵图像 void display_128x64(uchar *dp); //显示16x16点阵图像、汉字、生僻字或16x16点阵的其他图标 void display_graphic_16x16(uchar page,uchar column,uchar *dp); //显示8x16点阵图像、ASCII, 或8x16点阵的自造字符、其他图标 void display_graphic_8x16(uchar page,uchar column,uchar *dp); //显示5X8点阵图像、ASCII, 或5x8点阵的自造字符、其他图标 void display_graphic_5x8(uchar page,uchar column,uchar *dp); //送指令到晶联讯字库IC void send_command_to_ROM( uchar datu ); //从晶联讯字库IC中取汉字或字符数据(1个字节) static uchar get_data_from_ROM( ); //从指定地址读出数据写到液晶屏指定(page,column)座标中, uchar fb 指定是否反白显示 void get_and_write_16x16(ulong fontaddr,uchar page,uchar column,uchar fb); //从指定地址读出数据写到液晶屏指定(page,column)座标中 uchar fb 指定是否反白显示 void get_and_write_8x16(ulong fontaddr,uchar page,uchar column,uchar fb); //从指定地址读出数据写到液晶屏指定(page,column)座标中 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
上一篇:16*64LED点阵时钟(移动+翻页显示)单片机源程序
下一篇:单片机LCD12864G带字库的独立函数,可调用
推荐阅读最新更新时间:2024-11-05 15:44
设计资源 培训 开发板 精华推荐
- EVAL-AD7660CBZ,用于 AD7660、16 位、100 Ksps PulSAR 模数转换器的评估板
- LT3663EDCB 演示板、1.2A、1.5MHz 降压型开关稳压器,具有输出电流限制
- LTC3559 演示板、具有双路降压稳压器的线性 USB 电池充电器
- LTC3404、3.1V/600mA 降压型稳压器
- 基于光隔离电路的微控制器的监控模式连接
- R1206N071B PWM 升压 DC/DC 转换器白光 LED 的典型应用
- 【训练营】hmdog
- 使用 Infineon Technologies AG 的 IRU3034CW 的参考设计
- 用于 DSL 调制解调器的模拟放大器
- LTC2931CF 系统复位由看门狗时序或电源电压故障产生的典型应用电路