1602显示器不能显示字符,哪位大神帮忙看一下
程序如下:(程序感觉没问题)
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit leden=P3^2;//使能控制端
sbit ledrs=P3^0;//命令、数据控制端
sbit ledrw=P3^1;//为读写控制端
uchar code table[]="0123456789";
uchar code table1[]=":";
uchar num;
uint a=0,b=0,c=0,d=0,e=0,f=0,i=0;
void dy(uint z)
{
uint q,y;
for(q=z;q>0;q--)
for(y=110;y>0;y--);
}//延时函数
void ss(uint t)//写命令
{
哪位大神帮忙支支招
线路或者屏的问题
程序没有问题吧
线路已经检查好几遍了
那既然肯定程序无问题 那么有可能是显示器的问题
这个换新屏看看
0.0,,要先打开寄存器啊,,,,,,有使能管脚的
0.0,,要先打开寄存器啊,,,,,,有使能管脚的
0.0,,要先打开寄存器啊,,,,,,有使能管脚的
上面程序上传不完整
今天重新上传了
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit leden=P3^4;//显示器6管脚为使能控制端
sbit ledrs=P3^2;//显示器4管脚为命令、数据控制端
sbit ledrw=P3^3;//显示器5管脚为读写控制端
uchar code table[]="0123456789";
uchar code table1[]=":";
uchar num;
uint a=0,b=0,c=0,d=0,e=0,f=0,i=0;
void dy(uint z)
{
uint q,y;
for(q=z;q>0;q--)
for(y=110;y>0;y--);
}//延时函数
void ss(uchar t)//写命令
{
ledrs=0;//写命令:rs=0;使能en为高电平
P0=t;
dy(10);//延迟
leden=1;//输入使能为高电平
dy(10);
leden=0;
}
void sw(uchar n) //写数据,rs=1;使能为低,e=0;
{
ledrs=1;
P0=n;
dy(10);
leden=1;
dy(10);
leden=0;
}
void init() //初始化
{
ledrw=0;
leden=0;
ss(0x38);// 设置16*2显示,5*7点阵,8位数据接口
ss(0x0c);//0000 1111//开显示,显示光标,光标闪烁
ss(0x06);//当读或写一个字符后,指针加一,光标加一
ss(0x01);
}
void main()
{
TMOD=0x01;
EA=1; //开总中断
ET0=1; //开定时器中断
TR0=1; //启动定时器T0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//
while(1)
{
if(i%200==0)
a++;
if(a==10)
{
a=0;
b++;
}
if(b==6)
{
b=0;
c++;
}
if(c==10)
{
c=0;
d++;
}
if(d==6)
{
d=0;
e++;
}
if(e==10)
{
e=0;
f++;
}
if(f==24)
{
f=0;
}
init();
ss(0x80);
sw(0x31);
sw(table[f]);
sw(table[e]);
sw(table1[0]);
sw(table[d]);
sw(table[c]);
sw(table1[0]);
sw(table[b]);
sw(table[a]);
dy(850);
}
}
void time()interrupt 0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i++;
if(i==400)i=0;
}
那个大神看下有错没
程序没上传完整,昨天
1602是不支持显示字符的,,可以换其他显示屏,例如12864(支持字符显示)
你先看看 你的是串行 还是并行 电路接的对不对?
最简单的就是换I/O,P3口的3.0/3.1尽量少用