您的位置:首页 > 其它

单片机笔记之LCD1602显示屏

2016-01-05 19:45 267 查看
LCD1602显示屏概念:

工业字符型液晶,能够同时显示16x02即32个字符。

LCD1602显示屏原理图:



第1脚:VSS为电源地

第2脚:VCC接5V电源正极

第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。

第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。

第7~14脚:D0~D7为8位双向数据端。

第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。

LCD1602显示程序:

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^6; //定义数据命令选择端
sbit RW=P2^5; //定义读写选择端
sbit E=P2^7; //定义使能端
uchar shuju1[]="JackTao";
uchar shuju2[]="Helloworld";
void delay_ms(uint z) //延时函数(1毫秒)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

/*****************侧忙函数****************/
uchar Lcd1602_ReadBusy() //判断lcd1602是否处于忙的状态
{
uchar temp;
RS=0;
RW=1;
_nop_();
P0=0xff; //读某IO口数据前,先将该口置为1
/*原因:电路中存在的一个普遍的现象:高电平很容易被低电平拉低,而低电平一般不可能被高电平拉高。所以在读数据之前将单片机IO口拉高才不会影响原来数据线上的数据!*/
_nop_();
E=1;
_nop_();
temp=P0; //读取此时lcd1602的状态字
_nop_();
E=0;
return (temp&0x80); //如果忙
/*状态字为temp(8位2进制数)的最高位,最高位为1表示禁止读写,为0表示允许读写,即temp&0x80得1表示忙,得0表示不忙*/

}

/*****************写命令****************/
void Lcd1602_WriteCom(uchar com)
{
while(Lcd1602_ReadBusy()); //判忙
RS=0; //命令
RW=0; //写
_nop_();
P0=com; //准备发送命令
_nop_();
E=1; //由时序图知,使能端为高电平时才允许数据交换
_nop_();
_nop_();
E=0; //由时序图知,使能端在完成数据交换后要拉低
_nop_();
_nop_();
}

/****************写数据****************/
void Lcd1602_WriteData(uchar dat)
{
while(Lcd1602_ReadBusy()); //判忙
RS=1; //数据
RW=0; //写
_nop_();
P0=dat;
_nop_();
E=1;
_nop_();
_nop_();
E=0;
_nop_();
_nop_();
}

void Lcd1602_init() //初始化函数
{
delay_ms(15);
write_com(0x38); //显示模式设置
delay_ms(5);
write_com(0x38);
delay_ms(5);
write_com(0x38);
write_com(0x0c); //显示开
write_com(0x01); //显示清屏
write_com(0x06); //显示光标
}

void main()
{
uchar i,j;
Lcd1602_init(); //Lcd初始化
Lcd1602_WriteCom(0x80); //0x80是第一行的第一个字符的地址
for(i=0;i<7;i++)
Lcd1602_WriteData(shuju1[i]);
Lcd1602_WriteCom(0x80+0x40); //0xc0是第二行的第一个字符的地址,可以用0xc0,0x80+0x40,0x80|0x40等等
for(j=0;j<10;j++)
Lcd1602_WriteData(shuju2[j]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: