欢迎来到朵拉利品网
知识中心
资讯
  • 资讯
  • 产品
  • 供应商
您的位置: 朵拉利品网 >  知识中心 > 1602液晶显示 1602液晶显示问题
1602液晶显示 1602液晶显示问题
2019-07-28 12:22:58 来源:朵拉利品网

1, 1602液晶显示问题



不是这样的。我不知道你的具体电路。但你只要稍作修改我给你的程序即可。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="1.256";//这是你要显示的数据
sbit lcden=P3^4;//这是LCD使能端
sbit lcdrs=P3^5;//这是LCD写控制端
sbit dula=P3^6;//段锁存
sbit wela=P3^7;//位锁存;这两个锁存是我的具体电路,不一定要写
uchar num;
void delay(uchar z)//短延时函数
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_cmd(uchar cmd)//LCD写命令函数
{
lcdrs=0;//写指令控制端为低
P0=cmd;
delay(5);
lcden=1;//给个高脉冲结束;因初始化为低
delay(4);
lcden=0;
}
void write_data(uchar date)//写数据函数
{
lcdrs=1;//写数据控制端高电平
P0=date;
delay(5);
lcden=1;//给个高脉冲结束
delay(4);
lcden=0;
}
void init()//初始化函数。
{
dula=0;
wela=0;
lcden=0;
write_cmd(0x38);//这几处是给LCD写命令,具体你可以看1602说明。
write_cmd(0x0c);
write_cmd(0x06);
write_cmd(0x01);
}
void main()
{
init();
write_cmd(0x80);
for(num=0;num<5;num++)//五个字符,即1.256
{
write_data(table[num]);
delay(5);
}
while(1);
}
不明白的话再说吧。

2, 求1602液晶显示程序



1602液晶的程序我有,要做数字锁的话其实用到液晶也不多。
因为你显示密码是时候不应该都是现实*****吗?
你只需把键盘写入的数据存在一个数组中,然后跟密码数组对比就好了。
还有就是值得注意的是数据类型问题。
输入的键值看你处理的方式而定,密码存放的格式,还有输出显示的是ascll码。注意转换。
下面附带一段51的1602LCD的C程序,自己仔细琢磨。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar table[16]="abcdefghijklmnyz";
uchar table1[16]="0123456789abcdef";
sbit lcden=P2^0;
sbit lcdrs=P2^1;
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{ wela=0;
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{ wela=0;
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void main()
{
init();
for(num=0;num<16;num++)
{
write_data(table[num]);
delay(20);
}
write_com(1);
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_data(table1[num]);
delay(20);
}
while(1);
}

3, 求LCD1602液晶显示模块的功能 结构 和详细介绍 不胜感谢



1.简介
工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)
注:为了表示的方便 ,后文皆以1表示高电平,0表示第电平。
2.管脚功能
1602采用标准的16脚接口,其中:
第1脚:VSS为电源地
第2脚:VDD接5V电源正极
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
第6脚:E(或EN)端为使能(enable)端。
第7~14脚:D0~D7为8位双向数据端。
第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。
3.操作控制
操作控制表
操作
读状态
写指令
读数据
写数据
输入
RS=0,RW=1,E=1
RS=0,RW=0,
D0~7=指令码,E=H脉冲
RS=1,RW=1,E=1
RS=1,RW=0,
D0~7=数据,E=H脉冲
注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再
4.字符集
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如"A"。
以下是1602的16进制ASCII码表地址:
读的时候,先读左边那列,再读上面那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
[编辑本段]指令集
1602通过D0~D7的8位数据端传输数据和指令。
显示模式设置: (初始化)
0011 0000 [0x38] 设置16*2显示,5*7点阵,8位数据接口;
显示开关及光标设置: (初始化)
0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)
0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1),
N=0(读或写一个字符后地址指针减1 &光标减1),
S=1 且 N=1 (当写一个字符后,整屏显示左移)
s=0 当写一个字符后,整屏显示不移动
数据指针设置:
数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)
其他设置:
01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。

6, 单片机 1602液晶不能显示



你的write_com跟write_data并没有做到write的动作,因为你的lcdrw都没动作,底下给你参考一下
void write_com(uchar com)
{
lcdrs=0;
lcdrw=0;
P2=com;
delay(5);
lcden=1;
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
lcdrw=0;
P2=date;
delay(5);
lcden=1;
lcden=0;
}

相关概念


字符

在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信息。

16

16(十六),是15与17之间的自然数。 16是4的 平方。