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); }
|