#include <reg52.h>
#include <intrins.h
typedef unsigned char u8;
typedef unsigned int u16;
sbit RS=P0^7;
sbit RW=P0^6;
sbit EN=P0^5;
sbit PSB=P0^4;
sbit RST=P0^3
void delay_ms(u16 t)
{
u16 y;
for(;t>0;t--)
for(y=125;y>0;y--);
}
void delay_us(u8 t)
{
while(--t);
}
bit read_busy()
{
bit D7;
RS=0;
RW=1;
EN=0;
_nop_()
EN=1;
_nop_();
D7=(bit)(P2&0x80);
_nop_();
EN=0;
return D7;
}
void write_cmd(u8 cmd
{
while(read_busy());
RS=0;
RW=0;
EN=0;
_nop_();
EN=1;
P2=cmd;
delay_us(40);
EN=0;
_nop_();
}
void write_data(u8 dat
{
while(read_busy());
RS=1;
RW=0;
EN=0;
_nop_();
EN=1;
P2=dat;
delay_us(40);
EN=0;
_nop_();
}
void init()
{
PSB=1;
RST=1;
delay_ms(50);
write_cmd(0x30);
delay_us(100);
write_cmd(0x30);
delay_us(40);
write_cmd(0x0c);
delay_us(100);
write_cmd(0x01);
delay_ms(15);
write_cmd(0x06);
}
void position(u8 m,u8 n)
{
u8 i,j;
switch(m)
{
case 1:i=0x80;break;
case 2:i=0x90;break;
case 3:i=0x88;break;
case 4:i=0x98;break;
}
j=i+n;
write_cmd(j);
}
void show_poem()
{
u8 i,j;
u8 *str[2]={"一二三四五","四五六去"};
for(i=0;i<4;i++)
{
position(i+1,0);
for(j=0;*(str[i]+j)!='\0';j++)
write_data(*(str[i]+j));
}
}
void main()
{
init();
show_poem();
while(1);
}
程序有什么問題嗎?怎么寫入·漢字會亂碼,寫入英文正常顯示
|