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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于EasyARM1138的课程设计.docx

1、基于EasyARM1138的课程设计ARM课外实验报告书一、实验板介绍: EasyARM1138的核心MCU是Luminary Micro公司的Stellaris(群星)系列ARM之LM3S1138。该芯片采用的是国际上最优秀的MCU内核设计公司ARM最新推出的先进Cortex-M3处理器,其特点如下:强大的MCU内核32位ARM Cortex-M3内核(ARM v7M架构);兼容Thumb的Thumb-2指令集,提高代码密度25%以上;50MHz运行频率,1.25 DMIPS/MHz,加快35%以上;单周期乘法指令,212周期硬件除法指令;快速可嵌套中断,612个时钟周期;具有MPU保护设定

2、访问规则;64KB单周期Flash, 16KB单周期SRAM;内置可编程的LDO输出2.25V2.75V,步进50mV,为硬件系统节省一个电源稳压器;支持非对齐数据的访问,有效地压缩数据到内存;支持位操作,最大限度使用内存,并提供创新的外设控制;内置系统节拍定时器(SysTick),方便操作系统移植。 丰富的外设资源7组GPIO,具有多种工作模式:高阻抗输入、2/4/8mA推挽输出、开漏输出、弱上拉/弱下拉输出,等等;4个32位Timer,每个Timer都可拆分为2个独立的16位子定时器,具有定时、捕获、PWM、RTC等丰富功能;3路全双工UART,位速率高达3.125Mbps,16单元接收F

3、IFO和发送FIFO,支持串行红外协议(IrDA SIR);2路I2C,支持100kbps标准模式、400kbps快速模式;2路SSI,兼容Freescale SPI、MICROWIRE、Texas Instruments串行通信协议,位速率高达25Mbps;6路16位PWM,通过CCP管脚输出,能产生速度高达25MHz的方波;3个模拟比较器8通道10位ADC,采样速率可达1M/s;内置看门狗定时器(WatchDog Timer),确保芯片可靠运行。内嵌USB接口的下载仿真器仅需插入一根USB电缆就能实现“三合一”功能:5V供电、程序下载与在线仿真、UART串行通信;不再要求电脑具有串口或并口

4、,无论台式机还是笔记本电脑,只要拥有USB 1.1或USB 2.0接口就能运用自如;除了能够下载仿真自身以外,开发板保留的JTAG接口还可以用来仿真其它LM3S系列开发板,适用于所有Stellaris系列ARM芯片;USB接口提供虚拟UART的功能,不需要额外的接口电路(如SP3232)。简明的外围电路设计,调试时无需任何连线和跳线,操作极为方便5只LED指示灯;3只KEY;1只交流蜂鸣器,可演奏动听乐曲,如梁祝;两排插针引出全部GPIO资源,以及ADC0ADC7、5V、3.3V、GND等;ARM1138实验板原理图:ARM1138实验板管脚图:实验板CPU框图:二、实验内容:(一)、温度传感

5、器:一、实验目的:(1)了解温度传感器基本原理及设计方法.(2)模/数转换器或者模拟/数字转换器二、实验板介绍:在实验板的搭建过程中用到了Easy arm 138和的A/D转换模块,其可以完成温度信号的采集及处理 TMP123的功能主要是将被测温度 模拟量转换成数字量, 把数字化信号编码成时间比率(t1/t2) 形式。T1和t2 时间上是连续 ,用同一个时钟即可获 二者 比率。 温度仅与时间比率有关,而与时钟频率无关, 时钟频率发生波动,也会 解码过程中被数字滤波器滤掉。TMP123既可以检测温度,也可 单片机实现温度控制功能,适用于远程温度检测、微机或电子设备 温度监视器及工业过程控制等领域

6、。三、实验原理:1.模数转换原理:A/D模数转换原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。其优点是用简单电路就能获得高分辨率,但缺点是由于转换精度依赖于积分时间,因此转换速率极低。2.通过TMP123将采集到的模拟温度连续信号进行模拟信号的采集并进行处理,通过与138板进行连接数据的传送通过USB与电脑进行连接,通过超级终端我们可以观测到室内温度的变换情况,与温度计算有关的计算公式实现如下:10位的ADC模块集成有一个温度传感器,可以用来获取芯片的当前温度。在温度传感器特性图里,给出了以下公式:Vsenso = 2.7 - (T + 55)

7、/ 75,单位:V设Vsenso对应的ADC采样值为N,2.7V对应N1,(T+55)/75对应N2已知:N1 * (3 / 1024) = 2.7 N2 * (3 / 1024) = (T + 55) / 75由此得到:N = N1 - N2 = 2.7 / (3 / 1024) - (T + 55)/75) / (3 / 1024)解得:T = (151040 - 225 * N) / 1024结论: ADC配置为温度传感器模式后,只要得到ADC采样值N,就能推算出当前的温度T。温度及电压测试(温度传感器的特性)图:四、实验内容:/ 主函数(程序入口)int main(void) char

8、 shiwrite1=0x06; / 初始化显示时间 char fenwrite1=0x06; char cBuf3; unsigned long ulStatus; tI2CM_DEVICE LM75A = 0xa2 1, 0x02, 1, cBuf, 3; tI2CM_DEVICE fen = 0xa2 1, 0x03, 1, fenwrite, 1; tI2CM_DEVICE shi = 0xa2 1, 0x04, 1, shiwrite, 1; jtagWait(); / 防止JTAG失效,重要! clockInit(); / 时钟初始化:晶振,6MHz uartInit(); / U

9、ART初始化 I2CM_Init(); / I2C主机初始化 I2CM_DataSend(&fen); I2CM_DataSend(&shi); for (;) ulStatus = I2CM_DataRecv(&LM75A); LM75A_TmpDisp(cBuf); / 显示时间 Delay1(500000L); Delay1(500000L); Delay1(500000L); Delay1(500); for (;) 分析:我们在程序中设置好初始开始时间06:06,通过LM75芯片读取秒的变化,而小时和分钟的变化是通过移位实现的。然后利用URAT通信来读取发送过来的时间,设置超级终端收

10、端口为COM6,波特率为9600。 在程序中一定要做的是要防止JTAG失效和进行系统初始化。/ 显示温度值void TemperatureDisplay(unsigned long ulData) unsigned long ulTmp = 0; char s120; char s220;ulTmp = (2700 - ulData) * 75 - 55000;sprintf(s1 , %ld. , ulTmp / 1000); sprintf(s2 , %ld , ulTmp % 1000); switch ( strlen(s2) ) case 1: strcat(s1 , 00); br

11、eak; case 2: strcat(s1 , 0); break; default: break; UART_Puts(s1); UART_Puts(s2); UART_Puts(rn);分析:10位的ADC模块集成有一个温度传感器,可以用来获取芯片的当前温度。Vsenso = 2.7 - (T + 55) / 75,单位:V。设Vsenso对应的ADC采样值为N,2.7V对应N1,(T+55)/75对应N2已知: N1 * (3 / 1024) = 2.7 N2 * (3 / 1024) = (T + 55) / 75由此得到: N = N1 - N2 = 2.7 / (3 / 1024

12、) - (T + 55)/75) / (3 / 1024)解得: T = (151040 - 225 * N) / 1024结论: ADC配置为温度传感器模式后,只要得到ADC采样值N,就能推算出当前的温度T。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。在此实验中我们主要了解和搭建室内温度的采集及A/D转换。在实验板的搭建过程中用到了Easy arm 138和的A/D转换模块,其可以完成温度信号的采集。电路图如图12-1ADC模块框图分析:ADC模块是由4个定时器,1个中断控制器,4个采样序列发生器、一个FIFO块,一个硬件平均电路,一个模数

13、转换器构成。ADC模块按照电路图进行,就可以将芯片的温度提取出来,通过公式转换显示在超级终端上。内部温度传感器的公式为:五、实习小结及心得:本次实验旨在了解温度传感器基本原理及设计方法和模/数转换器或者模拟/数字转换器一些基本知识。通过这次实验,我们受益非且。在实验的过程中,我们熟悉了常见的模数转换器的原理及实际的工作参数,尤其是TMP123的集成电路设计的内部构造,这对数电知识和模电知识的运用有着密切的联系,这不仅仅让我们巩固了模电数电的基础知识,并且对他的一些应用有了更深的理解。我们还了解了其外围电路的连接的机理,尤其是在和单片机的连接上,TMP123既可以检测温度,也可 单片机实现温度控

14、制功能,适用于远程温度检测、微机或电子设备 温度监视器及工业过程控制等领域。而且,在实验过程中,我们要用到的1138有关模块及相关的拐角功能,所以我们首先要非常熟悉1138各个模块和拐角的作用,其次按实际的电路的原理图进行电路的连接,将已经调试好的程序下载致IAR软件中同时并打开电脑的超级终端,然后运行此时我们可以在超级终端观测到实时的室内温度,这样才能够得到正确的的实验结果。通过温度传感器这个实验,我们可以设定时间的初始值,在超级终端接收显示时间,时间连续变化。第二个实验可以测定器件的温度,并将华氏温度转换成摄氏温度,Vsenso = 2.7 - (T + 55) / 75,通过测定芯片的V

15、senso值就可以算出芯片的实际摄氏温度。我们了解了这个实验的基本原理,也对温度传感有了更深刻的认识。(二)、液晶显示实验一、实验目的:通过实验了解和掌握和了解基本的黑白液晶显示器显示原理,并利用其显示所要得到实验目的,并掌握4*4键盘工作的简单原理。二、实验板介绍(器件)1. 4 *4的按键矩阵模块。2. 黑白液晶显示器模块。三、实验原理:1.矩阵式键盘的结构与工作原理; 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘

16、多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 2.显示原理:LCD液晶显示器的真实解析度定义为“定点形式”,所以我们在使用LCD显示器时,这样画面所呈现的影像将会越清晰,使用起来感觉也会越好。四、实验内容:搭建好电路之后,在IAR环境下进行程序的调试并在显示屏上点阵显示出目的的结果。部分的程序段如下:#define SysCtlPeriEnable SysCtlPeripheralEnable#define SysCtlPeriDisable SysCtlPeri

17、pheralDisable#define GPIOPinTypeIn GPIOPinTypeGPIOInput#define GPIOPinTypeOut GPIOPinTypeGPIOOutput/ 定义KEY#define KEY_PERIPH SYSCTL_PERIPH_GPIOG#define KEY_PORT GPIO_PORTG_BASE#define KEY_PIN GPIO_PIN_5/ 防止JTAG失效void JTAG_Wait(void) SysCtlPeriEnable(KEY_PERIPH); / 使能KEY所在的GPIO端口GPIOPinTypeIn(KEY_POR

18、T , KEY_PIN);/ 设置KEY所在管脚为输入,PG5if ( GPIOPinRead(KEY_PORT , KEY_PIN) = 0x00 ) / 如果复位时按下KEY,则进入 for(;); / 死循环,以等待JTAG连接 SysCtlPeriDisable(KEY_PERIPH); / 禁止KEY所在的GPIO端口/ 定义全局的系统时钟变量unsigned long TheSysClock = 12000000UL;/ 系统初始化void SystemInit(void) SysCtlLDOSet(SYSCTL_LDO_2_50V); / 设置LDO输出电压 SysCtlCloc

19、kSet(SYSCTL_USE_OSC | / 系统时钟设置,采用主振荡器 SYSCTL_OSC_MAIN SYSCTL_XTAL_6MHZ SYSCTL_SYSDIV_1);/* SysCtlLDOSet(SYSCTL_LDO_2_75V); / 配置PLL前将LDO电压设置为2.75V SysCtlClockSet(SYSCTL_USE_PLL / 系统时钟设置,采用PLL SYSCTL_OSC_MAIN / 主振荡器 SYSCTL_XTAL_6MHZ / 外接6MHz晶振 SYSCTL_SYSDIV_10); / 分频结果为20MHz*/ TheSysClock = SysCtlCloc

20、kGet(); / 获取系统时钟,单位:Hz LCD_Init(); / 初始化LED1和LED2 unsigned char s1=王增西安邮电学院;unsigned char *p1=s1;unsigned char s2=王增科技零七零一;unsigned char *p2=s2;unsigned char s3=王增科技零七零一;unsigned char *p3=s3;unsigned char s4=王增序号13号;unsigned char *p4=s4;unsigned char s5= 点阵式液晶屏 ;unsigned char *p5=s5;unsigned char *p

21、6=s6;unsigned char s7=省;unsigned char *p7=s7;unsigned char s8=心;unsigned char *p8=s8;unsigned char s9=波形:方波;unsigned char *p9=s9;unsigned char s10=频率:1MHZ;unsigned char *p10=s10;unsigned char s11=: 正弦波;unsigned char *p11=s11;unsigned char s12=: 方 波;unsigned char *p12=s12;unsigned char s13=: 三角波;unsi

22、gned char *p13=s13;unsigned char s14=: 锯齿波;unsigned char *p14=s4; 主函数(程序入口)int main(void)int ap; unsigned long i; JTAG_Wait(); / 防止JTAG失效,重要! while(1) SystemInit(); LCMDisplayPicture_4( );Delay(2500*(TheSysClock/4000);SystemInit();LCMDisplayPicture_5( );Delay(2500*(TheSysClock/4000);SystemInit();LCM

23、DisplayPicture_6( ); for (i=0;i6;i+=6) WRCM(0X91+i); HANZI(s9); for (i=0;i6;i+=6) WRCM(0X89+i); HANZI(s10); Delay(2500*(TheSysClock/4000); SystemInit(); LCMDisplayPicture_7( ); for (i=0;i7;i+=7) WRCM(0X81+i); HANZI(s11); / 系统初始 for (i=0;i7;i+=7) WRCM(0X91+i); HANZI(s12); / 系统初始化 for (i=0;i7;i+=7) WR

24、CM(0X89+i); HANZI(s13); / 系统初始化 for (i=0;i7;i+=7) WRCM(0X99+i); HANZI(s14); Delay(2500*(TheSysClock/4000); SystemInit();LCMDisplayPicture_3( ); Delay(2500*(TheSysClock/4000);SystemInit();LCMDisplayPicture( );Delay(2500*(TheSysClock/4000); SystemInit(); LCMDisplayPicture_1( );Delay(2500*(TheSysClock/

25、4000); SystemInit(); LCMDisplayPicture_2( ); Delay(2500*(TheSysClock/4000); SystemInit(); for (i=0;i8;i+=8) WRCM(0X80+i); HANZI(s1); Delay(500*(TheSysClock/4000); / 系统初始 for (i=0;i8;i+=8) WRCM(0X90+i); HANZI(s2); Delay(500*(TheSysClock/4000); / 系统初始化 for (i=0;i8;i+=8) WRCM(0X88+i); HANZI(s3); Delay(

26、500*(TheSysClock/4000); / 系统初始化 for (i=0;i8;i+=8) WRCM(0X98+i); HANZI(s4); Delay(2500*(TheSysClock/4000); SystemInit(); for(ap=0;ap5;ap+) Delay(200*(TheSysClock/4000); LCMDisplayPicture( ); for (i=0;i8;i+=8) WRCM(0X80+i); HANZI(s6); WRCM(0X90); HANZI(s7); WRCM(0X97); HANZI(s7); WRCM(0X88); HANZI(s8)

27、; WRCM(0X8F); HANZI(s8); for(i=0;i8;i+=8) WRCM(0X98+i); HANZI(s6); Delay(200*(TheSysClock/4000); / LCMDisplayPicture_1( ); / 系统初始化SystemInit(); for(ap=0;ap5;ap+) Delay(200*(TheSysClock/4000); /LCMDisplayPicture_1( ); for (i=0;i16;i+=8) WRCM(0X88+i); HANZI(s5); Delay(200*(TheSysClock/4000); LCMDispla

28、yPicture_2( ); SystemInit();for(ap=0;ap5;ap+)LCMDisplayPicture( ); Delay(200*(TheSysClock/4000); LCMDisplayPicture_2( ); Delay(200*(TheSysClock/4000); 五、实验分析及心得:首先通过本实验了解并掌握了简单的液晶显示器的显示原理及构造,利用他显示了简单的实验结果。这次实验还了解了4*4矩阵键盘的基本构造及电路的实现原理。其次通过液晶显示这个实验,基本了解了矩阵键盘的构造,点阵构造了汉字显示,就通过每个点的亮灭就可以在液晶显示屏上显示出构造的汉字液晶显

29、示屏是用点阵来表示的,每个汉字是用点阵来表示,用二进制的0或1表示那个点的亮灭,修改点阵就可以显示不同的字,液晶显示是按行从左到右的打,逐行打印。(三)、定时器试验-定时器演奏乐曲一、实习目的:(1)了解并掌握蜂鸣器演奏音乐的设计(2)了解电机的不同转速转设计。二、实验板介绍:实践环境是EASYARM1138这里不再赘述。三、实验原理:先给定时器赋一个初值,由赋值的不同,再根据算法的不同来调节脉宽,蜂鸣器会发出不同的音调,电机会以不同的转速转动。 下图为EasyARM1138开发板上的蜂鸣器驱动电路。蜂鸣器类型是交流蜂鸣器也称无源蜂鸣器,需要输入一列方波才能鸣响,发声频率等于驱动方波的频率。由于每次高电平的不同,所以响应时间不同,所以定时器周期不同,导致蜂鸣 发声不同。电机转速不同,改变电压的方法很多,最常见的是PWM脉宽调制,调节电机的输入占比,就可以控制电机的平均电压,控制转速。四、实验内容:主函数(程序入口)int main(void)jtagWait(); / 防止JTAG失效,重要! clockInit(); / 时钟初始化:晶振,6MHz buzzerInit(); / 蜂鸣器初始化 for (;) musicPlay(); SysCtlDelay(4000 * (TheSysClock / 300

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

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