技术文档

51单片机1602显示 5152单片机第10课:LCD1602显示实例

小编 2025-08-03 技术文档 23 0

5152单片机第10课:LCD1602显示实例

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

///////////////////////////////////////

uchar code table[]="http://shop36269";

uchar code table1[]="702.taobao.com/";

/////////////////////////////////////

sbit lcden=P1^2;

sbit lcdrs=P1^0;

sbit lcdrw=P1^1;

////////////////////////////////////

uchar num;

void delay_lcd(uint z);//延时程序声明

////////////////////////////////////

void delay_lcd(uint z)//延时程序

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void write_com (uchar com)//写命令

{

lcdrs=0;

lcdrw=0;

P0=com;

delay_lcd(5);

lcden=1;

delay_lcd(5);

lcden=0;

}

void writedate(uchar date)//写数据

{

lcdrs=1;

lcdrw=0;

P0=date;

delay_lcd(5);

lcden=1;

delay_lcd(5);

lcden=0;

}

void chushihua()//初始化程序

{

lcden=0;

write_com (0x38);//显示模式设置

write_com (0x0e);//显示开/关光标

write_com (0x06);//光标加1

write_com (0x01);//清屏

write_com (0x80);//第一行 数据指针位置,如果是 0X83:表示空三格

}

void main()//主程序

{

chushihua();//调用初始化程序

for (num=0;num<16;num++)//以下程序显示 http://shop36269

{

writedate(table[num]);

delay_lcd(300);

}

write_com(0x80+0x40);// 第二行显示

for (num=0;num<15;num++)//以下程序显示 702.taobao.com/

{

writedate(table1[num]);

delay_lcd(300);

}

while(1);

}

1602液晶屏的显示

1、1602字符型液晶又名1602液晶,是专门显示字母、数字、符号等的点阵型液晶模块。能够显示16x02即32个字符,即02行,16列。

2、1602液晶分为上下两行各16位显示,处于不同行时的字符显示地址如下

3、1602引脚图如下

  1脚:VSS接5V电源"-";

  2脚:VDD接5V电源"+";

  3脚:VO为对比度调整;VO是偏压信号,可接10K的3296精密电位器。或同样阻值的RM065/RM063蓝白可调电阻。

  4脚:RS为数据/指令寄存器选择位,RS=1时选择数据寄存器、RS=0时选择指令寄存器;

  5脚:R/W为读写信号线,R/W=1时进行读操作,R/W=0时进行写操作。当RS=0和RW=0时写入指令或者显示地址,当RS=0、RW=1时可以读忙信号,当RS=1、RW=0时可以写入数据;

  6脚:E端为使能端,下降沿有效;

  7~14脚:D0~D7为8位双向数据线;

  15脚:背光电源正极;

16脚:背光电源负极。

4、1602带有字库,只能显示字库中的字符,字符库如下图

5、指令表

1、 电路图

2、 程序设计

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit rs=P3^0;

sbit rw=P3^1;

sbit e=P3^2;

uchar code a[]="Welcome to JiDian142 Class!+_%$#@";

void delayu(uint u)

{

while(u--);

}

void delaym(uint m)

{

uchar i;

while(m--)

for(i=0;i<120;i++);

}

void zhiling(uchar com)

{

delayu(60);

rs=0;

rw=0;

P2=com;

e=1;

delaym(1);

e=0;

}

void shuju(uchar dat)

{

delayu(60);

rs=1;

rw=0;

P2=dat;

e=1;

delaym(1);

e=0;

}

void init()

{

zhiling(0x38);delaym(1);

zhiling(0x06);delaym(1);

zhiling(0x01);delaym(1);

zhiling(0x0c);delaym(1);

}

void main()

{

uchar i;

init();

zhiling(0x80);

for(i=0;i<16;i++)

{

shuju(a[i]);

}

zhiling(0x80+0x40);

for(i=16;i<32;i++)

{

shuju(a[i]);

}

while(1);

}

3、 下载程序并调试

另外,如果1602不显示,可从以下找原因。

1)、首先检查电路图是否画对,如果你的数据口用的是P0口,别忘记加上排阻。

2、检查仿真软件中的引脚接法是否与程序中的引脚一一相对应,如果不对应结果肯定出不来的。

3、最有可能出错的地方便是程序了。而程序当中可能出错的地方我碰到过几处。void write_com(uchar com)和void write_dat(uchar date)子程序中的延时函数delayus(60),时间过长或者过短都有可能显示不出来;void init()中的几个必备的指令使用不当也会导致无法显示;其他的原因一般都是小问题了,基本都能解决了。

相关问答

51单片机 lcd 1602 显示 字符?

LCD1602是不能直接显示变量数值的,只能显示ASCII码,即显示字符。因此,要显示变量数值,需要把变量的每一位数转换成字符0~9。字符0~9的ASCII码是0x30~0x39。...

1602 液晶显示 单片机 为何屏幕亮但不 显示 数字-ZOL问答

根据我试验的结果,1602的3脚通过470~510欧左右的电阻接地就能得到最佳对比度了。现在新型的1602还不需要接电阻。电位器用来调节对比度,保证显示清晰,若不用电...

自己制作的 单片机 最小系统 1602 液晶没有任何 显示 ,只有背光灯亮?怎么回事,求大神?

在没有任何程序写入的情况下,液晶不会有显示。一般情况下,需要调整外接的滑动变阻器获得最佳对比度,对比度太低,会显示很浅。在没有任何程序写入的情况下,...

1602 A 单片机 屏幕亮但不 显示 数字?

这种情况可能的问题是:1、对比度调整不合适,调整一下电路参数就可以解决。2、软件问题,这个需要看到源程序才知道问题所在。这种情况可能的问题是:1、对比...

51单片机1602 亮度怎么调节?

回答如下:单片机1602液晶显示屏的亮度可以通过调节背光电阻值来实现。具体方法如下:1.找到1602液晶显示屏的背光电阻,一般为贴片电阻,通常位于屏幕底部。2...

单片机 驱动的 1602 液晶 显示 不出字符,于 单片机 的晶振有关吗?

没有关系,因为只要说你的单片机能工作起来,就没有问题,如果单片机都没有工作起来,那就谈不上驱动了!在单片机能动作的前提下,要是保证程序没有错的情况下,...

什么是 显示 缓冲区?

单片机中的显示缓冲区就是几个变量或者一个数组而已,用于保存需要显示出来的数据。程序将需要显示的数据计算出来后保存在这里面,然后当数码管扫描函数运行时...

lcd 1602 与lcm 1602 相比较的优点?

LCD1602液晶显示优缺点:优点:1、是字符型液晶,显示字母和数字比较方便。2、控制简单。3、成本较低。缺点:1、显示的字体有大小限制。2、不能显示图形等等。3...

stm32f103vet6 单片机 怎么和 1602 ?

STM32大都用KEIL(MDK)编译,并可在KEIL里面通过JLink直接下载和仿真,也可以像51单片机那样通过串口把HEX文件下载(比JLink慢)另外STM32还可以用IAR代替KEIL...

...D转换电路、 1602 液晶 显示 电路构成的电涡流传感器微小位移...

[最佳回答]下面的都是上google网上在线翻译的,不准确,你需要对下面的答案修改一下!

猜你喜欢