新人求助!!!各位大侠看看,自定义字符,出问题了。。小弟水平有限,帮帮看看~
#include <reg52.h> //自定义字符,出问题了
#define uchar unsigned char
#define uint unsigned int
sbit RS=P1^0;
sbit RW=P1^1;
sbit E=P1^2;
sbit BF=P0^7;
uchar _0C[8]={0X10,0X06,0X09,0X08,0X08,0X09,0X06,0X00};
void delay(uint t)
{
while (--t);
}
void S_busy()
{
E=1;
RS=0;
RW=1;
BF=1;
while(BF);
}
void write_com(uchar com) // 写指令
{
E=0;
RS=0;
RW=0;
P0=com;
delay(100);
E=1;
delay(100);
E=0;
}
void write_cn(uchar cn) // 写数据
{
E=0;
RS=1;
RW=0;
P0=cn;
delay(100);
E=1;
delay(100);
E=0;
}
//void (*Phshu[2])(uchar strin)={write_com,write_cn};
void init ()
{
/* E=0;
RS=0;
RW=0; */
write_com(0X01); //清零
write_com(0X38); //设置功能,双行显示,5*7点阵 8位数据接口
write_com(0X0F); //显示器开关,显示光标,闪烁光标
// write_com(0X02); //光标移动左上角
// write_com(0X06); //写完一个数据后,地址光标右移一格整屏不移动
write_com(0X80); //设置显示地址
}
void U_define_char (uchar add,uchar *Pc)//地址,内容
{
uchar i;
add=0X40+(add<<3); //地址输入为0~8,实际加上0X40
for(i=0;i<8;i++)
{
write_com(add++); //地址加1
write_cn (*Pc++); //写数据+1
}
}
void LCD_Dispaly()
{
U_define_char (0,_0C); //define char
write_cn (0);
}
void main()
{
uchar i;
init();
E=0;
for(i=0;i<8;i++)
{
write_com(0X40+i); //地址加1
delay(100);
write_cn (_0C); //写数据+1
delay(100);
}
delay(100);
write_cn (0X00);
while(1);
}
|