新人求助。!各位大俠看看,自定義字符,出問題了。。小弟水平有限,幫幫看看~
#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);
}
|