微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 1602显示器不能显示字符,哪位大神帮忙看一下

1602显示器不能显示字符,哪位大神帮忙看一下

时间:10-02 整理:3721RD 点击:
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尽量少用

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

网站地图

Top