欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    ST7920与MSP430汉字显示的方法与技巧.docx

    • 资源ID:8941337       资源大小:111.46KB        全文页数:7页
    • 资源格式: DOCX        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ST7920与MSP430汉字显示的方法与技巧.docx

    第 24卷第 1期山东建筑大学学报V o.l 24N o. 12009年2月JOURNA L OF SHANDONG JIAN ZHU UN IV ERS ITYF eb.2009文章编号: 1673- 7644( 2009) 01- 0059- 05ST7920与 M SP430汉字显示的方法与技巧魏建平1, 司文慧2, 宫淑兰3( 1. 山东建筑大学热能工程学院, 山东济南 250101; 2. 山东交通学院工程机械系, 山东济南 250023; 3. 山东建筑大学信息与电气工程学院, 山东济南 250101)摘要: 介绍了以 ST 7920为驱动控制器的液晶模块 HS12864 15B, 以及该模块在使用时需要注意的问题, 给出了其与 M SP430的接口电路。进而以 M SP430单片机为基础, 讲述了控制液晶显示汉字的 C程序设计方法, 探讨了该液晶模块使用中的技巧。最后重点解决了一屏多行汉字显示的实现方法和翻页显示函数的实现问题, 即通过定义一个行列与 DDRAM 地址对应的数组, 大大简化了一屏多行显示函数的实现; 通过显示页数计算公式将多页显示分为首页、中间页和末页, 使得翻页显示函数简单易行。关键词: ST7920; M SP 430; 汉字显示; 翻页显示中图分类号: T P311. 1;TP334. 4文献标识码: ATechnique and m ethod of display of Chinese charactersw ith ST7920 and MSP430W E I Jian p ing1,SIW en hu 2i,GONG Shu lan3( 1. School of T he rma l Ene rgy Eng ineer ing, Shandong Jianzhu U n iversity, chanical Eng inee ring, Shandong Communications Co llege, Jinan 250023, cal Eng ineering, Shandong Jianzhu U n iversity, Jinan 250101, Ch ina)J inan 250101, Ch ina; 2. Departm ent ofM e Ch ina; 3. Schoo l of Inform ation and E lectriA bstract: This paper introduces LCD m odu le H S12864 15B driven by ST7920 controller, d iscusses the problem s in deta il that deserve m ore attention in the use of the m odu le and dea lsw ith the in terface circu it w ith M SP430MCU. And then the paperm akes study o fC programm ing m ethod and som e sk illsin using the LCD w ith M SP430.Fina lly, th is paper focuses on a m ulti linescreen display of Chinesecharacters and the mpilem entation o f the Ch inese scro lling d isp lay,tha t is,definesan array co rresponding w ith DDRAMaddress.Th is m ethod g reatly sim plifies thedisplayfunctions.The techn iqued iv idesm u lti page into hom e page, m iddle page and the end page througha formu la fo r calculatingthe num ber of pages, K ey words: ST7920;wh ich m akes the scro lling d isp lay function sim ple and feasib le.M SP430; Ch inese d isp lay;scro lling disp lay部分的硬件设计和软件编程, 但 ST7920在实际使用1 概述中, 仍然存在一些问题, 影响了其使用的便利性。H S12864 15B 是深圳汉昇实业有限公司生产的以目前, 市场上有很多以 ST7920为驱动控制器的ST7920为驱动控制器的液晶模块, 具有 8位、4位和液晶模块, 这些模块大大简化了单片机系统中显示串行接口可选, 提供了 2M 8192个 16 16点阵中文收稿日期: 2008- 10 - 30作者简介: 魏建平 ( 1977 - ), 男, 山东潍坊人, 山东建筑大学热能工程学院, 硕士, 主要从事复杂系统的控制研究.60山东建筑大学学报2009年汉字字库, 其显示 RAM ( DDRAM ) 最多 16字符 4 行, LCD 显示范围为 16 2行, 用 2个字节来提供编码选择。本文以 H S12864 15B和 M SP430单片机构成的系统为例, 讲述 ST7920在汉字显示时需要注意的一些问题, 重点讲述一屏多行和翻页显示函数的实现问题, 并给出其 C 语言实现代码。2 液晶模块的结构H S12864 15B是以 ST7920为控制器的液晶模块。 ST7920是台湾矽创电子公司生产的带中文字库的中文图形液晶驱动器和控制器, 它提供 33 路 COM 和 64 路 SEG 输出, 配合段驱动器 ST7921, 最多可驱动 256 32点阵的液晶。ST7920通过 RS、R /W 和 E 的时序配合, 实现对其内部数据寄存器 DR 和指令寄存器 IR 的读写操作, 通过对数据寄存器 DR 的访问, 可以存取DDRAM、CGRAM、CGROM 和 IRAM 的值。将要显示的字型码写入到 DDRAM 上, ST7920将自动地按照编码从 CGROM 中将要显示的字型显示到屏幕上 1, 2 。H S12864 15B模块的电源为 + 3. 3V, 但需注意其背光的工作电压为 4. 1V, 不能与 M SP430单片机兼容。模块出厂时, 默认 PSB 端为并口, 通过电路板背面的跳线 s!和 p!来选择, 使用时若不需要由单片机选择工作方式, 可直接通过该跳线设置, 并注意不要将 PSB 管脚与单片机连接, 防止意外烧毁液晶模块。若需单片机控制工作方式, 需将跳线去掉。H S12864 15B 内置对比度调节电路, 可通过电路板背面的电位器调整对比度, 其 V0 和 Vou t管脚浮空。也可以外接电位器来调节对比度, 此时须通过模块背面的电位器 VR 将对比度调至最深, 外接电位器电路如图 1和图 2。图 1外接电位器调节对比图 2外接电位器调节对度电路 1比度电路 2H S12864 15B 为 4行 8 列的液晶, 最多可以显示 32个汉字, 其 DDRAM 地址与行列的对应关系如表 1所示。表 1 屏幕与 DDRAM 地址的对应关系第 1 字 第 2 字第 7字 第 8字第一行80H81H86H87H第二行90H91H96H97H第三行88H89H8EH8FH第四行98H99H9EH9FH显示汉字时, 只需要将字型编码写入到行列对应的 DDRAM 地址 ( 如第一行第一列显示汉字, 需将该汉字编码写入到 80H DDRAM 中 ) 就可以显示了。3 M CU 接口电路H S12864 15B 与 M SP430的接口 3 如图 3。图 3 H S12864 15B与 M SP430的接口ST7920的 8位并口读写时序和指令说明请参见 ST7920说明书, 本文不再赘述。4 基本汉字显示函数的实现( 1) 首先宏定义各管脚与 ST7920的对应关系。# defin e LCD _DataInP4D IR= 0x00 / /数据口方向设置为输入# defin e LCD _DataOu t P4DIR = 0xff/ /数据口方向设置为输出# defin e LCD2M CU _Data P4 IN/ /ST7920到 M CU 的数据寄存器# defineM CU2LCD _Data P4OUT/ / M CU 到 ST7920的数据寄存器# defin e LCD _CM DOu t P3DIR | = 0x07/ /P3 口的第三位设置为输出# defin e LCD _RS_HP3OUT | = BIT0/ /P3. 0 = 1# defin e LCD _RS_LP3OUT& = BIT0/ /P3. 0= 0# defin e LCD _RW _HP3OUT | = B IT1/ /P3. 1 = 1第 1期魏建平等: ST 7920与 M SP430汉字显示的方法与技巧61# define LCD _RW _LP3OUT& = B IT1 / /P3. 1= 0# define LCD _EN _HP3OUT | = B IT2/ /P3. 2= 1# define LCD _EN _LP3OUT& = B IT2/ /P3. 2= 0( 2)向 ST7920写入控制命令函数的实现/* * * * * * * * * * * * * * * * * * * * *函数名称: W rite_Cm d功能: 向液晶中写入控制命令参数: cmd - 控制命令返回值: 无* * * * * * * * * * * * * * * * * * * * * / void W rite_Cm d( u char cmd )u char lcdtem p =0;LCD _RS_L;LCD _RW _H;LCD _DataIn;do/ /判忙 LCD _EN _H; _NOP( );lcdtem p = LCD2M CU _Data;LCD _EN _L;w h ile( lcdtem p & 0x80);LCD _DataOu t;LCD _RW _L;M CU2LCD _Data =cmd;LCD _EN _H;_NOP( );LCD _EN _L;( 3)向 ST7920写入显示数据函数的实现/* * * * * * * * * * * * * * * * * * * * * * * * * * * * 函数名称: W rite_Data功能: 向液晶中写入显示数据参数: data- 显示数据返回值: 无* * * * * * * * * * * * * * * * * * * * * * * * * * * * / void W rite_Data( u char data)u char lcdtem p =0;LCD _RS_L;LCD _RW _H;LCD _DataIn;do/ /判忙 LCD _EN _H; _NOP( );lcdtemp = LCD2M CU _Data;LCD _EN _L;w h ile( lcdtem p & 0x80);LCD _DataOut;LCD _RS _H;LCD _RW _L;M CU2LCD _Data =data;LCD _EN _H;_NOP( );LCD _EN _L;( 4) 显示一个汉字/* * * * * * * * * * * * * * * * * * * * * * * * * * * *函数名称 D isp_1HZ功能: 控制液晶显示一个汉字参数: add r- 汉字显示位置的 DDRAM 地址pt- 指向显示汉字地址的指针返回值: 无* * * * * * * * * * * * * * * * * * * * * * * * * * * * / void D isp_1H Z( u char addr, const uchar* p t) uchar ;iW rite_Cmd ( addr);for( i =0; i <2; i+ + )W rite_Data(*( pt+ + ) );5 多行显示函数的实现H S12864 15B 的第一行到第四行, 其显示地址并不连续, 要想实现从任意行列开始显示, 直到最后满屏, 其判断条件比较多, 难以实现。通过定义一个行列与 DDRAM 地址对应的数组, 可以大大简化判断条件, 显示函数实现非常简单。C ons t uchar err = "ERROR! " / /当满屏不能显示全部汉字时, 屏幕显示 ERROR!con st uchar disp_addr = 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,0x88, 0x89, 0x8a, 0x8 b, 0x8c, 0x8d, 0x8 e, 0x8 f,0x98, 0x99, 0x9a, 0x9 b, 0x9c, 0x9d, 0x9 e, 0x9 f;/ /屏幕行列与 DDRAM 地址对应的数组屏幕行列与 DDRAM 地址的对应关系通过 ( x, y ) 的值, 可以计算出其对应的 DDRAM 地址在 addr 数组中的位置, 从而可以用 D isp_1H Z( ) 函数显示出来。 ( 8x + y ) 就是当前 ( x, y ) 处的汉字对应的 addr 数组中 DDRAM 显示地址 ( 即 addr62山东建筑大学学报2009年 8x + y ) 。当要显示的汉字多于 8( 3 - x ) + ( 7-y ) 时, 一屏无法显示全部汉字, 则显示 ERROR! !。下面是多行显示函数的实现:/* * * * * * * * * * * * * * * * * * * * * * * * * *函数名称 D isp _H Z功能: 控制液晶显示多行汉字参数: x, y- 显示汉字的屏幕其实位置 ( x: 0 3, y: 0 7)p t- 指向显示汉字地址的指针返回值: 无* * * * * * * * * * * * * * * * * * * * * * * * * * * * / void D isp _H Z( uchar x, uchar y, const uchar* p t) u char ,i disp_addr_num;u char num = 0;con st uchar*p t_tem p= pt;w h ile(*( p t_tem p+ + )!= 0 ) num + + ;/ /计算所显示的汉字总字符数d isp _addr_num = 8*x + y;/ /汉字的屏幕地址与 DDRAM 地址的对应位置if( num > ( 62 - 16*x- 2*y) )/ /当满屏不能显示全部汉字时,屏幕显示 ERROR!Disp_H Z( 0x90, err, 3);使用该函数显示汉字时, 需要注意:( 1) 若要显示 ASC 码字符, 必须保证字符数量为偶数, 不足可以用空格补足, 这样每个 ASC 字符占据半个汉字的位置, 一共可以显示 64个字符。( 2) 还可以将中文输入法改为 全角!状态, 这种情况下, 显示的数字、字母等占据一个汉字的位置。6 翻页显示函数的实现当一屏无法显示全部汉字时, 需要分屏显示, 这就要设计翻页显示。首先需要计算显示所需要的页数。设从 (x, y )开始显示 num 个汉字, H S12864 15B 一屏可以显示 32个汉字, 留出两个汉字的位置作为上下翻页提示符的显示位置, 则一屏最多显示 30个汉字, 则总显示页数计算公式为:page = num + 8x - y + 130根据所要显示的页面不同, 把页面显示分为三个模块, 分别是: 首页显示模块, 代表第一页汉字内elsefor( i= 0; i< num; i+ = 2 ) D isp_1HZ( d isp_addr d isp_addr_num , p t); p t+ = 2;d isp _addr_num + + ;表 1容 ; 中间页显示模块, 代表非第一页和非最后一页的其他所有的页面; 末页显示模块, 代表最后一页汉字内容。这样就可以建立首页、中间页和末页分别显示多少汉字和汉字显示位置在 addr 的起始值对应关系 ( 表 1)不同页面显示汉字字数与位置的对应关系首页中间页末页每页显示的汉字数8( 3 - x ) + 7 - y- 230num - 30( pag e- 2) - ( 8( 3- x ) + 7- y - 2 )addr 中的位置addr 8x + y add r 0 addr 0/* * * * * * * * * * * * * * * * * * * * * * * * * * * *u char p _num = 1;函数名称 D isp _H Znif( getk ey( ) = =0) p_num = 1;功能: 控制液晶显示多行汉字else p_num = getk ey( );参数: x, y显示汉字的屏幕其实位置 ( x: 0 3, y: 0 7)if( p_num = 1)/ /显示首页pt指向显示汉字地址的指针 for( i= 0;i< =( 58- 16* x- 2*y); i+ = 2)返回值: 无 D isp_1H Z( disp_addr d isp_add r_num , p t);* * * * * * * * * * * * * * * * * * * * * * * * * * * /p t+ = 2;void D isp _H Zn( uchar x, u char y,const u char*pt)d isp _addr_num + + ;Disp _1H Z( 0x9 f, "#");u char i, disp_addr_num, page;Delay_Nm s( 5000);u char num = 0;con st uchar* p t_tem p= pt;if( p_num = page) / /显示末页w h ile(* ( p t_tem p+ )!= 0 )num + + ; W rite_Cmd( 0x01);d isp _addr_num = 8*x+ y;d isp _addr_num = 0;if( num > ( 64 - 16*x- 2*y) ) / /一屏不能显示全部汉字for( i= 2*( 30* ( page- 2) +8* ( 3 - x ) + 7 - y- 2 ); i< page= ( num + 16*x+ 2* y) /60 + 1;num; i+ = 2)第 1期魏建平等: ST 7920与 M SP430汉字显示的方法与技巧63 D isp_1H Z( disp_addr d isp_add r_num , p t); p t+ = 2;d isp _addr_num + + ;Disp_1H Z( 0x9 f, " " );if( 1 < p _num&& p_num < page) / /显示中间页 W rite_Cmd( 0x01);d isp _addr_num = 0;for( i= 0; i< 60; i+ = 2 ) D isp_1H Z( disp_addr d isp_add r_num , p t); p t+ = 2;d isp _addr_num + + ;Disp_1H Z( 0x9 e,"" );Disp_1H Z( 0x9 ,f"#" );Delay_Nm s( 5000);else / /一屏可以显示全部汉字for( i= 0; i< num; i+ = 2 ) D isp_1HZ( disp_addr d isp_addr_num , p t); p t+ = 2;d isp _addr_num + + ;7 结论以 ST7920为控制器的液晶模块 H S12864 15B,硬件和软件设计都比较简便, 但因为其 DDRAM 结构的原因, 使得同时显示多个汉字比较麻烦, 本文介绍的方法, 简单易行, 实现了多屏翻页显示, 同时, 文中介绍的一些 ST7920控制和显示的技巧, 能快速的用 ST7920实现系统的设计。参考文献: 1 舒鑫, 郭其一. ST7920 点阵式液晶显示模块的应用研究和编程 J . 液晶与显示, 2007, 22 ( 2): 192 - 196. 2 刘进军, 高美珍. 基于单片机的汉字输入法的实现 J . 国外电子元器件, 2006( 12): 25- 29. 3 杨应平, 石城. 图形点阵液晶显示模块与 51系列单片机的接口设计 J . 现代显示, 2006( 5 ): 41- 45.( 上接第 58页 )5 结束语从现场调试结果看, 软件的设计是成功的, 能够完成部颁规程规定的技术要求, 程序运行稳定、可靠。基于 ARM 7 和嵌入式操作系统的通信管理机的设计, 实现了通信功能, 大大提高了现有装置的整体性能。设计采用了模块化和层次化的设计思想,解决了多种通信规约的兼容问题。通信管理机的多种优势满足变电站的操作要求, 实现了顺序控制功能, 简化了流程, 提高了可靠性。参考文献: 1 路小俊, 王在军. 基于 ARM 平台及嵌入式实时操作系统的通信管理机 J . 电力自动化设备, 2005, 25( 5 ): 46- 49. 2 张建周, 柏嵩. 嵌入式高可靠性通信管理机的设计 J. 电力系统自动化, 2007, 31 ( 16): 94 - 98. 3Lab rosse J .J 嵌入式实时操作系统 C /OS- IIM . 第二版. 邵贝贝, 译. 北京: 北京航空航天大学出版社, 2006. 4 金丹. 应用新型嵌入式系统设计电力通信管理机 J . 电力自动化设备 2006, 26 ( 10): 85 - 87. 5 周立功. ARM 与嵌入式系统基础教程 M . 广东: 广州周立功单片机发展有限公司出版

    注意事项

    本文(ST7920与MSP430汉字显示的方法与技巧.docx)为本站会员(李医生)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开