林嘉
摘要:液晶显示器以其零辐射,低耗能,散热小,纤薄轻巧等诸多优点,已经在各个领域中得到了广泛的应用。LCD1602作为现在电子产品的通用器件,一般用于显示数字、专用符号和图形。该文采用单片机系统对LCD1602进行控制,分析LCD1602液晶显示器的管脚功能,对LCD1602显示进行程序设计。
关键词:单片机;LCD1602;程序设计
中图分类号:TP 368.2文献标识码:B文章编号:1009-3044(2012)26-6376-03
Program Design of LCD1602 Based on the 89S52
LIN Jia
(HTC Hangzhou Information Technology Service Center, Hangzhou 363000, China)
Abstract: Liquid crystal display with their zero radiation, low energy consumption, small heat, fiber thin light, and many other advantages, has been widely used in various field. LCD1602 as electronic products a universal device, are used for display Num? bers, special symbols and graphics. This paper uses single- chip system to control LCD1602, analyzes the pin function of LCD1602 display, design the program of LCD1602 display.
Key words: single-chip; LCD1602; program design
1概述
采用单片机系统对LCD1602进行控制,具有接口更加简单可靠,编程易于实现,操作更加方便,显示质量高的优点。液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示目的,在重量上比相同显示面积的传统显示器要轻得多。图1为LCD1602与89S52的硬件连接图.[1]
2 LCD1602简介
LCD1602液晶显示器是目前广泛使用的一种字符型液晶显示模块[2]。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。LCD1602中,16代表每一行可以显示16个字符,02代表总共可以显示两行字符。目前市场上的字符液晶通常有14条引脚或16条引脚,16条引脚多出来的两条线是背光电源线和地线,表1为LCD1602的管脚功能。
LCD1602的Vss端需接一个电位器,用以调整流过液晶的电流,如果电流太大,会产生“鬼影”,使液晶显示有重影现象,太小则整个屏幕比较暗,常用1K的调节电位,Vdd端连接5V电源电压,Vee接地,RS为数据/命令选择,RE为读/写选择,E为使能信号,D0-D7为双向数据线,BLA为背光电源正极,BLK为背光电源负极,可分别与5V电源正负极相连。
3程序的设计编写
LCD液晶器件的软件驱动程序为[3]:判断液晶是否处于忙状态,若忙,则继续进行判定,当不忙时,想液晶写入命令,如让液晶清屏、光标向右移位、光标是显示是否打开等,这些都可以放在液晶初始化函数里实现,在软件编写时将各自的头文件包含在对方源文件中,互相调用。
下面分别为LCD1602显示的源代码及头文件:
/ /液晶控制与显示驱动源程序LCD1602.c//
#include
#include
#include
#include "LCD1602.h"
//---------------忙检查-------------------//
uchar LCD_Busy_Check()
{uchar LCD_Status;
RS = 0;
RW = 1;
E = 1;
delay4us();
LCD_Status = P0;
E = 0;
return LCD_Status;
}
//--------------向LCD写入命令--------------------//
void Write_LCD_Command(uchar cmd)
{while((LCD_Busy_Check()& 0x80)==0x80); //忙等待
RS = 0;
RW = 0;
E = 0;
P0 = cmd;
delay4us();
E = 1;
delay4us();
E = 0;
}
//-----------向LCD写入一个字节的数据函数-----------------*/
void Write_LCD_Data(uchar dat)
{while((LCD_Busy_Check()&0x80)==0x80);
RS = 1;
RW = 0;
E = 0;
P0 = dat;
delay4us();
E = 1;
delay4us();
E = 0;
}
//-----------LCD初始化-----------------*/
void Initialize_LCD1602() //液晶初始化函数
{
Write_LCD_Command(0x38); //功能设置,数据长度为8位,双行显示,5×7点阵字体
delay50us(10);
Write_LCD_Command(0x0C); //显示开,关光标
delay50us(10);
Write_LCD_Command(0x06); //字符进入模式:屏幕不动,字符后移
delay50us(10);
Write_LCD_Command(0x01); //清屏
delay50us(10);
}
//-----------在LCD上显示字符串-----------------*/
void LCD_Display(uchar *str)
{
uchar i;
for(i=0;i { Write_LCD_Data(str[i]);delay50us(100); } / /液晶控制与显示驱动头文件LCD1602.h// #ifndef __lCD1602_H__ #define__LCD1602_H__ #include #define dat_port P0 #define uchar unsigned char #define uint unsigned int #define delay4us() {_nop_();_nop_();_nop_();_nop_();} sbit RS=P2^0;//RS=1数据RS=0命令 sbit RW=P2^1;//RW=1读取RW=0写入 sbit E=P2^2;//E使能信号 uchar LCD_Busy_Check();//忙检查 void Write_LCD_Command(uchar cmd);//向LCD写入命令 void Write_LCD_Data(uchar dat); //向LCD写入一个字节的数据函数 void Initialize_LCD1602(); //液晶初始化函数 void LCD_Display(uchar *str);//在LCD上显示字符串 #endif 接好硬件,通过冷启动方式将程序所生成的.hex文件下载到单片机运行后,复位单片机,然后可在学习板上看到液晶的显示的字符 4结束语 本文介绍了LCD1602的工作原理并介绍各管脚的功能,用C语言对LCD1602的显示程序进行设计,要想熟练的掌握对LCD1602编程,必须熟悉操作基本的编程语言,通过不断的实践,不断的摸索,才能发现问题,对问题进行分析,才能找出问题的解决方法,从而不断的提高LCD1602的编程技巧,使程序得到最大程度的优化。 参考文献: [1]赵亮.跟我学单片机(七)[J].电子制作,2011(7):74-77. [2]于志赣,刘国平,等.液显LCD1602模块的运用[J].机电技术,2009(3):21-23. [3]刘伏文.单片机C和汇编语言混合编程[J].电子制作,2007(6).