完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx

上传人:b****7 文档编号:22160372 上传时间:2023-02-02 格式:DOCX 页数:23 大小:237.26KB
下载 相关 举报
完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx_第1页
第1页 / 共23页
完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx_第2页
第2页 / 共23页
完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx_第3页
第3页 / 共23页
完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx_第4页
第4页 / 共23页
完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx

《完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

完美升级版基于ARM7的LCD显示电路仿真毕业论文Word文档格式.docx

近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。

嵌入式系统无疑成为当前最热门最有发展前途的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)643216K字节静态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)通用IO口

(18)CPU操作频率可达60MHz

(19)双电源

-CPU操作电压范围:

1.65V~1.95V(1.8V±

8.3%)

-IO电压范围:

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

RW

读写选择

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脚:

RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

背光源负极。

(3)LM016LLCD的指令说明及时序:

LM016L液晶模块内部的控制器共有11条控制指令,如表2所示:

表2-2控制命令表

序号

指令

清显示

光标返回

*

置输入模式

ID

S

显示开关控制

D

C

B

光标或字符移位

SC

RL

置功能

DL

N

F

置字符发生存贮器地址

字符发生存贮器地址

置数据存贮器地址

显示数据存贮器地址

读忙标志或地址

BF

计数器地址

写数到CGRAM或DDRAM)

要写的数据内容

从CGRAM或DDRAM读数

读出的数据内容

LM016L液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:

1为高电平、0为低电平)

指令1:

清显示,指令码01H,光标复位到地址00H位置。

指令2:

光标复位,光标返回到地址00H。

指令3:

光标和显示模式设置。

ID:

光标移动方向,高电平右移,低电平左移S:

屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效。

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:

光标或显示移位SC:

高电平时移动显示的文字,低电平时移动光标。

指令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、IAR、Keil和MPLAB等多种编译器。

在Proteus绘制好原理图后,调入已编译好的目标代码文件:

*.,如图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×

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=rw;

设置读写方式为读

IOCLR=0xff;

先清零

IOSET=dat;

再送数

使能,让置位寄存器开始工作

使能,让清零寄存器开始工作

WrDat(),函数功能为:

写数据函数

voidWrDat(uint8dat){

IOSET=rs;

置位控制选择

清零寄存器选择读

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!

='

)WrDat(*(p++));

从起始地址开始,将数据一个字符一个字符写入

time(),函数功能为:

延时

voidtime(){

inti=100000;

for(;

i>

=0;

i--);

4.2.3主函数

main(),函数功能为:

显示文本

intmain(void)

{

inti;

uint8*p[]={"

.c

*功能:

向LCD输出HelloWorld

#include"

config.(1<

<

10)

#definebusy(1<

7)

*名称:

ChkBusy()

voidChkBusy()

{

while

(1)

{

WrOp()

voidWrOp(uint8dat)

ChkBusy();

IOCLR=rs;

IOCLR=rw;

IOCLR=0xff;

IOSET=dat;

IOSET=en;

IOCLR=en;

WrDat()

voidWrDat(uint8dat)

IOSET=rs;

lcd_init()

voidlcd_init(void)

WrOp(0x38);

WrOp(0x06);

WrOp(0x0c);

DisText()

voidDisText(uint8addr,uint8*p)

WrOp(addr);

while(*p!

main()

inti,j,a;

"

"

1"

0"

7"

8"

3"

};

lcd_init();

设置为输出

IOCLR=0x7ff;

for(j=0;

j<

13;

j++){

WrDat(*p[j]);

for(i=0;

i<

0x08fff;

i++);

}

WrOp(0x01);

WrOp(0x04);

WrOp(0x8f);

WrDat(*p[12-j]);

for(i=0;

for(a=0;

a<

15;

a++){

WrOp(0x1c);

}

*DisText(0x80,p[0]);

for(i=0;

0x1ffff;

DisText(0x80,p[1]);

DisText(0x80,p[2]);

DisText(0x80,p[3]);

DisText(0x80,p[4]);

DisText(0x80,p[5]);

0x1fff

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1