一、简单原理

两人进行按键抢答,两人在听到口令后同时按下,先按下的的对应的灯亮了,后按下的对应的灯始终不会亮,按下复位键进行下一轮比拼,从而实现抢答的功能。

二、抢答器的简单程序

可以打开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)--通过按键控制发送

    普中单片机-串口通信(1)–通过按键控制发送 软件代码 #include <reg52.h>#define jingzhen 12000000UL /*使用12.0M晶体*/ #defin ...

  2. 在Mind+中实现掌控板抢答器

    一.实验目的及要求 实现掌控板抢答器功能. 二.实验原理与内容 基于TinywebDB实现云数据库出题 基于掌控板实现按键抢答和判题 基于MQTT实现多端同步通讯 三.实验软硬件环境 硬件:掌控板 软 ...

  3. 使用寄存器点亮一个LED灯 普中科技stm32(stm32f1103zeb6)

    板子:普中科技stm32F1(芯片stm32f1103zet6 1 程序如下: #include "stm32f10x.h" //导入头文件typedef unsigned int ...

  4. 学习历程--普中51单片机A2--蜂鸣器实验

    今天学习了普中的蜂鸣器部分,将自己的一些学习内容记录一下. 蜂鸣器有无源蜂鸣器和有源蜂鸣器,需要注意的是"源"的意思是"震荡源".是指震荡源.也就是说,有源蜂鸣 ...

  5. 使用普中科技STM32发ZEB6的准备工作:

    1 买板子 2 安装运行环境 (1)keil5 MDK ,获取途径:通过keil官网下载(我的软件安装包.芯片包和驱动源代码等整个教程是在 普中科技论坛:www.prechin.net   找到对应板 ...

  6. STM32 F1普中开发板 TFT彩屏指针时间显示及闹钟。

    在普中RTC时钟上更改,按KEY键可更改时间.指针圆盘显示时钟,可设置闹钟. #include "stm32f10x.h" #include "led.h" # ...

  7. 普中PZ6808L-F4开发板TFTLCD显示屏使用笔记

    0x00 开发板介绍 这学期学的STM32开发,实验室里的开发板型号为PZ6808L-F4 整个板子是这样的 这块板子是F103和F407双核的,但我学的一直就是F407,所以本文所有问题只针对F40 ...

  8. 普中51-单核-A2单片机

    普中51 - 普中51 功能与使用 介绍 功能模块 CMOS是Complementary Metal Oxide Semiconductor(互补金属氧化物半导体) 通常 汉字有 16*16 个像素点 ...

  9. 51单片机学习笔记——第2天:简易门铃设计(普中51中级实验例程)

    文中绝大数代码来自普51开发板实验例程 门铃这个实验实际上就是按键和蜂鸣器的组合实验,没啥难度,唯一的用处就是为下一个实验(音乐播放器)做铺垫. 文章目录 门铃实现原理 扩展,调节"叮咚&q ...

最新文章

  1. 2021年大数据常用语言Scala(三十二):scala高级用法 样例类
  2. Outlook 2003命令行参数开关详解
  3. 最新网众 2490(XP) 客户端 去百度 去劫持 去快车
  4. 数据中心机房供电需求有哪些?存在哪些电能质量问题?
  5. 多路 IO 转接 :poll 函数
  6. 初识消息队列/RabbitMQ详解
  7. 方舟非主机服务器无限距离,方舟非专业服务器距离限制怎么解除 | 手游网游页游攻略大全...
  8. python安装后无法使用_Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)...
  9. 反射的妙用-类名方法名做参数进行方法调用实例demo
  10. 代码更换ui图片_不同人眼中的UI设计师都是什么样的?
  11. Symmetric Tree (101)
  12. 修改配置文件,编译freeswitch支持H264
  13. Power Strings POJ - 2406,字符串hash
  14. 计算机网络同传步骤,HP网络同传使用方法Word版
  15. 软考程序员-C专题(1)
  16. idea android远程调试,idea 远程调试
  17. 转. Dynamics AX 20年简史
  18. 深度学习中的几个概念
  19. 关于如何卸载联想电脑管家及Lenovo.Imcontroller相关问题
  20. java边界布局东南西北_第58节:Java中的图形界面编程-GUI

热门文章

  1. 记一次el-select远程搜索默认数据回显问题
  2. 监控服务(新增)错误日志脚本并发送DingDing|邮件通知模板
  3. 信用评分卡 (part 5 of 7)
  4. MySQL数据库安装,配置My.ini文件
  5. English Grammer-01
  6. 【图像检测】手指指尖的图像采集与检测附matlab代码
  7. Spring Cloud的熔断器
  8. Spring自动装配及自动注入
  9. The Asset used by component in XXX scene “XXX.fire“ is missing. Detailed information:
  10. centos查看DHCP租期