📄 text1.c
字号:
#include<reg52.h>
#include<ABSACC.H>
#define uchar unsigned char
uchar z,string1[]=" !! A M A Z I N G !! " ,
string2[]=" A virtual LM032L... " ,
string3[]="my name is xukun" ,
string4[]=" 8051 processor!" ;
uchar pacmanopen[] = {0x0E,0x07,0x03,0x01,0x03,0x07,0x0E,0x00,'\n'};
uchar pacmanshut[] = {0x00,0x0F,0x1F,0x01,0x1F,0x0F,0x00,0x00,'\n'};
void wrcmd(uchar i);
void wrdata(uchar k);
void busy(void);
void delay(void);
main()
{ uchar h,sbuf_data;
TMOD=0X20; //确定定时器1工作模式 此处模式为方式2自动重装初值的方式
TH1=0XF3;
TL1=0XF3; //定时初值 由此求的波特率近似为4800b/s
PCON=0X80; //SMOD=1波特率加倍; 此处不能用PCON&=0X80!!!!!!!
TR1=1; //开启定时器1
SCON=0X40; //串口工作方式1
REN=1; //允许接收
/*************由单片机向PC机发送数据,可显示在串口调试助手的接收框***************/
/* SBUF='W';
while(!TI);
TI=0;
delay(1000);
SBUF='A';
while(!TI);
TI=0;
delay(1000);
if(key_data==0);
SBUF=key_data;
while(!TI);
TI=0;
delay(1000);
*/
/*************由PC机向单片机发送数据并显示的子程序***************/
/********注意由串口调试助手发送数据时,以"十六进制"输入时应以两位数形式发送,即1应写01*****/
/********若不以"十六进制"输入时,写入1或其它时,则显示相应的ASCII代码****/
wrcmd(0x01) ;
wrcmd(0x3c) ;
wrcmd(0x0e) ;
wrcmd(0x06) ;
//for(h=0;h<15;h++)
// { delay();
// wrdata(string3[h]) ;
// }
for(;;)
{ wrcmd(0x80) ;
for(h=0;h<16;h++)
//if(RI)
{ while(RI==0);
{ RI=0;
sbuf_data=SBUF;
wrdata(sbuf_data) ;
//h++ ;string3[h]
} ;
}
wrcmd(0xc0) ;
for(h=0;h<16;h++)
{ while(RI==0);
{ RI=0;
sbuf_data=SBUF;
wrdata(sbuf_data) ;
} ;
}
}
for(h=0;h<32;h++)
{ delay();
wrdata('z') ;
}
}
void wrcmd(uchar i)
{ busy();
//P0=0;
P0=i;
P2=0;
P2|=0X20;
z=z;z=z;z=z;z=z;
P2&=0XDF;
}
void wrdata(uchar k)
{busy();
//P0=0;
P0=k;
P2=1;
P2|=0X20;
z=z;z=z;z=z;z=z;
P2&=0XDF;
}
void busy(void)
{ uchar b;
do
{ P0=0XFF;
P2=2;
P2|=0X20;
b=P0 ;z=z;z=z;z=z;z=z;
P2&=0XDF;
}
while(b>=128) ;
}
void delay(void)
{uchar j,k,g;
for(j=0;j<16;j++)
for(k=0;k<16;k++)
for(g=0;g<10;g++)
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -