arm课程设计-基于ARM数字电压表的设计_第1页
arm课程设计-基于ARM数字电压表的设计_第2页
arm课程设计-基于ARM数字电压表的设计_第3页
arm课程设计-基于ARM数字电压表的设计_第4页
arm课程设计-基于ARM数字电压表的设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE16课程设计报告题目基于ARM数字电压表的设计系别机汽学院年级14专业机制高端班级1413学号2014123251 学生姓名於良凯指导教师齐家敏职称博士设计时间2016/12/13目录摘要 3第一章

绪论 41.1设计背景 41.2设计要求 4第二章设计内容 51、数字电压表的设计程序流程框图 52、最小系统整体框图 53、整体电路原理图 64、具体设计框图 64.1、A/D转换器 64.2、报警电路 74.3、LED报警电路 75、数字电压表程序设计 8第三章结论与总结 15摘要本设计介绍了一种基于LPC2131的数字电压表。根据数据数据采集的工作原理,设计实现数字电压表,然后完成微控制器与上位机EasyARM的通信,将所测量的电压值传送给EasyARM的显示界面,进行显示。该电压表的主控芯片LPC2131内部有一个10位8路A/D转换器,这个A/D转换器即可单路软件启动也可对某几路信号逐个循环采样。这种电压表不仅整个电路结构简单、明了,直观的显示测量结果,而且具有精度高,性价比高,使用方便等特点。

【关键词】

电压测量,LPC2131,LED,蜂鸣器报警

AbstractThisdesignintroducesadigitalvoltagemeterbasedonLPC2131.Accordingtotheworkingprincipleofdataacquisition,datadesigntorealizedigitalvoltmeter,andcompleteEasyARMmicrocontrollerandtheuppermachinecommunication,totransferthemeasuredvoltagevaluetoEasyARMdisplayinterface,display.ThevoltmeteristhemaincontrolchipLPC2131withinA108A/Dconverter,theA/DconvertercanbesinglestartsoftwarecanalsobeofAfewroadcyclingsignalsamples.Thevoltmeterisnotonlythewholecircuitstructureissimple,clear,intuitivedisplaymeasurementresults,andhashighprecision,highcostperformance,convenientuse,etc.

【keywords】voltagemeasurement,LPC2131,LED,buzzeralarm第一章

绪论1.1设计背景

随着电子科学技术不断发展,电子测量也变得越来越普遍,并且对测量的精度和功能的要求也是越来越高,而电压的测量尤为突出,因为电压的测量最为普遍。而且随着电子技术的日益发展,更是经常需要测量高精度的电压,数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital

Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续的、离散的数字形式并加以显示的仪表。由于数字是仪表具有读书准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。

1.2设计要求

以ARM为控制器,采用中断方式,对2路0-5v的模拟电压进行循环采集,每路连续采集16次,取平均值。采集的数据送LED显示,并存入内存。超过界限时指示灯闪烁10次后一直亮,指示灯闪烁时喇叭发声,以示警告。第二章设计内容1、数字电压表的设计程序流程框图2、最小系统整体框图3、整体电路原理图4、具体设计框图4.1、A/D转换器特性:1)10位逐次逼近式A/D转换器2)测量范围0~3.3V3)10位转换时间≥2.44μs4)一路或多路输入的Burst转换模式5)转换触发信号可选择:输入引脚的跳变或定时器的匹配6)具有掉电模式A/D转换器的基本时钟由VPB时钟提供,可编程分频器可将时钟调整至44.5MHz(逐步逼近转换的最大时钟),10位精度要求的转换需要11个A/D转换器。图4-1A/D4.2、报警电路使用GPIO的P0.7控制蜂鸣器鸣叫报警图4-2蜂鸣器报警电路4.3、LED报警电路LED发光二极管闪烁十次后一直亮(LED1表示通道1,LED2表示通道2)图4-3LED报警电路5、数字电压表程序设计*文件名: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,低电平蜂鸣#defineLEDCON 0x00000000/***************************************************************************名称: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连接到UART0U0LCR=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){while(1){if(*str=='\0')break;UART0SendByte(*str++); //发送数据}}/***************************************************************************名称:PCDispChar()*功能:向PC机发送显示字符。*入口参数:x显示位置的纵坐标,0-79*y显示位置的横坐标,0-24*chr显示的字符,不能为0xff*color显示的状态包括前景色、背景色、闪耀位。它与dos的字符显示状态一样。*即0~3位:前景色,4~6位:背景色,7位:闪耀位。*出口参数:无**************************************************************************/voidPCDispChar(uint8x,uint8y,uint8chr,uint8color){UART0SendByte(0xff); //发送起始字节UART0SendByte(x); //发送字符显示坐标(x,y)UART0SendByte(y);UART0SendByte(chr); //发送显示字符UART0SendByte(color); }/***************************************************************************名称:ISendStr()*功能:向PC机发送字串,以便显示。*入口参数:x显示位置的纵坐标,0-79*y显示位置的横坐标,0-24*color显示的状态包括前景色、背景色、闪耀位。它与dos的字符显示状态一样。*即0~3位:前景色,4~6位:背景色,7位:闪耀位。*str要发送的字符串,字串以'\0'结束*出口参数:无****************************************************************************/voidISendStr(uint8x,uint8y,uint8color,char*str){while(1){if(*str=='\0')break;//若为'\0',则退出PCDispChar(x++,y,*str++,color);//发送显示数据if(x>=80){x=0;y++;}}}/***************************************************************************名称:main()*功能:进行通道0、1电压ADC转换,并把结果转换成电压值,然后发送到串口。*说明:在CONFIG.H文件中包含stdio.h。**************************************************************************/intmain(void){uint32ADC_Data;charstr[20];UART0Init(115200); //初始化UART0PINSEL1=0x01400000; //设置P0.27、P0.28连接到AIN0、AIN1IO1DIR=BEEPCON;//设置I/O为输出IO2DIR=0x00000000;IO1SET=BEEPCON;/*进行ADC模块设置,其中x<<n表示第n位设置为x(若x超过一位,则向高位顺延)*/ADCR=(1<<0)| //SEL=1,选择通道0((Fpclk/1000000-1)<<8)| //CLKDIV=Fpclk/1000000-1,即转换时钟为1MHz(0<<16)| //BURST=0,软件控制转换操作(0<<17)| //CLKS=0,使用11clock转换(1<<21)| //PDN=1,正常工作模式(非掉电转换模式)(0<<22)| //TEST1:0=00,正常工作模式(非测试模式)(1<<24)| //START=1,直接启动ADC转换(0<<27); //EDGE=0(CAP/MAT引脚下降沿触发ADC转换)DelayNS(10); ADC_Data=ADDR; //读取ADC结果,并清除DONE标志位while(1){ADCR=(ADCR&0x00FFFF00)|0x01|(1<<24); //设置通道1,并进行第一次转换while((ADDR&0x80000000)==0); //等待转换结束ADCR=ADCR|(1<<24); //再次启运转换while((ADDR&0x80000000)==0);//等待转换结束ADC_Data=ADDR; //读取ADC结果ADC_Data=(ADC_Data>>6)&0x3FF;//提取AD转换值ADC_Data=ADC_Data*3300;//数值转换ADC_Data=ADC_Data/1024;sprintf(str,"%4dmVatVIN1",ADC_Data);ISendStr(30,23,0x30,str);if(ADC_Data>=3000){uint32i;for(i=0;i<10;i++){IO1SET=BEEPCON;IO2DIR=0x00010000;//BEEPCON=1DelayNS(15);IO1CLR=BEEPCON;//BEEPCON=0IO2DIR=0x00000000;DelayNS(15);}IO2DIR=0x00010000;DelayNS(150);}else{IO1SET=BEEPCON;//BEEPCON=0IO2DIR=0x00000000;}ADCR=(ADCR&0x00FFFF00)|0x02|(1<<24); //设置通道2,并进行第一次转换while((ADDR&0x80000000)==0); //等待转换结束ADCR=ADCR|(1<<24); //再次启运转换while((ADDR&0x80000000)==0);//等待转换结束ADC_Data=ADDR; //读取ADC结果ADC_Data=(ADC_Data>>6)&0x3FF;//提取AD转换值ADC_Data=ADC_Data*3300;//数值转换ADC_Data=ADC_Data/1024;sprintf(str,"%4dmVatVIN2",ADC_Data);ISendStr(30,21,0x30,str);if(ADC_Data>=2500){uint32i;for(i=0;i<10;i++){IO1SET=BEEPCON;IO2DIR=0x00020000;//BE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论