技术文档

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

小编 2024-11-24 技术文档 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()中的几个必备的指令使用不当也会导致无法显示;其他的原因一般都是小问题了,基本都能解决了。

相关问答

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

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

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

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

52 单片机 烧入程序, 1602 只亮,不 显示 ?

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

51单片机 字符液晶屏(LMC 1602 )输出端RS,RW还有E分别都有什么作用?

从左向右,1,2,3是电源和亮度(不同的1602型号对应也不同),4,5,6,是rs,rw,e,一般是这样的,就算接错了,在单片机里面重定义就行了从左向右,1,2,3是电源和亮度(不...

为什么 单片机 都选择LCD 1602 ?

因为LCD1602是学单片机时最简单的入门方式。1602液晶显示屏可以显示两行,每行16个字符。1602液晶显示屏操作不复杂,总线接口简单,使用几个IO口就可以了。很...

51单片机 ,通过NRF24L01发射、接收,最后用LCD 1602显示 温...

新浪共享上有源码和电路图,去下载即可已通过测试

单片机 Proteus仿真中引脚有时电平为,灰色,代表什么?

默认的灰色代表电平未知,红色高,蓝色低,这些都可以自己设定,好像在倒数第三还是第四个菜单里,印象中好像是有关颜色的选项,里面可以设定系统的颜色默认的灰色...

LCD 1602 在编写程序写指令用到OX80、OX30分别代表什么意思?

write_cmd(OX80+OX40);表示在第二行第一位显示write_cmd(OX80);表示在第一行第一位显示write_date(OX30+shi);中OX30+0,1,2,3~9是表示...

英语翻译本论文介绍了基于AT89 C51单片机 为核心的、以ADC0808...

[最佳回答]ThispaperintroducesthebasedonAT89C51asthecore,toADC0808analog-to-digitalconversionchip...

单片机 中的LCD-ZOL问答

单片机中的LCD显示器讨论回答(7)看你的程序,大概猜出应该是在液晶第二行显示时分秒信息Voidwrite_sfm(ucharadd,uchardate),add看程序是指LCD第二...

猜你喜欢