液晶顯示與單片機的接口與編程方法
{ if(m《8) { beginbyte= 7; shiftn=“7”;}
else { beginbyte=“15”; shiftn=“15”;}
for(j=0;j《8;j++)
ascii8x16[m]=(ascii8x16[m]+ (buf[beginbyte-j]》》(shiftn-m))0x01)《《1;
} 也可選用UCDOS 的ASC16 文件做字模庫。ASC16 文件的字符為8×16 點陣。所有字符按照ASCII 值從小到大升序排列。計算字符首地址的公式:字符首地址=字符的ASCII 碼值×16+字模庫首地址。
?。?) 建立所用到的16×16 點陣字模庫。漢字字符可選用UCDOS 的HZK16 文件做字模庫。HZK16 文件的字符為16×16 點陣。所有字符按照區(qū)位碼從小到大升序排列。計算漢字字符首地址的公式如下:漢字首地址=((區(qū)碼-1)×94+位碼-1)×32。作者用C 語言編寫的讀取UCDOS 點陣字庫字模程序,完成字模讀取、
數(shù)據(jù)重新排列,并按MCS-51 匯編程序的要求寫成相應格式的文本文件。
p=((quma-1)*94+weima-1)*32;
cclibfile=“fopen”(“HZK16
”,“rb”);
fseek(cclibfile,(long)p,SEEK_SET);
fread(buf,sizeof(unsigned char),32,cclibfile); /*讀32 字節(jié)點陣數(shù)據(jù)*/
for(m=0;m《32;m++){ /*點陣數(shù)據(jù)轉(zhuǎn)換成LCD 格式數(shù)據(jù)*/
if(m《8) { beginbyte=“14”; shiftn=“7”;}
else if( m》= 8 m《16 ) { beginbyte=“15”; shiftn=“15”;}
else if( m》=16 m《24 ) { beginbyte=“30”; shiftn=“23”;}
else { beginbyte=“31”; shiftn=“31”;}
for(j=0;j《8;j++)
hzk16x16[m]=(hzk16x16[m]+ (buf[beginbyte-2*j] 》》(shiftn-m))0x01)《《1;
}
評論