ARM课外实验报告书一、实验板介绍:EasyARM1138的核心MCU是LuminaryMicro公司的Stellaris(群星)系列ARM之LM3S1138。该芯片采用的是国际上最优秀的MCU内核设计公司ARM最新推出的先进Cortex-M3处理器,其特点如下:⒈强大的MCU内核32位ARMCortex-M3内核(ARMv7M架构);兼容Thumb的Thumb-2指令集,提高代码密度25%以上;50MHz运行频率,1.25DMIPS/MHz,加快35%以上;单周期乘法指令,2~12周期硬件除法指令;快速可嵌套中断,6~12个时钟周期;具有MPU保护设定访问规则;64KB单周期Flash,16KB单周期SRAM;内置可编程的LDO输出2.25V~2.75V,步进50mV,为硬件系统节省一个电源稳压器;支持非对齐数据的访问,有效地压缩数据到内存;支持位操作,最大限度使用内存,并提供创新的外设控制;内置系统节拍定时器(SysTick),方便操作系统移植。⒉丰富的外设资源7组GPIO,具有多种工作模式:高阻抗输入、2/4/8mA推挽输出、开漏输出、弱上拉/弱下拉输出,等等;4个32位Timer,每个Timer都可拆分为2个独立的16位子定时器,具有定时、捕获、PWM、RTC等丰富功能;3路全双工UART,位速率高达3.125Mbps,16单元接收FIFO和发送FIFO,支持串行红外协议(IrDASIR);2路I2C,支持100kbps标准模式、400kbps快速模式;2路SSI,兼容FreescaleSPI、MICROWIRE、TexasInstruments串行通信协议,位速率高达25Mbps;6路16位PWM,通过CCP管脚输出,能产生速度高达25MHz的方波;3个模拟比较器8通道10位ADC,采样速率可达1M/s;内置看门狗定时器(WatchDogTimer),确保芯片可靠运行。内嵌USB接口的下载仿真器仅需插入一根USB电缆就能实现“三合一”功能:5V供电、程序下载与在线仿真、UART串行通信;不再要求电脑具有串口或并口,无论台式机还是笔记本电脑,只要拥有USB1.1或USB2.0接口就能运用自如;除了能够下载仿真自身以外,开发板保留的JTAG接口还可以用来仿真其它LM3S系列开发板,适用于所有Stellaris系列ARM芯片;USB接口提供虚拟UART的功能,不需要额外的接口电路(如SP3232)。简明的外围电路设计,调试时无需任何连线和跳线,操作极为方便5只LED指示灯;3只KEY;1只交流蜂鸣器,可演奏动听乐曲,如《梁祝》;两排插针引出全部GPIO资源,以及ADC0~ADC7、5V、3.3V、GND等;ARM1138实验板原理图:ARM1138实验板管脚图:实验板CPU框图:二、实验内容:(一)、温度传感器:一、实验目的:(1)了解温度传感器基本原理及设计方法.(2)模/数转换器或者模拟/数字转换器二、实验板介绍:在实验板的搭建过程中用到了Easyarm138和的A/D转换模块,其可以完成温度信号的采集及处理TMP123的功能主要是将被测温度模拟量转换成数字量,把数字化信号编码成时间比率(t1/t2)形式。T1和t2时间上是连续,用同一个时钟即可获二者比率。温度仅与时间比率有关,而与时钟频率无关,时钟频率发生波动,也会解码过程中被数字滤波器滤掉。TMP123既可以检测温度,也可单片机实现温度控制功能,适用于远程温度检测、微机或电子设备温度监视器及工业过程控制等领域。三、实验原理:1.模数转换原理:A/D模数转换原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。其优点是用简单电路就能获得高分辨率,但缺点是由于转换精度依赖于积分时间,因此转换速率极低。2.通过TMP123将采集到的模拟温度连续信号进行模拟信号的采集并进行处理,通过与138板进行连接数据的传送通过USB与电脑进行连接,通过超级终端我们可以观测到室内温度的变换情况,与温度计算有关的计算公式实现如下:10位的ADC模块集成有一个温度传感器,可以用来获取芯片的当前温度。在温度传感器特性图里,给出了以下公式:Vsenso=2.7-(T+55)/75,单位:V设Vsenso对应的ADC采样值为N,2.7V对应N1,(T+55)/75对应N2已知:N1*(3/1024)=2.7N2*(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。温度及电压测试(温度传感器的特性)图:四、实验内容://主函数(程序入口)intmain(void){charshiwrite[1]=0x06;//初始化显示时间charfenwrite[1]=0x06;charcBuf[3];unsignedlongulStatus;tI2CM_DEVICELM75A={0xa21,0x02,1,cBuf,3};tI2CM_DEVICEfen={0xa21,0x03,1,fenwrite,1};tI2CM_DEVICEshi={0xa21,0x04,1,shiwrite,1};jtagWait();//防止JTAG失效,重要!clockInit();//时钟初始化:晶振,6MHzuartInit();//UART初始化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通信来读取发送过来的时间,设置超级终端收端口为COM6,波特率为9600。在程序中一定要做的是要防止JTAG失效和进行系统初始化。//显示温度值voidTemperatureDisplay(unsignedlongulData){unsignedlongulTmp=0;chars1[20];chars2[20];ulTmp=(2700-ulData)*75-55000;sprintf(s1,%ld.,ulTmp/1000);sprintf(s2,%ld,ulTmp%1000);switch(strlen(s2)){case1:strcat(s1,00);break;case2:strcat(s1,0);break;default:break;}UART_Puts(s1);UART_Puts(s2);UART_Puts(℃\r\n);}分析:10位的ADC模块集成有一个温度传感器,可以用来获取芯片的当前温度。Vsenso=2.7-(T+55)/75,单位:V。设Vsenso对应的ADC采样值为N,2.7V对应N1,(T+55)/75对应N2已知:N1*(3/1024)=2.7N2*(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。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。在此实验中我们主要了解和搭建室内温度的采集及A/D转换。在实验板的搭建过程中用到了Easyarm138和的A/D转换模块,其可以完成温度信号的采集。电路图如图12-1ADC模块框图分析:ADC模块是由4个定时器,1个中断控制器,4个采样序列发生器、一个FIFO块,一个硬件平均电路,一个模数转换器构成。ADC模块按照电路图进行,就可以将芯片的温度提取出来,通过公式转换显示在超级终端上。内部温度传感器的公式为:五、实习小结及心得:本次实验旨在了解温度传感器基本原理及设计方法和模/数转换器或者模拟/数字转换器一些基本知识。通过这次实验,我们受益非且。在实验的过程中,我们熟悉了常见的模数转换器的原理及实际的工作参数,尤其是TMP123的集成电路设计的内部构造,这对数电知识和模电知识的运用有着密切的联系,这不仅仅让我们巩固了模电数电的基础知识,并且对他的一些应用有了更深的理解。我们还了解了其外围电路的连接的机理,尤其是在和单片机的连接上,TMP123既可以检测温度,也可单片机实现温度控制功能,适用于远程温度检测、微机或电子设备温度监视器及工业过程控制等领域。而且,在实验过程中,我们要用到的1138有关模块及相关的拐角功能,所以我们首先要非常熟悉1138各个模块和拐角的作用,其次按实际的电路的原理图进行电路的连接,将已经调试好的程序下载致IAR软件中同时并打开电脑的超级终端,然后运行此时我们可以在超级终端观测到实时的室内温度,这样才能够得到正确的的实验结果。通过温度传感器这个实验,我们可以设定时间的初始值,在超级终端接收显示时间,时间连续变化。第二个实验可以测定器件的温度,并将华氏温度转换成摄氏温度,Vsenso=2.7-(T+55)/75,通过测定芯片的Vsenso值就可以算出芯片的实际摄氏温度。我们了解了这个实验的基本原理,也对温度传感有了更深刻的认识。(二)、液晶显示实验一、实验目的:通过实验了解和掌握和了解基本的黑白液晶显示器显示原理,并利用其显示所要得到实验目的,并掌握4*4键盘工作的简单原理。二、实验板介绍(器件)1.4*4的按键矩阵模块。2.黑白液晶显示器模块。三、实验原理:1.矩阵式键盘的结构与工作原理;在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。2.显示原理:LCD液晶显示器的真实解析度定义为“定点形式”,所以我们在使用LCD显示器时,这样画面所呈现的影像将会越清晰,使用起来感觉也会越好。四、实验内容:搭建好电路之后,在IAR环境下进行程序的调试并在显示屏上点阵显示出目的的结果。部分的程序段如下:#defineSysCtlPeriEnableSysCtlPeripheralEnable#defineSysCtlPeriDisableSysCtlPeripheralDisable#defineGPIOPinTypeInGPIOPinTypeGPIOInput#defineGPIOPinTypeOutGPIOPinTypeGPIOOutput//定义KEY#defineKEY_PERIPHSYSCTL_PERIPH_GPIOG#defineKEY_PORTGPIO_PORTG_BASE#defineKEY_PINGPIO_PIN_5//防止JTAG失效voidJTAG_Wait(void){SysCtlPeriEnable(KEY_PERIPH);//使能KEY所在的GPIO端口GPIOPinTypeIn(KEY_PORT,KEY_PIN);//设置KEY所在管脚为输入,PG5if(GPIOPinRead(KEY_PORT,KEY_PIN)==0x00)//如果复位时按下KEY,则进入{for(;;);//死循环,以等待JTAG连接}SysCtlPeriDisable(KEY_PERIPH);//禁止KEY所在的GPIO端口}