程序是用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]
pg12864仿真图.zip
(14.27 KB, 下载次数: 41)
[此贴子已经被作者于2011-8-24 13:53:53编辑过]
|