標(biāo)題: AT89S51程序下載后能正常運(yùn)行,斷電重啟后卻不能正常運(yùn)行了? [打印本頁]
作者: gxjhgxjh 時(shí)間: 2020-7-8 21:14
標(biāo)題: AT89S51程序下載后能正常運(yùn)行,斷電重啟后卻不能正常運(yùn)行了?
AT89S51下載后能正常運(yùn)行斷電重啟后卻不能正常運(yùn)行了,不知道是哪里出問題,網(wǎng)上也沒有搜到解決方法 。程序是1602液晶屏的,我改了一點(diǎn)給40266液晶屏用 ,不知道是不是程序的問。特來這里求助,請知道的指點(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使能信號端置零
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);
}
作者: man1234567 時(shí)間: 2020-7-9 09:58
重新刷一下單片機(jī),疑似這貨有問題。
作者: f556 時(shí)間: 2020-7-9 11:36
估計(jì)是硬件問題,重點(diǎn)關(guān)注復(fù)位、晶振2個(gè)部分,其它MCU我遇過有時(shí)正常,有時(shí)不能開機(jī)(LCD無顯示)
作者: 我系_源 時(shí)間: 2020-7-9 11:45
估計(jì)是硬件問題,檢查一下復(fù)位
作者: 小黑的大表舅 時(shí)間: 2020-7-9 11:48
可能是硬件問題,這種問題一般出現(xiàn)不在代碼上面
作者: gxjhgxjh 時(shí)間: 2020-7-9 21:39
謝謝樓上的回復(fù)。
我剛開始也以為是硬件的問題,做了實(shí)驗(yàn)應(yīng)該是代碼的問題,換另外的代碼就正常。
又在網(wǎng)上搜索學(xué)習(xí)一番,嚴(yán)重懷疑代碼有問題,可能就是最后的移屏代碼次序錯(cuò)了。現(xiàn)在這樣: write_com(0x18);
delay(200);
}
while(1);
}
可能應(yīng)該改為:
while(1);
{ write_com(0x18);
delay(200);
}
馬上實(shí)驗(yàn)可是那里的問題。
作者: gxjhgxjh 時(shí)間: 2020-7-9 22:09
剛才試驗(yàn)了一下語法有錯(cuò)誤通不過,還得好好學(xué)習(xí)一看怎么辦。
作者: gxjhgxjh 時(shí)間: 2020-7-14 22:25
多謝各位的回復(fù)
問題找到了就代碼的問題,這個(gè)代碼固定顯示好用,增加移屏顯示不好用,改用別的代碼后就正常了。
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |