您的位置 首页 IC

根据单片机的VRAM型五颜六色液晶显示模块规划(二)

4  软件系统设计及实现4. 1  操作YD2502 的程序设计YD2502 的指令码格式如下: 其中: CA1 ,CA0 组合功能为内部寄存器通道的选择,

4  软件体系规划及完成

  4. 1  操作YD2502 的程序规划

  YD2502 的指令码格局如下:

  

  其间: CA1 ,CA0 组合功用为内部寄存器通道的挑选,功用如下:

  

  DISP :显现操控位。

  当DISP 设置为“1”时,液晶显现模块为开显现状况。

  当DISP 设置为“0”时,液晶显现模块为关显现状况。

  X:表明未用位,可设为“0”。

  ATmega128 拜访外部存储器的软件规划过程是:先用extern 声明一个外部变量,再用map2ping_init 函数(外部存储地址分配函数) 分配给此变量一个外部存储地址(因A Tmega128 内部有4 kB 的SRAM 所以外部存储地址规模为1000H~0FFFFH) ,那么对该变量的操作就完成了CPU 对相应地址的外部存储空间的拜访。

  依据此过程,对YD2502 写指令和写数据的详细函数如下:

  extern unsigned char LCD_DA TA ;

  void  mapping_init (void) {

  asm(“。 area memory (abs) n”

  “。 org 0x4000n ”  / / 分配给LCD_DA TA 的地址为4000H

  “ _LCD_DA TA : : . blkb 1\ n”/ / 存储空间为1

  “。 text/ n”) ;}

  写指令函数如下:

  void  LCD_writeinstr (unsigned char data) {

  PORTD = 0xFC ;    / / 置/ CS 为低电平,而且置RS 为低电平,处于写指令状况

  LCD_DA TA = data ; / / 送数据

  PORTD | = 0x03 ;} / / 置/ CS 和RS为高电平

  写数据函数如下:

  void  LCD_writedata (unsigned char data) {

  PORTD = 0xFE ;   / / 置/ CS 为低,而且置RS 为高电平,处于写数据状况

  LCD_DA TA = data ; / / 送数据

  PORTD | = 0x01 ;} / / 置/ CS 为高电平除了上面两个根本的函数外,对YD2502 最根本的操作是往VRAM 里写数据,依据上面给出的指令码,详细函数如下:

  # define  HREG   0x09  / / 显现地址高8 位寄存器指令

  # define  L REG 0x08 / / 显现地址低8 位寄存器指令

  # define  DA TARW 0x0A / / 显现数据读写通道指令

  void  LCD_filldata ( unsigned int address ,

  unsigned char data) {

  unsigned char addrh ,addrl ;

  addrh = (char) (address > > 8) ;  / / 取内存地址的高8 位数据

  addrl = (char) (address 0xFF) ;  / / 取内存地址的低8 位数据

  LCD_writeinst r ( HREG) ;  / / 送显现地址高8 位寄存器指令

  LCD_writedata (addrh) ;  / / 送内存地址的高8 位数据

  LCD_writeinst r (L REG) ;  / / 送显现地址低8 位寄存器指令

  LCD_writedata (addrl) ;  / / 送内存地址的低8 位数据

  LCD_writeinst r (DA TARW) ;  / / 送显现数据读写通道指令

  LCD_writedata (data) ;}  / / 送数据

  4. 2  画点函数的完成

  要在液晶上完成显现字符和画图等功用,在屏幕上显现一个点是完成这些功用的根底。画点函数完成的过程是:首要确认该点对应的VRAM中的内存方位,找到该点详细对应的数据位,填充显现色彩的数据,该点就按对应的色彩显现出来了。

  4. 2. 1  显现内存与屏幕点阵的对应联系

  YD2502 屏幕点阵为320 ×240 ,每一个点对应3 个像素(RGB) ,屏幕上8 个点对应内存3 个字节,一行对应320/ 8 ×3 = 120 个字节,其对应联系如下:

  

  其间R ,G,B 表明红、绿、蓝三原色,D7~D0 表明对应的数据位。

  关于屏幕上坐标为( X , Y) 的点,其对应内存地址的计算方法为:

  当Y = 0 时  SRAM = 0EFH ×100H +[ IN T( X/ 8) ] ×3

  当Y > 0 时  SRAM = ( Y – 1) ×100H +[ IN T( X/ 8) ] ×3

  经过( X/ 8) 的余数得出详细的内存方位:

  当余数为0  则 RAM = SRAM  [ 1110 ,0000 ]

  当余数为1  则 RAM = SRAM  [ 0001 ,1100 ]

  当余数为2  则 RAM1 = SRAM  [ 0000 ,0011 ]

  RAM2 = SRAM + 1[1000 ,0000 ]

  当余数为3  则 RAM = SRAM + 1[0111 ,0000 ]

  当余数为4  则 RAM = SRAM + 1[0000 ,1110 ]

  当余数为5  则 RAM1 = SRAM + 1[0000 ,0001 ]

  RAM2 = SRAM + 2[1100 ,0000 ]

  当余数为6  则 RAM = SRAM + 2[0011 ,1000 ]

  当余数为7  则 RAM = SRAM + 2[0000 ,0111 ]

  其间[ ]内为“1”的位表明应该填充色彩的方位, SRAM 表明该点对应的根底地址, RAM、RAM1 和RAM2 表明该点对应的实践内存地址。

  当数据位为“1”时,对应色点为亮;为“0”时,对应色点为暗。经过RGB 三原色组合而得到的8 种色彩代码如下:

  

  例1 :若X 、Y 坐标为(7 ,0)

  SRAM = 0EFH ×100H + 0 = 0EF00H

  余数为7 ,则 RAM = 0EF00H + 2 = 0EF02H

  若此点为赤色,则送入0EF02H 内存单元里的数据为[ 0EF02H] 11111000B + 00000100B

  例2 :若X 、Y 坐标为(15 ,5)

  SRAM = (5 – 1) ×100H + 1 ×3 = 403H

  余数为5 ,则 RAM1 = 403H + 1 = 404H

  RAM2 = 403H + 2 = 405H

  若此点为白色,则送入这两个单元的数据为

  [ 404H] 11111110B + 00000001B

  [ 405H] 00111111B + 11000000B

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/136276.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部