历史上的今天
今天是:2025年02月05日(星期三)
2021年02月05日 | 基于PROTEUS的ARM7显示系统设计与仿真实现
2021-02-05 来源:eefocus
0 引言
液晶显示是嵌入式系统中反映系统输入/输出的人机交互界面,液晶显示以其微功耗、体积小、显示内容丰富、模块化,接口电路简单等诸多优点得到广泛应用。本文在介绍以HD44780为控制器的LM016L液晶模块的引脚结构、功能的基础上,搭建LM 016L与LPC2138芯片的硬件接口电路、用c语言编写显示程序,采用PROTEUS软件进行功能仿真。
1 液晶模块结构及功能简介
LM016L液晶模块采用HD44780控制器。HD44780具有简单而功能较强的指令集,可以实现字符移动、闪烁等功能。HD44780控制器由两个8位寄存器、指令寄存器(IR)和数据寄存器(DR)、忙标志(BF)、显示数据RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC)构成。IR用于寄存指令码,只能写入不能读出;DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据。BF为1时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据。DDRAM用来存储显示的字符,能存储80个字符码。CGROM由8位字符码生成5 x 7点阵字符160种和5×10点阵字符32种,8位字符编码和字符的对应关系。CGRAM是为用户编写特殊字符留用的,它的容量仅64字节。可以自定义8个5×7点阵字符或者4个5×10点阵字符。AC可以存储DDRAM和CGRAM地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或者CGRAM单元。LMO16L液晶模块的引脚功能见下表1。

2 基于Proteus ISIS 7的液晶模块仿真
2.1 接口设计
运行Proteus ISIS 7进入设计界面,依照图1所示在元件库中选择需要的元件。Lpc2138的P0.0-P0.7端口作为8位数据的输出端,P0.8、P0.9、P0.10作为控制信号的输出端,连接完成的电路如图l所示。

2.2 软件设计
电路图绘制好之后,就可以编写LM016L的驱动程序。LM016L的操作有两大类:读操作和写操作。一般情况下不需要从液晶中读取数据,所以对液晶操作主要是写指令和写数据两个写操作,对于忙标志(BF),查询的方法,保证液晶模块有足够时间进行内部数据处理。在写源程序时,需要根据液晶模块的时序图编写程序。LM016L的时序如图2所示。

根据电路图1定义引脚:RS BIT P0.8;RW BIT P0.9;LCD E BIT PO.10。
本设计的开发环境为keil uvision3,程序大体分为初始化、控制信息与数据传输3部分。下面就将结合程序源代码略加说明:


用keil软件编译后生成HEX文件,在Proteus中打开lpc2138芯片属性对话框,将生成的HEX文件加载进去,再进行仿真运行就可以看到图3的结果,说明设计成功。

3 结束语
利用Proteus实现了对ARM7+LM016L液晶模块的仿真,实现了字符串的显示。Proteus为ARM学习提供了很好的软件平台,使初学者可以抛开电路设计中的一些细枝末节,快速掌握ARM的核心内容。同时该方法不需要硬件资源,也为学校开设ARM课程闯出一条最佳途径。
史海拾趣
|
慢熔断保险丝与快熔断有什么不同的性能和应用;相同特性和额定电流的保险丝能直接替换吗;保险丝分断能力在实际应用中有什么意义;保险丝性能的影响因素;一次性保险丝和可恢复保险丝的异同;保险电阻能起到保险丝的作用吗?这些都是工程师在保险丝 ...… 查看全部问答> |
|
我程序一直都是裸体的,在裸体中发现了几个问题: (1)WARNING L15: MULTIPLE CALL TO SEGMENT --函数重入 其实这个问题实际上就是函数重入问题,在操作系统的多线程很常见。例如在主循环里调用了一个函数,而在中断服务中,你又一次调用了同样 ...… 查看全部问答> |
|
我的小本系统是win7的,但装不了Protel 99se软件 我的小本系统是win7的,但装不了Protel 99se软件,装的是Protel 99se汉化中文第六版(含第二版),请各位友友帮帮忙…小弟我感激不尽…… 查看全部问答> |
|
SD卡驱动在很多情况下都可以正常的识别SD卡,但是有一些卡却无法识别。 查看log,可以看到一些初始化命令无法获得响应,总是超时。 请问大家遇到过类似的问题吗?可能是哪些方面的原因呢?… 查看全部问答> |
|
刚接触CE1个月 马上要在公司自己开发的主板上移植7645BF驱动了 还有些有关camera驱动问题还不是很清楚 希望高人解答!!! 比如 2440上 camera分配的是irq6 该irq可能由INTSUB_CAM_P、INTSUB_CAM_C或INT_CAM 被置一而引起,有的资料上说中断由VSYN ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:21 编辑 在我加载程序时,它提示我Data verification failed at address 0x48a0。Please verify target memory and memory map.点我点确定后,又出现这个错误对话框,可地址改为ox6320了,当我打开 ...… 查看全部问答> |




