用stc15f2k60s2写了个1602驱动,然后程序不做任何更改直接源文件下载进去,显示的内容都不一样是怎么回事?,有时候下载下去又直接正常
这是怎么回事?
- void main()
- {
- Init_CPP();
- Init_1602();
- Write_string(1,1,"test ok");
- while(1)
- {
- sprintf(display,"time:%02d",dd);
- Write_string(0,0,display);
- }
- }
复制代码- bit CheckBusy()
- {
-
- P=0xff;
- E=0;
- RS=0;
- RW=1;
- E=1;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- dd=P0;
-
- E=0;
- return(bit)(dd&0x80);
- }
- void Write_dat(unsigned char dat)
- {
- while(CheckBusy());
- DelayMs(); //这是个5ms的延时,如果不加这个显示就是乱码
- DelayMs();
- E=0;
- RS=1;
- RW=0;
- _nop_();
- _nop_();
- E=1;
- P0=dat;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- E=0;
- }
- void Write_com(unsigned char com)
- {
- while(CheckBusy());
- DelayMs();
- DelayMs();
- E=0;
- RS=0;
- RW=0;
- _nop_();
- _nop_();
- E=1;
- P0=com;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- E=0;
- }
- void Write_string(unsigned char x,unsigned char y,unsigned char*s)
- {
- if(y==0)
- Write_com(0x80+x);
- else
- Write_com(0xc0+x);
- while(*s)
- {
- Write_dat(*s);
- s++;
- }
- }
复制代码
|