
PI C16F877A 与Y M1602C 液晶的接口
设计与软件编程
刘健康,高 志,宋冬冬
(华东理工大学机械与动力工程学院,上海200237)
摘要:首先介绍一款字符型液晶显示器Y M1602C 的硬件结构以及显示驱动控制器KS0066U 的性能和特点;其次介绍了该液晶显示器与P I C16F877A 单片机的硬件接口电路设计;最后介绍了P I C16F877A 单片机在MP LAB I D E +P I CC 软件平台上的C 语言编程以及针对Y M1602C 的C 程序设计,完成显示的功能。
关键词:Y M1602C;P I C16F877A;接口;MP LAB -I D E
中图分类号:TP334 文献标识码:B 文章编号:1006-2394(2009)02-0052-03
I n terface D esi gn and Program for YM 1602C LCD Ba sed on P I C16F877A
L IU J ian 2kang,G AO Zhi,S ONG Dong 2dong
(M echanical Engineering I nstitute,East China University of Science and Technol ogy,Shanghai 200237,China )
Abstract:Firstly,an intr oducti on is given about hard ware structure of Y M1602C and perf or mance and characteris 2tics of LCD πs contr oller KS0066U.Secondly,a design of LCD dis p lay interface with P I C16F877A is discussed .A t last,the C language p r ogramm ing based on MAP LAB -I D E +P I CC for P I C16F877A is described and an exa mp le f or Y M1602C is als o intr oduced .
Key words:Y M1602;P I C16F877A;interface;MAP LAB -I D E
1 硬件电路设计
1.1 Y M1602C 液晶显示器原理简述
Y M1602C 是一款专门用于显示字母、数字、符号等
的点阵型液晶显示器,能显示16×2个字符,每个字符由5×7点组成,点间距为:3.02mm ×5.66mm,Y M1602C 的内部控制器为KS0066U ,其接口电路简单,兼容性好,能与八位单片机直接连接。其接口电路的控制管脚定义如表1所示,引脚控制功能说明如下:
DB0~DB7:数据总线。
RS:数据/指令选择信号。RS =1表示出现在数据总线上的是数据;RS =0表示出现在数据总线上的是指令或读出的状态。
E:在控制器时序为读时,低电平有效;在控制器时序为使能信号时,是个正脉冲,在下降沿处于写操作,在高电平时为读操作。
R /W:在控制器时序为写时,低电平有效;在控制器时序为读时,写选择信号,R /W =1为读,R /W =0为写。
表1 YM 1602C 液晶管脚定义
引脚号
名字
0/1电平功 能
1V ss —0V 2Vdd —+5V 3V 0—
0~5V
电源
4
RS
H /L
L:指令代码输入H:数据写5R /W H /L L:数据写H:数据读
6E H.H -L 信号势能
7D0H /L 8D1H /L 9D2H /L 10D3H /L 11D4H /L 12D5H /L 13D6H /L 14D7H /L
数据总线
15L -—
0V 16
L +
+
+5V
LCD 电源
・
25・仪表技术 2009年第2期
图1 P I C16F877A 与Y M1602C 控制原理图
1.2 P I C16F877A 单片机介绍及
接口电路设计
P I C16F877A 的主要性能有:具有高性能R I SC CP U;仅有35条指令,除程序分支指令为两个周期外,其余均为单周期指令;8K ×14个F LASH 程序存储器,368×8个数据存储器(RAM )字节,256×8EEPROM 数据存储器字节;8级深度的硬件堆栈;三个定时/计数器,2个捕获/比较器,10位多通道模/数转换器等。P I C16F877A 单片机有P ORT A ,P ORT B ,P ORTC,P ORT D,P ORTE 五个I/O 端口,可以作为液晶显示的控制端口,根据Y M1602C 液晶的原理和引脚特
性,采用P ORT D 端口与Y M1602C 的数据端口相连,将RB1,RB2,RB3与Y M1602C 的E,R /W ,RS
端口相连,其控制电路原理图如图1所示。2 软件设计
2.1 P I C 单片机C 语言编程简介
我们知道用C 语言来开发单片机系统软件的最大好处是编写代码效率高、软件调试直观、维护升级方便、代码的重复利用率高、便于跨平台移植。对P I C 系列的单片机来说,同样可以用C 语言来开发软件。M i 2cr ochi p 公司没有针对中低档系列P I C 单片机的C 语言编译器,需要第三方公司P I C 单片机的C 语言编译器,本文采用H I TECH 公司的P I CC 编译器,它稳定可靠,编译生成的代码效率高。
P I CC 编译器可以直接挂接在MP LAB -I D E 集成
开发平台下,实现一体化的编译连接和原代码调试。
基于P I CC 编译环境写P I C 单片机程序的基本方式和标准C 程序类似,程序一般由以下几个主要部分组成:
(1)在程序的最前面用#include 预处理指令引用包含头文件,其中必须包含一个编译器提供的“p ic .h ”文件,实现单片机内特殊寄存器和其他特殊符号的声明;(2)用“_CONF I G ”预处理指令定义芯片的配置位;(3)声明本模块内被调用的所有函数类型,P I CC 将对所调用的函数进行严格的类型匹配检查;(4)定义全局变量或符号替换;(5)实现函数(子程序),特别注意m ian ()函数必须是一个没有返回的死循环。2.2 Y M1602C 液晶显示的C 语言程序的实现
Y M1602C 液晶的显示驱动控制器为KS0066U,它
完成Y M1602C 液晶的显示功能,KS0066U 的控制由
一条一条的指令控制;根据P I C16F877A 与液晶模块的控制接口原理图,P I C16F877A 单片机向KS0066U 发送固定时序的指令时,KS0066U 就完成显示的功能,KS0066U 共有11条指令,指令裕时简单,指令一览表如表2所示。
表2 KS0066U 的指令格式表
(“3”表示任意值,在实际应用时一般认为是“0”)指令名称
控制信号控制代码
D /I R /W D7D6D5D4D3D2D1D0
清屏0000000001
归home 位0000000013
输入方式设置00000001I/D S 显示状态设置0000001
D
C
B
光标画面滚动000001S/C R /L 33工作方式设置
00001
DL
N
F
3
3
CGRAM 地址设置0001
A5A4A3A2A1A0
DDRAM 地址设置
001
A6A5A4A3A2A1A0
读BF 和AC 01BF AC6AC5AC4AC3AC2AC1AC0
写数据10数 据读数据
1
1
数 据
根据上述指令要求以及P I C16F877A 单片机的特
点,Y M1602C 液晶显示的主要步骤为初始化单片机系统、初始化LCD 系统、端口控制、工作方式设置、开始显示,清屏、调用显示函数等。其具体程序流程图如图
・
35・2009年第2期
仪表技术
2所示
。
图2 P I C16F877A 控制Y M1602C 的显示流程图根据图2的程序流程图以及P I C 单片机基于
P I CC 编译器的C 语言编程规范。将Y M1602C 液晶显示器的程序模块化,主要包括LCD 显示的初始化函数,P I C16F877A 单片机向LCD 写数据函数,P I C16F877A 单片机向LCD 写命令函数,LCD 显示函数等,部分程序代码如下:
#include
#define LCD_DAT A P ORT D #define LCD_RS RB3#define LCD_RW RB2#define LCD_E RB1
void Delay_1m s (void ) //延时函数{ char j;
f or (j =0;j <130;j ++)
{;}
}
void Syste m_init (void )//系统初始化函数{ I N TCON =0x00;
//禁止总中断和外围中断OPTI O N =0x00;//设置外部中断GI E =0;//0=禁止所有中断T R I S D =0x00;//设置端口D 为输出模式
P ORT D =0x00;}
void W rite_Data_Lcd (unsigned char data ){ LCD_DAT A =data;
//向LCD 写数据函数LCD_RS =1;LCD_RW =0;LCD_E =0;Delay_1m s ();LCD_E =1;}
void W rite_Command_Lcd (unsigned char data ){ LCD_DAT A =data;
//向LCD 写命令函数LCD_RS =0;LCD_RW =0;LCD_E =0;
Delay_1m s ();LCD_E =1;}
void main (void ){
Syste m_init ();LCD_DAT A =0;
W rite_Command_Lcd (0x38);Delay_1m s ();
W rite_Command_Lcd (0x38);//显示模式设置W rite_Command_Lcd (0x08);//关闭显示W rite_Command_Lcd (0x01);//显示清屏W rite_Command_Lcd (0x06);//显示光标移动设置W rite_Command_Lcd (0x0c );//显示开及光标移动设置while (LcdBuf !=’\\0’)//显示数据
{
dis p lay_string (x,y,LcdBuf );
}}
3 结论
本文介绍了Y M1602C 液晶模块的性能特点和工
作原理,以P I CF16F877A 单片机为控制核心实现了对Y M1602C 液晶的控制,完成了硬件电路接口设计和基于C 语言的程序设计,并在电路板上完成实验。同时,可以移植本文中C 语言程序,修改其中的参数,就可以实现复杂的功能。本文所讨论的内容同样适合其他型号的MCU 和液晶显示模块。参考文献:
[1]李学海.P I C 单片机实用教程—基础篇[M ].北京:北京航
空航天大学出版社,2002.
[2]郭强.液晶显示应用技术[M ].北京:电子工业出版社,
1999.
[3]马成,何陪祥,李庆东.图形点阵式液晶显示模块与51单
片机的接口设计[J ].应用天地,2007,5(2).
[4]马洪芹,吴锡淳.单片机控制液晶模块显示[J ].电子科技,
2008,1(3).
[5]刘华昌,李东,谈效华.基于P I C16F87X 的液晶显示模块接
口技术设计[J ].光学与光电技术,2008,6(5).
(丁云编发)
声 明
为适应我国信息化建设,扩大本刊及作者知识信息交流渠道,本刊已被《中国学术期刊网络出版总库》及CNKI 系列数据库收录,其作者文章著作权使用费与本刊稿酬一次性给付。如作者不同意文章被收录,请在来稿时声明,本刊将作适当处理。
・45・仪表技术
2009年第2期
