基于ARM7的LCD显示电路仿真毕业论文.docx

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

基于ARM7的LCD显示电路仿真毕业论文.docx

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

基于ARM7的LCD显示电路仿真毕业论文.docx

基于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)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控制命令表

序号

指令

RS

RW

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

ID

S

4

显示开关控制

0

0

0

0

0

0

1

D

C

B

5

光标或字符移位

0

0

0

0

0

1

SC

RL

*

*

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:

光标和显示模式设置。

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×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[]={".c

*功能:

向LCD输出HelloWorld

****************************************************************************

#include"config.(1<<10)

#definebusy(1<<7)

****************************************************************************

*名称:

ChkBusy()

*功能:

检查总线是否忙

****************************************************************************

voidChkBusy()

{

IODIR=0x700;

while

(1)

{

IOCLR=rs;

IOSET=rw;

IOSET=en;

if(!

(IOPIN&busy))break;

IOCLR=en;

}

IODIR=0x7ff;

}

****************************************************************************

*名称:

WrOp()

*功能:

写指令函数

****************************************************************************

voidWrOp(uint8dat)

{

ChkBusy();

IOCLR=rs;全部清零

IOCLR=rw;

IOCLR=0xff;先清零

IOSET=dat;再送数

IOSET=en;

IOCLR=en;

}

****************************************************************************

*名称:

WrDat()

*功能:

写数据函数

****************************************************************************

voidWrDat(uint8dat)

{

ChkBusy();

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)

{

WrOp(addr);

while(*p!

='\0')WrDat(*(p++));

}

****************************************************************************

*名称:

main()

*功能:

显示文本

****************************************************************************

intmain(void)

{

inti,j,a;

uint8*p[]={"","1","0","7","8","0","1","1","3"};

lcd_init();

IODIR=0x7ff;设置为输出

IOCLR=0x7ff;

while

(1)

{

WrOp(0x80);

for(j=0;j<13;j++){

WrDat(*p[j]);

for(i=0;i<0x08fff;i++);

}

WrOp(0x01);

WrOp(0x04);

WrOp(0x8f);

for(j=0;j<13;j++){

WrDat(*p[12-j]);

for(i=0;i<0x08fff;i++);}

for(a=0;a<15;a++){

WrOp(0x1c);

for(i=0;i<0x08fff;i++);

}

WrOp(0x01);

*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++);

DisText(0x80,p[6]);

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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