ARM课程设计的报告.docx

上传人:b****3 文档编号:2970507 上传时间:2022-11-16 格式:DOCX 页数:16 大小:189.26KB
下载 相关 举报
ARM课程设计的报告.docx_第1页
第1页 / 共16页
ARM课程设计的报告.docx_第2页
第2页 / 共16页
ARM课程设计的报告.docx_第3页
第3页 / 共16页
ARM课程设计的报告.docx_第4页
第4页 / 共16页
ARM课程设计的报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

ARM课程设计的报告.docx

《ARM课程设计的报告.docx》由会员分享,可在线阅读,更多相关《ARM课程设计的报告.docx(16页珍藏版)》请在冰豆网上搜索。

ARM课程设计的报告.docx

ARM课程设计的报告

电控学院

课程设计(论文)

 

课程名称:

ARM嵌入式系统

题目:

ARM数字电压表

院(系):

测控技术与仪器

专业班级:

测控1001班

姓名:

屈豆王朵

学号:

10060701151006070105

指导教师:

黄梦涛李红岩

2013年12月29日

 

 

基于LPC2131的数字电压表设计

摘要

本设计介绍了一种基于LPC2131的数字电压表。

根据数据数据采集的工作原理,设计实现数字电压表,然后完成微控制器与上位机EasyARM的通信,将所测量的电压值传送给EasyARM的显示界面,进行显示。

该电压表的主控芯片LPC2131内部有一个10位8路A/D转换器,这个A/D转换器即可单路软件启动也可对某几路信号逐个循环采样。

这种电压表不仅整个电路结构简单、明了,直观的显示测量结果,而且具有精度高,性价比高,使用方便等特点。

【关键词】电压测量,LPC2131,LED,蜂鸣器报警

第一章绪论

1.1设计背景

随着电子科学技术不断发展,电子测量也变得越来越普遍,并且对测量的精度和功能的要求也是越来越高,而电压的测量尤为突出,因为电压的测量最为普遍。

而且随着电子技术的日益发展,更是经常需要测量高精度的电压,数字电压表就成为一种必不可少的测量仪器。

数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续的、离散的数字形式并加以显示的仪表。

由于数字是仪表具有读书准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。

1.2设计要求

以ARM为控制器,采用中断方式,对2路0-5v的模拟电压进行循环采集,每路连续采集16次,取平均值。

采集的数据送LED显示,并存入内存。

超过界限时指示灯闪烁10次后一直亮,指示灯闪烁时喇叭发声,以示警告。

第二章系统介绍

2.1系统简述

数字电压表主要由模数转换部分、串口数据发送部分、上线报警部分三部分组成。

其中LPC2131自带的10位ADC作为转换电路,将输入的模拟信号进行采样、转换、然后将转换的数字信号送入MCU进行处理,得出测量结果送入上位机进行显示。

2.2上位机简述

为了给系统提供更友好的人机界面,我们可以通过上位机软件实现各种显示输出或操作输入,EasyARM软件是上位机人机界面软件,通过RS232串口通讯完成各种功能控制。

全仿真的DOS字符窗口是具有25行80列的字符显示窗(显示字符的前景/背景颜色可设置),具有8个仿真LED数码管和8个仿真发光二极管,还有20个模拟按键(按键名可重新定义)。

串口模式可设置,具有单独的数据发送/接收调试窗,方便地监视串口接收到的数据或调试串口。

2.3下位机简述

LPC2131/2132/2138是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-STMCPU,并带有32kB、64kB和512kB嵌入的高速Flash存储器。

128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。

对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。

较小的封装和很低的功耗使LPC2131/2132/2138特别适用于访问控制和POS机等小型应用中;由于内置了宽范围的串行通信接口和8/16/32kB的片内SRAM,它们也非常适合于通信网关、协议转换器、软件modem、语音识别、低端成像,为这些应用提供大规模的缓冲区和强大的处理功能。

多个32位定时器、1个或2个10位8路的ADC、10位DAC、PWM通道、47个GPIO以及多达9个边沿或电平触发的外部中断使它们特别适用于工业控制应用以及医疗系统。

主要特性:

1)16/32位ARM7TDMI-S核,超小LQFP64封装。

2)8/16/32kB的片内静态RAM和32/64/512kB的片内Flash程序存储器。

128位宽度接口/加速器可实现高达60MHz工作频率。

3)通过片内boot装载程序实现在系统编程/在应用编程(ISP/IAP)。

单扇区或整片擦除时间为400ms。

256字节行编程时间为1ms。

4)EmbeddedICE®RT和嵌入式跟踪接口通过片内RealMonitorTM软件对代码进行实时调试和高速跟踪。

5)1个(LPC2131/2132)或2个(LPC2138)8路10位的A/D转换器,共提供16

路模拟输入,每个通道的转换时间低至2.44us。

6)1个10位的D/A转换器,可产生不同的模拟输出。

(仅适用LPC2132/2138)

7)2个32位定时器/计数器(带4路捕获和4路比较通道)、PWM单元(6路输出)和看门狗。

8)实时时钟具有独立的电源和时钟,可在节电模式中极大地降低功耗。

9)多个串行接口,包括2个16C550工业标准UART、2个高速I2C接口(400kbit/s)、SPITM和具有缓冲作用和数据长度可变功能的SSP。

10)向量中断控制器。

可配置优先级和向量地址。

11)小型的LQFP64封装上包含多达47个通用I/O口(可承受5V电压)。

12)多达9个边沿或电平触发的外部中断管脚。

13)通过片内PLL(100us的设置时间)可实现最大为60MHz的CPU操作频率。

14)片内晶振频率范围:

1~30MHz。

15)低功耗模式:

空闲和掉电。

16)可通过个别使能/禁止外部功能和外围时钟分频来优化功耗。

17)通过外部中断将处理器从掉电模式中唤醒。

18)单电源,具有上电复位(POR)和掉电检测(BOD)电路。

19)CPU操作电压范围:

3.0V~3.6V(3.3V±10﹪),I/O口可承受5V的电压。

第三章硬件设计

3.1系统电路原理图

图3-1系统原理图

系统功能:

该系统主要实现对电压的测量,经测试端输入的电压,分压采样后送到LPC2131程序处理,最后将测量结果在EasyARM显示界面显示,由于ADC本身的输入范围的限制,我们这里输入信号最大值为+3.3V,采样率达到100Hz,精度高于0.9%,在实际应用中,可以增加前级信号调理电路使输入信号的范围扩大。

3.2A/D转换器

特性:

1)10位逐次逼近式A/D转换器

2)测量范围0~3.3V

3)10位转换时间≥2.44μs

4)一路或多路输入的Burst转换模式

5)转换触发信号可选择:

输入引脚的跳变或定时器的匹配

6)具有掉电模式

A/D转换器的基本时钟由VPB时钟提供,可编程分频器可将时钟调整至44.5MHz(逐步逼近转换的最大时钟),10位精度要求的转换需要11个A/D转换器。

图3-2A/D转换电路

3.3报警电路

使用GPIO的P0.7控制蜂鸣器鸣叫报警

 

图3-3蜂鸣器报警电路

LED发光二极管闪烁十次后一直亮(LED1表示通道1,LED2表示通道2)

图3-4LED报警电路

3.5LPC2131最小系统

最小系统包含时钟电路和复位电路

图3-5最小系统

第四章软件设计

4.1系统功能流程图

根据设计要求,结合硬件原理图与LPC2131的使用手册,为采样频率达到100Hz,把电压测量结果直观显示出来,软件程序流程图如图4-1

图4-1系统功能流程图

4.2程序

/**************************************************************************

*文件名:

main.c

*功能:

使用ADC模块的通道0、1进行电压的测量,然后将转换结果从串口输出,

*上位机使用EasyARM软件全仿真的DOS字符窗口观察。

*说明:

跳线JP8、JP30短接。

由W1、W2调节测量电压值。

*通讯格式:

8位数据位,1位停止位,无奇偶校验,波特率为115200。

**************************************************************************/

#include"config.h"

#defineLED11<<16//P2.16

#defineLED21<<17//P2.17

#defineBEEPCON1<<20

//P0.7引脚控制B1,低电平蜂鸣

#defineLEDCON0x00000000

/**************************************************************************

*名称:

DelayNS()

*功能:

长软件延时

*入口参数:

dly延时参数,值越大,延时越久

*出口参数:

***********************************************************************/

voidDelayNS(uint32dly)

{uint32i;

for(;dly>0;dly--)

{

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

}

}

/**************************************************************************

*名称:

UART0Init()

*功能:

初始化串口0。

设置为8位数据位,1位停止位,无奇偶校验

*入口参数:

bps通讯波特率

*出口参数:

**************************************************************************/

voidUART0Init(uint32bps)

{uint16Fdiv;

PINSEL0=(PINSEL0&(~0x0F))|0x05;//不影响其它管脚连接,设置I/O连接到UART0

U0LCR=0x83;//DLAB=1,可设置波特率

Fdiv=(Fpclk/16)/bps;//设置波特率

U0DLM=Fdiv/256;

U0DLL=Fdiv%256;

U0LCR=0x03;

}

/**************************************************************************

*名称:

UART0SendByte()

*功能:

向串口发送字节数据,并等待发送完毕。

*入口参数:

data要发送的数据

*出口参数:

**************************************************************************/

voidUART0SendByte(uint8data)

{

U0THR=data;//发送数据

while((U0LSR&0x40)==0);//等待数据发送完毕

}

/**************************************************************************

*名称:

UART0SendStr()

*功能:

向串口发送一字符串

*入口参数:

srt要发送的字符串的指针

*出口参数:

*************************************************************/

voidUART0SendStr(char*str)

{

whil

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

当前位置:首页 > 法律文书 > 调解书

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

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