师 磊,纪松波(内蒙古工业大学信息学院,010080)
STC15系列单片机与LC0811型液晶屏软硬件接口的设计
师 磊,纪松波
(内蒙古工业大学信息学院,010080)
摘要:为了实现对单行8个英文字符或数字的信息显示需求,提出了一种基于STC15F2K60S2单片机的LC0811-LY液晶显示屏的硬件接口设计,并编程实现信息显示功能。该系统的软件部分采用keil4开发,使用C语言进行编写。实际应用表明,该系统软硬件设计稳定可靠、操作简便,达到了设计要求。
关键词:单片机;液晶屏;stc15;0811
随着小型智能化电子产品的普及,普通的LED数码管只能用来显示数字,如果遇到要显示英文字母、图形或汉字时,则必须选择使用液晶显示屏(LCD)。液晶显示屏基本可分为两种类型,一种是图形模式LCD,既能显示中英字符和数字,又能显示图形,但控制操作较复杂;另一种为字符模式LCD,专门用于显示字母、数字、符号等的点阵型液晶显示屏,它是由若干个5X7或5X11等点阵字符组成,每一个点阵字符位都可以显示一个字符,点阵字符位之间的一个点距的间隔起字符间距和行距的作用。本设计方案使用STC15F2K60S2单片机和LC0811-LY字符屏实现单行8个英文字符或数字的信息显示功能。
图1 LC0811-LY接口电路图
液晶显示系统由STC15F2K60S2单片机和LC0811-LY液晶显示模块构成。STC15F2K60S2是宏晶公司最新STCl5系列增强型8051单时钟周期芯片,速度比普通8051快8~12倍。LC0811-LY液晶显示模块是一种单行的字符型液晶显示屏,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由8个5X8的点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有0.7mm的间隔,起到了字符间距的作用。
液晶屏与单片机的连接方式采用并行连接模式,图1为液晶显示屏接口电路图。使用单片机的P2口全部和P1口的部分引脚与LC0811-LY液晶显示屏连接,其中单片机P1.0接显示屏的RS,P1.1接R/W,P1.2接E,P2接DB0~DB7。
LC0811-LY的引脚排列如图1所示,它有16个引脚外界相连,各引脚功能如下:
1)GND:接地;
2)VCC:接+5V电源;
3)VO:对比度调整端;
4)RS:寄存器选择端,H为数据寄存器,L为指令寄存器;
5)R/W:读写控制端,H为读取模式,L为写入模式;
6)E:使能控制端;
7)DB0~7:数据总线;
8)BL VCC:背光正极,接+5V;
9)BL GND:背光负极,接地;
图2 LC0811-LY初始化子程序流程图
表1 LC0811-LY控制指令表
显示控制软件使用keil4开发,使用C语言编写。
2.1 LC0811-LY初始化子程序
如图2所示,在对LC0811-LY液晶显示模块的初始化时,首先要对其进行数据位数、显示行数和显示模式的功能设定;然后设置显示、光标、光标闪烁的开关;最后设置液晶模块显示字符时光标或是整屏向左或右移动。需要注意的是,LC0811-LY液晶模块上电后内部复位电路会自动进行初始化设置,BF始终为忙状态直到初始化结束,如需要更改初始化设置,在输入功能设定指令时不要检查忙状态,之后输入指令前都要判断液晶模块是否处于忙状态。LC0811-LY控制指令如表1所示。
指令功能:
1)输入模式设置(默认值:0x06):I/D=1,光标右移。I/ D=0,光标左移。SH=1,整屏移动。
2)显示开关设置(默认值:0x08):D=1,整体显示开。C=1,光标开。B=1,光标闪烁开。
3)光标或显示移位:光标或显示移位指令可使光标或显示在没有读写数据的情况下,向左或向右移动,指令不改变DDRAM的内容。
4)功能设定(默认值:0x30):D/L=0/1,4/8位数据。N=0/1,单/双行显示。F=0/1,5*7/5*10点阵显示模式
初始化子程序:
void lcd_init()
{
delay_ms(30); //延时30ms
wr_ctrl(0x38); //工作方式设置:8位数据, 2行显示, 5x8字体
delay_ms(1); //延时1ms
wr_ctrl(0x38); //工作方式设置:8位数据, 2行显示, 5x8字体
delay_ms(1); //延时1ms
wr_ctrl(0x38); /*连续写3次工作方式设置指令以确保LCD初始化
写工作方式设置指令前不要检测忙状态*/
delay_ms(1);
wr_ctrl_busy(0x08); /*关显示,光标关,光标不闪烁从关显示指令起,
必须检测忙状态,否则要延时等待*/
wr_ctrl_busy(0x01); //清屏
wr_ctrl_busy(0x06); //输入方式设置: 地址自动加1,画面不移动
wr_ctrl_busy(0x0c); //开显示,光标关,光标不闪烁
wr_ctrl_busy(0x00|0x80);//设置LCD显示地址为00H(第一行第1个位置)
}
2.2 LC0811-LY显示子程序
图3 显示子程序流程图
LC0811-LY内部有两个8位寄存器,分别为指令寄存器(IR)和数据寄存器(DR),由RS引脚控制写入的寄存器。如图3所示,初始化完毕后,通过拉低RS与R/W引脚向DR发送显示数据。时序如表2所示。由于STC15F2K60S2为1T单片机,一条指令时间小于显示屏使能端要求的最小延时,因此在读写数据时需要在使能端拉高适当延时后再将其拉低。
表2 LC0811-LY时序表
显示子程序:
void wr_data_busy(uchar dispdata)
{
lcd_busy(); //检查忙状态
LCD_RW = 0; //写入模式
LCD_RS = 1; //数据模式
LCD_BUS = dispdata; //送入要显示的数据
LCD_E = 1; //拉高使能读取数据
_nop_(); //读取数据延时
LCD_E = 0; //关闭使能
}
本文以STC15F2K60S2单片机为开发平台,对LC0811-LY液晶显示屏的特性与工作原理进行了研究,并提出了液晶显示系统的硬件接口设计。在此系统的硬件平台下,对LC0811-LY液晶显示屏的时序与指令系统进行了深入研究,进而提出了LC0811-LY液晶显示模块的初始化与显示程序的软件设计。该系统最终实现了单行8个英文字符或数字的信息显示功能,达到了预期的目标,可为实际工程应用提供参考。
参考文献
[1] 安红霞. 基于AT89S52单片机的1602型液晶屏显示技术研究[J]. 牡丹江师范学院学报:自然科学版, 2014(3):23-24.
[2] 汤泽容. 基于MCS-51单片机的液晶1602显示设计[J]. 科学与财富, 2013(12):114-114.
[3] 欧伟明. 液晶显示模块TC1602A与单片机的接口技术[J].电子设计工程, 2003(3):18-22.
[4] STC15F2K60S2单片机数据手册.
[5] LC0811-SFLYH6-D数据手册.
[6] 袁欢, 曾先文, 徐讳. 1602LCD液晶显示[J]. 商品与质量:学术观察, 2012:104-104.
[7] 张东伟, 杨中华, 杨国付. 基于μPSD3234A单片机和LCD1602液晶显示模块的设计[J]. 杨凌职业技术学院学报, 2012, 11(1):7-9.
[8] 于志赣, 刘国平, 张旭斌. 液显LCD1602模块的应用[J]. 机电技术, 2009, 32(3):21-23.
[9] 赵亮. 液晶显示模块LCD1602应用[J]. 电子制作, 2007(3).
[10] 隋清江. 基于PROTEUS的LCD1602接口设计与仿真[J].微计算机信息, 2010, 26(19):171-172.
[11] 任艳艳, 牛鑫. 基于STC15F2K60S2的便携式低频信号发生器设计[J]. 济源职业技术学院学报, 2013, 12(1):18-21.
The design of STC15 Series MCU and LC0811 type LCD screen software and hardware interface
Shuai Lei,Ji Songbo
(College of information, Inner Mongolia University of Technology, 010080)
Abstract:In order to realize the information of single eight English character or number display requirements proposed a hardware interface design based on the STC15F2K60S2 MCU LC0811-LY liquid crystal display screen, and programming to realize information display function. The software part of the system uses keil4 development,the use of C language to prepare.The practical application shows that the system is stable and reliable,easy to operate,and the design requirements are achieved.
Keywords:single chip microcomputer;LCD screen;stc15;0811