ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:412.89KB ,
资源ID:5515802      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5515802.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(秒表程序实验报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

秒表程序实验报告.docx

1、秒表程序实验报告山东理工大学计算机学院课 程 设 计(嵌入式秒表程序开发)班 级 计升1001班 姓 名 刘海龙 学 号 1021051005 指导教师 李业德 二 年 月 日课程设计任务书及成绩评定1、设计题目: 用超级终端控制秒表 2、题目的设计内容和要求: 通过Led显示秒表,能够根据在超级终端中输入不同的字符来控制秒表暂停和重新计时。3、设计任务和要求:3.1 程序设计、调试:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释,并在实验系统上调试通过。3.2 课程设计说明书:a、本次课程设计的目的和意义。b、设计报告:字数约20003000字(不包括程序清单),内容包括:设计

2、题目;系统的主要功能、作用以及主要技术性能指标;总体设计方案、工作和组成原理(框图)或设计说明、采用的技术路线等;系统设计:接口电路设计,程序设计(程序框图和程序清单及注释)其他有关的理论分析和计算;设计总结:对整个设计工作过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。c、作品的使用或操作说明。d、设计图纸或图表(如接口电路原理图等)。装订时将课程设计说明书附在该3页之后。3.3 设计内容不允许抄袭和复印,否则取消设计成绩。4、工作安排:(设计进度及完成情况) 第一阶段:根据题目要求查阅资料构思设计方案、进行接口电路

3、原理图设计和程序设计以及其它准 备工作。 第二阶段:对第一阶段完成的设计内容进行详细的检查或修改无错后,按照设计方案自行在实验系统上进行程序的输入和调试。为便于调试和查错,程序最好采用模块化结构,一部分一部分的调试,通过反复的调试或修改直到达到设计要求为止。 第三阶段:按照3中的内容和要求撰写课程设计说明书。日 期内 容2011.12.18选择题目,查阅相关开发板及程序设计的资料分析开发板控制过程,准备实验2011.12.22构思设计方案,熟悉试验台,将用到的处理器地址定义成相关宏,写出开发板的初始化函数。2012.12.25写出开发板的初始化程序,深入调试,处理错误。与老师同学进行交流,程序

4、实现2012.12.29用AXD调试程序,并下载到开发板上运行。2012.01.09整理好文档,答辩5、 主要参考文献及资料:1.嵌入式系统原理与接口技术-清华大学出版社2.嵌入式Linux OS原理与应用-清华大学出版社学科部主任_(签字)6、成绩评定:评语: 设计成绩: 指导老师: (签字)二 年 月 日 第一章:概述5第二章 实验开发平台6第三章 系统分析7第四章 系统设计原理10第五章 课程设计步骤15第六章 程序代码27第七章 心得与体会23 第一章 概述 A/D 转换器是模拟信号源和CPU 之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、

5、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D 转换是不可缺少的。A/D 转换器有以下类型:逐位比较型、积分型、计数型、并行比较型、电压频率型,主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来定选择何种类型。本实验利用ADS1.2进行开发设计,利用UJTAG2.0,AXD进行调试及运行,通过超级终端输入控制信息,通过在超级终端上输入控制信息来控制秒表。新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。 ARM7处理器采用3级流水线,

6、而ARM9采用5级流水线。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在同样的加工工艺下,ARM9TDMI处理器的时钟频率是ARM7TDMI的1822倍。 指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30%左右。 以ARM9E-S为例介绍ARM9处理器的主要结构及其特点。ARM9E-S的结构如图4所示。其主要特点如下: (1)32bit定点RISC处理器,改进型ARM/Thumb代码交织

7、,增强性乘法器设计。支持实时(real-time)调试; (2)片内指令和数据SRAM,而且指令和数据的存储器容量可调; (3)片内指令和数据高速缓冲器(cache)容量从4K字节到1M字节; (4)设置保护单元(protection unit),非常适合嵌入式应用中对存储器进行分段和保护; (5)采用AMBA AHB总线接口,为外设提供统一的地址和数据总线; (6)支持外部协处理器,指令和数据总线有简单的握手信令支持; (7)支持标准基本逻辑单元扫描测试方法学,而且支持BIST(built-in-self-test); (8)支持嵌入式跟踪宏单元,支持实时跟踪指令和数据。第二章 实验开发平台

8、2.1 课程设计目的:1) 结合UART0和定时器0,设计一个秒表2) 复习UART0和定时器0的工作原理和应用3) 熟悉掌握ARM中的程序应用,将理论结合实际4) 通过本次实验,将以前学的进行结合使用,以检验自己的学习质量5) 更加熟练了ARM的实验环境2.2 课程设计仪器:软件:Windows xp系统,ADS1.2集成开发环境硬件:1)Easy-ARM实验开发板一套计算机一台(内装有ADS1.2及EasyJTAG仿真器)2)单片机选型:AT89S513)复位电路:上电+按钮4)晶振电路5)键盘:独立键盘+中断6)数码管显示:LED7)独立按键控制第三章 系统分析3.1 系统平台初始化初始

9、化试验平台ARM9,包括端口地址的初始化,频率,时间等在VIVI终端输入字符,在控制语句中判断输入的字符,从而实现不同的功能。A/D 转换器在扩展板的接法如图所示,前三路通过电位器接到3.3v 电源上。A/D 转换器在扩展板上的接法3.2 LED显示原理:硬件总体设计原理图:LED显示原理图:原理图如下:3.3 总电路图 第四章 系统设计原理4.1中断原理:LPC2131 通过向量中断控制器(VIC)管理中断。外设中断信号需要经过 2 个开关才能到达ARM内核,真正产生异常,逻辑示意图如图4.129所示。如果在VIC中使能了相应外设的中断,外设中断才能到达VIC并向内核发送中断请求;只有使能了

10、内核中断IRQ或者FIQ,内核才能真正产生异常。使用VIC的IRQ中断处理过程如图4.130所示: 用户程序首先要初始化VIC使能相关中断,然后正常运行用户程序(如图 4.130中的); 当有IRQ中断产生时,VIC将会根据中断源设置VICVectAddr寄存器为相应中断服务程序的地址(如图4.130中的), 切换处理器工作模式为IRQ模式,并跳转到异常向量表的IRQ中断入口 0x00000018处(如图4.130中的); 读取VICVectAddr寄存器的值然后放入PC程序指针,跳转到相应中断服务程序(如图4.130中的); 中断服务中执行相应的中断处理,清除中断标志,(如图4.130中的)

11、; 中断服务完成后,切换回原来的模式,并返回原中断点(如图4.130中的)。 4.2 UART0 查询:(1)特性: 16字节收发FIFO; 寄存器位置符合16C550工业标准; 接收器FIFO触发点可为1, 4, 8和14字节; 内置波特率发生器; LPC2131包含使能实现软件流控制的机制。(2)结构:UART 接收器模块UxRx监视串行输入线RxD的有效输入。UART Rx移位寄存器(UxRSR)通过RxD接收有效的字符。当UxRSR接收到一个有效字符时,它将该字符传送到UARTRx缓冲寄存器FIFO中,等待CPU或主机通过主机接口进行访问。 UART发送器模块UxTx接收CPU或主机写

12、入的数据并将数据缓存到UART Tx保持寄存器FIF(UxTHR)中。UART Tx移位寄存器(UxTSR)读取UxTHR中的数据并将数据 通过串行输出管脚TxD发送。 UART波特率发生器模块UxBRG产生UART Tx模块所使用的定时。UxBRG模块时钟源为VPB时钟(pclk)。主时钟与UxDLL和UxDLM寄存器所定义的除数相除得到 UART Tx模块使用的时钟。该时钟为16倍过采样时钟NBAUDOUT。 中断接口包含寄存器UxIER和UxIIR。中断接口接收几个由UxTx和UxRx发出的单时钟宽度的使能信号。 UxTx 和 UxRx 的状态信息保存在 UxLSR 中。 UxTx 和

13、UxRx 的控制信息保存在 UxLCR 中。 4.3 UART的结构如图4.16所示: VPB 接口提供CPU或主机与UART之间的通信连接。4.4定时器: (1)概述:LPC2131具有2个32位可编程定时/计数器,均具有4路捕获、4比较路匹配并输出电路。定时器对外设时钟(pclk)周期进行计数,可选择产生中断或根据4个匹配寄存器的设定,在到达指定的定时值时执行其它动作(输出高/低电平、翻转或者无动作)。它还包括4个捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择产生中断。可用于对内部事件进行计数的间隔定时器,或者通过捕获输入实现脉宽调制,亦可作为自由运行的定时器。 定时器0和定时器

14、1除了外设基地址以外,其它都相同。(2)定时器特性: 带可编程32位预分频器的32位定时器/计数器; 具有多达4路32位的捕获通道当输入信号跳变时可取得定时器的瞬时值,也可选择使捕获事件产生中断; 4个32位匹配寄存器: 匹配时定时器继续工作,可选择产生中断; 匹配时停止定时器,可选择产生中断; 匹配时复位定时器,可选择产生中断。 多达4个对应于匹配寄存器的外部输出,具有下列特性: 匹配时设置为低电平; 匹配时设置为高电平; 匹配时翻转; 匹配时无动作。 (3)结构:定时器 0 和定时器 1 的方框图,如下图所示:(注:捕获寄存器3不能用于定时器0)(4)定时器基本操作方法: 计算定时器的时钟

15、频率,设置PR寄存器进行分频操作; 设置比较匹配通道的初值及其工作模式,若是使用捕获功能,则设置捕获方式; 若使用定时器的相关中断,则设VIC,使能中断; 设置TCR,启动定时器。 如前所述,定时计数器时钟频率计算如下:其中,N为PR的值。第五章 课程设计步骤:1) Arm超级终端启动初始化窗口进入vivi模式如下:2)载入编好的程序,运行ADS.12软件;3)打开UarmJtag.exe 配置为ARM9,然后点击确定:4)观察实验现象,看程序是否正常运作,有没有达到实验预计的功能。5)点击运行,在终端中输入控制字符控制秒表的启停 第六章 程序代码6.1 程序说明:本程序是结合了UART0和定

16、时器,自编程序设计的一个可以记录20个时间值的秒表。6.2 实验程序:主要程序代码:#include ./inc/drivers.h#include ./inc/lib.h#include #include #include inc/MotorCtrl.h#define U8 unsigned char#define TRUE 1#define FALSE 0#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting #define ADCCON_FLAG (0x115)#define A

17、DCCON_ENABLE_START_BYREAD (0x11)#define MCLK (50700000)#define MOTOR_SEVER_FRE 1000 /20kHz#define MOTOR_CONT (MCLK/2/2/MOTOR_SEVER_FRE)#define MOTOR_MID (MOTOR_CONT/2)#define rADCCON (*(volatile unsigned *)0x58000000)#define rADCDAT0 (*(volatile unsigned *)0x5800000C)#define rUTRSTAT0 (*(volatile un

18、signed *)0x50000010)#define rUTRSTAT1 (*(volatile unsigned *)0x50004010)#define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch)#define WrUTXH1(ch) (*(volatile unsigned char *)0x50004020)=(unsigned char)(ch)#define RdURXH0() (*(volatile unsigned char *)0x50000024)#define RdURX

19、H1() (*(volatile unsigned char *)0x50004024)#define PRSCVL (496)#define ADCCON_ENABLE_START (0x1)#define STDBM (0x02)#define PRSCEN (0x114)#define lednum1con *(volatile unsigned char *)0x08000110 #define lednum2con *(volatile unsigned char *)0x08000112void ARMTargetInit(void);void Uart_SendByten(int

20、 , U8 );char Uart_Getchn(char* Revdata, int Uartnum, int timeout);void stop(int tmp1,int tmp2);void init_ADdevice()/初始化rADCCON=(PRSCVL|ADCCON_ENABLE_START|STDBM|PRSCEN);int GetADresult(int channel) rADCCON=ADCCON_ENABLE_START_BYREAD|(channel3)|PRSCEN|PRSCVL; hudelay(10); while(!(rADCCON&ADCCON_FLAG)

21、;/转换结束 return (0x3ff&rADCDAT0);/返回采样值 int main(void) int p,q,i,j,ADData,lastADData,count=0; char Revdata10; char c11; char err; ARMTargetInit(); /开发版初始化 init_MotorPort(); init_ADdevice(); for(;) / 0 1 2 3 4 5 6 7 8 9 a b c d e f - . 0ff int num19=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x8

22、8,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x7f,0xff; Uart_Printf(0,nBegin control DC motor.ttPress any key to stop.n); for(;) while(1) lednum2con=num0; lednum1con=num0; for(j=1;j=6;j+) for(i=0;i=9;i+) lednum2con=numi; hudelay(1000); /Uart_SendByten(0,0xa); /换行 /Uart_SendByten(0,0xd); /回车 err=Uart_Getchn(c1,0,

23、0); /从串口采集数据 Uart_SendByten(0,c10); /显示采集的数据 if(c10=Q) /有输入,则跳出 for(;) /lednum2con=numtmp1; /lednum1con=numtmp2; /Uart_SendByten(0,0xa); /换行 /Uart_SendByten(0,0xd); /回车 err=Uart_Getchn(c1,0,0); /从串口采集数据 Uart_SendByten(0,c10); /显示采集的数据 if(c10=G) /有输入,则返回 break; hudelay(3500); lednum1con=numj; /hudela

24、y(3500); return 0;void Uart_SendByten(int Uartnum, U8 data)/ok eric rong /int i; if(Uartnum=0) /while(!(rUTRSTAT0 & 0x4); /Wait until THR is empty. hudelay(10); WrUTXH0(data); else /while(!(rUTRSTAT1 & 0x4); /Wait until THR is empty. hudelay(10); WrUTXH1(data); char Uart_Getchn(char* Revdata, int Ua

25、rtnum, int timeout) if(Uartnum=0) /while(!(rUTRSTAT0 & 0x1); /Receive data read *Revdata=RdURXH0(); return TRUE; else /while(!(rUTRSTAT1 & 0x1);/Receive data read *Revdata=RdURXH1(); return TRUE; /* End Of File*/6.3 在运行本实验程序后,实验现象如下:打开arm-超级终端窗口:1) 当按下G键时,秒表开始启动;2) 当按下Q键时,秒表停止走动;3) 最多可以记录60个时间值。第七章

26、课程设计心得与体会1.通过这次课程设计,加强了我们动手、思考和解决问题的能力。运用ADS1.2进行开发设计,利用UJTAG2.0,AXD进行调试及运行,通过超级终端输入控制信息及显示信息的输出的实验步骤,对各种工具如何配置及使用更加熟练,并对出现的问题学会了如何解决,提高了个人的分析问题,解决问题的能力。2.为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。3.我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电

27、路中的使用有了更多的认识。对所用开发板的内部结构有一个系统的了解,知道开发板要用到的串口和处理器地址;5 要有一个清晰的程序设计思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。6 平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如一些芯片的功能,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个元件映象深刻。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。5.另外通过这次课程设计使我对嵌入式系统开发有了进一步的认识,更加熟练掌握了运用ADS1.2进行开发设计,利用UJTAG2.0,AXD进行调试及运行,通过超级终端输入控制信息及显示信息的输出的实验步骤,对各种工具如何配置及使用更加熟练,并对出现的

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

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