c语言sscanf函数的用法是什么
304
2022-11-19
液晶显示与单片机的接口与编程方法
引言
硬件设计
这里着重介绍液晶显示器与单片机的接口技术。有关
MGLS12864 图形液晶引脚功能及控制器HD61202的接口时序波形,可查看图形液晶显示器产品有关手册。
单片机对液晶显示模块的操作可分为两部分,即左半屏和右半屏操作。下面是根据图1 的连接确定对应左半屏(前64×64)和右半屏(后64×64)操作地址:
DWADR1 EQU 0005H 左半屏写显示数据地址
CRADR1 EQU 0006H 左半屏读状态字地址
DRADR1 EQU 0007H 左半屏读显示数据地址
CWADR2 EQU 0008H 右半屏写指令代码地址
DWADR2 EQU 0009H 右半屏写显示数据地址
CRADR2 EQU 000AH 右半屏读状态字地
DRADR2 EQU 000BH 右半屏读显示数据地址
图1 MGLS12864 与W78E58 接口图
液晶控制器HD61202 一共有七条指令,从作用上可分为两类,显示状态设置指令和数据读/写操作指令。详见指令系统可查看图形液晶显示器产品有关手册。显示起始行设置中L5~L0 为显示起始行的地址,取值在0-3FH(1-64 行)范围内。页面地址设置中P2-P0 为选择的页面地址,取值范围为0-7H,代表1-8 页。列地址设置中C5-C0 为Y地址计数器的内容,取值在0-3FH(1-64 行)范围内。
点阵字模文件的建立
:由于MGLS12864 液晶显示器没有内部字符发生器,所以在屏幕上显示的任何字符、
汉字等须自己建立点阵字模库,然后均按图形方式进行显示。由于HD61202 显示存储器的特性,不能将计算机内的汉字库和其它字模库提出直接使用,需要将其旋转90 度后再写入。点阵字模库建立包括以下几个方面:
(1) 建立8×16 点阵常用字符、数字、符号字模库。
asm{mov ax,1130h /*AH=11h—功能调用。装入字库至软字库 */
mov bh,6 /*AL=30h 取点阵信息 */
int 10h /*BH=6 取ROM8X16 点阵指针(VGA) */
mov ax,es /*出口:ES:BP 指向字库指针 */
mov ascii_es,ax
mov ax,bp
mov ascii_bp,ax };
ascii_offset=ascii_bp+16*asciicode;
for(j=0;j《16;j++) buf[j]=peekb(ascii_es,ascii_offset+j); /*读16 字节点阵数据*/
for(m=0;m《16;m++) /*点阵数据转换成LCD 格式数据*/
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+字模库首地址。
数据重新排列,并按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 字节点阵数据*/
for(m=0;m《32;m++){ /*点阵数据转换成LCD 格式数据*/
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;
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~