找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2413|回复: 4
打印 上一主题 下一主题
收起左侧

为什么在仿真上面程序能够跑起来,但是实物焊接出来,显示屏一是只亮背光

[复制链接]
跳转到指定楼层
楼主
ID:447891 发表于 2019-1-7 00:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg51.h"
#define uchar  unsigned char
#define Port P2 //定义数据端口
sbit begin=P3^2;
sbit RS=P3^5; //定义和LCD的连接端口,写数据指令端口
sbit RW=P3^6; //读写端口
sbit E=P3^7;  //使能端口
sbit Busy=P2^7;  //读忙端口
uchar min=40,sec=0,count=0;
uchar a=0,b=0;
uchar str[]="0123456789";
uchar str1[16]="Team A: **";
uchar str2[16]="Team B: **";
//延时函数
void  delay()
{
    uchar i,j; //延时变量
    for(i=0;i<50;i++)  //t表示循环次数
       for(j=0;j<100;j++) ;
}


//  读忙信号判断
void  Read_Busy(void)
{
     uchar k=255;
     Port=0xff;
     RS = 0;
     RW = 1;
     E = 1;
     while((k--)&&(Busy));
     E = 0;
}


//  写指令函数

void  Write_Comm(uchar lcdcomm)
{
      Read_Busy( ); //先读忙
      RS = 0; //端口定义为写指令
      RW = 0;//端口写入使能
      E = 1; //端口输入总使能
      Port=lcdcomm;  //数据端送指令
      E = 0; //端口输入总禁止
}


//写数据函数
void  Write_Chr(uchar lcddata)
{
      Read_Busy( ); //先读忙
      RS = 1;//端口写数据使能
      RW = 0;//端口写入使能
      E = 1;//端口总输入使能
      Port = lcddata;   //数据端口送数据
      E = 0;  //端口总输入禁止
}


//初始化LCD
void  Init_LCD(void)
{
      delay();  //稍微延时,等待LCD进入工作状态
      Write_Comm(0x38); //8位2行5*8
      Write_Comm(0x0c); //显示开/关,光标开闪烁开
      Write_Comm(0x01);//清显示
      Write_Comm(0x02);  //光标归位
}

void t0() interrupt 1
{
        count++;
        if(count==20)
        {
                sec--;
                count=0;
        }
        if(sec==0)
        {
                 min--;
                sec=59;
        }
        if(min==0)
        {
                TR0=0;
                min=0;
                sec=0;
        }
}

void ex0() interrupt 0
{
        TR0=~TR0;
        while(begin==0);
}

void scankey()//负责改变比分
{
        switch(P1)
        {
                case 0xfe:
                        a=a+1;
                        if(a>99)a=99;
                        break;
                case 0xfd:
                        a=a+2;
                        if(a>99)a=99;
                        break;
                case 0xfb:
                        a=a+3;
                        if(a>99)a=99;
                        break;
                case 0xf7:
                        if(a>0)a=a-1;
                        break;
                case 0xef:
                        b=b+1;
                        if(b>99)b=99;
                        break;
                case 0xdf:
                        b=b+2;
                        if(b>99)b=99;
                        break;
                case 0xbf:
                        b=b+3;
                        if(b>99)b=99;
                        break;
                case 0x7f:
                        if(b>0)b=b-1;
                        break;
        }
        while(P1!=0xff);
}

void display()//负责送显
{
        uchar m;
        str1[8]=str[a/10];
        str1[9]=str[a%10];
        str1[14]=str[min/10];
        str1[15]=str[min%10];
        Write_Comm(0x80);
        for(m=0;m<16;m++)
          Write_Chr(str1[m]);
        str2[8]=str[b/10];
        str2[9]=str[b%10];
        str2[14]=str[sec/10];
        str2[15]=str[sec%10];
        Write_Comm(0xc0);
        for(m=0;m<16;m++)
          Write_Chr(str2[m]);
}

void main()
{
        EA=1;
        EX0=1;
        ET0=1;
        TMOD=0x01;
        TH0=-50000/256;
        TL0=-50000%256;
        TR0=0;
        Init_LCD();
        while(1)
        {
           scankey();
           display();
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:447891 发表于 2019-1-7 00:13 | 只看该作者
哪里出错了吗?为什么在仿真上面程序能够跑起来,但是实物焊接出来,显示屏一是只亮背光,二是只有一个一字出现,是延时出错了,还是对比度的可调电阻出错?
回复

使用道具 举报

板凳
ID:123289 发表于 2019-1-7 07:51 | 只看该作者
这就是“仿”的真谛。
与你的硬件相关。硬件未必与“仿”的完全一样。
需要你仔细研读硬件的手册,找出区别之所在。
回复

使用道具 举报

地板
ID:97554 发表于 2019-1-7 08:38 | 只看该作者
这是1602显示,看描述应该重点检查接线,或者换LCD,不像是对比度电阻的问题。不过首先调整一下对比度电阻,我没用可调,一般120Ω电阻接VSS既可,试了多块LCD这个电阻值基本都能达到最佳状态。对比度没有问题那就是接线不良。另外也见程序不通用的1602,极少,不知道你遇得上了不是。建议先用最简例程点屏正常了再试程序。
回复

使用道具 举报

5#
ID:383498 发表于 2019-1-7 15:08 | 只看该作者
我之前也遇到过,我将P0口接了上拉电阻,随便将可调电阻重新接了一下就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表