程序是用keilc来写的:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rst=P3^2;
sbit lcden=P3^4;
sbit cd=P3^5;
sbit wr=P3^6;
sbit rd=P3^7;
uchar code HZ0[5][32]={
{ 0x02,0x00,0x01,0x08,0x7F,0xFC,0x08,0x20,
0x04,0x40,0x02,0x84,0xFF,0xFE,0x01,0x00,
0x01,0x08,0x7F,0xFC,0x01,0x00,0x09,0x20,
0x19,0x18,0x21,0x0C,0x45,0x04,0x02,0x00},
{ 0x00,0x78,0x3F,0x80,0x11,0x10,0x09,0x20,
0x7F,0xFE,0x42,0x02,0x82,0x04,0x7F,0xF8,
0x04,0x00,0x07,0xF0,0x0A,0x20,0x09,0x40,
0x10,0x80,0x11,0x60,0x22,0x1C,0x0C,0x08},
{ 0x10,0x40,0x10,0x40,0x22,0x44,0x7F,0x7E,
0x42,0x84,0x43,0x04,0x42,0x04,0x42,0x84,
0x7E,0x64,0x42,0x24,0x42,0x04,0x42,0x04,
0x42,0x04,0x7E,0x04,0x42,0x28,0x00,0x10},
{ 0x00,0x40,0x10,0x40,0xF8,0xA0,0x20,0xA0,
0x21,0x10,0x22,0x88,0xFC,0x4E,0x28,0x44,
0x20,0x00,0x23,0xF8,0x20,0x08,0x38,0x10,
0xC0,0xA0,0x00,0x40,0x00,0x20,0x00,0x20},
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x06,0x00,0x0F,0x00,
0x0F,0x00,0x06,0x00,0x00,0x00,0x06,0x00,
0x0F,0x00,0x0F,0x00,0x06,0x00,0x00,0x00}
};
uchar code HZ1[8][32]={
{ 0x04,0x80,0x0E,0xA0,0x78,0x90,0x08,0x90,
0x08,0x84,0xFF,0xFE,0x08,0x80,0x08,0x90,
0x0A,0x90,0x0C,0x60,0x18,0x40,0x68,0xA0,
0x09,0x20,0x0A,0x14,0x28,0x14,0x10,0x0C},
{ 0x00,0x78,0x3F,0x80,0x11,0x10,0x09,0x20,
0x7F,0xFE,0x42,0x02,0x82,0x04,0x7F,0xF8,
0x04,0x00,0x07,0xF0,0x0A,0x20,0x09,0x40,
0x10,0x80,0x11,0x60,0x22,0x1C,0x0C,0x08},
{ 0x11,0x00,0x11,0x00,0x11,0x00,0x23,0xFC,
0x22,0x04,0x64,0x08,0xA8,0x40,0x20,0x40,
0x21,0x50,0x21,0x48,0x22,0x4C,0x24,0x44,
0x20,0x40,0x20,0x40,0x21,0x40,0x20,0x80},
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x04,0xFF,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{ 0x01,0x00,0x11,0x00,0x11,0x00,0x11,0x08,
0x3F,0xFC,0x21,0x00,0x41,0x00,0x41,0x00,
0x81,0x10,0x3F,0xF8,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x04,0xFF,0xFE,0x00,0x00},
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x04,0xFF,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{ 0x01,0x10,0x11,0x10,0x11,0x10,0x11,0x10,
0x11,0x14,0xFF,0xFE,0x11,0x10,0x11,0x10,
0x11,0x10,0x11,0x10,0x11,0xF0,0x11,0x10,
0x10,0x00,0x10,0x08,0x1F,0xFC,0x00,0x00},
{ 0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,
0x03,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,
0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,
0x03,0xC0,0x01,0x80,0x00,0x00,0x00,0x00}
};
uchar code HZ2[4][32]={
{ 0x00,0x78,0x3F,0x80,0x11,0x10,0x09,0x20,
0x7F,0xFE,0x42,0x02,0x82,0x04,0x7F,0xF8,
0x04,0x00,0x07,0xF0,0x0A,0x20,0x09,0x40,
0x10,0x80,0x11,0x60,0x22,0x1C,0x0C,0x08},
{ 0x11,0x00,0x11,0x00,0x11,0x00,0x23,0xFC,
0x22,0x04,0x64,0x08,0xA8,0x40,0x20,0x40,
0x21,0x50,0x21,0x48,0x22,0x4C,0x24,0x44,
0x20,0x40,0x20,0x40,0x21,0x40,0x20,0x80},
{ 0x10,0x40,0x10,0x40,0x22,0x44,0x7F,0x7E,
0x42,0x84,0x43,0x04,0x42,0x04,0x42,0x84,
0x7E,0x64,0x42,0x24,0x42,0x04,0x42,0x04,
0x42,0x04,0x7E,0x04,0x42,0x28,0x00,0x10},
{ 0x00,0x04,0x04,0xFE,0x7E,0x84,0x44,0x84,
0x44,0x84,0x44,0xFC,0x7C,0x84,0x44,0x84,
0x44,0x84,0x44,0xFC,0x7C,0x84,0x44,0x84,
0x01,0x04,0x01,0x04,0x02,0x14,0x04,0x08}
};
void delay_ms(uint t) //延迟
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<110;j++);
}
uchar read_status() //读状态
{
uchar status;
rd=0;
wr=1;
lcden=0;
cd=1;
status=P0;
return status;
}
void check_status()
{
uchar s;
while((s&0x80)!=0x80)
s=read_status();
}
void write_data(uchar dat) //写入数据
{
rd=1;
cd=0;
lcden=0;
wr=0;
P0=dat;
delay_ms(10);
wr=1;
lcden=1;
cd=1;
}
void write_cmd1(uchar cmd) //写入指令
{
rd=1;
cd=1;
lcden=0;
wr=0;
P0=cmd;
delay_ms(10);
wr=1;
lcden=1;
cd=0;
}
void write_cmd2(uchar dat,uchar cmd) //先送参数,再送指令
{
check_status();
write_data(dat);
check_status();
write_cmd1(cmd);
}
void write_cmd3(uchar data1,uchar data2 ,uchar cmd)
{
check_status();
write_data(data1);
check_status();
write_data(data2);
check_status();
write_cmd1(cmd);
}
void init() //PG12864F初始化
{
rst=1;
delay_ms(10);
rst=0;
wr=1;
rd=1;
lcden=1;
cd=1;
rst=1;
check_status();
write_cmd3(0x01,0x00,0x21); //设置光标位置
check_status();
write_cmd3(0x00,0x00,0x42); //设置图形显示首地址
check_status();
write_cmd3(16,0x00,0x43); //设置图形的显示宽度
check_status();
write_cmd1(0x80); //正常显示,
check_status();
write_cmd1(0x98); //设置图形显示方式:打点
check_status();
write_cmd1(0xa0); //设置光标形状
}
void display_HZ(uchar x,uchar y,uchar *hz) //汉字显示函数
{
uchar i,j=0;
for(i=0;i<16;i++)
{
write_cmd3(((j/2)<<4)|(y*2),x,0x24);
write_cmd2(hz[j++],0x0c);
write_cmd2(hz[j++],0x0c);
}
}
void main() //主函数
{
uchar i,j=0;
init();
for(i=0;i<4;i++)
display_HZ(0,1+i,HZ0);
for(i=0;i<8;i++)
display_HZ(1,1+i,HZ1);
for(i=0;i<4;i++)
display_HZ(2,1+i,HZ2);
}
各位大虾,帮帮小菜鸟看看除了什么问题?
我用keilc 调试了好几天了,都不知道怎么回事??
[upload=c,q.c]viewFile.asp?ID=890[/upload]大虾都跑到哪里去?
看来靠自己!
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |