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

QQ登錄

只需一步,快速開始

帖子
查看: 2633|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

AT89S51程序下載后能正常運(yùn)行,斷電重啟后卻不能正常運(yùn)行了?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:476623 發(fā)表于 2020-7-8 21:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
AT89S51下載后能正常運(yùn)行斷電重啟后卻不能正常運(yùn)行了,不知道是哪里出問題,網(wǎng)上也沒有搜到解決方法 。程序是1602液晶屏的,我改了一點(diǎn)給40266液晶屏用 ,不知道是不是程序的問。特來這里求助,請(qǐng)知道的指點(diǎn)一下。謝謝 !

就是下面這個(gè)程序:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table0[]="QQJL WEIXINDOUSHIJIAOLIUGONGJU";  //31字符
uchar code table1[]="WWW,COM WANGZJI";  //15
uchar num;
sbit lcden=P2^7;
sbit lcdrs=P2^6;
void delay(uint z)//延時(shí)函數(shù)
{
         uintx,y;
         for(x=z;x>0;x--)
                  for(y=110;y>0;y--);
}
void write_com(uchar com)//LCD寫指令函數(shù)
{
         lcdrs=0;//LCDRS為低時(shí)寫指令
         P0=com;//LCD數(shù)據(jù)口送指令
         delay(5);//延時(shí)5毫秒
         lcden=1;
         delay(5);
         lcden=0;
}
void write_data(uchar date)//LCD寫數(shù)據(jù)函數(shù)
{
         lcdrs=1;//LCDRS為低時(shí)寫數(shù)據(jù)
         P0=date;//LCD數(shù)據(jù)口送數(shù)據(jù)
         delay(5);//延時(shí)5毫秒
         lcden=1;
         delay(5);
         lcden=0;
}
void init()//初始化函數(shù)
{
         
         lcden=0;//LCD使能信號(hào)端置零
         write_com(0x38);//LCD寫顯示模式設(shè)置的指令
         write_com(0x06);//LCD開顯示,光標(biāo)不顯示、不閃爍
         write_com(0x06);//當(dāng)讀或?qū)懸粋€(gè)字符后地址指針加一且光標(biāo)加一,整屏顯示不移動(dòng)
         write_com(0x01);//數(shù)據(jù)指針和所有顯示清零
   
}
void main()
{      
         init();
         //第一行顯示
         write_com(0x80+0x10);//第一行第一字符位置
         for(num=0;num<31;num++)   //這個(gè)數(shù)字20就是顯示字?jǐn)?shù) 個(gè)數(shù)
         {
                  write_data(table0[num]);
                  delay(200);
         }
         //第二行顯示
         write_com(0x80+0x50);  
         for(num=0;num<15;num++)
         {
                  write_data(table1[num]);
                  delay(200);
         }
         for(num=0;num<40;num++)  
{
   write_com(0x18);     
   delay(200);
}
  while(1);
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:584814 發(fā)表于 2020-7-9 09:58 | 只看該作者
重新刷一下單片機(jī),疑似這貨有問題。
回復(fù)

使用道具 舉報(bào)

板凳
ID:282850 發(fā)表于 2020-7-9 11:36 | 只看該作者
估計(jì)是硬件問題,重點(diǎn)關(guān)注復(fù)位、晶振2個(gè)部分,其它MCU我遇過有時(shí)正常,有時(shí)不能開機(jī)(LCD無顯示)
回復(fù)

使用道具 舉報(bào)

地板
ID:798572 發(fā)表于 2020-7-9 11:45 | 只看該作者
估計(jì)是硬件問題,檢查一下復(fù)位
回復(fù)

使用道具 舉報(bào)

5#
ID:608600 發(fā)表于 2020-7-9 11:48 | 只看該作者
可能是硬件問題,這種問題一般出現(xiàn)不在代碼上面
回復(fù)

使用道具 舉報(bào)

6#
ID:476623 發(fā)表于 2020-7-9 21:39 | 只看該作者
謝謝樓上的回復(fù)。
我剛開始也以為是硬件的問題,做了實(shí)驗(yàn)應(yīng)該是代碼的問題,換另外的代碼就正常。
又在網(wǎng)上搜索學(xué)習(xí)一番,嚴(yán)重懷疑代碼有問題,可能就是最后的移屏代碼次序錯(cuò)了�,F(xiàn)在這樣:  write_com(0x18);     
   delay(200);
}
  while(1);
}
可能應(yīng)該改為:
while(1);
{  write_com(0x18);     
   delay(200);
}
馬上實(shí)驗(yàn)可是那里的問題。
回復(fù)

使用道具 舉報(bào)

7#
ID:476623 發(fā)表于 2020-7-9 22:09 | 只看該作者
剛才試驗(yàn)了一下語法有錯(cuò)誤通不過,還得好好學(xué)習(xí)一看怎么辦。
回復(fù)

使用道具 舉報(bào)

8#
ID:476623 發(fā)表于 2020-7-14 22:25 | 只看該作者
多謝各位的回復(fù)
問題找到了就代碼的問題,這個(gè)代碼固定顯示好用,增加移屏顯示不好用,改用別的代碼后就正常了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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