微机原理实验指导书

2020-04-17 04:26

四. 实验任务

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 / 14

(1) 独立按键检测原理

F8MCUSTM32F103ZCT6F9F10FC0

图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_output[4] = { //输出行线 {GPIOF, GPIO_Pin_6}, {GPIOC, GPIO_Pin_10}, {GPIOF, GPIO_Pin_7}, {GPIOC, GPIO_Pin_13}};

static struct io_port key_input[4] = { //输入列线 {GPIOC, GPIO_Pin_14}, {GPIOE, GPIO_Pin_5}, {GPIOC, GPIO_Pin_15}, {GPIOE, GPIO_Pin_6} };

本实验箱8段数码管硬件定义如下: SEG_led0 --PE2 SEG led1 --PE3 SEG led2 --PB1 SEG led3 --PB8 SEG led4 --PG14 SEG led5 --PG13 SEG led6 --PD2 SEGled_DP --PG11 SEG led_s0 -- PD7 SEG led_s1 --PG9

SEG led_s2 --PD6 SEG 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 实验报告要求

? 实验报告必须有下列内容:

? 实验目的 ? 实验原理

? 简要说明库函数作用

? GPIO_Init ? GPIO_SetBits ? GPIO_ResetBits ? GPIO_WriteBit

? GPIO_ReadInputDataBit

? 实验任务1.2

? 实验原理 ? 主要编程要点 ? 主要程序代码

? 实验任务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所有模块在


微机原理实验指导书.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中央水泵房砌碹施工

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: