VGA640480使用说明_第1页
VGA640480使用说明_第2页
VGA640480使用说明_第3页
VGA640480使用说明_第4页
VGA640480使用说明_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FONT-TURBO-VGA640480使用说明FONT-TURBO-VGA640480是一块用于普通单片机(包括51、AVR、PIC、ARM、MSP430等等)控制VGA显示器(包括液晶显示器和CRT显示器,只要具备标准VGA接口)显示各种图形的控制板。其分辨率为640X480,色深为16位色,能显示65536种颜色本VGA卡具备4屏缓存区,能根据指令很快地换屏显示。采用8位并行总线进行图像图形数据传送,速度快,具有硬件的清屏和区域填充指令,能指定清屏后的背景颜色,能对任意位置、任意大小的区域进行颜色数据复制,让很慢的单片机也可以很快的进行显示操作,,具有多种尺寸的字体供选择,可以很方便地在应用系统上进行中英文的显示,应用系统无需再外挂存储器存储字库或占用宝贵的程序空间来保存字库,可以设置字体的颜色和字体背景的颜色,也可以把背景色设成透明,让字体跟图片背景很好地融合在一体。与CPU的接口兼容5V和3.3V。如果想在显示器屏幕某个位置显示某种颜色,只要向控制板写入X坐标(639, 分两次8位写入),坐标(0439, 分两次8位写入) ,然后写入16位的颜色(分两次8位写入),就可以马上在屏幕上指定的一点看到所需的颜色,通过各种函数就可以实现画线,绘制图片等功能。控制板与MCU的接口如下(从控制板的顶层向下看)(注意地址线不是按顺序的):接口信号定义如下:符号管脚类型说明VCC1,2,22,24,26,28,30电源5V直流5V,确保电源纹波较少GND12,14,21,23,25,27,29地地线D0D73,5,7,9,11,13,15,17I数据总线,图像图形数据通过该端口写入BUSY20O忙线:高电平有效,表示控制器正在进行内部的数据写入,这时外部MCU不能向控制器写入数据WR19I写数据线,上下跳变都有效,当WR从高到低跳变时,D0D7被写入控制器低位,当WR从低到高跳变时,D0D7被写入控制器的高位A0A34,6,8,18I地址线,用于区分写入X坐标,Y坐标,颜色,参数,字体参数等,当A3A2A1A0=0000时,数据总线上的数据写进控制器的颜色寄存器,当A3A2A1A0=0001时,数据总线上的数据写进X坐标,当A3A2A1A0=10时,数据总线上的数据写进Y坐标不连接16改引脚不能连接任何电平信号真值表WRA4A3A2A1A0操作00000数据总线颜色寄存器(低8位)00000数据总线颜色寄存器(高8位)00001数据总线X坐标寄存器(低8位) (1640)00001数据总线X坐标寄存器(高2位) (1640)00010数据总线Y坐标寄存器(低8位)(1480)00010数据总线Y坐标寄存器(高1位)(1480)00011写显示配置寄存器(见显示配置寄存器说明)00100写复制寄存器 源地址X坐标(低8位)00100写复制寄存器 源地址X坐标(高2位)00101写复制寄存器 源地址Y坐标(低8位)00101写复制寄存器 源地址Y坐标(高1位)00110写复制寄存器 目标地址X坐标(低8位)00110写复制寄存器 目标地址X坐标(高2位)00111写复制寄存器 目标地址Y坐标(低8位)00111写复制寄存器 目标地址Y坐标(高1位)01000写复制寄存器 复制区域宽度(低8位)01000写复制寄存器 复制区域宽度(高2位)接上表WRA4A3A2A1A0操作01001写复制寄存器 复制区域高度(低8位)01001写复制寄存器 复制区域高度(高1位)01010写复制配置寄存器(见复制配置寄存器说明)01011写 执行字体显示命令 执行复制 或 执行区域填充 命令寄存器01100写填充颜色寄存器(低8位)01100写填充颜色寄存器(高8位)01101写字体颜色寄存器(低8位)01101写字体颜色寄存器(高8位)01110写字体背景颜色寄存器(低8位)01110写字体背景颜色寄存器(高8位)01111写字体选择寄存器10000写字体显示坐标X寄存器(低8位)10000写字体显示坐标X寄存器(高2位)10001写字体显示坐标Y寄存器(低8位)10001写字体显示坐标Y寄存器(高1位)10010写字体在字库存储器起始地址寄存器(低8位)10010写字体在字库存储器起始地址寄存器(中8位)10011写字体在字库存储器起始地址寄存器(高8位)10100写字体显示背景是否透明模式选择寄存器10101写字体宽度寄存器(低8位)10101写字体宽度寄存器(高2位)10110写字体显示宽度寄存器(低8位)10110写字体显示宽度寄存器(高2位)10111写字体高度寄存器(低8位)10111写字体高度寄存器(高2位)显示配置寄存器如下表:D7D6D5D4D3D2D1D0保留位保留位保留位保留位当前写入区选择位1当前写入区选择位0当前显示区选择位1当前显示区选择位0默认为0默认为0默认为0默认为0注意:本卡共有4个区可供选择进行显示,写入的操作区可以跟显示区相同,也可以不同,当相同时,写入的数据会马上显示出来,当不相同时写入的数据不会马上显示出来,而是当你写好数据后,把当前显示区域设置到你刚刚写进的区域,就可以看到刚才写进的图形。复制配置寄存器如下表:D7D6D5D4D3D2D1D0保留位保留位保留位保留位复制目标区选择位1复制目标区选择位0复制源区选择位1复制源区选择位0默认为0默认为0默认为0默认为0、“复制源区”代表从哪个区复制、“复制目标区”代表数据要复制到那个区、共有4个区,(位1、位0)=00时为第一个区,(位1、位0)=01时为第二个区,(位1、位0)=10时为第三个区,(位1、位0)=11时为第四个区复制源地址X坐标寄存器(低8位)D7D6D5D4D3D2D1D0地址位7地址位6地址位5地址位4地址位3地址位2地址位1地址位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0复制源地址X坐标寄存器(高2位)D7D6D5D4D3D2D1D0保留位保留位保留位保留位保留位保留位地址位9地址位8默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0复制源地址Y坐标寄存器(低8位)D7D6D5D4D3D2D1D0地址位7地址位6地址位5地址位4地址位3地址位2地址位1地址位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0复制源地址Y坐标寄存器(高1位)D7D6D5D4D3D2D1D0保留位7保留位6保留位5保留位4保留位3保留位2保留位1地址位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0注:复制过程的数据来自于复制源地址X坐标寄存器、复制源地址Y坐标寄存器与复制配置寄存器中的”复制源区选择位”;譬如你要从1区的X(10),Y(20)的位置复制数据,就要设定复制源地址X坐标寄存器=10,复制源地址Y坐标寄存器=20,”复制源区选择位”=(0,1)。复制目标地址X坐标寄存器(低8位)D7D6D5D4D3D2D1D0地址位7地址位6地址位5地址位4地址位3地址位2地址位1地址位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0复制目标地址X坐标寄存器(高2位)D7D6D5D4D3D2D1D0保留位保留位保留位保留位保留位保留位地址位9地址位8默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0复制目标地址Y坐标寄存器(低8位)D7D6D5D4D3D2D1D0地址位7地址位6地址位5地址位4地址位3地址位2地址位1地址位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0复制目标地址Y坐标寄存器(高1位)D7D6D5D4D3D2D1D0保留位保留位保留位保留位保留位保留位保留位地址位8默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0注:复制过程的数据将会写进复制目标地址X坐标寄存器、复制目标地址Y坐标寄存器与复制配置寄存器中的”复制目标区选择位”;譬如你要将数据写进2区的X(100),Y(200)的位置复制数据,就要设定复制目标地址X坐标寄存器=100,复制目标地址Y坐标寄存器=200,”复制目标区选择位”=(1,0)。执行复制 或 执行区域填充 命令寄存器D7D6D5D4D3D2D1D0保留位保留位保留位保留位保留位写1时开始执行字体显示写1时开始执行区域填充写1时开始执行数据复制默认为0默认为0默认为01、 区域填充的颜色为“填充颜色寄存器”2、 区域填充命令设定的填充区域为:坐标(目标地址X寄存器,目标地址Y寄存器),宽度(复制区域宽度寄存器),高度(复制区域高度寄存器)3、 D2写入1执行字体显示操作填充颜色寄存器低8位D7D6D5D4D3D2D1D0填充颜色位7填充颜色位6填充颜色位5填充颜色位4填充颜色位3填充颜色位2填充颜色位1填充颜色位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0填充颜色寄存器高8位D7D6D5D4D3D2D1D0填充颜色位15填充颜色位14填充颜色位13填充颜色位12填充颜色位11填充颜色位10填充颜色位9填充颜色位8默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0以下部分为字库显示相关寄存器字体颜色字如上图,字体的颜色为红色,字体背景色为绿色,字体颜色和字体背景色各用16位表示。字体颜色寄存器(低8位)(WR=,A4=0,A3=1,A2=1,A1=0,A0=1)D7D6D5D4D3D2D1D0字体颜色位7字体颜色位6字体颜色位5字体颜色位4字体颜色位3字体颜色位2字体颜色位1字体颜色位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体颜色寄存器(高8位)(WR=,A4=0,A3=1,A2=1,A1=0,A0=1)D7D6D5D4D3D2D1D0字体颜色位15字体颜色位14字体颜色位13字体颜色位12字体颜色位11字体颜色位10字体颜色位9字体颜色位8默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体背景颜色寄存器(低8位)(WR=,A4=0,A3=1,A2=1,A1=1,A0=0)D7D6D5D4D3D2D1D0字体颜色位7字体颜色位6字体颜色位5字体颜色位4字体颜色位3字体颜色位2字体颜色位1字体颜色位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体背景颜色寄存器(高8位)(WR=,A4=0,A3=1,A2=1,A1=1,A0=0)D7D6D5D4D3D2D1D0字体颜色位15字体颜色位14字体颜色位13字体颜色位12字体颜色位11字体颜色位10字体颜色位9字体颜色位8默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体选择寄存器 (WR=,A4=0,A3=1,A2=1,A1=1,A0=1)D7D6D5D4D3D2D1D0无效位无效位无效位无效位字体选择位3字体选择位2字体选择位1字体选择位0默认为0默认为0默认为0默认为0本显卡可以选择如下9种字体字体选择寄存器=0时,ASC12(6*12英文字符)字体选择寄存器=1时,ASC16(8*16英文字符)字体选择寄存器=2时,ASC32(16*32英文字符)字体选择寄存器=3时,ASC48(24*48英文字符)字体选择寄存器=4时,ASC64(32*64英文字符)字体选择寄存器=5时,HZK12(12*12中文字符)字体选择寄存器=6时,HZK16(16*16中文字符)字体选择寄存器=7时,HZK32(32*32中文字符)字体选择寄存器=8时,HZK48(48*48中文字符)字体的坐标如上图所示,字体的坐标为,横坐标X=30,纵坐标Y=20字体显示坐标X寄存器(低8位)(WR=,A4=1,A3=0,A2=0,A1=0,A0=0)D7D6D5D4D3D2D1D0字体显示X坐标位7字体显示X坐标位6字体显示X坐标位5字体显示X坐标位4字体显示X坐标位3字体显示X坐标位2字体显示X坐标位1字体显示X坐标位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体显示坐标X寄存器(高2位)(WR=,A4=1,A3=0,A2=0,A1=0,A0=0)D7D6D5D4D3D2D1D0无效位无效位无效位无效位无效位无效位字体显示X坐标位9字体显示X坐标位8默认为0默认为0字体显示坐标Y寄存器(低8位)(WR=,A4=1,A3=0,A2=0,A1=0,A0=1)D7D6D5D4D3D2D1D0字体显示Y坐标位7字体显示Y坐标位6字体显示Y坐标位5字体显示Y坐标位4字体显示Y坐标位3字体显示Y坐标位2字体显示Y坐标位1字体显示Y坐标位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体显示坐标Y寄存器(高1位)(WR=,A4=1,A3=0,A2=0,A1=0,A0=1)D7D6D5D4D3D2D1D0无效位无效位无效位无效位无效位无效位无效位字体显示Y坐标位8默认为0字体在字库存储器起始地址由于本显卡将9种字库放在一个存储器中,所以每一个字库有一个起始地址(该地址用24位二进制数表示),如下表所示ASC12(地址01535)ASC16(地址1536 3583)ASC32(地址358411775)ASC48 (地址1177630207)ASC64 (地址3020862975)HZK12 (地址62976259247)HZK16(地址259248520943)HZK32(地址5209441567727)HZK48(地址1567728)由于有起始地址存在,所以需要设置字体的起始地址,才能正确的显示字体,字体起始地址设置寄存器如下字体在字库存储器起始地址寄存器(低8位)(WR=,A4=1,A3=0,A2=0,A1=1,A0=0)D7D6D5D4D3D2D1D0字体起始地址寄存器位7字体起始地址寄存器位6字体起始地址寄存器位5字体起始地址寄存器位4字体起始地址寄存器位3字体起始地址寄存器位2字体起始地址寄存器位1字体起始地址寄存器位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体在字库存储器起始地址寄存器(中8位)(WR=,A4=1,A3=0,A2=0,A1=1,A0=0)D7D6D5D4D3D2D1D0字体起始地址寄存器位15字体起始地址寄存器位14字体起始地址寄存器位13字体起始地址寄存器位12字体起始地址寄存器位11字体起始地址寄存器位10字体起始地址寄存器位9字体起始地址寄存器位8默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体在字库存储器起始地址寄存器(高8位)(WR=,A4=1,A3=0,A2=0,A1=1,A0=1)D7D6D5D4D3D2D1D0字体起始地址寄存器位7字体起始地址寄存器位6字体起始地址寄存器位5字体起始地址寄存器位4字体起始地址寄存器位3字体起始地址寄存器位2字体起始地址寄存器位1字体起始地址寄存器位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体背景色是否透明如上图所示,当设置字体的背景色为透明时,字体除了笔画部分挡住背景外,其他部分对背景色不影响字体显示背景是否透明模式选择寄存器 (WR=,A4=1,A3=0,A2=1,A1=0,A0=0)D7D6D5D4D3D2D1D0无效位无效位无效位无效位无效位无效位无效位字体显示背景模式选择位0默认为0当位0为0时,背景色为透明当位0为1时,背景色为不透明字体宽度寄存器(低8位)(WR=,A4=1,A3=0,A2=1,A1=0,A0=1)D7D6D5D4D3D2D1D0字体宽度寄存器位7字体宽度寄存器位6字体宽度寄存器位5字体宽度寄存器位4字体宽度寄存器位3字体宽度寄存器位2字体宽度寄存器位1字体宽度寄存器位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体宽度寄存器(高2位)(WR=,A4=1,A3=0,A2=1,A1=0,A0=1)D7D6D5D4D3D2D1D0无效位无效位无效位无效位无效位无效位字体宽度寄存器位9字体宽度寄存器位8默认为0默认为0字体宽度在不同字体的时候要设置成不同的数值,分别如下ASC12: 8ASC16: 8ASC32:16ASC48:24ASC64:32HZK12:16HZK16:16HZK32:32HZK48:48字体显示宽度寄存器(低8位)(WR=,A4=1,A3=0,A2=1,A1=1,A0=0)D7D6D5D4D3D2D1D0字体显示宽度寄存器位7字体显示宽度寄存器位6字体显示宽度寄存器位5字体显示宽度寄存器位4字体显示宽度寄存器位3字体显示宽度寄存器位2字体显示宽度寄存器位1字体显示宽度寄存器位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体显示宽度寄存器(高2位)(WR=,A4=1,A3=0,A2=1,A1=1,A0=0)D7D6D5D4D3D2D1D0无效位无效位无效位无效位无效位无效位字体显示宽度寄存器位9字体显示宽度寄存器位8默认为0默认为0字体显示宽度在不同字体的时候要设置成不同的数值,分别如下ASC12: 6ASC16: 8ASC32:16ASC48:24ASC64:32HZK12:12HZK16:16HZK32:32HZK48:48字体高度寄存器(低8位)(WR=,A4=1,A3=0,A2=1,A1=1,A0=0)D7D6D5D4D3D2D1D0字体高度寄存器位7字体高度寄存器位6字体高度寄存器位5字体高度寄存器位4字体高度寄存器位3字体高度寄存器位2字体高度寄存器位1字体高度寄存器位0默认为0默认为0默认为0默认为0默认为0默认为0默认为0默认为0字体高度寄存器(高2位)(WR=,A4=1,A3=0,A2=1,A1=1,A0=0)D7D6D5D4D3D2D1D0无效位无效位无效位无效位无效位无效位字体高度寄存器位9字体高度寄存器位8默认为0默认为0字体高度在不同字体的时候要设置成不同的数值,分别如下ASC12: 12ASC16: 16ASC32:32ASC48:48ASC64:64HZK12:12HZK16:16HZK32:32HZK48:48字体显示的步骤:1.设置字体的类型(字体选择寄存器)2.设置字体的颜色3.设置字体的背景色模式4.如果背景色模式是不透明的,设置字体的背景色,否则忽略第4步5.设置字体的宽度6.设置字体的显示宽度7.设置字体的高度8.设置字体要显示的坐标X9.设置字体要显示的坐标Y8.如果是ASC12,把(字符码*12)的结果写进“字体在字库存储器起始地址寄存器”,如要显示A,A的字符码为0X41, 0x41*12=780写进“字体在字库存储器起始地址寄存器”。 如果是ASC16, 把(字符码*16+1536)的结果写进“字体在字库存储器起始地址寄存器”,如要显示A,A的字符码为0X41, 0x41*16+1536= 2576写进“字体在字库存储器起始地址寄存器”。如果是ASC32, 把(字符码*64+ 3584)的结果写进“字体在字库存储器起始地址寄存器”,如要显示A,A的字符码为0X41, 0x41*64+ 3584= 7744写进“字体在字库存储器起始地址寄存器”。如果是ASC48, 把(字符码*144+ 11776)的结果写进“字体在字库存储器起始地址寄存器”,如要显示A,A的字符码为0X41, 0x41*144+ 11776= 21136写进“字体在字库存储器起始地址寄存器”。如果是ASC64, 把(字符码*256+ 30208)的结果写进“字体在字库存储器起始地址寄存器”,如要显示A,A的字符码为0X41, 0x41*256+ 30208= 46848写进“字体在字库存储器起始地址寄存器”。如果是HZK12, 把(字符码高位-0xa1)*94+(字符码低位-0xa1)*24+ 62976)的结果写进“字体在字库存储器起始地址寄存器”,如要显示字, 字的字符码为0Xd7d6,高位为0Xd7,低位为0Xd6, 所以(0xd7-0xa1)*94+(0xd6-0xa1)*24+ 62976=186072 写进“字体在字库存储器起始地址寄存器”。如果是HZK16, 把(字符码高位-0xa1)*94+(字符码低位-0xa1)*32+ 259248)的结果写进“字体在字库存储器起始地址寄存器”,如要显示字, 字的字符码为0Xd7d6,高位为0Xd7,低位为0Xd6, 所以(0xd7-0xa1)*94+(0xd6-0xa1)*32+ 259248= 423376 写进“字体在字库存储器起始地址寄存器”。如果是HZK32, 把(字符码高位-0xa1)*94+(字符码低位-0xa1)*128+ 520944)的结果写进“字体在字库存储器起始地址寄存器”,如要显示字, 字的字符码为0Xd7d6,高位为0Xd7,低位为0Xd6, 所以(0xd7-0xa1)*94+(0xd6-0xa1)*128+ 520944= 1177456写进“字体在字库存储器起始地址寄存器”。如果是HZK48, 把(字符码高位-0xa1)*94+(字符码低位-0xa1)*288+ 1567728)的结果写进“字体在字库存储器起始地址寄存器”,如要显示字, 字的字符码为0Xd7d6,高位为0Xd7,低位为0Xd6, 所以(0xd7-0xa1)*94+(0xd6-0xa1)*288+ 1567728= 3044880写进“字体在字库存储器起始地址寄存器”。显示字体例程如下(例程运行在STC89C51上)void write_lcd_font_code_ex(unsigned int code_num,unsigned char font_type)unsigned long lvar1;unsigned int intvar1,intvar2;write_lcd_font_type(font_type);if(font_type=0) /ASC12lvar1=code_num*12;write_lcd_font_x_width(8);write_lcd_font_x_show_width(6);write_lcd_font_y_height(12);else if(font_type=1)/ASC16lvar1=code_num*16+1536;write_lcd_font_x_width(8);write_lcd_font_x_show_width(8);write_lcd_font_y_height(16);else if(font_type=2)/ASC32lvar1=code_num*64+3584;write_lcd_font_x_width(16);write_lcd_font_x_show_width(16);write_lcd_font_y_height(32);else if(font_type=3) /font ASC48lvar1=code_num*144+11776;write_lcd_font_x_width(24);write_lcd_font_x_show_width(24);write_lcd_font_y_height(48);else if(font_type=4) /font ASC64lvar1=code_num*256+30208;write_lcd_font_x_width(32);write_lcd_font_x_show_width(32);write_lcd_font_y_height(64);else if(font_type=5)/font HZK12intvar1=(code_num8)&0xff;intvar1-=0xa1;intvar1*=94;intvar2=code_num&0xff;intvar2-=0xa1;intvar1+=intvar2;lvar1=intvar1;lvar1*=24;lvar1+=62976;write_lcd_font_x_width(16);write_lcd_font_x_show_width(12);write_lcd_font_y_height(12);else if(font_type=6) /font HZK16intvar1=(code_num8)&0xff;intvar1-=0xa1;intvar1*=94;intvar2=code_num&0xff;intvar2-=0xa1;intvar1+=intvar2;lvar1=intvar1;lvar1*=32; /lvar1+=259248; /write_lcd_font_x_width(16);write_lcd_font_x_show_width(16);write_lcd_font_y_height(16);else if(font_type=7) /font HZK32intvar1=(code_num8)&0xff;intvar1-=0xa1;intvar1*=94;intvar2=code_num&0xff;intvar2-=0xa1;intvar1+=intvar2;lvar1=intvar1;lvar1*=128; /lvar1+=520944; /write_lcd_font_x_width(32);write_lcd_font_x_show_width(32);write_lcd_font_y_height(32);else if(font_type=8) /font HZK48 intvar1=(code_num8)&0xff;intvar1-=0xa1;intvar1*=94;intvar2=code_num&0xff;intvar2-=0xa1;intvar1+=intvar2;lvar1=intvar1;lvar1*=288; /lvar1+=1567728; /write_lcd_font_x_width(48);write_lcd_font_x_show_width(48);write_lcd_font_y_height(48);/ LCD_A4=1; LCD_ A3=0; LCD_A2=0; LCD_A1=1; LCD_A0=0; LCD_PORT=(lvar1&0x00ff); /写字体在字库存储器起始地址寄存器(低8位) LCD_WR=0; LCD_PORT=(lvar18)&0x00ff); /写字体在字库存储器起始地址寄存器(中8位) LCD_WR=1;/ LCD_A4=1; LCD_ A3=0; LCD_A2=0; LCD_A1=1; LCD_A0=1; LCD_PORT=(lvar116)&0x00ff); /写字体在字库存储器起始地址寄存器(高8位) LCD_WR=0; LCD_PORT=(lvar116)&0x00ff); LCD_WR=1;/start_to_copy(4); /开始显示asm(nop); asm(nop); while(busy=1) /此处请等待命令执行完调用以下函数就可以显示相应的字符void display_font_at_pos(unsigned int xx,unsigned int yy,unsigned int code_num,unsigned char font_type,unsigned int font_color,unsigned int font_bg_color)write_lcd_font_x_location(xx);write_lcd_font_y_location(yy);write_lcd_font_color(font_color);write_lcd_font_bg_color(font_bg_color);write_lcd_font_code_ex(code_num,font_type);参数XX为字体要显示的坐标XYY为字体要显示的坐标Ycode_num为要显示的字符码,如果是英文,则该字符码小于256,如果是中文,则该字符码大于256font_type为要显示的字符的类型,为08,对应ASC12,ASC16,ASC32,ASC48,ASC64,HZK12,HZK16,HZK32,HZK48font_color 为要显示的字符的字体颜色font_bg_color 为要显示字符的字体背景颜色其中用到的子函数请看字体显示相关子函数时间与时序图 最小 典型 最大tRDY 10nstSET10nstWR30nstHOLD20nstEND10ns编程方法A、写入X坐标(A3=0,A2=0,A1=0,A0=1) X的范围时1到640,需要10位,第一个字节写入低八位(D7,D0)(X7,X0),第二个字节写入高两位(D1,D0)(X9,X8)。B、写入Y坐标(A3=0,A2=0,A1=1,A0=0) Y的范围时1到480,需要9位,第一个字节写入低八位,第二个字节写入高一位(D0)(Y8)。C、写入颜色值(A3=0,A2=0,A1=0,A0=0) 颜色值是16位的,共有65536种颜色,第一次写入16位中的低八位,第二次写入高八位,颜色值分配采用R5G6B5的方法,如下表:另外,每次写完颜色值的高八位后,X坐标值自动加一,以便于更快的写入图形数据。如果MCU的操作速度非常快(一般8位单片机达不到),在操作控制前应查询BUSY信号是否为高,如果BUSY=1,则不能操作。D、设置显示区与写入区本卡显示缓冲分成4个区,显示区可以选择其中一个区作为显示区,也可以选择其中一个区作为写入区,显示区和写入区可以相同,也可以不同,当显示区和写入区相同时,如大家都是1区时(这时“显示配置寄存器”写入的值为00000101(0x05),写入的图形数据会在屏幕上显示出来,相反,如果显示区和写入区不同时,如显示区为0,写入区为1(这时“显示配置寄存器”写入的值为00000100(0x04),这时写进的数据不会马上显示出来,只是写进了缓冲,你可以在在写完缓冲数据后,再把显示区切换到缓冲区,这样图形的显示不会因为你的单片机速度慢而造成用户会看到图形的刷新过程。E、图形数据的复制(图形区域的复制)该功能是用于在显存的不同区域进行图形数据的复制,由本显示卡硬件完成的,目的是让速度慢的单片机也可以产生很流畅的效果,如当你的界面上有一个按键的图形,平时该按键图形显示为松开的状态,当你按下的时候,这个按键的图形应该要显示成按下的状态,如大家熟知的(松开状态),(按下状态)这样就要比较快的更换该区域的图形数据,如果用没有复制功能的显示卡,这个过程要用单片机来完成,但是当单片机速度比较慢的时候,图形的刷新过程会比较慢,这样看起来效果会比较差。如果使用复制功能,你可以先把按键按下和松开的图形数据写进缓冲区,然后用一个命令就可以复制不同的图形到该区域,相当于很快的更换的该区域的图形。F、区域填充功能(当填充的区域为全屏时,就是清屏功能)该功能用于快速完成某个区域的颜色填充,只需指定要填充区域的左上角XY坐标,指定填充的宽度,高度,指定填充的颜色,然后启动填充功能,颜色填充就由硬件完成了,这个过程BUSY线会被拉高,当BUSY线拉低后,颜色填充表示已经完成了,你可以对板卡进行别的操作了。如果填充区域的XY坐标设成1,1,然后宽度设成640,高度设成480,区域填充就相当于清屏功能了。G、字体的显示 本显卡包含如下字体0. ASC12(6*12英文字符)1. ASC16(8*16英文字符)2. ASC32(16*32英文字符)3. ASC48(24*48英文字符)4. ASC64(32*64英文字符)5. HZK12(12*12中文字符)6. HZK16(16*16中文字符)7. HZK32(32*32中文字符)8. HZK48(48*48中文字符)VGA屏幕的坐标系:以下子程序是在16MHz AVR单片机中运行的,程序中去掉检测BUSY信号。写X坐标子程序void write_lcd_x_location(unsigned int wr_dat); HI_LCD_A0; LO_LCD_A1;LO_LCD_A2; LO_LCD_A3;LCD_PORT=(wr_dat&0x00ff); /写低八位 asm(nop);LO_LCD_WR; LCD_PORT=(wr_dat8)&0x0003); /写高两位 asm(nop); HI_LCD_WR; 写Y坐标子程序void write_lcd_y_location(unsigned int wr_dat)LO_LCD_A0; HI_LCD_A1;LO_LCD_A2; LO_LCD_A3;LCD_PORT=(wr_dat&0x00ff); /写低八位asm(nop); LO_LCD_WR; LCD_PORT=(wr_dat8)&0x0001); /写高1位 asm(nop); HI_LCD_WR; 写配置寄存器void write_config_register(unsigned int wr_dat)HI _LCD_A0; HI_LCD_A1;LO_LCD_A2; LO_LCD_A3;LCD_PORT=(wr_dat&0x00ff); /写八位配置值asm(nop); LO_LCD_WR;asm(nop); HI_LCD_WR; 写颜色值(只有写完颜色值显示屏才会显示)void write_lcd_color(unsigned int wr_dat)LO_LCD_A0; LO_LCD_A1;LO_LCD_A2; LO_LCD_A3; LCD_PORT=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论