單片機小菜鳥,向論壇大神求助,1602問題:最近學習了1602,用PROTUES仿真,自己寫出來的程序顯示不出來;
這個是別人的程序,可以顯示:
#include<reg52.h>
#define uint unsigned int
sbit en=P2^7;
sbit rs=P2^6;
sbit rw=P2^5;
char code table[]={"I LOVE JIAO!"};
char code table1[]={"YI SHENG YI SHI"};
char code table2[]={"MIAO BIAO:"};
char code table3[]={"0123456789"};
uint z,ml,sj,num,shu,shis,shig,fens,feng,miaos,miaog,a;
void init();
void xie_ml(uint ml);
void xie_sj(uint sj);
void miaobiao();
//1MS的定時
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
init();
xie_ml(0x80+0x10);
for(num=0;num<12;num++)
{
xie_sj(table[num]);
delay(100);
}
xie_ml(0x07);
xie_ml(0x80+0x50);
for(num=0;num<15;num++)
{
xie_sj(table1[num]);
delay(100);
}
delay(3000);
init();
miaobiao();
}
//LCD初始化
void init()
{
rw=0;
rs=0;
en=0;
xie_ml(0x38);
xie_ml(0x0f);
xie_ml(0x06);
// xie_ml(0x80+0);
xie_ml(0x01);
}
//LCD寫指令
void xie_ml(uint ml)
{
rs=0;
P0=ml;
delay(3);
en=1;
delay(5);
en=0;
}
//LCD寫數據
void xie_sj(uint sj)
{
rs=1;
P0=sj;
delay(3);
en=1;
delay(5);
en=0;
}
//秒表
void miaobiao()
{
a=0;
TMOD=0X10;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
while(a==125)
{
a=0;
xie_ml(0x80+3);
for(num=0;num<10;num++)
{
xie_sj(table2[num]);
}
miaog++;
if(miaog==10) //個秒
{
miaog=0;
miaos++;
if(miaos==6) //十秒
{
miaos=0;
feng++;
if(feng==10) //個分
{
feng=0;
fens++;
if(fens==6) //十分
{
fens=0;
shig++;
if(shig==10) //個時
{
shig=0;
shis++;
if(shis==10) //十時
shis=0;
}
}
}
}
}
xie_ml(0x80+0x42);
xie_sj(table3[shis]);
xie_ml(0x80+0x43);
xie_sj(table3[shig]);
xie_ml(0x80+0x44);
xie_sj(table2[9]);
xie_ml(0x80+0x45);
xie_sj(table3[fens]);
xie_ml(0x80+0x46);
xie_sj(table3[feng]);
xie_ml(0x80+0x47);
xie_sj(table2[9]);
xie_ml(0x80+0x48);
xie_sj(table3[miaos]);
xie_ml(0x80+0x49);
xie_sj(table3[miaog]);
xie_ml(0x0c);
}
}
}
//50mS的中斷
void t0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
這個是我根據這個稍微修改的程序,卻顯示不出來:
#include<reg52.h>
#define uint unsigned int
sbit en=P2^7;
sbit rs=P2^6;
sbit rw=P2^5;
char code table[]={"I LOVE JIAO!"};
char code table1[]={"YI SHENG YI SHI"};
char code table2[]={"MIAO BIAO:"};
char code table3[]={"0123456789"};
uint z,ml,sj,num,shu,shis,shig,fens,feng,miaos,miaog,a;
void init();
void xie_ml(uint ml);
void xie_sj(uint sj);
void miaobiao();//1MS的定時
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
init();
xie_ml(0x80+0x10);
for(num=0;num<12;num++)
{
xie_sj(table[num]);
delay(100);
}
xie_ml(0x07);
xie_ml(0x80+0x50);
for(num=0;num<15;num++)
{
xie_sj(table1[num]);
delay(100);
}
delay(3000);
init();
miaobiao();
}//LCD初始化
void init()
{
rw=0;
rs=0;
en=0;
xie_ml(0x38);
xie_ml(0x0f);
xie_ml(0x06);
// xie_ml(0x80+0);
xie_ml(0x01);
}
//LCD寫指令
void xie_ml(uint ml)
{
rs=0;
P0=ml;
delay(3);
en=1;
delay(5);
en=0;
}
//LCD寫數據
void xie_sj(uint sj)
{
rs=1;
P0=sj;
delay(3);
en=1;
delay(5);
en=0;
}
請問前輩們,這兩個程序到底有什么不同,為什么我修改的不能顯示?懇求前輩批評、指導,感激不盡!!!!