1602为何第一行只显示一排方块?求大神帮忙
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P1^0; //数据/命令选择端
sbit rw=P1^1; //读写选择端
sbit e=P1^2; //使能信号端
sbit dula=P1^5; //锁存数码管,不让工作
void delay(uint); //延时
void write_com(uchar); //写命令
void write_dat(uchar); //写数据,即显示内容
void init(); //初始化子函数
/*****************************/
void main()
{
init();
write_com(0x80);
write_dat('c');
write_com(0x80+0x40);
write_dat('s');
while(1);
}
/*******************************/
void init()
{
dula=1;
e=0;
write_com(0x38); //设置16*2显示
write_com(0x0d); //设置显示开,不显示光标
write_com(0x06); //写一个字符后地址指针加1
write_com(0x01); //显示清0,数据指针清0
}
/******************************/
void write_com(uchar com)
{
rs=0;
rw=0;
P0=com;
delay(5);
e=1;
delay(5);
e=0;
}
/******************************/
void write_dat(uchar dat)
{
rs=1;
rw=0;
P0=dat;
delay(5);
e=1;
delay(5);
e=0;
}
/******************************/
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=123;j>0;j--);
}
#define uint unsigned int
#define uchar unsigned char
sbit rs=P1^0; //数据/命令选择端
sbit rw=P1^1; //读写选择端
sbit e=P1^2; //使能信号端
sbit dula=P1^5; //锁存数码管,不让工作
void delay(uint); //延时
void write_com(uchar); //写命令
void write_dat(uchar); //写数据,即显示内容
void init(); //初始化子函数
/*****************************/
void main()
{
init();
write_com(0x80);
write_dat('c');
write_com(0x80+0x40);
write_dat('s');
while(1);
}
/*******************************/
void init()
{
dula=1;
e=0;
write_com(0x38); //设置16*2显示
write_com(0x0d); //设置显示开,不显示光标
write_com(0x06); //写一个字符后地址指针加1
write_com(0x01); //显示清0,数据指针清0
}
/******************************/
void write_com(uchar com)
{
rs=0;
rw=0;
P0=com;
delay(5);
e=1;
delay(5);
e=0;
}
/******************************/
void write_dat(uchar dat)
{
rs=1;
rw=0;
P0=dat;
delay(5);
e=1;
delay(5);
e=0;
}
/******************************/
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=123;j>0;j--);
}
具体我没看,建议你看一下郭天祥的关于1602的操作
(可能是时序问题)
能力有限,别的帮不了了
我找着原因了,就是插线全接反了就会第一行全显示方块,希望对你以后学的时候有用,这个程序没问题
线接反了具体什么意思?我的 1602 也只显示一排方块,弄一下午了。求教!
接1602的那一排插针 插错方向了,反过来插一下就OK了
喔哦,那我俩的问题还不太一样。不过还是谢谢了。
你的程序没有等待繁忙标志函数
不用加也可以运行
