一、简单原理

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

二、抢答器的简单程序

可以打开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. npm包开发测试与发布
  2. MahApps.Metro
  3. 中国电子学会青少年编程能力等级测试图形化三级编程题:海底寻宝
  4. SAP RETAIL 商品主数据POS视图
  5. cameraraw预设_PS Camera Raw 导入预设以及分组
  6. Geoserver中切割离线瓦片TileLayer选项中没有900913选项(图层和图层组怎样配置TileLayers的切割选项)
  7. python3 xml 取标签显示内容_如何应用“XML+XSLT”技术分离Web表示层数据和样式
  8. django-rest-framework第一次使用使用常见问题
  9. English trip M1 - PC9 Where am I Teacher:Jade
  10. 【Echarts底层相关】
  11. win7系统控制面板在哪打开,win7电脑打开控制面板方法
  12. 32.go defer
  13. 只需3步把VSCode打造成Markdown编辑器
  14. blackduck,黑鸦binary二进制模式扫描jenkins配置
  15. 模拟计算 |“五重解读”带你玩转CO2RR描述符-科学指南针
  16. 推送本地镜像到docker私有仓库
  17. 快速下载官方网站软件
  18. 2018年前端年度工作总结
  19. 《SEO的艺术(原书第2版)》——2.6 垂直搜索引擎
  20. 3a2b递归排列java,写点关于递归的话题(一)

热门文章

  1. dbd mysql 4.046安装_perl DBI、DBD-mysql、DBD-Oracle安装
  2. intel power gadget mac_mac电脑耐用性测试,拿五年前的苹果电脑测试性能
  3. perl-操作ole,比如操作word
  4. SpringAop 流程源码阅读
  5. html picture属性,(六):picture元素
  6. zabbix根据hostid输出主机名
  7. 示例-AT 示例-语音通话
  8. 校园二手物品交易网站毕业设计
  9. Linux面试题汇总答案
  10. vue使用echart绘制全国地图,叠加图表