arm秒表设计实训报告多功能秒表课程设计_第1页
arm秒表设计实训报告多功能秒表课程设计_第2页
arm秒表设计实训报告多功能秒表课程设计_第3页
arm秒表设计实训报告多功能秒表课程设计_第4页
arm秒表设计实训报告多功能秒表课程设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE18物理机电学院课程设计报告评阅意见:评阅意见:评阅教师日期多功能秒表设计【摘要】随着电子技术的飞速发展,基于嵌入式的控制系统已广泛应用于工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。同时楼宇智能化的发展与成熟,也为基于嵌入式的控制系统的普及与应用奠定了坚实的基础。而本次实训的目的在于利用ARM系统进行简单的系统设计。而在这次实训中,我利用ARM系统设计函数信号发生器,其基本步骤如下:总体方案的设计与选择:根据设计任务要求和给定的条件,分析所要设计电路应完成的功能,并将总体功能分解成若干个单元功能,分清主次和相互的关系,形成若干单元功能然后再组成总体方案。程序的编写:编写满足设计要求的程序并写入LPC2138芯片中,通过系统实现对电路的控制,从而达到设计的要求。程序的调试:在课程设计的实践过程中程序的调试占有非常重要的地位,它是最基础的阶段,也是将理论转换为实际的一个关键过程,因此调试时要谨慎小心的进行,从各方面考虑不能产生结果的原因。本次实训我做的是秒表:这是一个在实验和实际应用中都很实用,也有较大的意义。【关键词】ARM7、LPC2138、UART串口发送、定时器、GPIO、中断、按键、秒表、DOS字符窗口显示。目录1、设计目的与要求………………31.1

设计目的…………31.2设计要求…………32、方案设计与论证…………………32.1设计分析……………32.2方案论证……………42.3方案选择……………43、实训原理特性………44、流程图……………105、实训程序…………136、实训总结…………177、参考文献…………171设计目的与要求1.1

设计目的能够了解ARM各个部分的基本功能,将各个部分合理的组合在一起,实现一些实际功能;将ARM第四章中任意三个或三个以上的功能融合在一起,如UART串口,I2C,GPIO串口等等,形成具有特定功能的实际效果,并能够灵活处理实训过程中的各种问题。(1)在学习了《深入浅出ARM7》课程后,为了加深对理论知识的理解,学习理论知识在实际中的运用,培养动手能力和解决实际问题的能力,通过实训,进一步熟悉和掌握ARM的结构及工作原理。(2)熟悉ARMDevelopersuitv1.2调试和仿真,提高软件调试能力。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。(3)通过课程设计,掌握以ARM为核心的电路设计的基本方法和技术,了解电路参数的计算方法。(4)通过实训,电路检查能力,提高动手实践能力、提高科学的思维能力。(5)通过完成一个程序开发的完整过程,了解开发一个ARM应用系统的全过程,为今后从事相应事业打下基础。1.2设计要求设计一个多功能秒表:按下K1键开始计时;接着再按下K2键开始在DOS字符窗口显示按下此刻秒表所显示时间,一共可以显示20组时间数据;再按下K3键则清零DOS字符窗口显示数据。之后又可重新计时。2、方案设计与论证2.1设计分析方案一:做个普通秒表,就是能让他计时,还有可以用按键控制它开始与暂停。方案二:做个多功能秒表,能让它计时,还可以记住时间,就是按下键后可以记住刚才的显示时间数据,然后将它读出来,那要用到寄存器等东西,这都还好,只是arm板没有这么多数码管,只有一个,根本不行,起码要5个,将1秒分成100份快速显示,这样的话4个数码管显示秒表计时时间,最大时间是60秒。还有一个是说明读出的数是第几组,我想到了我在单片机实训时做了个最小系统,那里就有多的数码管,于是就想用跳线将接口接到单片机最小系统板的数码管控制口,这样就实现要求。方案三:也是个秒表,不过不用数码管控制其计时,而是将其数据发送到DOS字符窗口显示秒表的计时,并用定时器、串行口发送来显示秒表的计时,也可以记时与读出记住的数值,因为用DOS字符窗口一排排显示出记住的数值,这些都用按键控制,再加复位清零键。2.2方案论证用DOS字符窗口显示秒表的计时比较方便,而且用容易操作,简洁明了。DOS字符窗口只要一连接就可以发送的数据显示出来,发送也可以用定时器与中断控制秒表发送到串行口。2.3方案选择经过以上说明:方案一过于简单,根本达不到要求;方案二要用到单片机板,而且接的连接线过多,不是很好,因为我们做的是arm的,也没必要那样子;方案三是我选择的,比较方便明了,也很实用,准确性高,所以我选了方案三。3、实训原理特性(1)选择芯片LPC2138(2)中断LPC2138通过向量中断控制器(VIC)管理中断。外设中断信号需要经过2个开关才能到达ARM内核,真正产生异常,逻辑示意图如下图所示。如果在VIC中使能了相应外设的中断,外设中断才能到达VIC并向内核发送中断请求;只有使能了内核中断IRQ或者FIQ,内核才能真正产生异常。硬件图如下中断的过程示意图如下:(3)定时器LPC2131具有2个32位可编程定时/计数器,均具有4路捕获、4比较路匹配并输出电

路。定时器对外设时钟(pclk)周期进行计数,可选择产生中断或根据4个匹配寄存器的设定,在到达指定的定时值时执行其它动作(输出高/低电平、翻转或者无动作)。它还包括4个捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择产生中断。

可用于对内部事件进行计数的间隔定时器,或者通过捕获输入实现脉宽调制,亦可作为

自由运行的定时器。定时器0和定时器1除了外设基地址以外,其它都相同。特性:带可编程32位预分频器的32位定时器/计数器;

具有多达4路32位的捕获通道-当输入信号跳变时可取得定时器的瞬时值,也可

选择使捕获事件产生中断;

4个32位匹配寄存器:

-匹配时定时器继续工作,可选择产生中断;

-匹配时停止定时器,可选择产生中断;

-匹配时复位定时器,可选择产生中断。

多达4个对应于匹配寄存器的外部输出,具有下列特性:

-匹配时设置为低电平;

-匹配时设置为高电平;

-匹配时翻转;

-匹配时无动作。结构如下:定时器0和定时器1的方框图(4)GPIOLPC2131具有多达47个通用I/O口(GPIO,GeneralPurposeI/Oports),分别为P0[31:0]、

P1[31:16],其中,P0.24未用,P0.31仅为输出口。由于口线与其它功能复用,因而需要进行相关的管脚连接模块(PINSEL0、PINSEL1、PINSEL2)选择连接GPIO,然后通过IODIR进行输入/输出属性设置后才能操作。当管脚选择GPIO功能时,有3个寄存器用于控制GPIO的使用,IOSET、IOCLR和

IOPIN。IOSET用于口线置1,而IOCLR则用于口线清零,IOPIN则反映当前IO口的状态,读回IOSET则反映当前IO口设定状态。特性z单个位的方向控制;

z单独控制输出的置位和清零;

z所有I/O口在复位后默认为输入。管脚描述GPIO管脚描述见表4.1。表4.1GPIO管脚描述管脚名称类型描述P0.0–P0.31

P1.16-P1.31输入/输出通用I/O口。实际可用的GPIO数量取决于可选功能的使用。

P0.31GPIO数量取决于可选功能的使用。管脚连接设置

将相应管脚的PINSELn位设置为00即选择GPIO功能;大部分管脚复位后默认为GPIO。蜂鸣器连接图高电平时蜂鸣器停止鸣叫,低电平时开始鸣叫按键的连接图:不按下时为高电平,按下时变为低电平(5)UART0和UART1LPC2131具有2个符合符合’550工业标准的异步串行口(UART)UART0和UART1。

两者除了外设基地址以外,其它都相同,因而在这里统一进行描述。特性:z16字节收发FIFO;

z寄存器位置符合’550工业标准;

z接收器FIFO触发点可为1,4,8和14字节;

z内置波特率发生器;

zLPC2131包含使能实现软件流控制的机制。管脚描述UART管脚描述见表4.7。表4.7UART管脚描述管脚名称UART管脚功能描述说明P0.0TxD0串行输出串行发送数据P0.1RxD0串行输入串行接收数据P0.8TxD1串行输出串行发送数据P0.9RxD1串行输入串行接收数据管脚连接设置

当进行如下设置时将P0.0、P0.1选择UART0功能:

PINSEL0=0x00000005;//可能影响其它管脚连接

PINSEL0=(PINSEL0&(~0x0F))|0x05;//不影响其它管脚连接

当进行如下设置时将P0.8、P0.9选择UART1功能:

PINSEL0=0x05<<16;//可能影响其它管脚连接结构UART的结构如图4.16所示。

VPB接口提供CPU或主机与UART之间的通信连接。图4.16UART方框图UART接收器模块UxRx监视串行输入线RxD的有效输入。UARTRx移位寄存器(UxRSR)通过RxD接收有效的字符。当UxRSR接收到一个有效字符时,它将该字符传送到UARTRx缓冲寄存器FIFO中,等待CPU或主机通过主机接口进行访问。UART发送器模块UxTx接收CPU或主机写入的数据并将数据缓存到UARTTx保持寄

存器FIFO(UxTHR)中。UARTTx移位寄存器(UxTSR)读取UxTHR中的数据并将数据

通过串行输出管脚TxD发送。UART波特率发生器模块UxBRG产生UARTTx模块所使用的定时。UxBRG模块时钟

源为VPB时钟(pclk)。主时钟与UxDLL和UxDLM寄存器所定义的除数相除得到UARTTx模块使用的时钟。该时钟为16倍过采样时钟NBAUDOUT。中断接口包含寄存器UxIER和UxIIR。中断接口接收几个由UxTx和UxRx发出的单时

钟宽度的使能信号。UxTx和UxRx的状态信息保存在UxLSR中。

UxTx和UxRx的控制信息保存在UxLCR中。4、流程图开始开始设置P0.16、P0.17、P0.18引脚连接UART0设置P0.16、P0.17、P0.18引脚连接UART0IRQ中断使能IRQ中断使能定时器初始化:时钟分频、定时器初值、匹配后产生中断、定时时间、使能定时器定时器初始化:时钟分频、定时器初值、匹配后产生中断、定时时间、使能定时器VIC中断向量控制器设置:设置为向量中断;分配中断通道;设置中断服务程序地址;使能Timer0中断VIC中断向量控制器设置:设置为向量中断;分配中断通道;设置中断服务程序地址;使能Timer0中断While(1);等待中断While(1);等待中断否K1键是否按下K1键是否按下是K2键是否按下K1键是否按下K2键是否按下K1键是否按下否暂停是是暂停DOS显示DOS显示读数是否结束否读数是否结束是K3键是否下K3键是否下否是复位清零复位清零中断程序框图Timer0中断服务Timer0中断服务程序开始SS自加1SS自加1SS是否=100?SS是否=100?否是SS等于0;S加1SS等于0;S加1S是否=60? 否S是否=60?是返回原中断点返回原中断点S等于0;m加1m是否=60?m是否=60?通知VIC中断处理结束通知VIC中断处理结束是m等于0;h加1m等于0;h加1清除Timer0中断标志清除Timer0中断标志直到h等于0直到h等于0 5、实训程序#include"config.h"#include"stdio.h"#define UART_BPS 115200 //通讯波特率115200uint32k1=1<<16;uint32k2=1<<17;uint32k3=1<<18;uint32h=0,m=0,s=0,ss=0,i=1;charstr[20],strr[30];void__irqIRQ_Timer0(void){ss++;if(ss==100){ss=0;s++;}if(s==60){s=0;m++;}if(m==60){m=0;h++;} if(h==60){h=0;} T0IR=0x01; /*清除中断标志*/VICVectAddr=0x00;}voiddelay(uint32dly){uint32i;for(;dly>0;dly--)for(i=0;i<5000;i++);}voidUART0_Init(void){uint16Fdiv;U0LCR=0x83; //DLAB=1Fdiv=(Fpclk/16)/UART_BPS;U0DLM=Fdiv/256;U0DLL=Fdiv%256;U0LCR=0x03;}voidUART0_SendByte(uint8data){U0THR=data; while((U0LSR&0x40)==0); //等待数据发送完毕}voidPC_DispChar(uint8x,uint8y,uint8chr,uint8color){UART0_SendByte(0xff); //起始字符UART0_SendByte(x);UART0_SendByte(y);UART0_SendByte(chr);UART0_SendByte(color);}voidISendStr(uint8x,uint8y,uint8color,char*str){while(1){if(*str=='\0') break; //结束字符PC_DispChar(x++,y,*str++,color);if(x>=80){x=0;y++;}}} voidreset(){h=0;m=0;s=0;ss=0;for(i=1;i<21;i++){sprintf(strr,"%2d--%2d:%2d:%2d:%2d",i,h,m,s,ss);ISendStr(0,i,0x30,strr);}i=1;}voidxianshi(){sprintf(str,"%2d:%2d:%2d:%2d",h,m,s,ss);ISendStr(1,0,0x30,str);} intmain(void){PINSEL0=0x00000005;IRQEnable(); /*IRQ中断使能*/ /*定时器0初始化*/T0TC=0; /*定时器设置为0*/T0PR=0; /*时钟不分频*/ T0MCR=0x03;/*设置T0MR0匹配后复位T0TC,并产生中断标志*/ T0MR0=Fpclk/100; /*1ms秒钟定时*/ UART0_Init();/*设置定时器0中断IRQ*/VICIntSelect=0x00;VICVectCntl0=0x20|0x04;VICVectAddr0=(uint32)IRQ_Timer0; VICIntEnable=(1<<0x04);reset(); while(IO0PIN&k1);delay(80);while(!(IO0PIN&k1));T0TCR=0x01; /*启动定时器*/ while(1){if((IO0PIN&k1)==0){while(!(IO0PIN&k1));delay(80);T0TCR=0x00;while((IO0PIN&k1)){if((IO0PIN&k3)==0) {reset();xianshi();} }while(!(IO0PIN&k1))delay(80);T0TCR=0x01;}if((IO0PIN&k2)==0){ while(!(IO0PIN&k2));delay(80);if(i<21){sprintf(str,"%2d--%2d:%2d:%2d:%2d",i,h,m,s,ss);ISendStr(0,i,0x30,str);i++;} }xianshi(); } return0;}6、实训总结通过这次实训,让我对ARM7有了更加全面的了解,所有预期的功能都实现了。最主要是在老师的耐心和有力指导,还有自己的动脑思考,动手实践,以及一起的合作,才做好。通过这次实训,使我对于软件制作的流程有了更加深刻的认识和可以熟练使用相关软件的操作。在实践中,一个小小的失误都会整个过程变得缓慢。在这次实训中,由于参考程序少,主要是自己动脑想,其中经历了挺多的思维困扰,不过还是成功了。实训不仅仅是对于知识的考察,更是考察同学的细心与耐心,只有这样,才能在实训,不至于迷失自己。还有通过实习论文,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。把握重点、攻克难关,学到用到、活学活用。在设计过程中由于时间仓促有很多地方难免存在不足之处,原先定时器定时总不能按预想的工作,后来在老师的指点下终于把问题解决了,并实现了自己原先设想的相关功能,达到了设计的目的,在软件设计中有些功能还尚未开发出来。但在以后的工作中,我们会严格要求自己,追求完美。总之在实训中,要多动脑筋,多动手,将理论与实际完全结合好。以前学习时,只会一个一个模块分开来看,不会把不同模块进行有效的结合。所以在刚开始编写程序的时候,不知道怎么进行模块之间的连接。然后通过不断的尝试和同学的帮忙,终于实现了不同模块之间的连接,所以此次实训真的受益匪浅。

对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!7、参考文献1、《深入浅出ARM7LPC213X(上册)》周立功张华等编著悲剧航空航天大学出版社2、《C程序设计完全手册》人民邮电出版社3、《C程序设计》清华大学出版社4、《数字电子技术基础》高等教育出版社5、《ARM微处理器与应用开发》赖于树著电子工业出版社6、《ARM嵌入式常用模块与综合系统设计实例精讲》张琦文谢建雄谢劲心等编著电子工业出版社7、《基于ARM的嵌入式系统开发》刘岚伊勇编著电子工业出版社目录TOC\o"1-2"\h\u253321总论 1311911.1项目概况 1317891.2建设单位概况 3162241.3项目提出的理由与过程 3311231.4可行性研究报告编制依据 4225921.5可行性研究报告编制原则 426521.6可行性研究范围 5265791.7结论与建议 665262项目建设背景和必要性 9302042.1项目区基本状况 9237942.2项目背景 11327472.3项目建设的必要性 11265903市场分析 14297233.1物流园区的发展概况 1479553.2市场供求现状 1669963.3目标市场定位 17108883.4市场竞争力分析

17160544项目选址和建设条件 1950564.1选址原则 1969314.2项目选址 19544.3场址所在位置现状 19297334.4建设条件 20123545主要功能和建设规模 22282555.1主要功能 22281835.2建设规模及内容 26195696工程建设方案 27137726.1设计依据 27219396.2物流空间布局的要求 27262516.3空间布局原则 2853886.4总体布局 2936766.5工程建设方案 30235856.6给水工程 33115596.7排水工程 3553126.8电力工程 38288986.9供热工程 46314656.10电讯工程 47153607工艺技术和设备方案 51276227.1物流技术方案 5142607.2制冷工艺技术方案 6769868节能方案分析 7336228.1节能依据 73176248.2能耗指标分析 73235218.3主要耗能指标计算 74272888.4节能措施和节能效果分析 76295509环境影响评价 83267939.1设计依据 8335089.2环境影响评价应坚持的原则 83134559.3项目位置环境现状 84208539.4项目建设与运营对环境的影响 8430919.5项目建设期环境保护措施 8459489.6项目运行期环境保护措施 861431110安全与消防 873017710.1安全措施 872680010.2消防 88921011组织机构和人力资源配置 921053611.1施工组织机构 922404211.2基建项目部的主要职责 923031711.3运营管理

温馨提示

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

最新文档

评论

0/150

提交评论