AT89S51下載后能正常運行斷電重啟后卻不能正常運行了,不知道是哪里出問題,網上也沒有搜到解決方法 。程序是1602液晶屏的,我改了一點給40266液晶屏用 ,不知道是不是程序的問。特來這里求助,請知道的指點一下。謝謝 !
就是下面這個程序:
#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)//延時函數 { uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com)//往LCD寫指令函數 { lcdrs=0;//LCDRS為低時寫指令 P0=com;//往LCD數據口送指令 delay(5);//延時5毫秒 lcden=1; delay(5); lcden=0; } void write_data(uchar date)//往LCD寫數據函數 { lcdrs=1;//LCDRS為低時寫數據 P0=date;//往LCD數據口送數據 delay(5);//延時5毫秒 lcden=1; delay(5); lcden=0; } void init()//初始化函數 { lcden=0;//LCD使能信號端置零 write_com(0x38);//往LCD寫顯示模式設置的指令 write_com(0x06);//LCD開顯示,光標不顯示、不閃爍 write_com(0x06);//當讀或寫一個字符后地址指針加一且光標加一,整屏顯示不移動 write_com(0x01);//數據指針和所有顯示清零 } void main() { init(); //第一行顯示 write_com(0x80+0x10);//第一行第一字符位置 for(num=0;num<31;num++) //這個數字20就是顯示字數 個數 { 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); }
|