STM32普中F103抢答器与抢答器的延时控制
一、简单原理
两人进行按键抢答,两人在听到口令后同时按下,先按下的的对应的灯亮了,后按下的对应的灯始终不会亮,按下复位键进行下一轮比拼,从而实现抢答的功能。
二、抢答器的简单程序
可以打开stm32跑马灯的例程进行相关操作
main.c
#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;uint32_t i,j;
void KEYInit(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOE, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_ResetBits(GPIOA, GPIO_Pin_0);GPIO_SetBits(GPIOE, GPIO_Pin_3);GPIO_SetBits(GPIOE, GPIO_Pin_4);}int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_Init(GPIOE, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_5);GPIO_SetBits(GPIOE, GPIO_Pin_5);KEYInit();while(1){if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0){GPIO_ResetBits(GPIOB, GPIO_Pin_5);GPIO_ResetBits(GPIOE, GPIO_Pin_5);for(i=0;i<1000;i++) {for(j=0;j<10000;j++);}break;}if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0){GPIO_SetBits(GPIOB, GPIO_Pin_5);GPIO_ResetBits(GPIOE, GPIO_Pin_5);for(i=0;i<1000;i++) {for(j=0;j<10000;j++);}break;}if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1){GPIO_ResetBits(GPIOB, GPIO_Pin_5);GPIO_SetBits(GPIOE, GPIO_Pin_5);for(i=0;i<1000;i++) {for(j=0;j<10000;j++);}break;}}}
三、简易创新
按下后不用按复位键熄灯,我们可以自动延时几秒让其熄灯(可以根据自己的需要进行延时长短)
下面例子是延时5秒后自动熄灯
main.c
#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;uint32_t i,j;
void KEYInit(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOE, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_ResetBits(GPIOA, GPIO_Pin_0);GPIO_SetBits(GPIOE, GPIO_Pin_3);GPIO_SetBits(GPIOE, GPIO_Pin_4);}int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_Init(GPIOE, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_5);GPIO_SetBits(GPIOE, GPIO_Pin_5);KEYInit();while(1){if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0){GPIO_ResetBits(GPIOB, GPIO_Pin_5);GPIO_ResetBits(GPIOE, GPIO_Pin_5);for(i=0;i<1000;i++) {for(j=0;j<10000;j++);}GPIO_SetBits(GPIOB, GPIO_Pin_5);GPIO_SetBits(GPIOE, GPIO_Pin_5);}if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0){GPIO_SetBits(GPIOB, GPIO_Pin_5);GPIO_ResetBits(GPIOE, GPIO_Pin_5);for(i=0;i<1000;i++) {for(j=0;j<10000;j++);}GPIO_SetBits(GPIOB, GPIO_Pin_5);GPIO_SetBits(GPIOE, GPIO_Pin_5);}if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1){GPIO_ResetBits(GPIOB, GPIO_Pin_5);GPIO_SetBits(GPIOE, GPIO_Pin_5);for(i=0;i<1000;i++) {for(j=0;j<10000;j++);}GPIO_SetBits(GPIOB, GPIO_Pin_5);GPIO_SetBits(GPIOE, GPIO_Pin_5);}}
四、创新后的结果图片显示
5s后:
今日的分享完毕了,预知后文是什么?见下回分解
STM32普中F103抢答器与抢答器的延时控制相关推荐
- 普中单片机---串口通信(1)--通过按键控制发送
普中单片机-串口通信(1)–通过按键控制发送 软件代码 #include <reg52.h>#define jingzhen 12000000UL /*使用12.0M晶体*/ #defin ...
- 在Mind+中实现掌控板抢答器
一.实验目的及要求 实现掌控板抢答器功能. 二.实验原理与内容 基于TinywebDB实现云数据库出题 基于掌控板实现按键抢答和判题 基于MQTT实现多端同步通讯 三.实验软硬件环境 硬件:掌控板 软 ...
- 使用寄存器点亮一个LED灯 普中科技stm32(stm32f1103zeb6)
板子:普中科技stm32F1(芯片stm32f1103zet6 1 程序如下: #include "stm32f10x.h" //导入头文件typedef unsigned int ...
- 学习历程--普中51单片机A2--蜂鸣器实验
今天学习了普中的蜂鸣器部分,将自己的一些学习内容记录一下. 蜂鸣器有无源蜂鸣器和有源蜂鸣器,需要注意的是"源"的意思是"震荡源".是指震荡源.也就是说,有源蜂鸣 ...
- 使用普中科技STM32发ZEB6的准备工作:
1 买板子 2 安装运行环境 (1)keil5 MDK ,获取途径:通过keil官网下载(我的软件安装包.芯片包和驱动源代码等整个教程是在 普中科技论坛:www.prechin.net 找到对应板 ...
- STM32 F1普中开发板 TFT彩屏指针时间显示及闹钟。
在普中RTC时钟上更改,按KEY键可更改时间.指针圆盘显示时钟,可设置闹钟. #include "stm32f10x.h" #include "led.h" # ...
- 普中PZ6808L-F4开发板TFTLCD显示屏使用笔记
0x00 开发板介绍 这学期学的STM32开发,实验室里的开发板型号为PZ6808L-F4 整个板子是这样的 这块板子是F103和F407双核的,但我学的一直就是F407,所以本文所有问题只针对F40 ...
- 普中51-单核-A2单片机
普中51 - 普中51 功能与使用 介绍 功能模块 CMOS是Complementary Metal Oxide Semiconductor(互补金属氧化物半导体) 通常 汉字有 16*16 个像素点 ...
- 51单片机学习笔记——第2天:简易门铃设计(普中51中级实验例程)
文中绝大数代码来自普51开发板实验例程 门铃这个实验实际上就是按键和蜂鸣器的组合实验,没啥难度,唯一的用处就是为下一个实验(音乐播放器)做铺垫. 文章目录 门铃实现原理 扩展,调节"叮咚&q ...
最新文章
- npm包开发测试与发布
- MahApps.Metro
- 中国电子学会青少年编程能力等级测试图形化三级编程题:海底寻宝
- SAP RETAIL 商品主数据POS视图
- cameraraw预设_PS Camera Raw 导入预设以及分组
- Geoserver中切割离线瓦片TileLayer选项中没有900913选项(图层和图层组怎样配置TileLayers的切割选项)
- python3 xml 取标签显示内容_如何应用“XML+XSLT”技术分离Web表示层数据和样式
- django-rest-framework第一次使用使用常见问题
- English trip M1 - PC9 Where am I Teacher:Jade
- 【Echarts底层相关】
- win7系统控制面板在哪打开,win7电脑打开控制面板方法
- 32.go defer
- 只需3步把VSCode打造成Markdown编辑器
- blackduck,黑鸦binary二进制模式扫描jenkins配置
- 模拟计算 |“五重解读”带你玩转CO2RR描述符-科学指南针
- 推送本地镜像到docker私有仓库
- 快速下载官方网站软件
- 2018年前端年度工作总结
- 《SEO的艺术(原书第2版)》——2.6 垂直搜索引擎
- 3a2b递归排列java,写点关于递归的话题(一)