找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3071|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

為什么在仿真上面程序能夠跑起來(lái),但是實(shí)物焊接出來(lái),顯示屏一是只亮背光

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:447891 發(fā)表于 2019-1-7 00:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "reg51.h"
#define uchar  unsigned char
#define Port P2 //定義數(shù)據(jù)端口
sbit begin=P3^2;
sbit RS=P3^5; //定義和LCD的連接端口,寫(xiě)數(shù)據(jù)指令端口
sbit RW=P3^6; //讀寫(xiě)端口
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: **";
//延時(shí)函數(shù)
void  delay()
{
    uchar i,j; //延時(shí)變量
    for(i=0;i<50;i++)  //t表示循環(huán)次數(shù)
       for(j=0;j<100;j++) ;
}


//  讀忙信號(hào)判斷
void  Read_Busy(void)
{
     uchar k=255;
     Port=0xff;
     RS = 0;
     RW = 1;
     E = 1;
     while((k--)&&(Busy));
     E = 0;
}


//  寫(xiě)指令函數(shù)

void  Write_Comm(uchar lcdcomm)
{
      Read_Busy( ); //先讀忙
      RS = 0; //端口定義為寫(xiě)指令
      RW = 0;//端口寫(xiě)入使能
      E = 1; //端口輸入總使能
      Port=lcdcomm;  //數(shù)據(jù)端送指令
      E = 0; //端口輸入總禁止
}


//寫(xiě)數(shù)據(jù)函數(shù)
void  Write_Chr(uchar lcddata)
{
      Read_Busy( ); //先讀忙
      RS = 1;//端口寫(xiě)數(shù)據(jù)使能
      RW = 0;//端口寫(xiě)入使能
      E = 1;//端口總輸入使能
      Port = lcddata;   //數(shù)據(jù)端口送數(shù)據(jù)
      E = 0;  //端口總輸入禁止
}


//初始化LCD
void  Init_LCD(void)
{
      delay();  //稍微延時(shí),等待LCD進(jìn)入工作狀態(tài)
      Write_Comm(0x38); //8位2行5*8
      Write_Comm(0x0c); //顯示開(kāi)/關(guān),光標(biāo)開(kāi)閃爍開(kāi)
      Write_Comm(0x01);//清顯示
      Write_Comm(0x02);  //光標(biāo)歸位
}

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()//負(fù)責(zé)改變比分
{
        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()//負(fù)責(zé)送顯
{
        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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:447891 發(fā)表于 2019-1-7 00:13 | 只看該作者
哪里出錯(cuò)了嗎?為什么在仿真上面程序能夠跑起來(lái),但是實(shí)物焊接出來(lái),顯示屏一是只亮背光,二是只有一個(gè)一字出現(xiàn),是延時(shí)出錯(cuò)了,還是對(duì)比度的可調(diào)電阻出錯(cuò)?
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2019-1-7 07:51 | 只看該作者
這就是“仿”的真諦。
與你的硬件相關(guān)。硬件未必與“仿”的完全一樣。
需要你仔細(xì)研讀硬件的手冊(cè),找出區(qū)別之所在。
回復(fù)

使用道具 舉報(bào)

地板
ID:97554 發(fā)表于 2019-1-7 08:38 | 只看該作者
這是1602顯示,看描述應(yīng)該重點(diǎn)檢查接線,或者換LCD,不像是對(duì)比度電阻的問(wèn)題。不過(guò)首先調(diào)整一下對(duì)比度電阻,我沒(méi)用可調(diào),一般120Ω電阻接VSS既可,試了多塊LCD這個(gè)電阻值基本都能達(dá)到最佳狀態(tài)。對(duì)比度沒(méi)有問(wèn)題那就是接線不良。另外也見(jiàn)程序不通用的1602,極少,不知道你遇得上了不是。建議先用最簡(jiǎn)例程點(diǎn)屏正常了再試程序。
回復(fù)

使用道具 舉報(bào)

5#
ID:383498 發(fā)表于 2019-1-7 15:08 | 只看該作者
我之前也遇到過(guò),我將P0口接了上拉電阻,隨便將可調(diào)電阻重新接了一下就好了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表