【51单片机系列】proteus中的LCD12864液晶屏

文章来源:《单片机C语言编程与Proteus仿真技术》。

点阵字符型LCD显示模块只能显示英文字符和简单的汉字,要想显示较为复杂的汉字或图形,就必须采用点阵图型LCD显示模块,比如12864点阵图型LCD显示模块。

一、 LCD12864点阵图型显示模块

12864点阵图型LCD显示模块内部控制器采用KS0108或HD61202。其引脚排列如下图所示:

12864点阵图型LCD显示模块引脚排列

各引脚功能功能如下表:

引脚 符号 功能 引脚 符号 功能
1 /CS1 1=选择左边64x64点 7 RW 1=数据读取,0=数据写入
2 /CS2 1=选择右边64x64点 8 E 使能信号,负跳变有效
3 GND 9~16 DB0~DB7 数据信号
4 VCC +5V电源 17 /RST 复位,低电平有效
5 V0 显示驱动电源0~5V 18 -Vout LCD驱动负电源
6 RS 1=数据输入,0=命令输入 有些模块19、20引脚为空脚

12864点阵图型LCD内部存储器DDRAM与显示屏上的显示内容具有对应关系,使用时只需要将显示内容写入到1286412864内部显示存储器DDRAM中,就能正确显示。

12864点阵图型LCD屏横向有128个点,纵向有64个点,分为左半屏和右半屏。

DDRAM与显示屏的对应关系如下表:

/CS1=1(左半屏) /CS2=1(右半屏)
Y= 0 1 ... 62 63 0 1 ... 62 63 行号
X=0 DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
0

7
X=1 DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
8

15
... ... ... ... ... ... ... ... ... ... ... ...
X=7 DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
56

63

在12864点阵图型LCD屏上显示图形或汉字时,可以利用字模提取软件获得图形或汉字的点阵代码。

二、12864的指令

12864点阵图型LCD显示模块的指令功能比较简单,共有8条指令。

  1. 读忙标志

编码格式为:

RS R/W E D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 BUSY 0 ON/OFF RESET 0 0 0 0

BUSY=1表示显示模块内部控制器忙,不能进行操作,只有BUSY=0时才允许操作。

ON/OFF=1表示显示关闭,ON/OFF=0表示显示打开。

RESET=1表示复位状态,RESET=0表示正常状态。

在BUSY和RESET状态下,除读忙标志指令外,其它指令均不对液晶显示模块产生作用。

  1. 写指令

编码格式为:

RS R/W E D7 D6 D5 D4 D3 D2 D1 D0
0 0 下降沿 指令
  1. 写数据

编码格式为:

RS R/W E D7 D6 D5 D4 D3 D2 D1 D0
1 0 下降沿 显示数据
  1. 显示开/关

编码格式为:

RS R/W D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 1 1 1 1 1 D 3E/3F

D=1表示显示RAM中的内容,D=0表示关闭显示。

  1. 显示起始行

编码格式为:

RS R/W D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 1 显示起始行(0~63)

该指令规定显示屏上起始行对应DDRAM的行地址,有规律地改变现实起始行,可以实现现实滚屏的效果。

  1. 页面地址

编码格式为:

RS R/W D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 0 1 1 1 页面(0~7)

DDRAM共64行,分8页,每页8行。

  1. 列地址

编码格式为:

RS R/W D7 D6 D5 D4 D3 D2 D1 D0
Proteus是一款常用的电路仿真软件,可用于模拟和验证电路设计。要在Proteus中使用LCD12864显示波形,首先需要添合适的元件和设置相应的代码。 以下是一个简单的例子,展示了如何在Proteus中使用LCD12864显示一个简单的波形。 步骤1:添元件 在Proteus中,点击"Pick from Library"按钮,选择合适的LCD12864的元件,将其添到电路图中。 步骤2:设置端口 在程序中定义引脚和功能的映射。例如: #define RS PIN_D0 #define EN PIN_D1 #define RW PIN_D2 #define DB4 PIN_D3 #define DB5 PIN_D4 #define DB6 PIN_D5 #define DB7 PIN_D6 步骤3:初始化LCD 在主函数中,初始化LCD12864。例如: lcd_init(); 步骤4:显示波形 通过代码生成波形数据,并将其发送到LCD中进行显示。例如: unsigned char waveform[] = {0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00}; int i; while(1){ lcd_set_position(1, 1); for(i=0; i<12; i++){ lcd_write_data_byte(waveform[i]); } } 在上述代码中,我们首先定义了一个波形数据数组,然后在无限循环中,将数据逐个发送到LCD中进行显示。使用lcd_set_position函数进行光标位置的设置,并使用lcd_write_data_byte函数将数据写入到LCD中。 请注意,这只是一个简单的例子,具体的代码实现可能因不同的LCD型号和控制器而有所不同。详细的代码和库函数应该参考特定的LCD和控制器的资料,以确保正确的实现。 总之,通过添合适的元件和设置相应的代码,我们可以使用Proteus模拟并验证LCD12864显示波形的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值