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

本实验回顾:是关于字符型LCD的显示原理的学习以及掌握字符型LCD显示字符的用法。

1.使用LCD显示两行字符,第一行显示“hello + 英文名字”,第二行显示时间(正确的年月日)

!注意,这里使用1602是无法显示汉字的,只能显示大小写和阿拉伯数字。

(万年历实验之后有空再更新)

-------------------------------------------------------------------------分割线


原理图附上:

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

这里有几个主要注意:

1.如果D0-D7要接在P0口的话,必须接上拉电阻,否则仿真时会出现灰色的电平,然而直接接P2口便不需要上拉电阻。51芯片一直要注意这个问题。

2.本实验用到的LM016L虽然只有14个引脚,而实物是16个,但是这没什么关系,就少了个背光电池的引脚,其他功能一样,也就是仿真用LM016L就是1602。

3.芯片上E(使能端)直接接P3.4,RS接P3.5,RW可以直接接地,因为是读写控制端,然而本实验不需要从液晶屏读取什么,所以直接低电平即可。VDD接电源,VSS接地,D0-D7接P2。


效果图如下:

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

代码如下:

#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语言编程》。

你可能感兴趣的:(单片机C编程)