|
新人求助!!!各位大俠看看,自定義字符,出問(wèn)題了。。小弟水平有限,幫幫看看~
#include <reg52.h> //自定義字符,出問(wèn)題了
#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) // 寫數(shù)據(jù)
{
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); //設(shè)置功能,雙行顯示,5*7點(diǎn)陣 8位數(shù)據(jù)接口
write_com(0X0F); //顯示器開關(guān),顯示光標(biāo),閃爍光標(biāo)
// write_com(0X02); //光標(biāo)移動(dòng)左上角
// write_com(0X06); //寫完一個(gè)數(shù)據(jù)后,地址光標(biāo)右移一格整屏不移動(dòng)
write_com(0X80); //設(shè)置顯示地址
}
void U_define_char (uchar add,uchar *Pc)//地址,內(nèi)容
{
uchar i;
add=0X40+(add<<3); //地址輸入為0~8,實(shí)際加上0X40
for(i=0;i<8;i++)
{
write_com(add++); //地址加1
write_cn (*Pc++); //寫數(shù)據(jù)+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); //寫數(shù)據(jù)+1
delay(100);
}
delay(100);
write_cn (0X00);
while(1);
}
|
|