ARM课设.docx
- 文档编号:4323226
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:18
- 大小:410.29KB
ARM课设.docx
《ARM课设.docx》由会员分享,可在线阅读,更多相关《ARM课设.docx(18页珍藏版)》请在冰豆网上搜索。
ARM课设
学号107XXXX
天津城建大学
嵌入式系统及应用课程设计
设计说明书
基于ARM7的LCD显示电路仿真
起止日期:
2013年10月28日至2013年11月8日
学生姓名
XXX
班级
XXXXX
成绩
指导教师(签字)
计算机与信息工程学院
2013年11月8日
目录
第1章硬件系统设计1
1.1设计目的和要求1
1.2设计总框图1
1.3LPC2106芯片的功能介绍1
1.4LM016L芯片的功能介绍3
1.4.1液晶显示原理3
1.4.2LM016LLCD相关参数3
1.5硬件原理图4
第2章设计辅助工具介绍6
2.1RealViewMDK简介6
2.2ProteusVersion7.5简介6
第3章系统软件设计8
3.1程序设计8
3.2主要程序10
3.2.1功能函数10
3.2.2主函数11
第4章显示电路仿真13
4.1编译结果13
4.2仿真结果13
参考文献15
附录16
第1章硬件系统设计
1.1设计目的和要求
通过Proteus模拟ARM7芯片设计,可以增强我们的自学能力和思考能力,掌握科学研究的方法,提高信息检索的能力以及获取与时俱进知识的能力。
同时,使我们深刻学习了ARM的相关知识,增强对实际电路的感性认识,提高了分析问题,处理问题的能力。
运用Keil编译C语言,连接生成Hex文件,使用PROTEUS7.8SP2仿真,选用ARM7LPC2106芯片和LM016L,导入Hex文件,然后进行软件仿真调试。
设计效果是字符串进行从左往右一个一个的先出现在屏幕上,并渐渐移动到最右端,然后再一个一个的消
失。
并再从右向左一个一个的出现,再移动到最左端,并消失。
然后,如此反复进行。
1.2设计总框图
总体设计分为2个模块:
储存系统程序的LPC2106芯片以及显示效果的LM016LLCD液晶显示模块。
如图1-1。
LPC2106
芯片
LCD
液晶
显示
→
图1-1总框图
1.3LPC2106芯片的功能介绍
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字节地址空间。
它拥有以下特性:
◆ARM7TDMI-S处理器
◆128k字节片内Flash程序存储器,具有ISP和IAP功能。
◆Flash编程时间:
1ms可编程512字节,扇区擦除或整片擦除只需400ms。
◆64/32/16K字节静态RAM(LPC2106)
◆向量中断控制器
◆仿真跟踪模块,支持实时跟踪
◆RealMonitor模块支持实时调试
◆标准ARM测试/调试接口,兼容现有工具
◆极小封装:
TQFP48(7×7mm2)
◆双UART,其中一个带有完全的调制解调器接口
◆I2C串行接口
◆SPI串行接口
◆两个定时器,分别具有4路捕获/比较通道
◆多达6路输出的PWM单元
◆实时时钟
◆看门狗定时器
◆通用I/O口
◆CPU操作频率可达60MHz
◆双电源-CPU操作电压范围:
1.65V~1.95V(1.8V±8.3%)
-I/O电压范围:
3.0V~3.6V(3.3V±10%)
◆两个低功耗模式:
空闲和掉电
◆通过外部中断将处理器从掉电模式中唤醒
◆外设功能可单独使能/禁止,实现功耗最优化
◆片内晶振的操作频率范围:
10MHz~25MHz
◆片内PLL允许CPU以最大速度运行,可以在超过整个晶振操作频率范围的情况下使用。
引脚图如图1-2:
图1-2LPC2106引脚图
1.4LM016L芯片的功能介绍
1.4.1液晶显示原理
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
1.4.2LM016LLCD相关参数
显示容量:
16×2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×4.35(W×H)mm
芯片引脚图如图1-3:
图1-3LM016L引脚图
第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脚:
背光源负极。
1.5硬件原理图
硬件原理图如图1-4所示:
图1-4硬件原理图
第2章设计辅助工具介绍
2.1RealViewMDK简介
RealViewMDK(RealViewMicrocontrollerDevelopmentKit)开发套件源自德国Keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。
RealViewMDK集成了业内最领先的技术,融合了中国多数软件开发工程师所需的特点和功能。
包括μVision集成开发环境与RealView编译器,支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能。
自动生成启动代码:
RealViewMDK开发工具可以帮您自动生成完善的启动代码,并提供图形化的窗口,随您轻松修改。
无论对于初学者还是有经验的开发工程师,都能大大节省时间,提高开发效率。
提供软件模拟器:
RealViewMDK的设备模拟器可以仿真整个目标硬件,包括快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真等。
开发工程师在无硬件的情况下即可开始软件开发和调试,使软硬件开发同步进行,大大缩短开发周期。
而一般的ARM开发工具仅提供指令集模拟器,只能支持ARM内核模拟调试。
提供性能分析器:
RealViewMDK的性能分析器可以让工程师看得更远和更准,它辅助您查看代码覆盖情况,程序运行时间,函数调用次数等高端控制功能,指导您轻松的进行代码优化,成为嵌入式开发高手。
通常这些功能只有价值数千美元的昂贵的Trace工具才能提供。
支持Cortex-M3:
RealViewMDK支持的Cortex-M3核是ARM公司最新推出的针对微控制器应用的内核,它提供业领先的高性能和低成本的解决方案,未来几年将成为MCU应用的热点和主流。
目前国内只有ARM公司的MDK和RVDS开发工具可以支持Cortex-M3芯片的应用开发。
2.2ProteusVersion7.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章系统软件设计
3.1程序设计
打开KeiluVision4软件,单击菜单项Project中的NewuVisionProject项,如图3-1工程新建指示框图所示。
图3-1工程新建指示框图
然后弹出对话窗CreateNewProject,选择已新建好的文件夹,文件夹名为yinbin,然后再建工程名为yinbin,点击保存。
如图3-2工程新建位置框图所示。
图3-2工程新建位置框图
然后弹出对话框SelectDeviceForTarget,选择飞利浦公司的LPC2106芯片,点击确认,并加载启动代码。
如图3-3芯片仿真选择框图所示
图3-3芯片仿真选择框图
注意,在完成工程的建立以后,单击鼠标右键点工程,选择OptionsforTarget‘LCDTarget’,在弹出的对话框中,选择Output选项卡,将CreateHEXfile选中,并点击SelectFolderforObject…选择你生成的文件所要放置的目录中。
如图3-4选项设置框图所示。
图3-4选项设置框图
3.2主要程序
3.2.1功能函数
在程序中我使用了几个功能函数,函数如下:
函数名称:
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--);
}
3.2.2主函数
函数名称:
main(),函数功能为:
显示文本
intmain(void)
{
inti,j;
uint8*p[]={"",
"d",
"ld",
"rld",
"orld",
"world",
"oworld",
"loworld",
"lloworld",
"elloworld",
"helloworld",
"helloworld",
"helloworld",
"helloworld",
"helloworld",
"helloworld",
"helloworl",
"hellowor",
"hellowo",
"hellow",
"hello",
"hell",
"hel",
"he",
"h",
""
};
lcd_init();
IODIR=0x7ff;//设置为输出
IOSET=0x7ff;
while
(1)
{
for(j=0;j<26;j++)
{
DisText(0x80,p[j]);
for(i=0;i<0x1ffff;i++);
}
for(j=25;j>=0;j--)
{
DisText(0x80,p[j]);
for(i=0;i<0x1ffff;i++);
}
}
}
第4章显示电路仿真
4.1编译结果
下面是对于实验源程序的编译结果。
如图4-1编译结果显示框图所示。
图4-1编译结果显示框图
4.2仿真结果
仿真结果如图4-2所示
图4-2仿真结果
设计实现了字符串从左往右一个一个的先出现在屏幕上,并渐渐移动到最右端,然后再一个一个的消失。
并再从右向左一个一个的出现,再移动到最左端,并消失,如此反复进行。
参考文献
1.周润景.《PEOTEUS在MCS-51&ARM7系统中的应用百例》.电子工业出版社2006年10月第一版
2.周立功.《ARM嵌入式基础教程》.北京航空航天大学出版社.2008年9月第二版
附录
源代码:
#include"config.h"
#definers(1<<8)
#definerw(1<<9)
#defineen(1<<10)
#definebusy(1<<7)
voidChkBusy()
{
IODIR=0x700;
while
(1)
{
IOCLR=rs;
IOSET=rw;
IOSET=en;
if(!
(IOPIN&busy))break;
IOCLR=en;
}
IODIR=0x7ff;
}
voidWrOp(uint8dat)
{
ChkBusy();
IOCLR=rs;
IOCLR=rw;
IOCLR=0xff;
IOSET=dat;
IOSET=en;
IOCLR=en;
}
voidWrDat(uint8dat)
{
ChkBusy();
IOSET=rs;
IOCLR=rw;
IOCLR=0xff;
IOSET=dat;
IOSET=en;
IOCLR=en;
}
voidlcd_init(void)
{
WrOp(0x38);
WrOp(0x06);
WrOp(0x0c);
}
voidDisText(uint8addr,uint8*p)
{
WrOp(0x01);
while(a--)WrDat('\0');
WrOp(addr);
while(*p!
='\0')WrDat(*(p++));
}
voidtime()
{
inti=100000;
for(;i>=0;i--);
}
intmain(void)
{
inti,j;
uint8*p[]={"",
"d",
"ld",
"rld",
"orld",
"world",
"oworld",
"loworld",
"lloworld",
"elloworld",
"helloworld",
"helloworld",
"helloworld",
"helloworld",
"helloworld",
"helloworld",
"helloworl",
"hellowor",
"hellowo",
"hellow",
"hello",
"hell",
"hel",
"he",
"h",
""
};
lcd_init();
IODIR=0x7ff;
IOSET=0x7ff;
while
(1)
{
for(j=0;j<26;j++)
{
DisText(0x80,p[j]);
for(i=0;i<0x1ffff;i++);
}
for(j=25;j>=0;j--)
{
DisText(0x80,p[j]);
for(i=0;i<0x1ffff;i++);
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM