微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 1602为何第一行只显示一排方块?求大神帮忙

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--);
}

具体我没看,建议你看一下郭天祥的关于1602的操作
(可能是时序问题)
能力有限,别的帮不了了

我找着原因了,就是插线全接反了就会第一行全显示方块,希望对你以后学的时候有用,这个程序没问题

线接反了具体什么意思?我的 1602 也只显示一排方块,弄一下午了。求教!

接1602的那一排插针 插错方向了,反过来插一下就OK了

喔哦,那我俩的问题还不太一样。不过还是谢谢了。

你的程序没有等待繁忙标志函数

不用加也可以运行

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top