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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

ARM课程设计报告.docx

1、ARM课程设计报告一、设计目的3二、设计原理1、GPIO流水灯 32、SPI 73、定时器10 4、实时时钟12三、所用仪器18四、EasyARM2131开发套件功能介绍 18五、设计内容:万年历-定时器-流水灯-SPI1、功能描述212、流程图223、程序设计22六、心得体会28七、参考文献29一、设计目的1、根据要求,复习巩固ARM的基础知识。2、掌握ARM系统的设计方法,特别是熟悉模块化的设计思想。3、熟练掌握ARM软件和2131开发板的使用。4、提高综合运用所学的理论知识独立分析和解决问题的能力;二、设计原理 1、GPIO流水灯(1)LPC2131具有多达47个通用I/O 口(GPIO

2、,General Purpose I/O ports),分别为P031:0、 P131:16,其中,P0.24未用,P0.31仅为输出口。由于口线与其它功能复用,因而需要进行相关的管脚连接模块(PINSEL0、PINSEL1、PINSEL2)选择连接GPIO,然后通过IODIR进行输入/输出属性设置后才能操作。 当管脚选择 GPIO 功能时,有IOSET、IOCLR和IOPIN 3 个寄存器用于控制 GPIO 的使用。IOSET 用于口线置位,而IOCLR 则用于口线清零,IOPIN 则反映当前IO口的状态,读回IOSET 则反映当前IO口设定状态。(2)GPIO的特性和应用特性:单个位的方向

3、控制; 单独控制输出的置位和清零; 所有I/O口在复位后默认为输入。 应用:通用I/O口 驱动LED或 其它指示器 控制片外器件 检测数字输入(3)GPIO引脚描述GPIO管脚描述见表4.1。 表4.1 GPIO 管脚描述 管脚连接设置 将相应管脚的PINSELn 位设置为00 ,即选择GPIO 功能;大部分管脚复位后默认为GPIO。3、GPIO寄存器LPC2138有2个32 位的通用I/O 口。PORT0 使用了30个管脚,PORT1 有多达16个管脚可用GPIO功能。PORT0和PORT1由2 组(4个)寄存器控制,如表4.2 所示。 表4.2 GPIO寄存器映射4. GPIO输出实验流水

4、灯实验 EasyARM2131 开发板上的 8 路LED(LED8LED1)分别可选择P125:18进行控制,电路如图1所示。 图1当跳线JP12 全部选择LED8LED1 后,P1.25P1.18 分别控制这 8 路LED,就可以进行流水灯实验。流水灯显示花样可以通过数组人为定义,亦可通过一定的算法计算,流程图如图2所示。图2 流水灯程序:/#include config.h/* LED8LED1 8个LED分别由P1.25P1.18控制 */const uint32 LEDS8 = (0xFF 0; dly-) for (i=0; i100000; i+);/* 函数名称 :main()*

5、 函数功能 :流水灯显示实验。* 调试说明 :连接跳线JP12至LED8LED1。*/* 流水灯花样,低电平点亮,注意调用时候用了取反操作 */const uint32 LED_TBL = 0x00, 0xFF, / 全部熄灭后,再全部点亮 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, / 依次逐个点亮 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, / 依次逐个叠加 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, / 依次逐个递减 0x81, 0x

6、42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, / 两个靠拢后分开 0xA0, 0x50, 0x7e, 0x28, 0x14, 0x0A, 0x05, 0x82, 0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 / 从两边叠加后递减;int main (void) uint8 i; /PINSEL1 = 0x00000000; / 设置管脚连接GPIO PINSEL2 = PINSEL2 & (0x08);/ P125:16连接GPIO IO1DIR = LEDS8; / 设置LED1控制口为输出 while (1)

7、 for (i=0; i42; i+) /* 流水灯花样显示 */ IO1SET = (LED_TBLi) 18); DelayNS(20); IO1CLR = (LED_TBLi) 0; dly-) for(i=0; i50000; i+); void SSP_Init(void) SSPCR0 = (0x01 8) | / SCR 设置SPI时钟分频 (0x00 7) | / CPHA 时钟输出相位,仅SPI模式有效 (0x01 6) | / CPOL 时钟输出极性,仅SPI模式有效 (0x00 4) | / FRF 帧格式 00=SPI,01=SSI,10=Microwire,11=保留

8、 (0x07 0); / DSS 数据长度,0000-0010=保留,0011=4位,0111=8位,1111=16位 SSPCR1 = (0x00 3) | / SOD 从机输出禁能,1=禁止,0=允许 (0x00 2) | / MS 主从选择,0=主机,1=从机 (0x01 1) | / SSE SSP使能,1=允许SSP与其它设备通信 (0x00 0); / LBM 回写模式 SSPCPSR = 0x52; / PCLK分频值 / SSPIMSC = 0x07; / 中断屏蔽寄存器 SSPICR = 0x03; / 中断清除寄存器uint8 SSP_SendData(uint8 data

9、) / IOCLR = SLAVE_CS; / 选择从机 SSPDR = data; while( (SSPSR & 0x01) = 0 ); / 等待TFE置位,即发送FIFO空 / IOSET = SLAVE_CS; return(SSPDR);uint8 const DISP_TAB16 = / 0 1 2 3 4 5 6 7 8 9 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,/ A b C d E F 0x88, 0x83, 0xC6, 0xA1,0x86, 0x8E;volatile uint8 rcv;int main(v

10、oid) uint8 i; PCONP |= 110; / PINSEL1 = 0x000002A8; / 设置SSP管脚连接 / PINSEL1 = 0xAA 2; PINSEL1 = (PINSEL1 & (0xFF 2) | (0xAA 2);/ IO0DIR = SLAVE_CS;/ IO0SET = SLAVE_CS; SSP_Init(); / 初始化SSP接口 while(1) for(i=0; i16; i+) rcv = SSP_SendData(DISP_TABi); / 发送显示数据 DelayNS(80); / 延时 return(0);3、定时器(1)LPC2131

11、具有2 个32 位可编程定时/计数器,均具有4 路捕获、 比较路匹配并输出电 路。 定时器对外设时钟(pclk )周期进行计数,可选择产生中断或根据4 个匹配寄存器的设定,在到达指定的定时值时执行其它动作(输出高/低电平、翻转或者无动作)。它还包括4个捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择产生中断。 可用于对内部事件进行计数的间隔定时器,或者通过捕获输入实现脉宽调制,亦可作为 自由运行的定时器。 定时器0 和定时器 1 除了外设基地址以外,其它都相同。(2)定时器0定时实验查询方式用定时器0实验0.5秒定时,查询标志位等待定时时间到达,对蜂鸣器进行控制,让蜂鸣器每秒钟响一次。

12、程序在T0MR0中设定定时常数,在T0MCR中设置定时器0匹配后复位TC并产生中断标志,接下来程序查询等待中断标志置位。若定时时间到,先清除Timer0中断标志,然后取反BEEP控制口的输出状态,流程图如图5所示。 图5定时器0定时实验流程图定时器程序:/#include config.h#define BEEP 1 115200) return (0); if (set.datab 8) return (0); if (0 = set.stopb) | (set.stopb 2) return (0); if (set.parity 4) return (0); / 设置串口波特率 U0LC

13、R = 0x80; / DLAB=1 bak = (Fpclk 4) / baud; U0DLM = bak 8; U0DLL = bak & 0xff; / 设置串口模式 bak = set.datab - 5; if (2 = set.stopb) bak |= 0x04; if (0 != set.parity) set.parity = set.parity - 1; bak |= 0x08; bak |= set.parity 16) & 0xfff; / 获取 年 PC_DispChar(0, SHOWTABLEbak / 1000); bak = bak % 1000; PC_D

14、ispChar(1, SHOWTABLEbak / 100); bak = bak % 100; PC_DispChar(2, SHOWTABLEbak / 10); PC_DispChar(3, SHOWTABLEbak % 10); bak = (datas 8) & 0x0f; / 获取 月 PC_DispChar(4, SHOWTABLEbak / 10); PC_DispChar(5, SHOWTABLEbak % 10); bak = datas & 0x1f; / 获取 日 PC_DispChar(6, SHOWTABLEbak / 10); PC_DispChar(7, SHO

15、WTABLEbak % 10); bak = (times 24) & 0x07; / 获取 星期 PC_DispChar(8, SHOWTABLEbak); bak = (times 16) & 0x1f; / 获取 小时 PC_DispChar(9, SHOWTABLEbak / 10); PC_DispChar(10, SHOWTABLEbak % 10); bak = (times 8) & 0x3f; / 获取 分钟 PC_DispChar(11, SHOWTABLEbak / 10); PC_DispChar(12, SHOWTABLEbak % 10); bak = times

16、& 0x3f; / 获取 秒钟 PC_DispChar(13, SHOWTABLEbak / 10); PC_DispChar(14, SHOWTABLEbak % 10);void RTCInit (void) PREINT = Fpclk / 32768 - 1; / 设置基准时钟分频器 PREFRAC = Fpclk - (Fpclk / 32768) * 32768; CCR = 0x00; / 禁止时间计数器 YEAR = 2005; MONTH = 01; DOM = 10; DOW = 4; HOUR = 8; MIN = 30; SEC = 59; CIIR = 0x01; /

17、 设置秒值的增量产生1次中断 CCR = 0x01; / 启动RTCint main (void) UARTMODE uart0_set; PINSEL0 = 0x00000005; / 连接IO到UART0 PINSEL1 = 0x00000000; uart0_set.datab = 8; uart0_set.stopb = 1; uart0_set.parity = 0; UART0_Init(115200, uart0_set); U0FCR = 0x01; / FIFO使能 RTCInit(); while (1) while (0 = (ILR & 0x01); / 等待RTC增量

18、中断 ILR = 0x01; / 清除中断标志 SendTimeRtc(); return (0);三、实验仪器1、2138开发板 2、ARM软件 3、微型计算机四、EasyARM2131开发套件功能介绍 定位 选用LPC213x系列ARM开发产品的工程师; 组建嵌入式系统教学与开发实验室; 有购买能力的个人。 概述 EasyARM2131开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S 核、单电源供电、LQFP64封装的LPC2131,具有JTAG仿真调试、ISP编程等功能。 开发板上提供了一些键盘、LED、蜂鸣器等常用功能部件,还具有RS232接口电路、I2C存储器电路。另外,用户也可以更换兼容的CPU进行仿真调试,如LPC2132、LPC2138、LPC2142等。灵活的跳线组合(开发板内使用的所有I/O均可断开连接),还有用户I/O接口,极大地方便了用户进行32位ARM嵌入式系统

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

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