STM32 ARM 综合实验报告南京航空航天大学_第1页
STM32 ARM 综合实验报告南京航空航天大学_第2页
STM32 ARM 综合实验报告南京航空航天大学_第3页
STM32 ARM 综合实验报告南京航空航天大学_第4页
STM32 ARM 综合实验报告南京航空航天大学_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、 南京航空航天大学 研究生实验报告 项目名称: ARM嵌入式系统设计与应用技术 设计专题:综合实验二类:数据采集和显示系统 班级 : 小组成员 (1)姓名: 学号: 学科: 电话: Email: 导师: (2)姓名: 学号: 学科: 电话: Email: 导师: (3)姓名: 学号: 学科: 电话: Email: 导师: 20XX年XX月XX日 一、本实验主要内容及要求 本次综合实验的主要内容是,利用ARM内部的A/D转换器进行数据采集和显示系统设计。实验要求如下: 1、 采用STM32开发板上的12位A/D转换器(参考电压3.3V)采集电位器测 试点的电压值。电位器与A/D的输入通道14相连

2、接。 2、 当按下Key键之后任意旋转电位器,利用A/D转化器采样20组电压值(每 1ms采样一次,使用定时器TIM2计时),并在液晶屏幕上显示当前电压值,当再次按下Key键之后将20组电压值存入到FLASH中。 3、 复位后按下Temper键将保存的20组电压值在液晶屏幕中央绘制出波形(要 求各点连接,每个点为5个像素,要有坐标系)。 1) 横坐标为“120”,每个横坐标之间的间隔为8个像素点; 2) 纵坐标为电压值“0V,1V,2V,3V,4V”,相邻坐标之间的为10个像素 点。 4、 在液晶屏合适的位置显示组名、姓名、学号、开发日期等信息。可利用STM32 开发板的资源扩展其他自定义功能

3、(如增加温度采集通道、当前采样频率显示和设置、采样率调节等)。 二、硬件框图 本次实验的硬件部分主要是计算机和STM32两个部分,对于计算机部分不做过多的介绍,下面着重介绍STM32中的与本实验相关模块。 1.1 ADC模块 12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。 STM32教学平台的电位器

4、是信号是连接到STM32的PC4口的, PC4正好是A/D转换的通道14,STM32实验教学平台上也标注了ADC12_14(14通道),电位器硬件框图如图1所示,ADC硬件框图如图1所示。 图1 ADC硬件框图 1.2 Flash存储模块 STM32F103ZET6有3个SPI,分别为SPI1、SPI2和SPI3。其中SP2和I2S2,SPI3和I2S3共用管脚,采用SPI功能还是I2S功能是由SPI_I2S_CFGR寄存器的第11位I2SMOD来决定的。 SPI_I2S配置寄存器(SPI_I2S_CFGR),如下图3所示。其中I2SMODE位为1时表示选择I2S模式,为0时表示选择SPI模式

5、。 在STM32开发板上,是采用STM32的SPI1连接SPI FLASH的,如图2所示,STM32与M25P80的IO接口对应关系如表1所示。 图2 STM32的SPI1硬件框图 表 1 STM32与M25P80的IO接口对应关系 1.3 Key按键介绍 通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械 触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会 一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种 现象而作的措施就是按键消抖。 消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。按键的消 抖,可用硬件或软件两种方法。 K

6、ey硬件框图如图3所示,按键输入与PG8口连接。当按键不按下时,PG8 口输入高电平;当按键按下时,PG8口输入低电平。 图3 Key硬件框图 4 1.4 定时器 STM32有4个定时器单元,一共有8个定时器。定时器1和定时器8构成功能强大的高级定时器,这两个定时器在电机控制方面有绝对的优势。其他剩下的定时器是通用定时器。 STM32的定时器除了可以计时外,还可以捕获比较。这些定时器具有捕获比较功能,同时还有一些特殊的工作模式。如在捕获模式下,定时器将启用一个输入过滤器和一个特殊的PWM测量模块,同时还支持编码器输入,这些编码输入可以测出电机的旋转方向甚至可以测出速度。而在比较模式下,定时器可

7、以实现标准的比较功能、输可以调节占空比的PWM波。 STM32定时器内部结构,如图4所示。 图4 STM32定时器内部结构 三、程序流程图 1、主程序流程图 图5 主程序的流程框图 如图5所示,对于该流程框图的分析如下: 1) 对STM32的初始化,其中包括ADC初始化、SPI串口初始化、LCD初始化 等,初始化过程在其相应的子程序中执行。 2) 显示组员的信息和时间,正如实验七所学的,运用函数LCD_ShowString(), 即可在LCD上显示自己所需要的信息,其显示的位置可以根据设定的坐标来设置。 3) 设置Key键,当Key键被按下时,开始采集数据并将其显示,而数据采集和 显示的编程及

8、其分析过程在前面的实验七中已经有过比较详细的介绍了,所以这里不再赘述。同时,采集到的数据及时的将其存储在Flash中,Flash的设置在其初始化中已经完成。 4) 设置Temper键,当Temper键被按下的时候,开始对之前采集到的数据进行 绘图,而绘图的过程在之后的子程序中有比较详尽地介绍,这里也不在作详细的说明。 2、子程序流程图 对于采集20组数据并显示、20组数据绘图两个子程序进行详细地说明如下: 1) 采集20组数据并显示子程序。ADC数据采集的编程在之前的实验中已经介 绍过, STM32芯片的ADC转换模块是12位的逐次逼近,所以在采集到14通道的数据除以4096(212),同时应

9、当熟悉ADC转换的初始化过程,在采集一个数据之后,将其保存在flash中,同时经过一定的延时之后进行下一个数据采集,直到采集满20个数据为止,流程图如图6所示。 图6 采集数据并显示子程序流程图 2) 将20组数据绘图。在采集完20组数据后,进入绘图子程序,绘图最初是进 行坐标的建立,坐标轴绘制好之后,依次读取存入Flash中的数据,并通过计算将其转换成坐标系中相应的坐标值,并通过函数LCD_DrawLine(X1,Y1,X2,Y2)将其显示出来,直到绘制完20个数据为止,流程图如图7所示。 图7 数据绘制子程序 四、实验结果和分析 1、软件的调试结果 将程序烧录到STM32中进行调试,调试结

10、果如图89所示,从图中可知,程序满足实验要求。 图8 显示日期及组员信息 图9 显示电压值及数据绘图 2、结果分析 如调试结果可知,程序基本上满足了本实验的要求,其中,20个数据的值是通过拧动电位器上的旋转键而得到的,在采样周期和操作人员拧动速度合适的情况下,数据所绘的图有一定的连续性。如果设置的采样周期太短的话,绘制的图就可能是一条直线,采集的数据是相同的值,所以在编程的时候,尽量把采样时间设置的合理一点。在编写显示组员信息的程序时,重要的是把坐标点设置合理,不然的话会出现显示的字母重叠现象,或是离的比较远,上面的调试结果图是经过组员对程序的坐标的调整,而得到的比较合适的位置。 五、源程序清

11、单 #include include.h #define KEY_ON 0 #define KEY_OFF 1 float set_value1; float Get_adcvalue1; float ADC_Flash20; void Draw_BigPoint(u16 x,u16 y) LCD_DrawPoint(x,y); LCD_DrawPoint(x-1,y); LCD_DrawPoint(x+1,y); LCD_DrawPoint(x,y-1); LCD_DrawPoint(x,y+1); int main(void) int i; int sectorCnt; u32 Flash

12、_ID; char j=0; char flag=0; u16 X1,Y1,X2,Y2; float Adc_Value,lastvalue,adctemp; float adcgroup20; u32 ADC_ConvertedValue; char filename260; delay_init(); uart_init(9600); NVIC_Configuration(); Key_GPIO_Config(); Adc_Init(); LCD_Init(); SPI_FLASH_Init(); /TIM2_Int_Init(9999,71999); LED_GPIO_Config();

13、 Flash_ID = SPI_FLASH_ReadID(); POINT_COLOR=BLACK; LCD_ShowString(40, 5, The 11th Group, 2014.5.28); LCD_ShowString(30, 30, Chen Maowu SX1403012); LCD_ShowString(30, 50, Zeng Ruipeng SX1403006); LCD_ShowString(30, 70, Ge Zhishang SX1405117); while(1) if(Key_Scan(GPIOG, GPIO_Pin_8) = KEY_ON) LCD_Clea

14、r(WHITE); POINT_COLOR=GREEN; LCD_DrawLine(60, 200, 240, 200); LCD_ShowString(40, 195, 0V); LCD_DrawLine(60, 200, 60, 110); LCD_DrawLine(58, 180, 62, 180); LCD_ShowString(40, 175, 1V); LCD_DrawLine(58, 160, 62, 160); LCD_ShowString(40, 155, 2V); LCD_DrawLine(58, 140, 62,140); LCD_ShowString(40, 135,

15、3V); LCD_DrawLine(58, 120, 62, 120); LCD_ShowString(40, 115, 4V); LCD_ShowString(36, 100, Voltage); LCD_DrawLine(100,198, 100, 202); LCD_ShowString(96, 205, 5); LCD_DrawLine(140,198, 140, 202); LCD_ShowString(136, 205, 10); LCD_DrawLine(180,198, 180, 202); LCD_ShowString(176, 205, 15); LCD_DrawLine(

16、220,198, 220, 202); LCD_ShowString(216, 205, 20); if(flag=0) for(j=0;j20;j+) ADC_ConvertedValue = Get_Adc(ADC_Channel_14); Adc_Value= (float)ADC_ConvertedValue / 4096 * 3.3; adcgroupj=Adc_Value; sprintf(filename,Current Value:%.3f,adcgroupj); LCD_ShowString(30,60,filename); POINT_COLOR=BLUE; X1=68+8

17、*j; Y1=200-20*Adc_Value; Draw_BigPoint(X1,Y1); delay_ms(1000); if(flag=1) sectorCnt = sizeof(adcgroup)/SPI_FLASH_SectorSize; if(sizeof(adcgroup)%SPI_FLASH_SectorSize ! = 0) sectorCnt+; for(i = 0; i sectorCnt; i+ ) SPI_FLASH_SectorErase(i*SPI_FLASH_SectorSize); for(j=0;j20;j+) set_value0=adcgroupj; S

18、PI_FLASH_BufferWrite(u8*)set_value, 4*j, sizeof(float); LCD_Clear(WHITE); POINT_COLOR=RED; LCD_ShowString(60, 120, Have Stored In Flash!); flag=!flag; if(Key_Scan(GPIOC, GPIO_Pin_13) = KEY_ON) for(j=0;j20;j+) SPI_FLASH_BufferRead(u8*)Get_adcvalue, 4*j, 4); ADC_Flashj=Get_adcvalue0; POINT_COLOR=GREEN

19、; LCD_DrawLine(60, 200, 240, 200); LCD_ShowString(40, 195, 0V); LCD_DrawLine(60, 200, 60, 110); LCD_DrawLine(58, 180, 62, 180); LCD_ShowString(40, 175, 1V); LCD_DrawLine(58, 160, 62, 160); LCD_ShowString(40, 155, 2V); LCD_DrawLine(58, 140, 62,140); LCD_ShowString(40, 135, 3V); LCD_DrawLine(58, 120, 62, 120); LCD_ShowString(40, 115, 4V); LCD_ShowString(36, 100, Voltage); LCD_DrawLine(100,198, 100, 202); LCD_ShowString(96, 205, 5

温馨提示

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

评论

0/150

提交评论