基于89S52的LCD1602程序设计

2012-04-29 20:23林嘉
电脑知识与技术 2012年26期
关键词:程序设计单片机

林嘉

摘要:液晶显示器以其零辐射,低耗能,散热小,纤薄轻巧等诸多优点,已经在各个领域中得到了广泛的应用。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).

猜你喜欢
程序设计单片机
基于Visual Studio Code的C语言程序设计实践教学探索
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
从细节入手,谈PLC程序设计技巧
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
基于单片机的平衡控制系统设计
高职高专院校C语言程序设计教学改革探索
OBE理念下基于Greenfoot的Java程序设计课程教学改革
PLC梯形图程序设计技巧及应用