基于arm7的lcd显示电路仿真课程设计论文大学论文.docx
- 文档编号:26095287
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:28
- 大小:361.83KB
基于arm7的lcd显示电路仿真课程设计论文大学论文.docx
《基于arm7的lcd显示电路仿真课程设计论文大学论文.docx》由会员分享,可在线阅读,更多相关《基于arm7的lcd显示电路仿真课程设计论文大学论文.docx(28页珍藏版)》请在冰豆网上搜索。
基于arm7的lcd显示电路仿真课程设计论文大学论文
学号
天津城建大学
嵌入式系统及应用课程设计
设计说明书
基于ARM7的LCD显示电路仿真
起止日期:
2013年10月28日至2013年11月8日
学生姓名
班级
10电信科1班
成绩
指导教师(签字)
计算机与信息工程学院
2013年11月8日
目录
第一章系统背景简介1
1.1嵌入式系统背景介绍1
第二章芯片介绍2
2.1芯片LPC2106简介2
2.1.1LPC2106的特性2
2.2芯片LM016L简介3
2.2.1液晶显示原理3
2.2.2LCD相关参数3
第三章软件选择7
3.1ProteusVersion7.5简介7
3.2RealViewMDK简介7
3.2.1RealViewMDK的特点7
第四章课程设计9
4.1电路设计9
4.1.1Proteus创建工程步骤9
4.1.2元件选择10
4.1.3电路效果图12
4.2程序设计13
4.2.1RealViewMDK创建工程过程13
4.2.2功能函数14
4.2.3主函数16
第五章设计结果17
5.1编译结果17
5.2设计效果17
参考文献19
附录20
第一章系统背景简介
1.1嵌入式系统背景介绍
近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。
嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
通过显示器同步显示元器件的状态可以更深刻地理解控制的原理。
通过Proteus模拟ARM7芯片设计,可以增强我们的自学能力和思考能力,掌握科学研究的方法,提高信息检索的能力以及获取与时俱进知识的能力。
同时,使我们深刻学习了ARM的相关知识,增强对实际电路的感性认识,提高了分析问题,处理问题的能力。
运用Keil编译C语言,连接生成Hex文件,使用PROTEUS7.8SP2仿真,选用ARM7LPC2106芯片和LM016L,导入Hex文件,然后进行软件仿真调试。
本学期我专业开设了《嵌入式系统课程设计》这门课程,是《嵌入式系统》课程的辅助教学课程。
通过课程设计,进一步掌握嵌入式ARM的基本概念,结合实际的操作和设计,巩固课堂教学内容,此外也让我们进一步掌握嵌入式系统的基本概念、原理和技术,将理论与实际相结合,应用现有的仿真工具和嵌入式软件开发平台,规范、科学地完成一个小型LCD显示电路的设计与实现,把理论课与实验课所学内容统一起来,并在此基础上强化实践意识、提高其实际动手能力和创新能力。
第二章芯片介绍
2.1芯片LPC2106简介
LPC2106包含一个支持仿真的ARM7TDMI-SCPU、与片内存储器控制器接口的ARM7局部总线、与中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的VLSI外设总线(VPB,ARMAMBA总线的兼容超集)。
LPC2106将ARM7TDMI-S配置为小端(little-endian)字节顺序。
AHB外设分配了2M字节的地址范围,它位于4G字节ARM存储器空间的最顶端。
每个AHB外设都分配了16k字节的地址空间。
LPC2106的外设功能(中断控制器除外)都连接到VPB总线。
AHB到VPB的桥接将VPB总线与AHB总线相连。
VPB外设也分配了2M字节的地址范围,从3.5GB地址点开始。
每个VPB外设在VPB地址空间内都分配了16k字节地址空间。
2.1.1LPC2106的特性
LPC2106拥有以下多种特性:
(1)ARM7TDMI-S处理器
(2)128k字节片内Flash程序存储器,具有ISP和IAP功能。
(3)Flash编程时间:
1ms可编程512字节,扇区擦除或整片擦除只需400ms。
(4)64/32/16K字节静态RAM(LPC2106)
(5)向量中断控制器
(6)仿真跟踪模块,支持实时跟踪
(7)RealMonitor模块支持实时调试
(8)标准ARM测试/调试接口,兼容现有工具
(9)极小封装:
TQFP48(7×7mm2)
(10)双UART,其中一个带有完全的调制解调器接口
(11)I2C串行接口
(12)SPI串行接口
(13)两个定时器,分别具有4路捕获/比较通道
(14)多达6路输出的PWM单元
(15)实时时钟
(16)看门狗定时器
(17)通用I/O口
(18)CPU操作频率可达60MHz
(19)双电源
-CPU操作电压范围:
1.65V~1.95V(1.8V±8.3%)
-I/O电压范围:
3.0V~3.6V(3.3V±10%)
(20)两个低功耗模式:
空闲和掉电
(21)通过外部中断将处理器从掉电模式中唤醒
(22)外设功能可单独使能/禁止,实现功耗最优化
(23)片内晶振的操作频率范围:
10MHz~25MHz
(24)片内PLL允许CPU以最大速度运行,可以在超过整个晶振操作频率范围的情况下使用。
由于拥有以上特性,LPC2106适用于internet网关、串行通信协议转换器、访问控制、工业控制、医疗设备及其它各种类型的应用。
2.2芯片LM016L简介
2.2.1液晶显示原理
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
2.2.2LCD相关参数
(1)LM016LLCD主要技术参数:
显示容量:
16×2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×4.35(W×H)mm
(2)引脚功能说明:
LM016LLCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示:
表2-1引脚接口说明表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
(3)LM016LLCD的指令说明及时序:
LM016L液晶模块内部的控制器共有11条控制指令,如表2所示:
表2-2控制命令表
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数到CGRAM或DDRAM)
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容
LM016L液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置。
I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址。
BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
第三章软件选择
3.1ProteusVersion7.5简介
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
在Proteus绘制好原理图后,调入已编译好的目标代码文件:
*.hex(或者*.axf),可以在Proteus的原理图中看到模拟的实物运行状态和过程。
Proteus不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:
元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
3.2RealViewMDK简介
RealViewMDK(RealViewMicrocontrollerDevelopmentKit)开发套件源自德国Keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。
RealViewMDK集成了业内最领先的技术,融合了中国多数软件开发工程师所需的特点和功能。
包括μVision集成开发环境与RealView编译器,支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能。
3.2.1RealViewMDK的特点
(1)自动生成启动代码:
RealViewMDK开发工具可以帮您自动生成完善的启动代码,并提供图形化的窗口,随您轻松修改。
无论对于初学者还是有经验的开发工程师,都能大大节省时间,提高开发效率。
(2)提供软件模拟器:
RealViewMDK的设备模拟器可以仿真整个目标硬件,包括快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真等。
开发工程师在无硬件的情况下即可开始软件开发和调试,使软硬件开发同步进行,大大缩短开发周期。
而一般的ARM开发工具仅提供指令集模拟器,只能支持ARM内核模拟调试。
(3)提供性能分析器:
RealViewMDK的性能分析器可以让工程师看得更远和更准,它辅助您查看代码覆盖情况,程序运行时间,函数调用次数等高端控制功能,指导您轻松的进行代码优化,成为嵌入式开发高手。
通常这些功能只有价值数千美元的昂贵的Trace工具才能提供。
(4)支持Cortex-M3:
RealViewMDK支持的Cortex-M3核是ARM公司最新推出的针对微控制器应用的内核,它提供业领先的高性能和低成本的解决方案,未来几年将成为MCU应用的热点和主流。
目前国内只有ARM公司的MDK和RVDS开发工具可以支持Cortex-M3芯片的应用开发。
第四章课程设计
4.1电路设计
4.1.1Proteus创建工程步骤
打开ISIS7Professional软件,单击鼠标左键新建NewFile(FromDefaultTemplate)如图4-1工程新建显示位置框图所示。
图4-1工程新建显示位置框图
然后点击保存SaveDesign,如图4-2工程保存显示位置框图所示。
图4-2工程保存显示位置框图
弹出对话框,选择你已经建好的文件夹,在这里我的文件夹已经建好,起的名字叫LCD_DSN,然后再给项目起个名字也叫LCD_DSN,最后点击确定。
如图4-3保存位置选择框图所示
图4-3保存位置选择框图
4.1.2元件选择
现在就可以进行电路图的制作了。
现在我们来画电路图,先点击左侧的ComponentMode,如图4-4模块组件框图所示。
图4-4模块组件框图
然后双击下方空白处,就会弹出一个PickDevices对话框,如图4-5元器件选择框图所示。
图4-5元器件选择框图
然后在Keywords下的空格中搜索LM016L,在右边的窗口中双击相应的LM016L元器件,即可加入到元器件模板中。
同理可加入LPC2106元器件。
如图4-6元器件添加框图所示。
图4-6元器件添加框图
单击选中元器件LM016L,在右窗体中单击鼠标左键,确定元器件想要放的位置,然后再次单击鼠标左键。
元器件即可出现在所想要放置的位置上。
同理放置元器件LPC2106。
完成后如图4-7元器件摆放显示框图所示。
图4-7元器件摆放显示框图
LM016L芯片可以用于显示两行,每行十六个字符,可以是字母、数字和简单日文。
芯片工作电压:
4.5—5.5V,工作电流:
2.0mA(5.0V),模块最佳工作电压:
5.0V,字符尺寸:
2.95×4.35(W×H)mm。
4.1.3电路效果图
系统电路图如图4-8系统电路图所示。
图4-8系统电路图
电路元件LPC2106通过P0.0~P0.10和LM016L连接起来。
其中,P0.0~P0.7是用来传送数据、地址和控制信号指令,至于什么时候传数据、地址和控制信号指令,用P0.8~P0.10来进行选择。
4.2程序设计
4.2.1RealViewMDK创建工程过程
打开KeiluVision4软件,单击菜单项Project中的NewuVisionProject项,如图4-9工程新建指示框图所示。
图4-9工程新建指示框图
然后弹出对话窗CreateNewProject,选择已新建好的文件夹,文件夹名为LCD_PRO,然后再建工程名为LCD_PRO,点击保存。
如图4-10工程新建位置框图所示。
图4-10工程新建位置框图
然后弹出对话框SelectDeviceForTarget,选择飞利浦公司的LPC2106芯片,点击确认,并加载启动代码。
如图4-11芯片仿真选择框图所示
图4-11芯片仿真选择框图
注意,在完成工程的建立以后,单击鼠标右键点工程,选择OptionsforTarget‘LCDTarget’,在弹出的对话框中,选择Output选项卡,将CreateHEXfile选中,并点击SelectFolderforObject…选择你生成的文件所要放置的目录中。
如图4-12选项设置框图所示。
图4-12选项设置框图
4.2.2功能函数
在程序中我使用了几个功能函数,函数如下:
函数名称:
ChkBusy(),函数主要功能:
检查总线是否忙
voidChkBusy(){
IODIR=0x700;//先设置方向使P0.8~P0.10输出,使P0.0~P0.7输入
while
(1){//循环语句
IOCLR=rs;//选择
IOSET=rw;//选择读方式
IOSET=en;
if(!
(IOPIN&busy))break;
IOCLR=en;
}
IODIR=0x7ff;
}
/****************************************************************************
函数名称:
WrOp(),函数功能为:
写指令函数
voidWrOp(uint8dat){
ChkBusy();//检查LCD是否繁忙
IOCLR=rs;//全部清零
IOCLR=rw;//设置读写方式为读
IOCLR=0xff;//先清零
IOSET=dat;//再送数
IOSET=en;//使能,让置位寄存器开始工作
IOCLR=en;//使能,让清零寄存器开始工作
}
函数名称:
WrDat(),函数功能为:
写数据函数
voidWrDat(uint8dat){
ChkBusy();//检查LCD是否繁忙
IOSET=rs;//置位控制选择
IOCLR=rw;//清零寄存器选择读
IOCLR=0xff;//先清零
IOSET=dat;//再送数
IOSET=en;//使能,让置位寄存器开始工作
IOCLR=en;//使能,让清零寄存器开始工作
}
函数名称:
lcd_init(),函数功能为:
lcd初始化函数
voidlcd_init(void){
WrOp(0x38);
WrOp(0x06);//光标加1
WrOp(0x0c);//开显示
}
函数名称:
DisText(),函数功能为:
显示文本函数
voidDisText(uint8addr,uint8*p){
inta=16;//定义一个变量
WrOp(0x80);//告诉LCD从0x80地址开始
while(a--)WrDat('\0');//将数据重新刷一遍,清空
WrOp(addr);//告诉LCD要写数据的起始地址
while(*p!
='\0')WrDat(*(p++));//从起始地址开始,将数据一个字符一个字符写入
}
函数名称:
time(),函数功能为:
延时
voidtime(){
inti=100000;
for(;i>=0;i--);
}
4.2.3主函数
函数名称:
main(),函数功能为:
显示文本
intmain(void)
{
inti;
uint8*p[]={"helloworld","helloworld","helloworld","helloworld","helloworld","helloworld","helloworld"};
lcd_init();
IODIR=0x7ff;//设置为输出
IOCLR=0x7ff;
while
(1)
{
DisText(0x80,p[0]);
for(i=0;i<0x1ffff;i++);
DisText(0x80,p[1]);
for(i=0;i<0x1ffff;i++);
DisText(0x80,p[2]);
for(i=0;i<0x1ffff;i++);
DisText(0x80,p[3]);
for(i=0;i<0x1ffff;i++);
DisText(0x80,p[4]);
for(i=0;i<0x1ffff;i++);
DisText(0x80,p[5]);
for(i=0;i<0x1ffff;i++);
}
}
第五章设计结果
5.1编译结果
下面是对于实验源程序的编译结果。
如图5-1编译结果显示框图所示。
图5-1编译结果显示框图
5.2设计效果
设计效果是字符串进行从左往右一个一个的先出现在屏幕上,并渐渐移动到最右端,然后再一个一个的消失。
并再从右向左一个一个的出现,再移动到最左端,并消失。
然后,如此反复进行。
其效果如以下图5-2所示。
图5-2设计效果显示框图
参考文献
1.周立功.《ARM嵌入式基础教程》.北京航空航天大学出版社.2008年9月第2版
2.周润景.《PROTEUS在MCS-51&ARM7系统中的应用百例》.电子工业出版社..2006年10月第一版
附录
File:
main.c
*功能:
向LCD输出HelloWorld
****************************************************************************/
#include"config.h"
#definers(1<<8)
#definerw(1<<9)
#defineen(1<<10)
#definebusy(1<<7)
/****************************************************************************
*名称:
ChkBusy()
*功能:
检查总线是否忙
****************************************************************************/
voidChkB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 arm7 lcd 显示 电路 仿真 课程设计 论文 大学
![提示](https://static.bdocx.com/images/bang_tan.gif)