单片机 液晶显示实验 (原理图加代码)

2019-04-15 18:33发布

本实验回顾:是关于字符型LCD的显示原理的学习以及掌握字符型LCD显示字符的用法。1.使用LCD显示两行字符,第一行显示“hello + 英文名字”,第二行显示时间(正确的年月日)!注意,这里使用1602是无法显示汉字的,只能显示大小写和阿拉伯数字。(万年历实验之后有空再更新)-------------------------------------------------------------------------分割线
原理图附上:
这里有几个主要注意:1.如果D0-D7要接在P0口的话,必须接上拉电阻,否则仿真时会出现灰 {MOD}的电平,然而直接接P2口便不需要上拉电阻。51芯片一直要注意这个问题。2.本实验用到的LM016L虽然只有14个引脚,而实物是16个,但是这没什么关系,就少了个背光电池的引脚,其他功能一样,也就是仿真用LM016L就是1602。3.芯片上E(使能端)直接接P3.4,RS接P3.5,RW可以直接接地,因为是读写控制端,然而本实验不需要从液晶屏读取什么,所以直接低电平即可。VDD接电源,VSS接地,D0-D7接P2。
效果图如下:
代码如下:#include
#define uchar unsigned char
#define uint unsigned int 
uchar code table[]="HELLO HONORWH";
uchar code table1[]="2018 5 6";
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit rw=P3^6;
uchar num;
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=0;y<110;y++);
}
void write_com(uchar com)
{
lcdrs=0;
P2=com;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P2=date;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void init()
{
dula=0;
wela=0;
lcden=0;
rw=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main()
{
init();
write_com(0x80);
for(num=0;num<13;num++)
{
write_data(table[num]);
delayms(5);
}
write_com(0x80+0x40);
for(num=0;num<8;num++)
{
write_data(table1[num]);
delayms(5);
}
while(1);
}---------------------------------------------------------分割线博主当做简单复习,不喜勿喷。
学习内容根据《51单片机C语言编程》。