




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四. 实验任务4.1 实验一 按键检测和LED显示1.实验目的(1) 掌握STM32的I/O模块的使用;(2) 理解独立按键检测和阵列按键检测原理,编程并实现按键检测功能;(3) 理解八段数码管显示原理,编程并实现数码管的显示;(4) 熟悉JTAG调试工具和调试技术。2.重点、难点重点:按键检测及数码管显示的实现。 难点:按键去抖技术、在线调试技术。3.作业及课外学习要求课前预习,撰写预习报告,课后书写实验报告。4.实验原理单微处理器与外部芯片或设备最常见的交互,就是通过对I/O口的操作实现的。无论MCU对外界进行何种数字控制,或接受外部的何种数字控制,都可以通过I/O口进行。键盘、LED、等外设都是通过I/O口的输入、输出来进行读取或控制的。LED显示电路如下。(1) 独立按键检测原理 图4.1 按键检测基础知识 本实验箱用的按键为弹性按键,存在按下和弹起的抖动问题,可通过延时去抖法实现按键检测。如图4.1中的流程图所示。实验例程参见“实验一_IAR_GPIO_独立按键测试”。本实验箱独立按键和独立LED的硬件定义如下:#define LED0(x) GPIO_WriteBit(GPIOA, GPIO_Pin_8, x)#define LED1(x) GPIO_WriteBit(GPIOC, GPIO_Pin_9, x)#define LED2(x) GPIO_WriteBit(GPIOC, GPIO_Pin_8, x)#define LED3(x) GPIO_WriteBit(GPIOC, GPIO_Pin_7, x)#define LED4(x) GPIO_WriteBit(GPIOC, GPIO_Pin_6, x)#define LED5(x) GPIO_WriteBit(GPIOG, GPIO_Pin_7, x)#define LED6(x) GPIO_WriteBit(GPIOG, GPIO_Pin_6, x)#define LED7(x) GPIO_WriteBit(GPIOB, GPIO_Pin_0, x)#define KEY0 GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_8)/读取按键0#define KEY1 GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_9)/读取按键1#define KEY2 GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_10)/读取按键2 #define KEY3 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0)/读取按键3 (2) 阵列按键检测原理在MCU系统中键盘中按钮数量较多时,为了减少I/O口的占用,常常将按钮排列成矩阵形式,如下图4.2所示。图4.2 阵列按键 原理图与实物图对应关系矩阵连接式键盘键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判断按键速度慢。多用于设置数字键,适用于键数多的场合。按键识别方法:先把某一行置为低电平,其余各行置为高电平,检查各列线电平的变化,如果某列线电平为低电平,则可确定此行此列交叉点处的按键被按下。实验例程参见“实验一_IAR_GPIO_阵列按键扫描_数码管显示”。本实验箱阵列按键硬件定义如下:static struct io_port key_output4 = /输出行线GPIOF, GPIO_Pin_6, GPIOC, GPIO_Pin_10, GPIOF, GPIO_Pin_7, GPIOC, GPIO_Pin_13; static struct io_port key_input4 = /输入列线GPIOC, GPIO_Pin_14, GPIOE, GPIO_Pin_5, GPIOC, GPIO_Pin_15, GPIOE, GPIO_Pin_6 ;本实验箱8段数码管硬件定义如下:SEG_led0 -PE2SEG led1 -PE3SEG led2 -PB1SEG led3 -PB8SEG led4 -PG14SEG led5 -PG13SEG led6 -PD2SEG led_DP -PG11 SEG led_s0 - PD7SEG led_s1 -PG9SEG led_s2 -PD6SEG led_s3 -PD3注意:本实验箱的8段数码管为4位一体共阳数码管。数码管与STM32直接相连,用户可通过STM32直接输出信号至数码管。由于七段数码管LED公共端连接到VCC(共阳极),当STM32对应的I/O引脚输出低电平时,对应的七段数码管LED中的LED点亮;当STM32对应的I/O引脚输出高电平时,对应的七段数码管LED中的LED熄灭。通过控制led_s0- led_s3 4个管脚,分时控制4个数码管的亮面,通过视觉暂留效应,达到4个数码管同时显示的效果。 5 实验任务实验任务1: 按键检测和LED显示实验 1.1 实际运行例程1 “实验一_IAR_GPIO_独立按键测试”1.1.1 学习、理解IO口初始化,掌握IO口操作的相关操作方法1.1.2 说明程序用SW0点亮LED0,用SW1点亮LED1,两者的点亮方式有何不同。1.2 编程,按下按键SW0后,8个LED灯从左向右依次发亮。实验任务2: 阵列按键扫描与数码管显示2.1 运行例程2“实验一_IAR_GPIO_阵列按键扫描_数码管显示” 学习,理解阵列按键扫描与数码管显示器的相关概念。掌握阵列按键与数码管显示器的编程方法。2.2 编程,扫描键盘, 若按下“1”,用7段LED显示你的学号后4位数。 若按下“2”,用7段LED显示你的学号前4位数。6 实验报告要求u 实验报告必须有下列内容:l 实验目的l 实验原理l 简要说明库函数作用 GPIO_Init GPIO_SetBits GPIO_ResetBits GPIO_WriteBit GPIO_ReadInputDataBitl 实验任务1.2 实验原理 主要编程要点 主要程序代码l 实验任务2.2 实验原理 主要编程要点 主要程序代码4.2 实验二 IO中断和定时器中断1.实验目的(1) 理解I/O中断的概念,掌握采用I/O中断的按键识别技术;(2) 理解定时器的工作原理,掌握定时器中断的工作方式;(3) 掌握采用定时器的独立按键扫描及阵列按键扫描功能。2.重点、难点重点:I/O中断及定时器的使用,采用定时器的独立按键扫描及阵列按键扫描功能。难点:中断的概念及编程实现技巧。3.作业及课外学习要求课前预习,撰写预习报告,课后书写实验报告。4.实验原理一、IO中断IO中断模式,可使得外部设备可以主动请求MCU与其传输状态或数据,提高MCU对事件的相应速度。STM32的所有I/O端口可作为外部中断输入,同时可有16个中断输入源,其中PA0可作为从待机模式唤醒的管脚,PC13可作为侵入检测管脚。外部中断的库函数将表4.1。I/0中断的使用请参考“STM32中文参考手册.pdf”中 “通用和复用功能I/O(GPIO和AFIO)”的描述,库函数的详细描述见“STM32F10xxx_库函数_cn.pdf”相应章节。表4.1 STM32外部中断的库函数STM32的中断服务函数,均在Library-src-stm32f10x_it.c中。本实验例程“实验二_IAR_IO中断”采用SW3做为IO中断,对应的管脚为PC0,中断线为EXTI0_IRQChannel,中断服务函数为void EXTI0_IRQHandler(void)。STM32所有模块在使用前,必须先利用“RCC_APB2PeriphClockCmd”或者“RCC_APB1PeriphClockCmd”函数配置时钟。在配置IO中断前,必须配置系统时钟及GPIOC和AFIO的时钟,见例程“实验二_IAR_IO中断”的函数“NVIC_Configuration”中。 例程“实验二_IAR_IO中断”效果:每按下SW3按键,LED1灯闪烁几下。 定时器 void TIM2_IRQHandler(void)二、定时器 定时器主要用于计时、定时或产生PWM信号,广泛应用于工业检测、控制系统中。本实验例程“实验二_IAR_定时器中断”使能STM32的定时器2(TIM2)和SysTick两个定时器,其TIM2中断服务函数分别为Library-src-stm32f10x_it.c中的“void TIM2_IRQHandler(void)”,SysTick 用于延时,工作于查询模式。TIM2为10ms中断,主要用于按键扫描。 采用延时函数去抖,占用了大量的CPU资源(Delay函数),而采用定时器实现按键扫描,可以大大提高CPU效率。图4.3给出了采用定时器中断实现扫描按键的流程图。例程“实验二_IAR_定时器中断”利用定时器中断,产生了一个50Hz的方波,通过“SPI测试点”区的TP19测试点输出,同时实现了SW2独立按键的定时器扫描功能。例程“实验二_IAR_定时器中断”效果:(1)、利用示波器可在TP19测试点测试得到50Hz的方波;(2)每按下SW2按键,LED2灯的状态就会翻转一下。5.实验任务实验任务一: 利用IO中断和SysTich延时函数(在IO中断中延时去抖),编写程序,实现每按下SW3按键,LED1状态翻转一次。实验任务二: 图4.3定时器按键扫描流程图利用TIM2中断扫描按键(不能有延时函数),实现按下SW0、SW1时,不同流水灯效果。l 按下SW0,按从左向右的顺序分别点亮LED0LED7; 即,亮LED0,熄灭LED0;亮LED1,熄灭LED1;亮LED2,熄灭LED2; LED0(ON);delay_ms(100);LED0(OFF);delay_ms(100);LED1(ON);delay_ms(100);LED1(OFF);delay_ms(100);LED2(ON);delay_ms(100);LED2(OFF);delay_ms(100); l 按下SW1,按从右向左的顺序分别点亮LED0LED7。实验任务三: 利用TIM2中断编写阵列按键扫描程序(不能有延时函数),要求实现2位数*2位数的计算器功能。利用*作为乘法,#号作为等于,C清零。要求八段数码管的显示也在定时器中断中完成(不能有延时函数)。 4.3 RS232串口通信1.基本要求(1) 理解RS232通信时序,掌握RS232模块的使用;(2) 理解RS232外围电平转换芯片的功能,利用示波器测试RS232通信时序;(3) 掌握串口调试技术。2.重点、难点重点:掌握RS232模块的使用。难点:通信时序的概念。3.作业及课外学习要求课前预习,撰写预习报告,课后书写实验报告。4实验原理在微处理器众多的片上外设中,UART模块是最常用的模块之一。UART通过2根线(RXD、TXD)或4根线(RXD、TXD、RTS、CTS),可将微处理器与专用模块或者其他系统联系起来,实现更复杂的功能或通信,大大扩展了微处理器的应用领域,比如可通过微处理器的UART控制GPRS模块,实现接打电话、收发短信和上网等等。UART(Universal Asynchronous Receiver/Transmitter)通用异步收发器,是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。UART首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是78个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶校验,UART就在数据位后面加上奇偶位。奇偶位可用来帮助校验错误。在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。图 4.4 串口通信时序本实验例程“实验三_IAR_串口通信”,利用串口1与计算机通信,利用PC端的串口调试助手,实现PC发送给STM32的数据,STM32回传给PC的功能。UART1的接收中断服务函数是 Library-src-stm32f10x_it.c中的“void USART1_IRQHandler(void)”。注意,UART1的收发中断的服务函数均为这个函数,当前进入中断的具体中断源,需要在此函数中通过if语句查询确认,参见本例程。5.实验任务实验任务一: 编写一个流水灯程序,利用串口调试助手向MCU发送字符,发送不同的字符时,8个LED灯轮流闪烁效果不同,至少做出两种及以上效果。同时利用示波器观察并画出PC机向STM32发送数据的波形(UART_TX、UART_RX,TX_+12、RX_+12),解析波形对应的字节。 实验任务二: 编写程序,利用TIM2中断扫描阵列键盘(不能有延时函数),并将扫描到的值通过串口打印到PC端,同时在八段数码管上显示扫描到的键值(不能有延时函数)。实验任务三: 编写程序,在PC端利用串口调试助手发送不同的字符串,在串口接收中断中编写字符串接收程序,识别字符串,并根据收到的不同字符串,点亮相应的LED等。字符串为自己的学号和班级号两种。 4.4 IIC通信及LCD显示1.基本要求(1) 理解IIC通信时序,利用示波器测试IIC通信时序; (2) 掌握I/O口模拟IIC的编程以及IIC模块的使用;(3)掌握IIC接口的液晶显示编程。2.重点、难点重点:掌握IIC模块的使用以及LCD显示编程。难点:通信时序的概念。3.作业及课外学习要求课前预习,撰写预习报告,课后书写实验报告。4实验原理 IIC总线以其连线简单(2线传输)、可挂接多达128个设备的特点,在MCU系统中,获得了广泛的应用。电视机内的MCU通过IIC总线来控制LED驱动器从而控制LED的输出,服务器中的系统温度传感器和风扇等器件都是连接在IIC总线上的。利用IIC总线MCU可以与很多器件进行通信,如E2PROM、LCD、RTC日历时钟、系统外接DA等。IIC即集成电路总线(Inter-Integrated Circuit),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路。IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源,这种方式简化了信号传输总线。图4.5给出了IIC总线连接图,IIC总线特征如下:l 只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL。l 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器。l 它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏。l 串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。图4.5 IIC总线连接图图4.6 IIC总线时序图图4.6 给出了IIC总线时序图。在SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件;当SCL是高电平时,SDA线由低电平向高电平切换表示停止条件。起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态在停止条件的某段时间后,总线被认为再次处于空闲状态。发送到SDA线上的数据每个字节必须是8位,每次可以传输的字节数目不受总线限制,但是每发送完成一个字节必须有一个响应位。如果从机要完成一些其他功能后才能接收或发送下一个完整的数据字节,可以使时钟线SCL保持低电平迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL后数据传输继续。如果传输中有主机接收器,它必须通过在从机不产生时钟的最后一个字节不产生一个响应,向从机发送器通知数据结束,从机发送器必须释放数据线,允许主机产生一个停止或重复起始条件。在起始条件S后,第一个发送的数据是一个从机地址,这个地址共有7位(7位地址模式),紧随着的第8位是数据标志位R/W,0表示发送写,1表示发送读。一般由主机发出停止位P后通信终止,但是如果主机仍然希望在总线上传输数据,那么它可以发出重复起始条件Sr和寻址另一个从机,而不是首先发出一个停止条件,在这种数据传输中,可能会出现不同的读写格式的组合。 实验例程“实验四_IAR_ IIC_EEPROM” 分别利用STM32的IO口模拟IIC控制器和STM32片内硬件IIC控制器,对EEPROM进行读写,实现数据的掉电保存功能;实验例程“实验四_IAR_IIC_LCD”对液晶屏进行操作,实现液晶屏幕内部的字符串。可根据显示的内容,得到需要显示的字符串的液晶屏内部地址,实现字符串的显示。5.实验任务实验任务一: 编写一个程序,通过串口调试助手,在PC端发送过来自己的学号后,将此学号送入到EEPROM中,按下复位按键,自动读取EEPROM内的学号,并通过串口显示;在此期间,用示波器测试“I2C_LCD测试点”区的 “I2C1_SDA”和“I2C1_SCL”信号,理解I2C的通信过程。实验任务二: 编写一个程序,利用硬件IIC方式,控制液晶屏,显示自己的学号和班级。并用示波器测试“I2C_LCD测试点”区的 “I2C1_SDA”和“I2C1_SCL”信号,理解I2C的通信过程。4.5 AD及并行总线1.基本要求(1) 理解AD工作原理; (2) 掌握AD模块的使用,并利用AD模块实现直流电压的采集和串口显示; (3) 理解并行总线FSMC通信时序,利用示波器测试该通信时序; (4) 掌握利用FSMC接口实现SRAM操作的编程; 2.重点、难点重点:掌握AD、FSMC模块的使用。难点:AD模块的使用、通信时序的理解。3.作业及课外学习要求课前预习,撰写预习报告,课后书写实验报告。4. 实验原理在MCU应用中,经常需要测量温度、湿度、压力、电压等模拟量,而MCU是一个数字系统,内部用“0”和“1”数字量进行运算,因此必须把模拟量转换为数字量MCU才能进行识别。模拟量通过输入接口,即模数转换器(ADC)转换成数字量传送给MCU6。ADC主要性能指标:(1) 分辨率。ADC的分辨率是能够分辨的最小量化信号的能力,即输出的数字量变化1所需输入模拟电压的变化量,通常用位数来表示。对于一个实现n位转换的ADC来说,它能分辨的最小量化信号的能力为2n位,即分辨率为2n位。例如,对一个10位的ADC分辨率为210=1024位。(2) 转换精度。因为数字量是离散值,模拟量是连续值,所以一般在某个范围中的模拟量都对应于同一个数字量。例如,有一个ADC,理论上5V电压对应数字量800H,但是实际上4.997V,4.998V,4.999V也对应数字量800H。这就意味着,在A/D转换时模拟量并不严格一一对应数字量。这样就有一个转换精度的问题,转换精度反映了ADC的实际输出接近理想输出的精确程度。A/D转换的精度通常是用数字量的最低有效应(LSB)来表示的。设数字量的最低有效位对应于模拟量,这时称为数字量的最低有效位当量。转换时间和转换率。完成1次A/D转换所需要的时间,称为ADC的转换时间。用ADC的转换时间的倒数表示ADC的转换速度,即转换率,例如,一个12位逐次逼近式ADC,完成一次A/D转换所需时间20s,其转换率为50KHZ。ADC的转换时间约为几个s至200s。 STM32F103ZCT6内嵌3个12位的模拟/数字转换器(ADC),每个ADC共用多达21个外部通道,可以实现单次或扫描转换。在扫描模式下,自动进行在选定的一组模拟输入上的转换。实验板上,PC1口连接了一个电位器,通过旋转电位器可以得到01.7V的模拟电压(“电压测试点”区的TP9测试点),同时本实验板上的并行总线连接了一个512KB的SRAM和一个TFT液晶显示屏。通过对SRAM或TFT的操作,可以理解FSMC总线的通信时序。实验例程“实验例程五_AD_FSMC”提供了利用定时器Timer2驱动AD采样,并将采样得到的数据通过FSMC写入到SRAM的功能。5. 实验任务实验任务一: 编写一个程序,在实验例程“实验例程五_AD_FSMC”基础上,对采样得到的值,转换为电压值,并利用串口打印出电压的字符串,例如:”Voltage:1.7V” 实验任务二: 编写一个程序,以1KHz采样率,采集频率为100Hz,峰峰值为3V的正弦波,共采集50个点,并在采集的同时将采集到的值写入SRAM中。在采集完成后,读取SRAM的内容,并通过串口
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泉州市一护理招聘题库及答案解析
- 高校安全月知识题库及答案解析
- 北京高三模拟试题及答案
- 2025年高考英语试卷及答案
- 中级护理员考试题及答案
- 上海幼教考试试题及答案
- 2025年骨科创伤救治演练模拟试卷答案及解析
- 2025年神经科学科神经生理病理考试答案及解析
- 2025年口腔颌面外科实操技术考核答案及解析
- 2025年新《烟草专卖法》基础知识考试题库(附答案)
- 《铁路路基施工与维护》高职高速铁路施工与维护全套教学课件
- 2025-2030年中国手持三维激光扫描仪行业市场深度分析及发展趋势与投资前景研究报告
- 2025-2030中国中药材银杏叶行业供需格局及未来销售渠道趋势报告
- 潍坊市公安局招录警务辅助人员笔试真题2024
- 精准农业中微生物群落的调控机制-洞察阐释
- 沪教3起五年级上册Module 2 Relationships 单元整体作业设计
- AP微积分BC2024-2025年真题汇编试卷(积分与级数深度解析与挑战)
- 大型活动安全风险评估报告
- 大数据分析与数据挖掘知识习题集
- 2024-2025学年河北省石家庄市新华区四年级(上)期末数学试卷(含答案)
- GB/T 25820-2025包装用钢带
评论
0/150
提交评论