当前位置:文档之家› lcd1602四线驱动

lcd1602四线驱动

LCD_DATA|=Recdata&0xf0;//写低四位
LCD_en_write();
}
void LCD_set_xy( unsigned char x, unsigned char y )//写地址函数
{
unsigned char address;
if (y == 0) address = 0x80 + x;
-(Ov)SnUIAGIOP
-(φWMIUOI<rπ-(Ov)SnUIAGIOP-(Bzxo)PuGulluoQJUJMItOJ
-(Ov)SnUIAGIOP-(Bzxo)PuGulluoQJUJMItOJ
-(Ov)SnUIAGIOP-(Bzxo)PuGulluoQJUJMItOJ
一芒怨足ms⅛∕7(PIoA)UU「3」PIoA
1---GND
2---VCC
3---VO
4---RS
5---RW
6---EN
7到14--D0-D7
15--背景灯+
16--背景灯-
*/ #include <at89X52.h>
#include <intrins.h> #define LCD_DATA P2 sbit LCD1602_RS=P2^2; sbit LCD1602_EN=P2^3;

1-WIRE 等等,都可以以很少的I/O口实现更多的功能,当然这是以降低一定的 速度
为代价的。
显示器件多见的是LED数码管,LCD液晶屏等。一般的数码管成本低廉,在显 示内
容要求不多的时候适用;LCD液晶屏以更多的显示空间得到了许多人的爱好, 不过
成本上要高的多(市场价在 20元左右),本文以LCD1602为例说明如何驱动液晶屏。
{delay_nus(16);
LCD1602_RS=1; //RS=1
LCD_DATA&=0X0f;//清高四位
LCD_DATA|=Recdata&0xf0;//写高四位
LCD_en_write();
Recdata=Recdata<<4;//低四位移到高四位
LCD_DATA&=0X0f;//清高四位
void delay_1us(void) //1us延时函数
{
_nop_();
}
void delay_nus(unsigned int n) //N us延时函数
{
unsigned int i=0;
for (i=0;i<n;i++) delay_1us();
}
void delay_1ms(void) //1ms延时函数
{
unsigned int i;
for (i=0;i<1140;i++);
}
void delay_nms(unsigned int n) //N ms延时函数

-(φWMIU0l<rπ⅛s≡w∖∖o∙JXO=apu13l≡OF一vrvtr<m⅛s≡≡∖∖匚OXO芯VrVereDJOHSHZyO"SHlZOs<rπ
LCD1602 外接的控制接口有RS,R/W,E;数据接口为 DB7--DB0。总共有11跟 线与单
片机的I/O口连接,若使用标准的51单片机,至少占用了一个端口再加上另一 个端
口的部分I/O口。这再很多应用场合是不大可取的。所以很有必要减少连接数。 从
其数据手册上介绍的 4线连接方式可以达到只使用 7个I/O口即可满足要求,其中为
//1602_RWvoid LCD_init(void);
void LCD_en_write(void);
void LCD_write_command(unsigned char command) ;
void LCD_write_data(unsigned char Recdata);
-()SlUIIAeI①P(++Vu〉VOHDlO4-OH-UIP①usun
LCD_DATA&=0x0f;//清高四位
LCD_DATA|=command&0xf0;//写低四位
LCD_en_write();
}
void LCD_write_data(unsigned char Recdata)//写数据
LCD1602 4位数据线连接方式 驱动程序(转载)
2008-10-1411:00
LCD1602 4位数据线连接方式 驱动程序(转载)
/*
单片机I/O口使单片机资源的重要组成部分,也是用来扩展外围设备的必选资源,
尽可能以更少的I/O口实现更多的功能是单片机工程师追求的目标,现在的一些串
行器件也为这一目标的实现添加了更多的可能性,比如I2C总线,MAXIM力推
3个控制口RS,R/W,E和数据口的DB7--DB4;写入数据或指令的顺序是先写高 半个
字节,再写低半个字节。
其中P2口的高四位接到LCD1602的DB7-DB4,P2.2-P2.3分别接RS,E; RW接地
下面给出驱动源程序*/
/*
液晶LCD1602C使用4条数据线(D4~D7)
*/
/*
LCD引脚定义
-(91)SnU—API①P
一令、、(PUeluiUoQ⅛^QP①usun)puel!≡0QJHllα2πP-OA

HN409IeD」
-(I)SnU—API①P
二HN409IeD」
一温迪ms⅛∕γ(PloA)OuJMIUOIaCnPIOA
-(Z)SlUUIAGIOP∖∖IOXO)PUeWIOO—①二*—C□」∖∖-(QoXo)Pueu≡oo—①二JIlα2π底鸣皑Wy,8ZXO)PUl3l≡OQJUjMleDJ
void delay_nus(unsigned int n);
void delay_nms(unsigned int n);
//以下函数用于输出数字
int LCD_PutNum(unsigned long num,int XS,int pos);
int LCD_PutStr(unsigned char *DData,int pos);
void LCD_set_xy (unsigned char x, unsigned char y);
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);
void LCD_write_char(unsigned char X,unsigned char Y,unsigned char Recdata);
相关主题