12864英文字库能显示64*64点的汉字吗,即左半屏和有半屏各显示一个汉字,字库的汉字16*16点,有点小。怎样写程序?

单片机和图形液晶显示器接口应用技术 - 天天文档-文档下载中心
单片机和图形液晶显示器接口应用技术
DOC/Microsoft Word
单片机和图形液晶显示器接口应用技术 液晶显示器LCD具有功耗低,体积小,重量轻,超薄等许多其它显示器无法比拟的优点,近几年来被广泛用于单片机控制的智能仪器,仪表和低功耗电子产品中.LCD可分为段位式LCD,字符式LCD和点阵式LCD.其中,段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符,数字,还可以显示各种图形,曲线及汉字,并且可以实现屏幕上下左右滚动,动画功能,分区开窗口,反转,闪烁等功能,用途十分广泛.本文介绍点阵式液晶显示器MGLS12864与单片机的接口及编程的方法,同时给出8×16字符和16×16点阵汉字的方法,及常用的字符显示和汉字显示程序. 这里着重介绍液晶显示器与单片机的接口技术. 单片机可以通过数据总线与控制信号直接采用存储器访问形式,IO设备访问形式控制该液晶显示模块.本文以华邦公司的W78E58为例,它内部有32KB的FLASH EEPROM,用户编制的程序及需要显示的英文字母,数字,汉字,曲线和图形都可以存储在里面,免去了扩展外部存储器的麻烦,使得以W78E58单片机为核心的控制系统电路更简单.因此十分适用于液晶显示.MGLS12864与W78E58单片机接口电路如图1所示.该图采用直接访问方式,单片机通过低位地址A2控制CSA;A3控制CSB,以选通液晶显示屏上各区的控制器HD61202;同时W78E58用地址A1作为RW信号控制数据总线的数据流向;用地址A0作为DI信号控制寄存器的选择;E信号由W78E58的读信号RD和写信号WR合成产生;另外单片机的复位引脚经反相器后连接到液晶显示器复位引脚,当单片机上电复位或手动复位时, 液晶显示器同时也复位;从而实现了W78E58对内置HD61202图形液晶显示器模块的电路连接.电路中LCD电源控制端VO是用来调节显示屏灰度的,调节该端的电压,可改变显示屏字符,图形的颜色深浅. 单片机对液晶显示模块的操作可分为两部分,即左半屏和右半屏操作.下面是根据图1的连接确定对应左半屏前64×64和右半屏后64×64操作地址:CWADR1 EQU 0004H 左半屏写指令代码地址DWADR1 EQU 0005H 左半屏写显示数据地址CRADR1 EQU 0006H 左半屏读状态字地址DRADR1 EQU 0007H 左半屏读显示数据地址CWADR2 EQU 0008H 右半屏写指令代码地址DWADR2 EQU 0009H 右半屏写显示数据地址CRADR2 EQU 000AH 右半屏读状态字地址DRADR2 EQU 000BH 右半屏读显示数据地址 液晶控制器HD61202一共有七条指令,从作用上可分为两类,显示状态设置指令和数据读写操作指令.显示起始行设置中L5~L0为显示起始行的地址,取值在0-3FH1-64行范围内.页面地址设置中P2-P0为选择的页面地址,取值范围为0-7H,代表1-8页.列地址设置中C5-C0为Y地址计数器的内容,取值在0-3FH1-64行范围内. 显示器上128点×64点,每8点为一字节数据,都对应着显示数据RAM在HD61202芯片内,一点对应一个bit,计算机写入或读出显示存储器的数据代表显示屏上某一点列上的垂直8点行的数据.D0代表最上一行的点数据,D1为第二行的点数据,…….,D7为第八行的点数据.该bit=1时该点则显示黑点出来,该bit=0时该点则消失.另外LCD指令中有-条display ONOFF指令,display ON时显示RAM数据对应显示的画面;display OFF则画面消失,RAM中显示数据仍存在. 由于MGLS12864液晶显示器没有内部字符发生器,所以在屏幕上显示的任何字符,汉字等须自己建立点阵字模库,然后均按图形方式进行显示.由于HD61202显示存储器的特性,不能将计算机内的汉字库和其它字模库提出直接使用,需要将其旋转90度后再写入.点阵字模库建立包括以下几个方面:1建立8×16点阵常用字符,数字,符号字模库.可选用计算机BIOS中ASCII的8×16字模库,所有字符按照ASCII值从小到大升序排列.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,axmov ax,bpmov ascii_bp,ax };ascii_offset=ascii_bp+16*揻orj=0;j16;j++ buf[j]=peekbascii_es,ascii_offset+j;*读16字节点阵数据*揻orm=0;m16;m++ *点阵数据转换成LCD格式数据* #9; { ifmshiftn-m&0x011;搣 也可选用UCDOS的ASC16文件做字模库.ASC16文件的字符为8×16点阵.所有字符按照ASCII值从小到大升序排列.计算字符首地址的公式:字符首地址=字符的ASCII码值×16+字模库首地址.2 建立所用到的16×16点阵字模库.汉字字符可选用UCDOS的HZK16文件做字模库.HZK16文件的字符为16×16点阵.所有字符按照区位码从小到大升序排列.计算汉字字符首地址的公式如下:汉字首地址=区码-1×94+位码-1×32.笔者用C语言编写的读取UCDOS点阵字库字模程序,完成字模读取,数据重新排列,并按MCS-51汇编程序的要求写成相应格式的文本文件.p=quma-1*94+weima-1*32;cclibfile=fopen"HZK16","rb";fseekcclibfile,longp,SEEK_SET;freadbuf,sizeofunsigned char,32, *读32字节点阵数据*form=0;m32;m++{ *点阵数据转换成LCD格式数据*ifm= 8 && m=16 && mshiftn-m&0x011;}3 常用图形如产品商标等的点阵图形的建立.对已有的图形可采用扫描仪进行扫描,然后用图形处理软件进行处理,再将BMP格式文件转换成MCS-51的汇编文件的格式. 以上所有的字模数据都存放在单片机W78E58的程序存储器中,如用到的汉字,图形较多,可选用较大容量的程序存储器. 通用子程序分左半屏,右半屏写指令代码子程序和写显示数据子程序.液晶显示驱动器HD16202内部有个忙标志寄存器,当BF=1时,表示内部操作正在运行,不能接受外部数据或指令.下面子程序中设指令代码寄存器为COMM,数据寄存器为DATA.COMM EQU 20H *指令寄存器* DATA EQU 21H *数据寄存器*1 左半屏写指令子程序WR_CMD1:MOV DPTR,#CRADR1 ;*读状态字口地址*WAIT1: MOVX A,@DPTR;* 读状态字 * #9; JB ACC.7,WAIT1;*判忙标志BF,如BF=1忙,等待* #9; MOV DPTR,#CWADR1;*写指令字口地址* #9; MOV A,COMM ;*取指令代码* #9; MOVX @DPTR,A ;*写指令代码* #9; RET 2左半屏写数据子程序WR_DATA1:MOV DPTR,#CRADR1 ;*读状态字口地址*WAIT11: MOVX A,@DPTR ;* 读状态字 *JB ACC.7,WAIT11 ;*判忙标志BF,如BF=1忙,等待*MOV DPTR,#DWADR1 ;*写数据字口地址*MOV A,DATA ;*取数据 #9; MOVX @DPTR,A ;*写数据*RET3右半屏写指令子程序WR_CMD2和右半屏写数据子程序WR_DATA2的编制同左半屏子程序相同,只是对应口地址不同. MGLS12864液晶显示屏由二片HD61202控制,LCD显示中应尽量避免一个字符一半在左半屏显示,另一半在右半屏显示的情况.设列地址寄存器为COLUMN,页地址寄存器为PAGE,要显示的字符代码寄存器为ASCIICODE,W78E58内RAM28H-RAM37H共16个字节存放8×16的点阵数据,生成的8×16点阵库文件存放在单片机W78E58存储器中的首地址定义为ASCII_DOT816.DISP_ASCII816: MOV DPTR,#ASCII_DOT816 ;8×16点阵库首地址MOV A,ASCIICODE ;显示字符代码ASCIICODE #9; MOV B,#16;每个字符点阵占16个字节 #9; MUL A;计算显示字符在字库的首地址ADD A,DPL #9; MOV DPL,A #9; MOV A,DPH #9; ADDC A,B #9; MOV DPH,A #9; MOV R0,#28H;将点阵数据放到RAM28H-RAM37HMOV R2,#00HLP_MOVDOT16: MOV A,R2 #9; MOVC A,@A+DPTR #9; MOV @R0,A ;如要将字符反显黑底白字,则读出点 #9; INC R0;阵数据后求反放入单片机的RAM中 #9; INC R2 #9; CJNE R2,#16,LP_MOVDOT16 #9; PUSH COLUMN #9; MOV A,COLUMN ;显示列数COLUMN是否在右半屏 #9; CJNE A,#64,ASCII_IF64ASCII_IF64: JNC ASCII_YGE64 #9; MOV DPTR,#CWADR1;在左半屏时,选择左半屏写指令代码地址 #9; CLR FIRST0_SECOND1_BIT ;左半屏列数标志BIT=0 #9; SJMP ALL_COLUMNASCII_YGE64: CLR C #9; SUBB A,#64 #9; MOV COLUMN,A #9; MOV DPTR,#CWADR2 ;在右半屏时,选择右半屏写指令代码地址 #9; SETB FIRST0_SECOND1_BIT ;右半屏列数标志BIT=1ALL_COLUMN:MOV A,PAGE #9; ADD A,#B ;设置页地址命令 #9; MOVX @DPTR,A #9; MOV A,COLUMN;设置列地址命令 #9; ADD A,#B #9; MOVX @DPTR,A #9; MOV DPTR,DWADR1 ;根据左右半屏列数标志,选择写显示数据地址 #9; JNB FIRST0_SECOND1_BIT, ALLMOV1 #9; MOV DPTR,DWADR2ALLMOV1: MOV R0,#28H #9; MOV_8BYTE1:MOV A,@R0 #9; MOVX @DPTR,A ;写显示数据 #9; NOP #9; INC R0 #9; CJNE R0,#30H,MOV_8BYTE1 #9; MOV DPTR,#CWADR1 #9; JNB FIRST0_SECOND_BIT,ALLMOV2 #9; MOV DPTR,#CWADR2ALLMOV2: MOV A,PAGE #9; INC A ;页地址加1 #9; ADD A,#B #9; MOVX @DPTR,A ;设置页地址命令 #9; MOV A,COLUMN ;设置列地址命令 #9; ADD A,#B #9; MOVX @DPTR,A #9; MOV DPTR,DWADR1;根据左右半屏列数标志,选择写显示数据地址 #9; JNB FIRST0_SECOND1_BIT,ALLMOV3 #9; MOV DPTR,DWADR2ALLMOV3: MOV R0,#30HMOV_8BYTE2:MOV A,@R0 #9;MOVX @DPTR,A ;写显示数据 #9; INC R0 #9; CJNE R0,#38H,MOV_8BYTE2 #9; POP COLUMN #9; RET 16×16汉字显示子程序与8X16字符显示子程序基本相同.不同在于每次写32字节显示数据,可定义W78E58内RAM28H-RAM47H共32个字节存放16×16的点阵数据,生成的16×16点阵库文件存放在单片机W78E58存储器中的首地址定义为HZK_DOT16X16.具体程序略. 本文在介绍液晶显示模块与单片机接口的同时,采用了新颖的改造方案以解决应用中的问题.由于节省了单片机口线,使系统资源得到了充分利用.可显示汉字,字符和图形,使人机界面更为美观,易读.由于各种液晶显示模块的接口基本相同,因此本文所讨论的内容也适用于其它型号的液晶显示模块.液晶显示较其它显示终端有许多优点:功耗低且字型美观,可用集成电池供电,便于携带等.相信它将得到越来越广泛的使用.■ 参考文献1 李维计,郭强. 液晶显示应用技术 电子工业出版社 2000.2 陈粤初,窦振中 单片机应用系统设计与实践 北京航空航天大学出版社,1991.3 王士元 C高级实用程序设计 清华大学出版社,1998.4 潘建华,卫跃文 C语言实用软件界面技术 西安电子科技大学出版社, 1996.12864图形显示原理分析 c程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
25页免费16页免费17页免费18页免费12页4下载券 6页免费29页免费5页免费9页免费9页免费
喜欢此文档的还喜欢25页免费23页1下载券3页免费25页1下载券8页1下载券
12864图形显示原理分析 c程序|184​图​形​显​示​原​理​分​析​ ​c​程​序​(​分​析​得​很​透​彻​)
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢服务热线:400-702-1168 ()
您好,访客
||||||||||
LCD12864等液晶接口的设计
发布时间: 08:00:00&&来源:<a href="/arthtml/art12844.ht&&作者:&&点击:872
LCD12864等液晶接口的设计电子设计应用 作者:陆爱明本文介绍了图形液晶显示器MGLS12864与单片机W78E58的硬件设计和软件设计技术。同时给出了ASCII码8&#215;16字库、汉字16&#215;16字库建立的程序及在液晶上显示数字、字符和汉字的程序。   引言  液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其它显示器无法比拟的优点
近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。LCD可分为段位式LCD、字符式LCD和点阵式LCD。其中
段位式LCD和字符式LCD只能用于字符和数字的简单显示
不能满足图形曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字
还可以显示各种图形、曲线及汉字
并且可以实现屏幕上下左右滚动
分区开窗口
闪烁等功能
用途十分广泛。本文介绍了点阵式液晶显示器MGLS12864与单片机的接口及编程的方法
同时介绍了创建8&#215;16字符和16&#215;16点阵汉字的方法
及常用的字符显示和汉字显示程序。  硬件设计  这里着重介绍液晶显示器与单片机的接口技术。有关MGLS12864图形液晶引脚功能及控制器HD61202的接口时序波形
可查看图形液晶显示器产品有关手册。  单片机可以通过数据总线与控制信号直接采用存储器访问形式、I/O设备访问形式控制该液晶显示模块。本文以华邦公司的W78E58为例
它是51系列单片机兼容的微控制器
其内部有32KB的FLASH EEPROM
用户编制的程序及需要显示的英文字母、数字、汉字、曲线和图形都可以存储在里面
免去了扩展外部存储器的麻烦
使得以W78E58单片机为核心的控制系统电路更简单。因此十分适用于液晶显示。MGLS12864与W78E58单片机接口电路如图1所示。该图采用直接访问方式
单片机通过低位地址A2控制CSA;A3控制CSB
以选通液晶显示屏上各区的控制器HD61202;同时W78E58用地址A1作为R/W信号控制数据总线的数据流向;用地址A0作为D/I信号控制寄存器的选择;E信号由W78E58的读信号/RD和写信号/WR合成产生;另外单片机的复位脚(Array脚)经反相器后连接到液晶显示器复位脚(17脚 /RST)
当单片机上电复位或手动复位时
液晶显示器同时也复位;从而实现了W78E58对内置HD61202图形液晶显示器模块的电路连接。电路中LCD电源控制端VO是用来调节显示屏灰度的
调节该端的电压
可改变显示屏字符、图形的颜色深浅。  单片机对液晶显示模块的操作可分为两部分
即左半屏和右半屏操作。下面是根据图1的连接确定对应左半屏(前64&#215;64)和右半屏(后64&#215;64)操作地址:  CWADR1 EQU 0004H 左半屏写指令代码地址 DWADR1 EQU 0005H 左半屏写显示数据地址  CRADR1 EQU 0006H 左半屏读状态字地址 DRADR1 EQU 0007H 左半屏读显示数据地址  CWADR2 EQU 0008H 右半屏写指令代码地址 DWADR2 EQU 000ArrayH 右半屏写显示数据地址  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行)范围内。显示器上128点&#215;64点
每8点为一字节数据
都对应着显示数据RAM(在HD61202芯片内)
一点对应一个bit
计算机写入或读出显示存储器的数据代表显示屏上某一点列上的垂直8点行的数据。D0代表最上一行的点数据
D1为第二行的点数据
D7为第八行的点数据。该bit=1时该点则显示黑点出来
该bit=0时该点则消失。另外LCD指令中有-条display ON/OFF指令
display ON时显示RAM数据对应显示的画面;display OFF则画面消失
RAM中显示数据仍存在。  点阵字模文件的建立:由于MGLS12864液晶显示器没有内部字符发生器
所以在屏幕上显示的任何字符、汉字等须自己建立点阵字模库
然后均按图形方式进行显示。由于HD61202显示存储器的特性
不能将计算机内的汉字库和其它字模库提出直接使用
需要将其旋转Array0度后再写入。点阵字模库建立包括以下几个方面:  (1) 建立8&#215;16点阵常用字符、数字、符号字模库。  可选用计算机BIOS中ASCII的8&#215;16字模库
所有字符按照ASCII值从小到大升序排列。  asm{mov ax
/*AH=11h?功能调用。装入字库至软字库 */  mov bh
/*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*  for(j=0;j&16;j++) buf[j]=peekb(ascii_es
ascii_offset+j); /*读16字节点阵数据*/  for(m=0;m&16;m++) /*点阵数据转换成LCD格式数据*/  { 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&#215;16点阵。所有字符按照ASCII值从小到大升序排列。计算字符首地址的公式:字符首地址=字符的ASCII码值&#215;16+字模库首地址。  (2) 建立所用到的16&#215;16点阵字模库。  汉字字符可选用UCDOS的HZK16文件做字模库。HZK16文件的字符为16&#215;16点阵。所有字符按照区位码从小到大升序排列。计算汉字字符首地址的公式如下:汉字首地址=((区码-1)&#215;Array4+位码-1)&#215;32。作者用C语言编写的读取UCDOS点阵字库字模程序
完成字模读取、数据重新排列
并按MCS-51汇编程序的要求写成相应格式的文本文件。  p=((quma-1)*Array4+weima-1)*32;  cclibfile=fopen("HZK16"
);  fseek(cclibfile
SEEK_SET);  fread(buf
sizeof(unsigned char)
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;  }  (3) 常用图形(如产品商标等)的点阵图形的建立。  对已有的图形可采用扫描仪进行扫描
然后用图形处理软件进行处理
再将BMP格式文件转换成MCS-51的汇编文件的格式。  以上所有的字模数据都存放在单片机W78E58的程序存储器中
如用到的汉字、图形较多
可选用较大容量的程序存储器。  通用子程序:通用子程序分左半屏、右半屏写指令代码子程序和写显示数据子程序。液晶显示驱动器HD16202内部有个忙标志寄存器
表示内部操作正在运行
不能接受外部数据或指令。下面子程序中设指令代码寄存器为COMM
数据寄存器为DATA。  (COMM EQU 20H /*指令寄存器*/ DATA EQU 21H /*数据寄存器*/)  (1) 左半屏写指令子程序  WR_CMD1: MOV DPTR
#CRADR1 ;/*读状态字口地址*/  WAIT1: MOVX A
@DPTR ;/* 读状态字 */  JB ACC.7
WAIT1 ;/*判忙标志BF
等待*/  MOV DPTR
#CWADR1 ;/*写指令字口地址*/  MOV A
COMM ;/*取指令代码*/  MOVX @DPTR
A ;/*写指令代码*/  RET  (2)左半屏写数据子程序  WR_DATA1:MOV DPTR
#CRADR1 ;/*读状态字口地址*/  WAIT11: MOVX A
@DPTR ;/* 读状态字 */  JB ACC.7
WAIT11 ;/*判忙标志BF
等待*/  MOV DPTR
#DWADR1 ;/*写数据字口地址*/  MOV A
DATA ;/*取数据/  MOVX @DPTR
A ;/*写数据*/  RET  (3)右半屏写指令子程序WR_CMD2和右半屏写数据子程序WR_DATA2的编制同左半屏子程序相同
只是对应口地址不同。  8X16字符显示子程序:MGLS12864液晶显示屏由二片HD61202控制
LCD显示中应尽量避免一个字符一半在左半屏显示
另一半在右半屏显示的情况。设列地址寄存器为COLUMN
页地址寄存器为PAGE
要显示的字符代码寄存器为ASCIICODE
W78E58内RAM28H-RAM37H共16个字节存放8&#215;16的点阵数据
生成的8&#215;16点阵库文件存放在单片机W78E58存储器中的首地址定义为ASCII_DOT816。DISP_ASCII816: MOV DPTR
#ASCII_DOT816 ;8&#215;16点阵库首地址MOV A
ASCIICODE ;显示字符代码ASCIICODE MOV B
#16 ;每个字符点阵占16个字节 MUL AB ;计算显示字符在字库的首地址  ADD A
DPL  MOV DPL
A  MOV A
DPH  ADDC A
B  MOV DPH
A  ;  MOV R0
#28H ;将点阵数据放到RAM28H-RAM37H  MOV R2
#00H  LP_MOVDOT16: MOV A
R2  MOVC A
@A+DPTR  MOV @R0
A ;如要将字符反显(黑底白字)
则读出点  INC R0 ;阵数据后求反放入单片机的RAM中  INC R2  CJNE R2
LP_MOVDOT16  ;  PUSH COLUMN  MOV A
COLUMN ;显示列数COLUMN是否在右半屏  CJNE A
ASCII_IF64  ASCII_IF64: JNC ASCII_YGE64  MOV DPTR
#CWADR1 ;在左半屏时
选择左半屏写指令代码地址  CLR FIRST0_SECOND1_BIT ;左半屏列数标志BIT=0  SJMP ALL_COLUMN  ASCII_YGE64: CLR C  SUBB A
#64  MOV COLUMN
A  MOV DPTR
#CWADR2 ;在右半屏时
选择右半屏写指令代码地址  SETB FIRST0_SECOND1_BIT ;右半屏列数标志BIT=1  ALL_COLUMN: MOV A
PAGE  ADD A
#B ;设置页地址命令  MOVX @DPTR
A  MOV A
COLUMN ;设置列地址命令  ADD A
#B  MOVX @DPTR
A  MOV DPTR
DWADR1 ;根据左右半屏列数标志
选择写显示数据地址  JNB FIRST0_SECOND1_BIT
ALLMOV1  MOV DPTR
DWADR2  ALLMOV1: MOV R0
#28H  MOV_8BYTE1: MOV A
@R0  MOVX @DPTR
A ;写显示数据  NOP  INC R0  CJNE R0
MOV_8BYTE1  ;  MOV DPTR
#CWADR1  JNB FIRST0_SECOND_BIT
ALLMOV2  MOV DPTR
#CWADR2  ALLMOV2: MOV A
PAGE  INC A ;页地址加1  ADD A
#B  MOVX @DPTR
A ;设置页地址命令  MOV A
COLUMN ;设置列地址命令  ADD A
#B  MOVX @DPTR
A  MOV DPTR
DWADR1;根据左右半屏列数标志
选择写显示数据地址  JNB FIRST0_SECOND1_BIT
ALLMOV3  MOV DPTR
DWADR2  ALLMOV3: MOV R0
#30H  MOV_8BYTE2: MOV A
@R0  MOVX @DPTR
A ;写显示数据  INC R0  CJNE R0
MOV_8BYTE2  ;  POP COLUMN  RET  16&#215;16汉字显示子程序:16&#215;16汉字显示子程序与8X16字符显示子程序基本相同。不同在于每次写32字节显示数据
可定义W78E58内RAM28H-RAM47H共32个字节存放16&#215;16的点阵数据
生成的16&#215;16点阵库文件存放在单片机W78E58存储器中的首地址定义为HZK_DOT16X16。具体程序略
读者如需要可来函索取。  结语  本文在介绍液晶显示模块与单片机接口的同时
采用了新颖的改造方案以解决应用中的问题。由于节省了单片机口线
使系统资源得到了充分利用。可显示汉字、字符和图形
使人机界面更为美观、易读。其它如8&#215;8西文点阵字库及图形的建立和显示可参照上面介绍的方法来编写程序。由于各种液晶显示模块的接口基本相同
因此本文所讨论的内容也适用于其它型号的液晶显示模块。液晶显示较其它显示终端有许多优点:功耗低且字型美观、可用集成电池供电
便于携带等。相信它将得到越来越广泛的使用(出处:赛尔电子技术中心)
以上内容由
搜集整理,如转载请注明原文出处,并保留这一部分内容。
  “华夏名网”
是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构评价为十大IDC服务商之一。
华夏名网网址导航:
上一篇:下一篇:
(4915次点击) (2768次点击) (4158次点击) (2793次点击) (2369次点击) (3727次点击) (3568次点击) (2358次点击) (2528次点击) (2438次点击)
(3415次点击) (3233次点击) (3244次点击) (3989次点击) (2408次点击) (2320次点击) (3211次点击) (3619次点击) (2352次点击) (2334次点击)
&2002- 飞数科技 版权所有
电话总机:028-91 94
公司地址:四川省成都市青龙街51号倍特康派大厦10楼5号3507人阅读
12864点阵型液晶显示屏的工作原理&
转自(由于图片不能直接粘贴,故而阅读中需要看图的读者请点击原版地址)
&&&&大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了1602字符型液晶显示的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习12864点阵型液晶显示屏的基本原理与使用方法。
点阵LCD的显示原理
&&&&在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。
&&&&那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示:
图1&&A&字模图
&&&&而中文的&你&在字模中的记载却如图2所示:
图2&&你&字模图
12864点阵型LCD简介
&&&&12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128&64全点阵液晶显示器组成。可完成图形显示,也可以显示8&4个(16&16点阵)汉字。
管脚功能描述
液晶显示器驱动电压
D/I=&H&,表示DB7∽DB0为显示数据
D/I=&L&,表示DB7∽DB0为显示指令数据
R/W=&H&,E=&H&数据被读到DB7∽DB0
R/W=&L&,E=&H&L&数据被写到IR或DR
R/W=&L&,E信号下降沿锁存DB7∽DB0
R/W=&H&,E=&H&DDRAM数据读到DB7∽DB0
H:选择芯片(右半屏)信号
H:选择芯片(左半屏)信号
复位信号,低电平复位
LCD驱动负电压
LED背光板电源
LED背光板电源
表1:12864LCD的引脚说明
&&&&在使用12864LCD前先必须了解以下功能器件才能进行编程。12864内部功能器件及相关功能如下:
1.&指令寄存器(IR)
&&&&IR是用于寄存指令码,与数据寄存器数据相对应。当D/I=0时,在E信号下降沿的作用下,指令码写入IR。
2.数据寄存器(DR)
&&&&DR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。
3.忙标志:BF
&&&&BF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。
&&&&利用STATUS&READ指令,可以将BF读到DB7总线,从检验模块之工作状态。
4.显示控制触发器DFF
&&&&此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY&OFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY&OFF)。
&&&&DDF的状态是指令DISPLAY&ON/OFF和RST信号控制的。
5.XY地址计数器
&&&&XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。
&&&&X地址计数器是没有记数功能的,只能用指令设置。
&&&&Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。
6.显示数据RAM(DDRAM)
&&&&DDRAM是存储图形显示数据的。数据为1表示显示选择,数据为0表示显示非选择。DDRAM与地址和显示位置的关系见DDRAM地址表。
7.Z地址计数器
&&&&Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。
&&&&Z地址计数器可以用指令DISPLAY&START&LINE预置。因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。
12864LCD的指令系统及时序
&&&&该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指令表如表2所示:
显示起始行设置
列地址设置
表2:12864LCD指令表
各功能指令分别介绍如下。
&&显示开/关指令
当DB0=1时,LCD显示RAM中的内容;DB0=0时,关闭显示。
2、显示起始行(ROW)设置指令
该指令设置了对应液晶屏最上一行的显示RAM的行号,有规律地改变显示起始行,可以使LCD实现显示滚屏的效果。
3、页(PAGE)设置指令
显示RAM共64行,分8页,每页8行。
4、列地址(Y&Address)设置指令
设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样MPU就可以
用读、写指令读出该单元中的内容或向该单元写进一个字节数据。
5、读状态指令
DB7&DB6&DB5&DB4&DB3DB2DB1&DB0
该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:
BUSY:1-内部在工作0-正常状态
ON/OFF:1-显示关闭0-显示打开
RESET:1-复位状态0-正常状态
在BUSY和RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。
在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作。
6、写数据指令
DB7&DB6&DB5&DB4&DB3DB2DB1&DB0
11显示起始行(0~63)
&&读数据指令
DB7&DB6&DB5&DB4&DB3DB2DB1&DB0
10111页号(0~7)
&&&&读、写数据指令每执行完一次读、写操作,列地址就自动增一。必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。
12864点阵型LCD软硬件设计实例
&&&&通过以上学习,现在就来实际应用12864LCD的软硬件设计。本实例将在LCD上显示如图3所示内容:
图3&模拟显示效果图
&&&&在调试前先将显示切换开关切换到LCD显示状态。
图4&128*64LCD实验演示图
硬件原理图
图5&硬件原理图
程序流程图
图6&软件流程图
&&&&在编写软件代码之前必须要先掌握汉字取模的方法。要得到上表中的文字,我们可以借助取模软件来完成。目前点阵LCD的取模软件有很多,我们以本开发板配套的取模软件为例来介绍一下汉字的取模方法。
&&&&打开取模软件出现如下显示界面:
&&&&在文字输入区中输入文字,我们以输入一个欢迎的&欢&字为例,了解其取模过程。在文字输入区中输入&欢&后按CTRL+ENTER组合键后就看到&欢&字已经在模拟显示区显示出来了
&&&&在&取模方式&中选择&C51格式&就可以在&点阵生成区&得到你要的汉字&欢&的显示代码。
&&&&经过以上步骤后一个汉字就取模成功了,在程序中只要调用这段代码就可显示出汉字&欢&了,其它汉字也用同样的方法。取完要显示的全部汉字代码后我们就可以编程了。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13505次
排名:千里之外
(1)(1)(3)(2)(2)(1)

我要回帖

更多关于 12864英文字库 的文章

 

随机推荐