ARM课程设计报告--基于LPC2131数字电压表设计 本文关键词:电压表,课程设计,数字,报告,设计
ARM课程设计报告--基于LPC2131数字电压表设计 本文简介:电控学院课程设计课程名称:ARM课程设计题目:基于LPC2131数字电压表设计院(系):电气与控制工程学院专业班级:测控技术与仪器1001班姓名:庞海洋呼霄鹏学号:10060701301006070124指导教师:黄梦涛李红岩2013年12月28日目录一概述11.1课题设计背景11.2ARM开发板(
ARM课程设计报告--基于LPC2131数字电压表设计 本文内容:
电控学院
课程设计
课程名称:
ARM课程设计
题
目:
基于LPC2131数字电压表设计
院
(系):
电气与控制工程学院
专业班级:
测控技术与仪器1001班
姓
名:
庞海洋
呼霄鹏
学
号:
1006070130
1006070124
指导教师:
黄梦涛
李红岩
2013年12月28日
目
录
一概述1
1.1课题设计背景1
1.2ARM开发板(简介)1
1.3、LPC2131微控制器2
二、
方案设计3
2.1设计思路3
2.2设计要求3
三、
硬件设计4
3.1硬件设计原理图及介绍4
四、
软件设计5
五、
参考文献6
六、
心得体会6
七、
附件8
15
西安科技大学电控学院课程设计
基于LPC2131数字电压表
一概述
1.1课题设计背景
电压表已经有100多年的发展历史,虽然不断改进与完善,仍然无法满足现代电子测量的需求,数字电压表(Digital
Voltmeter简称DVM)自1952年问世以来,显示出强大的生命力,现已成为在电子测量领域中应用最广泛的一种仪器。数字电压表可以显示清晰、直观,读数准确,准确度高,分辨力强,测量范围广,扩展能力强,测量速度快,输入阻抗高,集成度高,微功耗和抗干扰能力强等优点,独占电压表产品的熬头。
DVM的高速发展,使它已成为实现测量自动化、提高工作效率不可缺少的仪表,数字化是当前计量仪器发展的主要方向之一,而高准度的DC-DVC的出现,又使DVM进入了精密标准测量领域。随着现代化技术的不断发展,数字电压表的功能和种类将越来越强,越来越多,其使用范围也会越来越广泛。采用智能化的数字仪器也将是必然的趋势,它们将不仅能提高测量准确度,而且能提高电测量技术的自动化程序,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如:温度计、湿度计、酸度计、重量、厚度仪等),几乎覆盖了电子电工测量、工业测量、自动化仪表等各个领域。从而提高计量检定人员的工作效。
目前数字电压表的内部核心部件是A/D转换器,转换器的精度很大程度上影响着数字电压表的准确度,本课程设计A/D转换器采用LPC2131对输人模拟信号进行转换,控制核心再对转换的结果进行运算和处理,最后串口显示数字电压信号。
1.2ARM开发板(简介)
ARM开发板,即以基于ARM内核的芯片作为CPU,同时附加其他功能外围的嵌入式开发板,用以评估内核芯片的功能。ARM开发板可以分为Cortex-M0开发板、Cortex-M3开发板、Cortex-A5开发板[1]、Cortex-A8开发板、Cortex-A9开发板、Cortex-A15开发板等,而提供这些内核芯片的厂商有飞思卡尔、TI、NXP、三星、Atmel和ST等。英国ARM公司是嵌入式RISC处理器的IP(知识产权)供应商,它为ARM架构处理器提供ARM处理器内核(如ARM7TDMI、ARM9TDMI及ARM10TDMI等)。由各半导体公司在上述处理器内核基础上进行再设计,嵌入各种外围和处理部件,形成各种MCU。目前基于ARM内核的芯片在嵌入式处理器市场上占据75%的份额。ARM作为嵌入式系统的处理器,具有低电压,低功耗和高集成度等特点,并具有开放性和可扩充性。事实上,ARM内核已成为嵌入式系统首选的处理器内核。而对于医疗电子设备而言,并不需要图像处理等方面更高的要求,因此,ARM7TDMI内核以0.9MIPS(百万条指令每秒)/MHz的高效处理能力足以满足应用需要。ARM7TDMI内核是ARM核系列中32位通用内核中的一个产品,它采用三级流水线结构,指令的执行分成取指、译值和执行3个阶段。运算器能够实现32位整数运算。内核不但能够执行32位高效ARM指令,同时还支持简洁的16位Thumb指令集以提高代码密度。
1.3、LPC2131微控制器
1、简介
LPC2131/2132/2138
是基于一个支持实时仿真和跟踪的16/32
位ARM7TDMI-STM
CPU,并带有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
个边沿或电平触发的外部中断使它们特别适用于工业控制应用以及医疗系统。
2、主要性能
a、
8/16/32kB
的片内静态RAM
和32/64/512kB
的片内Flash
程序存储器。128
位宽度接口/加速器可实现高达60
MHz
工作频率。
b、
1
个(LPC2131/2132)或2
个(LPC2138)8
路10
位的A/D
转换器,共提供16
路模拟输入,每个通道的转换时间低至2.44us。
c、
1
个10
位的D/A
转换器,可产生不同的模拟输出。(仅适用于LPC2132/2138)
d、
2
个32
位定时器/计数器(带4
路捕获和4
路比较通道)、PWM
单元(6
路输出)和看门狗。
e、多个串行接口,包括2
个16C550
工业标准UART、2
个高速I2C
接口(400
kbit/s)、SPITM
。
2、
方案设计
2.1设计思路
通过LPC2131板内的A/D转换器,采取中断方式,完成对2路0—5V的模拟电压进行循环采集,采集的数据通过串口UARTO
向PC机发送显示
。
2.2设计要求
(1)对2路模拟信号输入实行循环采集,每路连续采集16次,取平均值。
(2)分别设定每一路的上限值,若采集的平均值超过该上限值,则对应通道的指示灯闪烁10次后一直亮,指示灯闪烁时喇叭发声,以示警告。
3、
硬件设计
3.1硬件设计原理图及介绍
图3.1原理框图
由上图知,两个被测信号进入ARM开发板,经过A/D转换模块转换得出电压值,再经由上位机显示出数值。
图3.2蜂鸣器报警电路
图3.3指示灯闪烁电路
4、
软件设计
4.1程序流程图如图4.1所示。根据流程图编程实现各自功能。
图4.1程序流程图
5、
参考文献
[1]周立功.ARM嵌入式系统基础教程[M].北京航空航天大学出版社,2008.9.
[2]李红岩,杨学存.ARM嵌入式实验+实训指导书[M].西安科技大学出版社,2013.9.
[3]周立功,张华等.深入浅出ARM7——LPC213x/LPC214x(上册)[M].北京航空航天大学出版社,2005.
[4]黄智伟,税梦玲,张强.全国大学生电子设计大赛ARM嵌入式系统应用设计与实践[M].北京航空航天大学出版社,2011.
[7]百度文库
6、
心得体会
心得体会一(庞海洋)
这次的课程设计是基于LPC2131的数字电压表,实现的主要功能用ARM的A/D转换模块功能,外部扩展蜂鸣器报警电路和指示灯闪烁电路,用串口UART0向PC机发送显示。
在做数字电压表的设计时,开始是遇到不少的问题,比如我们想数字电压表到底是什么设计原理呢,模拟电压信号是怎样被数字电压表循环采集的呢。由于只是在课堂上学习过理论知识,还没有接触过实际真正设计和开发,所以在考虑问题的时候往往是不全面的,导致设计过程中存在着这样那样的问题。经过这一个星期的课程设计实习,过程曲折坎坷让人一言难尽啊。我们组一共二个人,整体上是我们二个人都在做,但个人的分工不同,呼霄鹏负责硬件部分,我负责软件部分。在设计程序的过程中,我明白到做一个好程序的不易,做一个好的编程者就更加困难。我主要负责软件程序编写以及调试工作。通过这次课程设计,加强了我的动手、思考和解决问题的能力。在整个设计过程中主要是软件编写,这个我们花了好长时间,几乎是前四天都在编写数字电压表程序。最后,在老师和同学的帮助下,我们完成了程序设计。经过一天的调试,我们的课程设计终于成功了。我们两个都很激动,尝到了通过自己设计电压表的喜悦。
这次课程设计我最大的收获就是“细节”。“细节决定成败”这句话太对了。我以后在生活中要注重细节。在课程设计过程中,我的程序框架是对的,可是细节部分出现很多错误。导致我的程序虽然在语法上没有错误但是出现逻辑错误使电压表不能完成其设计功能。我要做一个细心的人。最后,谢谢老师和同学们的帮助。
心得体会二(呼霄鹏)
这次的课程设计是基于LPC2131的数字电压表,实现的主要功能用ARM的A/D转换模块功能,外部扩展蜂鸣器报警电路和指示灯闪烁电路,用串口UART0向PC机发送显示。
本学期在学院的安排下我们学习了ARM嵌入式系统的理论知识,这门课程是我们测控专业的主要课程。虽然我们学的都是一些简单的知识,注重学习如何去分析和研究嵌入式系统的功能和结构等,但学习的过程中还是有一定的困难。在理论课结束后老师为我们安排了ARM的课程设计实习。
本次课程实习我们两个人组,我主要负责硬件的设计、调试和电路图的绘制,另一个同学负责软件的编写和调试。这次实习对于我来说还是有一定难度的,因为几乎没有什么实际经验而不像有的同学以前参加过电子设计大赛。他们做起来感觉得心应手可以说是一气合成,而我画图所用的软件以前虽然用过但还是不太熟悉,画图过程中有很多问题。
通过这次课程设计,虽然学到了不少东西不管是电路图的绘制还是软件的编写和调试,但同时也发现了自身的不足。就比如说实际动手能力吧。画基本一样的一电路图,熟悉画图软件的同学可能有一上午就可以画好所有的,而我却需要差不多一天的时间还不能保证还所画图完全正确。希望通过这次实习可以对自己的操作能力有所提高。
7、
附件
程序清单:
/****************************************************************************
文
件
名:main.c
功
能:使用ADC模块的通道0、1进行电压的测量,然后将转换结果从串口输出,
上位机使用EasyARM软件全仿真的DOS字符窗口观察。
说
明:跳线JP8、JP30短接。由W1、W2调节测量电压值。
通讯格式:8位数据位,1位停止位,无奇偶校验,波特率为115200。***************************************************************************/
#include
“config.h“#define
LED1
10;
dly--)
{
for(i=0;
i=80)
{
x
=
0;
y++;
}
}
}
/****************************************************************************
名
称:main()
功
能:进行通道0、1电压ADC转换,并把结果转换成电压值,然后发送到串口。
说
明:在CONFIG.H文件中包含stdio.h。***************************************************************************/
int
main(void)
{
uint32
ADC_Data;
char
str[20];
UART0Init(115200);//
初始化UART0
PINSEL1
=
0x01400000;//
设置P0.27、P0.28连接到AIN0、AIN1
IO1DIR
=
BEEPCON;
//
设置I/O为输出
IO2DIR
=
0x00000000;
IO1SET
=
BEEPCON;
/*
进行ADC模块设置,其中x>6)
//
提取AD转换值
ADC_Data
=
ADC_Data
3300;
//
数值转换
ADC_Data
=
ADC_Data
/
1024;
sprintf(str,“%4dmV
at
VIN1“,ADC_Data);
ISendStr(30,23,0x30,str);
if(
ADC_Data>=3000)
{
uint32
i;
for(i=0;i>6)
//
提取AD转换值
ADC_Data
=
ADC_Data
3300;
//
数值转换
ADC_Data
=
ADC_Data
/
1024;
sprintf(str,“%4dmV
at
VIN2“,ADC_Data);
ISendStr(30,21,0x30,str);
if(
ADC_Data>=2500)
{
uint32
i;
for(i=0;i<10;i++)
{
IO1SET
=
BEEPCON;
IO2DIR
=
0x00020000;
//
BEEPCON
=
1
DelayNS(15);
IO1CLR
=
BEEPCON;
//
BEEPCON
=
0
IO2DIR
=
0x00000000;
DelayNS(15);
}
IO2DIR
=
0x00020000;
DelayNS(150);
}
else
{
IO1SET
=
BEEPCON;
//
BEEPCON
=
0
IO2DIR
=
0x00000000;}
}
return(0);
}