arm课程设计报告

上传人:痛*** 文档编号:163848979 上传时间:2022-10-23 格式:DOC 页数:20 大小:187.50KB
收藏 版权申诉 举报 下载
arm课程设计报告_第1页
第1页 / 共20页
arm课程设计报告_第2页
第2页 / 共20页
arm课程设计报告_第3页
第3页 / 共20页
资源描述:

《arm课程设计报告》由会员分享,可在线阅读,更多相关《arm课程设计报告(20页珍藏版)》请在装配图网上搜索。

1、 课程设计报告(嵌入式接口技术) 学院:电气工程与自动化学院题 目:基于ARM的多路数据采集系统设计专业班级:自动化113班学 号:35号学生姓名:翁志荣指导老师:温如春 2013 年12月19日摘 要 数据采集系统用于将模拟信号转换为计算机可以识别的数字信号.该系统目的是便于对某些物理量进行监视.数据采集系统的好坏取决于他的精度和速度.设计时,应在保证精度的情况下尽可能的提高速度以满足实时采样、实时处理、实时控制的要求.在科学研究中应用该系统可以获得大量动态;是研究瞬间物理过程的重要手段;亦是获取科学奥秘的重要手段之一. 本次设计是基于ARM的多路数据采集系统,主控器能够对模拟信号产生的各路

2、数据,通过数据采集系统进行采集并在主控器的程控下显示。关键字 :数据采集;模数转换;ARM;实时采样。 AbstractData acquisition system for digital signal to analog signal conversion can be identified by computer. The system is aimed at facilitating monitoring of some physical quantity. Data acquisition system is good or bad depends on the precision

3、and speed. When the design, should be in the case of ensuring accuracy as much as possible to meet the high speed real-time sampling, real-time processing, the requirement of real time control. The application of this system in scientific research can obtain a large number of dynamic; is an importan

4、t means to study the instantaneous physical process; and it is also one of the important means of access to the mysteries of Science.Keywords: data acquisition; ARM; real-time sampling analog-to-digital conversion.目 录第一章设计任务及要求4 1.1设计任务 4 1.2 基本设计要求4 1.3 设计发挥部分4 第二章 基本思路 2.1 仿真环境 2.2 设计思路 第三章 电路设计 3

5、.1 芯片选择 3.2 电路图设计 第四章 软件设计 4.1 编译环境 4.2 程序代码设计 第五章 心得体会 致谢 参考文献 附录(部分源程序) 第一章 设计任务及要求1.1设计任务 设计一个八路数据采集系统,系统框图如图所示。主控器能够对模拟信号产生的各路数据,通过数据采集系统进行采集并在主控器的程控下显示。图1-3系统框图1.1设计基本要求(1) 在Proteus信号源模式下选取正弦波信号发生器,设置信号源频率为200Hz至2kHz范围变化,再经频率电压变换电路输入相应1v至5v直流电压(200Hz对应1v,2kHz对应5v)。(2)数据采集系统第一路输入自制1v至5v直流电压,第2至7

6、路分别输入来自直流源的5、4、3、2、1、0v直流电压,第八路备用。将各路模拟信号分别转换成八位二进制数字信号,再经并/串变换电路,用串行码送入传输线路。(3)主控器通过串行传输线路对各路数据进行采集和显示,使用循环采集(即1路、2路、8路、7路、)方式。显示部分能同时显示地址和相应的数据。1.2设计发挥部分(1)减少串行传输线数目至4路一下。(2)可通过按键对采集通道进行选择,如只采集第一路信号。 第二章 基本思路2.1仿真环境Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件

7、的仿真功能,还能仿真单片机及外围器件。从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片

8、机教学的教师、致力于单片机开发应用的科技工作者的青睐。 2.2设计思路第三章 电路设计2.1芯片选择LPC2124是基于实时仿真1632位ARM7TDMI-S CPU和嵌入式跟踪支持,连同256 kb的嵌入式高速闪存。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率。对于重要的应用程序代码大小,可使用16位Thumb模式超过30厘与最小的性能损失减少代码。With their compact 64-pin package, low power consumption, various 32-bit timers, 4-channel 10-bit ADC, PWM cha

9、nnels and 46 fast GPIO lines with up to nine external interrupt pins the LPC2124 is particularly suitable for industrial control, medical systems, access control and point-of-sale. With a wide range of serial communications interfaces, the LPC2124 is also very well suited for communication gateways,

10、 protocol converters and embedded soft modems as well as many other general-purpose applications.其紧凑的64引脚封装,功耗低,各32位定时器,4通道10位ADC,PWM通道和46个快速GPIO线路多达九个外部中断引脚LPC2124特别适用于工业控制,医疗系统,访问控制和销售点。具有宽范围的串行通信接口,在LPC2124也非常适合于通信网关,协议转换器和嵌入式软调制解调器以及其他许多通用应用。C2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,

11、能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。为集成式频率电压转换器,芯片中包含了比较器、充电泵、高增益运算放大器,在测量转速(频率)时,目前多采用数字电路,但有些场合则需要转速(频率)的变化与模拟信号输出相对应,这样便可在自动控制系统实验中用频压转换器件代替测速发电机,从而使实验设备简化。2.2电路设计(电路原理图)第四章 程序设计2.1编译环境KeiluVision2是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言易学易用,而且大大的提高了工作效率和项目开发周期,

12、他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。2009年2月发布Keil Vision4,Keil Vision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制

13、的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。2.2程序设计(程序流程图)第五章 心得体会通过此次课程设计,使我更加扎实的掌握了有关ARM嵌入式方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过

14、而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设

15、计,我掌握了常用元件的识别和测试;熟悉了常用软件的使用;了解了电路的连线方法;我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以

16、学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或

17、上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。参考文献:1 童诗白.模拟电子技术基础M.北京:高等教育出版社,19802 刘凯.ARM嵌入式接口技术M.北京:清华大学出版社,20093 周立功.ARM嵌入式系统M.广州:北京航空航天大学出版社,20084 刘伟.C语言程序设计实训100例M.北京:电子工业出版社,2009附录(源程序)#include #include #include /LCD1604定义#defineRS (18)#defineRW (19)#defineEN (110)/TLC2543管脚定义#define D_OUT (111)#define

18、 D_IN (112)#define CS (113)#define CLOCK (114)#define EOC (115)/按键管脚定义#define KEY1 (116)#define KEY2 (117)#define KEY3 (118)#define KEY4 (119)#define KEY5 (120)#define KEY6 (121)#define KEY7 (122)#define KEY8 (123) /变量定义#define uint unsigned int#define uchar unsigned char#define uint32 unsigned long

19、 int#define _nop_(); ;uchar d8=11111; /*函数名称 void DelayMS*函数描述 *传入参数 无*传出参数 无*返回值 */void DelayMS(uint ms) uchar i;while(ms-) for(i=0;i120;i+);/*函数名称 Busy_Check() *函数描述 检查总线是否忙碌*传入参数 无*传出参数 无*返回值 LCD_Status*/uchar Busy_Check(void) uchar LCD_Status; IO0CLR=RS;IO0SET=RW;IO0SET=EN;IO0DIR &= 0xFFFFFF00;L

20、CD_Status = (IO0PIN&0X80);IO0DIR |= 0x7ff; IO0CLR=EN;return LCD_Status; /*函数名称 Write_LCD_Command(uchar cmd)*函数描述 写入指令*传入参数 指令*传出参数 无*返回值 无*/void Write_LCD_Command(unsigned char command) while(Busy_Check()=0x80); /检查是否BUSY ,忙碌一直在此等待 IO0CLR = RS; /写指令,RS=L,RW=L,然后D0D7=指令码,E=高脉冲发送命令 IO0CLR = RW; IO0CLR

21、 |= 0xff;/清空端口 IO0SET |= command; IO0SET = EN;/发送数据 IO0CLR = EN;/恢复,以便继续使用 /*函数名称 Write_LCD_Data(uchar dat)*函数描述 写入数据*传入参数 数据*传出参数无*返回值无*/ void Write_LCD_Data(unsigned char data) while(Busy_Check()=0x80); /检查是否BUSY ,忙碌一直在此等待 IO0SET = RS; /写指令,RS=H,RW=L,然后D0D7=指令码,E=高脉冲发送命令 IO0CLR = RW; IO0CLR |= 0xf

22、f;/清空端口 IO0SET |= data; IO0SET = EN;/发送数据 IO0CLR = EN;/恢复,以便继续使用 /*函数名称 Set_LCD_POS*函数描述 写入一个字符串*传入参数 x 行 y 列*传出参数 无*返回值 无*/void Set_LCD_POS(uchar x,uchar y) switch(x) case 0: Write_LCD_Command(0x80|y);break;case 1:Write_LCD_Command(0xc0|y);break;case 2: Write_LCD_Command(0x90|y);break;case 3:Write_

23、LCD_Command(0xd0|y);break;default:Write_LCD_Command(0x80|y);break; /* /*函数名称 DisplayChar* 功能:在指定位置显示单个字符 *传出参数 无*返回值 无*/ void DisplayChar(unsigned char x,unsigned char y,unsigned char data) Set_LCD_POS(x,y); Write_LCD_Data(data); /* *函数名称Display_LCD_String*功能:在指定位置显示字符串 *传出参数 无*返回值 无*/ void Display_

24、LCD_String(uchar x,uchar y,uchar *s) uchar i;Set_LCD_POS(x,y); for(i=0;si!=0;i+) Write_LCD_Data(si); /* *函数名称* 功能:初始化LCD1604函数 *传出参数 无*返回值 无*/ void InitLcd() PINSEL0=PINSEL0&0xFFFFFC00;/低11位为IO功能 IO0DIR = IO0DIR|0xFF;/为输出功能 IO0CLR = IO0CLR|0xFF;/清零 Write_LCD_Command(0x38);/设置16*2显示,5*7点阵,8位数据接口 Writ

25、e_LCD_Command(0x0c);/显示开及光标设置显示器开、光标开、闪烁开 0x0c不显示光标 0x0e光标不闪,0x0f光标闪Write_LCD_Command(0x06);Write_LCD_Command(0x01);/显示清屏,数据指针、所有显示清零 /*函数名称 read2543(unsigned char port) *函数描述 AD转换*传入参数 unsigned char port*传出参数 *返回值 无*/uint32 read2543(unsigned char port) uint i=0; uint ad_value=0; PINSEL0=PINSEL0&0X0

26、03FFFFF; IO0DIR=(IO0DIR&0XFFFF07FF)|0x0000F000; IO0CLR=CLOCK; IO0CLR=CS; IO0SET=EOC; port=4; for(i=0;i12;i+ ) if(IO0PIN&(111) ad_value|=0x01; if(port&0x80)!=0)IO0SET=D_IN; else IO0CLR=D_IN; IO0SET=CLOCK; _nop_(); _nop_(); _nop_(); IO0CLR=CLOCK; _nop_(); _nop_(); _nop_(); port=port1; ad_value=ad_valu

27、e1; return ad_value; /*函数名称 get_AD()*函数描述 AD获得的值进行处理*传入参数 无*传出参数 无 *返回值 处理后的浮点数*/float get_AD(uchar port) int i=0; float AD_value=0; for(i=0;i3;i+) AD_value=(float)(read2543(port)*5000/4096+1);/AD获得的值进行处理return AD_value; /*函数名称 ShowNum()*函数描述 写入一个正数字*传入参数 x 行 y 列*传出参数 char x, char y, char ch*返回值 无*/

28、void ShowfNum(char x, char y,float num) uchar buffer6;unsigned int inum=num;buffer0=inum/1000+0;buffer1=.;buffer2=(inum%1000)/100+0;buffer3=(inum%100)/10+0;buffer4=(inum%10)+0; buffer5=0; Display_LCD_String(x,y,buffer);/*函数名称 KEY_Get()*函数描述 按键获得键值*传入参数无*传出参数无*返回值键值*/int KEY_Get(void) if(IO1PIN&0x00f

29、f0000)=KEY1) return(1); if(IO1PIN&0x00ff0000)=KEY2) return(2); if(IO1PIN&0x00ff0000)=KEY3) return(3); if(IO1PIN&0x00ff0000)=KEY4) return(4); if(IO1PIN&0x00ff0000)=KEY5) return(5); if(IO1PIN&0x00ff0000)=KEY6) return(6); if(IO1PIN&0x00ff0000)=KEY7) return(7); if(IO1PIN&0x00ff0000)=KEY8) return(8); if(

30、IO1PIN&0x00ff0000)=0x) return(0); else return(9);/*函数名称 Show_LCD_Begin()*函数描述 初始化显示*传入参数 无*传出参数 无*返回值 无*/void Show_LCD_Begin() Display_LCD_String(1,5,Welcome);/*函数名称 Show_AD(uchar n)*函数描述 显示07其中一通道的采集数据*传入参数 n*传出参数 无*返回值 无*/void Show_AD(uchar n) float AD_value=0.00; AD_value=get_AD(n-1); ShowfNum(2,

31、3,AD_value); Display_LCD_String(2,10,V); Display_LCD_String(1,4,Ch:); DisplayChar(1,8,n+0);/*函数名称 Deal_Show(uchar n)*函数描述 处理按键与显示*传入参数 无*传出参数 无*返回值 无*/void Deal_Show() float AD_value=0.00;if(KEY_Get()=9) Write_LCD_Command(0x01); Display_LCD_String(1,5,ERROR!);DelayMS(1000);if(KEY_Get()!=9)&(KEY_Get(

32、)!=0) Write_LCD_Command(0x01); Show_AD(KEY_Get(); DelayMS(1000);if(KEY_Get()=0) Display_LCD_String(0,0,1:); AD_value=get_AD(0); ShowfNum(0,3,AD_value); Display_LCD_String(0,8, 2:); AD_value=get_AD(1); ShowfNum(0,11,AD_value); Display_LCD_String(1,0,3:); AD_value=get_AD(2); ShowfNum(1,3,AD_value); Di

33、splay_LCD_String(1,8, 4:); AD_value=get_AD(3); ShowfNum(1,11,AD_value); Display_LCD_String(2,0,5:); AD_value=get_AD(4); ShowfNum(2,3,AD_value); Display_LCD_String(2,8, 6:); AD_value=get_AD(5); ShowfNum(2,11,AD_value); Display_LCD_String(3,0,7:); AD_value=get_AD(6); ShowfNum(3,3,AD_value); Display_LCD_String(3,8, 8:); AD_value=get_AD(7); ShowfNum(3,11,AD_value);/*函数名称 main()*函数描述 主函数*传入参数 无*传出参数 无*返回值 无*/int main(void) InitLcd(); PINSEL1=0x; IO1DIR=0x; Show_LCD_Begin(); DelayMS(500); Write_LCD_Command(0x01); while(1) Deal_Show();

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!