八路抢答器设计仿真

合集下载

八路抢答器设计(附源程序)

八路抢答器设计(附源程序)

烟台大学单片机课程设计说明书课题:八路抢答器学生姓名:学号:院系:机电汽车工程学院专业:机械设计制造及其自动化指导老师:同组成员:组长:20 年06 月07 日目录1 概述 (2)2设计任务 (2)3 系统总体方案 (3)4 硬件设计 (4)4.1 控制系统所需硬件 (4)4.2 硬件原理介绍 (4)5 软件设计 (7)5.1 软件总体设计 (7)5.2 程序流程图 (8)6 Proteus软件仿真 (12)6.1 Keil软件 (12)6.2在Proteus软件 (12)7小结 (14)8心得体会 (15)附1:源程序代码 (16)附2:参考文献 (24)1 .概述8路智能抢答器的设计现如今,各种智力知识竞赛已经成为人们的一种娱乐形式,人们在答题的过程中不仅可以享受到乐趣,还可以学到一些科学知识和生活常识。

然而在抢答过程中,单靠视觉是很难判断出哪组最先完成抢答操作。

为了辨别哪一组或哪一位选手获得答题权,必须要设计一个智能抢答控制系统——智能抢答器。

抢答器作为一种电子产品,已被人们所熟知并广泛应用于各种智力知识竞赛场合。

抢答器在竞赛中有很大用处,通过抢答器的指示灯显示,数码管显示和警示蜂鸣等手段,能准确,公正,直观地判断出第1抢答者并协助比赛的顺利进行。

但是,目前使用的抢答器大多数都采用了逻辑电路进行设计,分立元件较多,造成抢答器的成本较高。

此外一般抢答器由模拟电路,数字电路或二者结合组成,其智能化程度低,故障率高,显示简单。

现代电子技术的发展要求电子电路朝数字化,集成化方向发展,因此设计出全集成电路的多路抢答器是现代电子技术发展的要求。

2 .设计任务本设计要求学生结合现有的实际条件,以单片机为控制核心,设计一个8路智能抢答器。

要求实现的功能如下:1) 抢答器可同时供8名选手或8个代表队比赛,分别用8个按键S1~S8进行抢答。

2) 主持人可以通过智能抢答器的按键设定每道题的抢答时间和回答时间。

3) 具有清零和非法抢答控制功能,并由主持人操纵,避免选手在主持人说“开始”前提前抢答,违反规则。

八路抢答器的设计_毕业论文

八路抢答器的设计_毕业论文

摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。

但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。

作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。

本设计是以八路抢答为基本理念。

考虑到依需设定限时回答的功能,利用80C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和计数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。

用开关做键盘输出,扬声器发声提示。

同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。

关键词:80C51,LED数码管,抢答器,计时目录前言 (1)第一章绪论 (2)第二章设计要求、构思理论依据 (3)2.1设计要求 (3)2.2设计构思理论依据 (3)第三章关键器件介绍 (5)3.1数码管简介 (5)3.2555定时器简介 (8)第四章电路设计....................................................... 错误!未定义书签。

4.1抢答电路 ......................................................... 错误!未定义书签。

4.2音响电路 (15)4.3时序电路 ......................................................... 错误!未定义书签。

第五章电路实验及调试................................................. 错误!未定义书签。

数电课程设计八路智力竞赛抢答器设计

数电课程设计八路智力竞赛抢答器设计

数电课程设计八路智力竞赛抢答器设计课程设计任务书题目: 八路智力竞赛抢答器设计初始条件:◆教材:《电子线路设计·实验·测试》第三版谢自美主编华中科技大学出版社◆元器件:74LS48三片,72LS192两片,74LS279、74LS148、74LS00、74LS11、555各一片,数码管三个,发光二极管一个,开关、电阻、电容若干,面包板,导线若干◆仿真:Proteus仿真软件要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)◆多路智力竞赛抢答器功能要求:基本功能:1.设计一个智力竞赛抢答器,可同时供8名选手或8个代表队参加比赛,她们的编号分别是0、1、2、3、4、5、6、7,各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是S0、S1、S2、S3、S4、S5、S6、S7。

2.给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢答的开始。

3.抢答器具有数据锁存和显示的功能。

抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时扬声器给出音响提示。

另外,要封锁输入电路,禁止其它选手抢答。

优先抢答选手的编号一直保持到主持人将系统清零为止。

扩展功能:1.抢答器具有定时抢答的功能,且一次抢答的时间能够由主持人设定。

当节目支持人按下“开始”按钮后,要求定时器立即倒计时,并在显示器上显示,同时扬声器发出短暂的声响,声响持续时间0.5s左右。

2.参赛选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。

3.如果定时抢答的时间已到,却没有选手抢答,则本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示00.报告要求:课程设计的内容要求用A4纸打印,且页数不得少于20页。

时间安排:第20周理论设计、实验室安装调试地点安排:鉴主15楼通信实验室一指导教师签名:年月日系主任(或责任教师)签名:年月日摘要在各种智力竞赛场合,抢答器是必不可少的最公正的用具。

8路抢答器的设计与仿真_马雪涛

8路抢答器的设计与仿真_马雪涛
编码电路采用 74LS147 型 10-4 线优先(高位 优 先 )编 码 器 .当 任 意 输 入 为 低 电 平 时 ,输 出 为 相 应
图 2 开 关 阵 列 电 路
第 26 卷
图 3 触 发 锁 存 电 路
输入编号的 8421 码 (BCD 码 )的 反 码.编 码 器 对 开 关信号编码,并以 BCD 码的形式输出. 3.3.2 译 码 及 显 示 电 路
第6期
马 雪 涛 :8 路 抢 答 器 的 设 计 与 仿 真
55
图 4 译 码 及 显 示 电 路
4 电 路 的 仿 真 在 Proteus仿 真 软 件 中 将 各 单 元 模 块 连 接 好
后,点击左下角仿 真 开 关,抢 答 器 处 于 工 作 状 态.如 果有任一选手按下 按 钮,数 码 显 示 器 上 就 会 显 示 对 应选手的号码,同时 提 示 音 电 路 发 出 “嘀、嘀、嘀 …” 的声音;一轮抢答 结 束 后,主 持 人 按 下 清 除 按 钮,数 码 显 示 器 熄 灭 ,提 示 音 电 路 停 止 工 作 ,抢 答 器 处 于 工 作 状 态 ,等 待 下 一 轮 抢 答 .
马雪涛
(天津工业大学 计算机科学与软件学院,天津 300387)
摘 要:在明确抢答器电路设计要求的基础上,详细分析了其开关阵列电 路、触 发 锁 存 与 解 锁 电 路、编 码 电 路、 译码及显示电路、提示音电路的实现过程.电路仿真结果表明,所设计电路满足 要 求.根 据 设 计 好 的 电 路 进 行 仿 真 , 能 极 大 地 简 化 硬 件 调 试 工 作 ,节 省 制 作 电 路 板 的 时 间 .
2014 年 12 月 第 26 卷 第 6 期
石家庄职业技术学院学报 Journal of Shijiazhuang Vocational Technology Institute

完整版数电课程设计八路抢答器

完整版数电课程设计八路抢答器

数字电子技术课程设计报告八路智力竞赛抢答器的设计专业:电子信息科学与技术班级:2012级1班姓名:学号:指导老师:电子通信与物理学院日期: 2015 年 1 月 10 日指导教师评语1设计要求在当代社会中企业、学校和电视台等单位常举办各种智力竞赛, 抢答记分器是必要设备。

过去在举行的各种竞赛中我们经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。

人们于是开始寻求一种能不依人的主观意愿来判断的设备来规范比赛。

因此,为了克服这种现象的惯性发生人们利用各种资源和条件设计出很多的抢答器,从最初的简单抢答按钮,到后来的显示选手号的抢答器,再到现在的数显抢答器,其功能在一天天的趋于完善不但可以用来倒计时抢答,还兼具报警等等功能,有了这些更准确地仪器使得我们的竞赛变得更加精彩纷呈,也使比赛更突显其公平公正的原则。

在这一背景下本文利用74LS系列芯片设计了一种有效、便捷的八路数字抢答器。

设计要求如下:利用数字电路设计一个八路抢答器,允许八路参加,并具有锁定功能,用LED显示最先抢答的队号码,系统设置外部清除键,按动清除键,LED 显示器自动清零灭灯。

数字显示功能:数字抢答器定时为30S,启动开启键以后要求Ⅰ)定时开始;Ⅱ)扬声器要短暂报警;Ⅲ)发光二极管亮灯;如果在30S内抢答有效,计时结束,30S内抢答无效,发光二极管灯灭。

2 设计任务本次描述的八路抢答器功能指标为:设计一个能支持八路抢答的智力竞赛抢答器;主持人按下开始抢答的按键后,有短暂的报警声提示抢答人员抢答开始且指示灯亮表示抢答进行中;在开始抢答后数码管显示30秒倒计时;有抢答人员按下抢答键后,在数码管上显示抢答成功人员1的编号,倒计时暂停,同时后续抢答人员的抢答将无效;当主持人再次按下按键回到复位状态,倒计时的数码管保持显示30,显示人员编号的数码管灭,指示灯灭。

本次设计的电路由包括抢答电路、定时电路、报警电路在内的三部分电路组成。

八路抢答器设计报告(正确)

八路抢答器设计报告(正确)

八路抢答器设计报告(正确)Multisim 10课程设计报告设计名称:八路抢答器设计学院:班级:姓名:学号:指导教师:完成日期:多路抢答器在各种竞赛场合、电视台的娱乐节目中得到了广泛应用,它能根据参赛选手的请求,很好的区分选手抢答的先后顺序并显示选手的编号设计要求:1、多路抢答器可供不少于8名参赛选手使用2、每名参赛选手各有一个抢答按钮,在主持人用按钮清零,并发现抢答指令后,实行抢答3、电路配有LED数码显示,能显示优先抢答的选手编号,同时配有语音提示电路。

数码显示和语音提示可由主持人用清除按钮解除;4、电路对参赛选手的动作先后有较强的分辨能力,如分辨率在15ms以内。

一、总体设计框图如下图所示为总体方框图。

其工作原理为:接通电源后,主持人将开关按下即为“清零”状态,清零指示灯灭,抢答器处于禁止状态,编号显示器灭灯;主持人将开关断开即为“开始”状态,宣布“开始”,指示灯亮,抢答器工作,当有人抢答时,蜂鸣器发出声响并且灯不断闪烁。

选手进行抢答时,抢答器将完成:优先判断、编号锁存、编号显示、蜂鸣器鸣叫及灯闪烁的提示等操作。

当一轮抢答之后,禁止二次抢答。

如果再次抢答必须由主持人再次操作“清除”和“开始”状态开关。

具体的说明如下:1、抢答器按钮就是改变输入的电平信号,从原理图可以看出这里设计的是是低电平有效。

2、优先编码电路用来把输入的高低电平信号编码,74LS148优先编码器及8—3编码器,输出3位2进制数,以代表不同的低电平信号。

抢答按钮(8个)优先编码电路(74ls138)锁存器(D 触发器)数码显示器主持人控制开关控制电路报警显示电路3、锁存器用的是D触发器,因为D触发器结构和功能都比较简单,方便使用。

D触发器使用4个,第四个除用来输出2进制数的最高位外,还用于控制信号的锁定,即触发或锁定触发器的工作状态。

4、数码显示器用带译码功能的数码管。

使用简单、方便。

5、主持人控制开关就是一个开关,用来清零和开始工作,设置了一个指示灯,当指示灯亮表示开始,灭了表示开关闭合主持人清零。

基于STM32的八路抢答器仿真

基于STM32的⼋路抢答器仿真 基于STM32的⼋路抢答器仿真⼀、硬件说明: 最⼩系统采⽤了STM32F4xx系列的,PB8~15分别连接了⼋个按钮,⼋个按钮模拟⼋位选⼿抢答,PE8~15连接了⼋盏LED灯,按钮采⽤上拉电阻的,将按钮作为中断源,所有中断全设置为同⼀优先级,设置的低电平触发模式;触发中断后,对应的灯会闪烁。

⼆Proteus仿真原理图:三、代码部分:3.1主函数:1 #include "stm32f4xx.h"2 #include "delay.h"3 #include "led.h"4 #include "exti.h"5char led_status = 0; //声明⼀个表⽰LED灯状态的变量6int led_count = 0; //声明⼀个表⽰LED按下次数的变量7 unsigned char led_now = 0; //声明⼀个当前按下的LED灯变量89void main(void)10 {11 led_init(); //初始化LED控制管脚12 exti_init(); //初始化按键检测管脚13while(1){ //循环体14if (led_count > 1){ //判断按键按下次数15continue;16 }else if (led_count == 1){ //第⼀名17 flash_4Hz(led_now);18 }1920 }21 }3.2 led函数:1 #include "led.h"2 #include "delay.h"3/*********************************************************************************************4* 名称:led_init5* 功能:初始化LED对应的GPIO6* 参数:⽆7* 返回:⽆8* 修改:9* 注释:10*********************************************************************************************/11void led_init(void) //初始化led12 {13 GPIO_InitTypeDef GPIO_InitStructure;1415 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); //使能GPIO时钟1617 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_8 | GPIO_Pin_9 |18 GPIO_Pin_14 | GPIO_Pin_15 | GPIO_Pin_10 | GPIO_Pin_11; //选中引脚1920 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出模式21 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出22 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //输出速度2MHz23 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //⽆上下拉24 GPIO_Init(GPIOE, &GPIO_InitStructure); //根据上述参数配置GPIOE0、GPIOE1、GPIOE2、GPIOE325 GPIO_SetBits(GPIOE, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_8 | GPIO_Pin_9 |26 GPIO_Pin_14 | GPIO_Pin_15 | GPIO_Pin_10 | GPIO_Pin_11);27 }2829/*********************************************************************************************30* 名称:turn_off31* 功能:置引脚⾼电平,关闭LED32* 参数:led33* 返回:⽆34* 修改:35* 注释:36*********************************************************************************************/37void turn_off(unsigned char led){ //关闭led38if(led & D1) //判断LED选择39 GPIO_SetBits(GPIOE, GPIO_Pin_8); //PE0置引脚⾼电平,关闭D1 40if(led & D2)41 GPIO_SetBits(GPIOE, GPIO_Pin_9); //PE1置引脚⾼电平,关闭D2 42if(led & D3)43 GPIO_SetBits(GPIOE, GPIO_Pin_10); //PE2置引脚⾼电平,关闭D3 44if(led & D4)45 GPIO_SetBits(GPIOE, GPIO_Pin_11); //PE3置引脚⾼电平,关闭D4 4647if(led & D5) //判断LED选择48 GPIO_SetBits(GPIOE, GPIO_Pin_12); //PE0置引脚⾼电平,关闭D1 49if(led & D6)50 GPIO_SetBits(GPIOE, GPIO_Pin_13); //PE1置引脚⾼电平,关闭D2 51if(led & D7)52 GPIO_SetBits(GPIOE, GPIO_Pin_14); //PE2置引脚⾼电平,关闭D3 53if(led & D8)54 GPIO_SetBits(GPIOE, GPIO_Pin_15); //PE3置引脚⾼电平,关闭D455 }5657/*********************************************************************************************58* 名称:turn_on59* 功能:置引脚低电平,打开LED60* 参数:led61* 返回:⽆62* 修改:63* 注释:64*********************************************************************************************/65void turn_on(unsigned char led){ //打开led66if(led & D1) //判断LED选择67 GPIO_ResetBits(GPIOE, GPIO_Pin_8); //PE0置引脚低电平,打开D1 68if(led & D2)69 GPIO_ResetBits(GPIOE, GPIO_Pin_9); //PE1置引脚低电平,打开D2 70if(led & D3)71 GPIO_ResetBits(GPIOE, GPIO_Pin_10); //PE2置引脚低电平,打开D3 72if(led & D4)73 GPIO_ResetBits(GPIOE, GPIO_Pin_11); //PE3置引脚低电平,打开D4 7475if(led & D5) //判断LED选择76 GPIO_ResetBits(GPIOE, GPIO_Pin_12); //PE0置引脚低电平,打开D1 77if(led & D6)78 GPIO_ResetBits(GPIOE, GPIO_Pin_13); //PE1置引脚低电平,打开D2 79if(led & D7)80 GPIO_ResetBits(GPIOE, GPIO_Pin_14); //PE2置引脚低电平,打开D3 81if(led & D8)82 GPIO_ResetBits(GPIOE, GPIO_Pin_15);83 }84/*********************************************************************************************85* 名称:get_led_status86* 功能:获取LED状态87* 参数:88* 返回:led_status--bit0-bit3分别表⽰4路LED灯的状态,bit4-bit6分别表⽰RGB灯的状态89* 修改:90* 注释:91*********************************************************************************************/92 unsigned char get_led_status(void){ //获取led状态93 unsigned char led_status = 0;94if(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_8)) //判断PE0引脚电平95 led_status |= D1; //⾼电平将led_status bit0置196else97 led_status &= ~D1; //低电平将led_status bit0置09899if(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_9)) //判断PE1引脚电平100 led_status |= D2; //⾼电平将led_status bit1置1101else102 led_status &= ~D2; //低电平将led_status bit1置0103104if(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_10)) //判断PE2引脚电平105 led_status |= D3; //⾼电平将led_status bit2置1106else107 led_status &= ~D3; //低电平将led_status bit2置0108109if(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_11)) //判断PE3引脚电平110 led_status |= D4; //⾼电平将led_status bit3置1111else112 led_status &= ~D4; //低电平将led_status bit3置0113114if(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_12)) //判断PE0引脚电平115 led_status |= D5; //⾼电平将led_status bit0置1116else117 led_status &= ~D5; //低电平将led_status bit0置0118119if(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_13)) //判断PE1引脚电平120 led_status |= D6; //⾼电平将led_status bit1置1121else122 led_status &= ~D6; //低电平将led_status bit1置0123124if(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_14)) //判断PE2引脚电平125 led_status |= D7; //⾼电平将led_status bit2置1126else127 led_status &= ~D7; //低电平将led_status bit2置0128129if(GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_15)) //判断PE3引脚电平130 led_status |= D8; //⾼电平将led_status bit3置1131else132 led_status &= ~D8; //低电平将led_status bit3置0133return led_status; //返回led_status134 }135136137void flash_4Hz(unsigned char led){ //4Hz的闪烁138 turn_on(led);139 delay_count(900); //由计算可得,delay_count内的值为7200时,延时为1秒140 turn_off(led);141 delay_count(900);142 }3.3 key函数:1 #include "key.h"23/*********************************************************************************************4* 名称:key_init5* 功能:按键管脚初始化6* 参数:⽆7* 返回:⽆8* 修改:⽆9*********************************************************************************************/10void key_init(void) //初始化按键11 {12 GPIO_InitTypeDef GPIO_InitStructure; //定义⼀个GPIO_InitTypeDef类型的结构体13 RCC_AHB1PeriphClockCmd( K1_CLK | K2_CLK |K3_CLK | K4_CLK |14 K5_CLK | K6_CLK |K7_CLK | K8_CLK , ENABLE); //开启KEY相关的GPIO外设时钟1516 GPIO_InitStructure.GPIO_Pin = K1_CLK | K2_CLK |K3_CLK | K4_CLK |17 K5_CLK | K6_CLK |K7_CLK | K8_CLK; //选择要控制的GPIO引脚18 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //设置引脚的输出类型为推挽输出19 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //设置引脚模式为输⼊模式20 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //设置引脚为上拉模式21 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //设置引脚速率为2MHz2223 GPIO_Init(K1_PORT, &GPIO_InitStructure); //初始化GPIO配置24 GPIO_Init(K2_PORT, &GPIO_InitStructure); //初始化GPIO配置25 GPIO_Init(K3_PORT, &GPIO_InitStructure); //初始化GPIO配置26 GPIO_Init(K4_PORT, &GPIO_InitStructure); //初始化GPIO配置2728 GPIO_Init(K5_PORT, &GPIO_InitStructure); //初始化GPIO配置29 GPIO_Init(K6_PORT, &GPIO_InitStructure); //初始化GPIO配置30 GPIO_Init(K7_PORT, &GPIO_InitStructure); //初始化GPIO配置31 GPIO_Init(K8_PORT, &GPIO_InitStructure); //初始化GPIO配置32 }3334/*********************************************************************************************35* 名称:get_key_status36* 功能:按键管脚初始化37* 参数:⽆38* 返回:key_status39* 修改:40*********************************************************************************************/41char get_key_status(void) //获取按键状态42 {43char key_status = 0;44if(GPIO_ReadInputDataBit(K1_PORT,K1_PIN) == 0) //判断PB12引脚电平状态45 key_status |= K1_PREESED; //低电平key_status bit0位置146if(GPIO_ReadInputDataBit(K2_PORT,K2_PIN) == 0) //判断PB13引脚电平状态47 key_status |= K2_PREESED; //低电平key_status bit1位置148if(GPIO_ReadInputDataBit(K3_PORT,K3_PIN) == 0) //判断PB14引脚电平状态49 key_status |= K3_PREESED; //低电平key_status bit2位置150if(GPIO_ReadInputDataBit(K4_PORT,K4_PIN) == 0) //判断PB15引脚电平状态51 key_status |= K4_PREESED; //低电平key_status bit3位置15253if(GPIO_ReadInputDataBit(K5_PORT,K5_PIN) == 0) //判断PB12引脚电平状态54 key_status |= K5_PREESED; //低电平key_status bit0位置155if(GPIO_ReadInputDataBit(K6_PORT,K6_PIN) == 0) //判断PB13引脚电平状态56 key_status |= K6_PREESED; //低电平key_status bit1位置157if(GPIO_ReadInputDataBit(K7_PORT,K7_PIN) == 0) //判断PB14引脚电平状态58 key_status |= K7_PREESED; //低电平key_status bit2位置159if(GPIO_ReadInputDataBit(K8_PORT,K8_PIN) == 0) //判断PB15引脚电平状态60 key_status |= K8_PREESED;61return key_status;62 }3.4 exit函数:1 #include "exti.h"2 #include "key.h"3 #include "delay.h"4 #include "led.h"5extern char led_status;6extern int led_count;7extern unsigned char led_now;8/*********************************************************************************************9* 名称:exti_init10* 功能:外部中断初始化11* 参数:⽆12* 返回:⽆13* 修改:⽆14*********************************************************************************************/15void exti_init(void) //中断初始化16 {17 NVIC_InitTypeDef NVIC_InitStructure;18 EXTI_InitTypeDef EXTI_InitStructure;19 key_init(); //按键引脚初始化2021 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); //使能SYSCFG时钟22 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource8); //PB12 连接到中断线1223 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource9); //PB13 连接到中断线1324 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource10); //PB14 连接到中断线1425 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource11); //PB15 连接到中断线1526 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource12); //PB12 连接到中断线1227 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource13); //PB13 连接到中断线1328 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource14); //PB14 连接到中断线1429 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource15); //PB15 连接到中断线153031 EXTI_InitStructure.EXTI_Line = EXTI_Line8 | EXTI_Line9 | EXTI_Line10 | EXTI_Line11 |32 EXTI_Line12 | EXTI_Line13 | EXTI_Line14 | EXTI_Line15; //LINE14、LINE1533 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断事件34 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发35 EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能LINE14、LINE1536 EXTI_Init(&EXTI_InitStructure); //按上述参数配置3738 NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //外部中断15-1039 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级040 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //⼦优先级141 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道42 NVIC_Init(&NVIC_InitStructure); //按上述配置初始化4344 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //外部中断15-1045 NVIC_Init(&NVIC_InitStructure);4647 }48/*********************************************************************************************49* 名称:EXTI15_10_IRQHandler50* 功能:外部中断15-10中断处理函数51* 参数:⽆52* 返回:⽆53* 修改:54* 注释:55*********************************************************************************************/5657void EXTI9_5_IRQHandler(void) //中断程序58 {59if(get_key_status() == K1_PREESED){ //检测K1被按下60 delay_count(500); //延时消抖61if(get_key_status() == K1_PREESED){ //确认K1被按下62while(get_key_status() == K1_PREESED); //等待按键松开63 ++led_count;64 led_now = D1;65 }66 }67if(get_key_status() == K2_PREESED){ //检测K2被按下68 delay_count(500); //延时消抖69if(get_key_status() == K2_PREESED){ //确认K2被按下70while(get_key_status() == K2_PREESED); //等待按键松开71 ++led_count;72 led_now = D2;73 }74 }7576if(EXTI_GetITStatus(EXTI_Line8)!=RESET)77 EXTI_ClearITPendingBit(EXTI_Line8); //清除LINE12上的中断标志位 78if(EXTI_GetITStatus(EXTI_Line9)!=RESET)79 EXTI_ClearITPendingBit(EXTI_Line9); //清除LINE13上的中断标志位 8081 }82838485void EXTI15_10_IRQHandler(void) //中断程序86 {8788if(get_key_status() == K3_PREESED){ //检测K3被按下89 delay_count(500); //延时消抖90if(get_key_status() == K3_PREESED){ //确认K3被按下91while(get_key_status() == K3_PREESED); //等待按键松开92 ++led_count;93 led_now = D3;94 }95 }96if(get_key_status() == K4_PREESED){ //检测K4被按下97 delay_count(500); //延时消抖98if(get_key_status() == K4_PREESED){ //确认K4被按下99while(get_key_status() == K4_PREESED); //等待按键松开100 ++led_count;101 led_now = D4;102 }103 }104if(get_key_status() == K5_PREESED){ //检测K1被按下105 delay_count(500); //延时消抖106if(get_key_status() == K5_PREESED){ //确认K1被按下107while(get_key_status() == K5_PREESED); //等待按键松开108 ++led_count;109 led_now = D5;110 }111 }112if(get_key_status() == K6_PREESED){ //检测K2被按下113 delay_count(500); //延时消抖114if(get_key_status() == K6_PREESED){ //确认K2被按下115while(get_key_status() == K6_PREESED); //等待按键松开116 ++led_count;117 led_now = D6;118 }119 }120if(get_key_status() == K7_PREESED){ //检测K1被按下121 delay_count(500); //延时消抖122if(get_key_status() == K7_PREESED){ //确认K1被按下123while(get_key_status() == K7_PREESED); //等待按键松开124 ++led_count;125 led_now = D7;126 }127 }128if(get_key_status() == K8_PREESED){ //检测K2被按下129 delay_count(500); //延时消抖130if(get_key_status() == K8_PREESED){ //确认K2被按下131while(get_key_status() == K8_PREESED); //等待按键松开132 ++led_count;133 led_now = D8;134 }135 }136if(EXTI_GetITStatus(EXTI_Line10)!=RESET)137 EXTI_ClearITPendingBit(EXTI_Line10); //清除LINE12上的中断标志位138if(EXTI_GetITStatus(EXTI_Line11)!=RESET)139 EXTI_ClearITPendingBit(EXTI_Line11); //清除LINE13上的中断标志位140if(EXTI_GetITStatus(EXTI_Line12)!=RESET)141 EXTI_ClearITPendingBit(EXTI_Line12); //清除LINE12上的中断标志位142if(EXTI_GetITStatus(EXTI_Line13)!=RESET)143 EXTI_ClearITPendingBit(EXTI_Line13); //清除LINE13上的中断标志位144if(EXTI_GetITStatus(EXTI_Line14)!=RESET)145 EXTI_ClearITPendingBit(EXTI_Line14); //清除LINE14上的中断标志位146if(EXTI_GetITStatus(EXTI_Line15)!=RESET)147 EXTI_ClearITPendingBit(EXTI_Line15); //清除LINE15上的中断标志位148 }3.5 延时函数:1 #include "delay.h"23/*********************************************************************************************4* 名称:delay_count5* 功能:计数延时6* 参数:times------计数数值7* 返回:⽆8* 修改:⽆9*********************************************************************************************/10void delay_count(uint32_t times)11 {12 uint32_t temp = 0; //定义临时变量并初始化1314while(times --){ //times⾃减并判断是否为空15 temp = 1000; //赋值100016while(temp --); //temp⾃减并判断是否为空17 }18 }总结: 本实验作为最基本的抢答器,只实现了最基本的抢答,没有扩展复位按键,LCD液晶显⽰,还有定时器计时等等;这只涉及最简单的外部中断。

8路抢答器设计

8路抢答器设计抢答器被广泛应用于交互式教学、竞赛、互动游戏等场合。

本文介绍一种基于单片机的8路抢答器设计方案。

1. 系统功能本设计实现以下功能:1. 设定问题和倒计时时间;2. 按下抢答器键后,选手答题;3. 答对或答错均计分,答错扣分;4. 显示当前排名和得分情况;5. 比赛结束后,显示最终排名和得分情况。

2. 系统硬件本设计采用STM32F103C8T6单片机作为主控制器,其主要特点是成本低廉、易于学习和上手。

硬件主要包括以下部分:1. 单片机板:采用STM32F103C8T6开发板,外接LCD显示屏;2. 抢答器:包括8个按键和8个LED指示灯,用于选手抢答和显示选手答题情况;3. 扫描电路:对抢答器按键进行扫描,获取选手输入。

本设计的软件分为如下模块:1. 初始化模块:对单片机系统进行初始化,包括外部时钟、GPIO端口等的配置;2. 显示模块:用于显示问题、倒计时、选手答题情况和最终排名和得分情况;3. 时钟模块:用于倒计时和计时,倒计时结束后停止答题;4. 抢答模块:用于接收选手抢答信息,并根据答题情况进行得分;5. 判断模块:用于判断选手答题是否正确;6. 得分模块:用于计算选手得分;7. 排名模块:用于计算选手最终得分和排名。

4. 抢答器操作流程5. 总结本设计实现了一种基于单片机的8路抢答器功能,并且硬件成本相对较低,易于制作。

软件上分模块化设计,便于扩展和修改。

但是由于时间和技术限制,还存在一些功能没有完善,比如数据记录、多轮比赛等功能。

此外,对于选手的选手答题有些限制,只能按照先后顺序抢答,如果需要加入随机抢答等功能,需要进行扩充。

八路抢答器设计方案

八路抢答器设计方案3.1设计要点根据控制系统的工作原理和执行装置,可以将系统设计分为硬件和软件两大部分。

硬件设计部分,包括编写电路原理图、合理选择元器件、焊接各个元器件,然后对硬件性能进行调试、测试,以达到设计要求。

软件设计部分,首先在设计之前完成系统总框图和确定各个功能模块,然后进行具体设计,包括各模块的流程图,选择合适的编程语言和软件应用程序,进行编程设计等;最后是通过软件对程序进行调试、测试,以及仿真,以达到性能的最优化。

下面是软硬件设计方法确定的。

软件设计的方法与开发环境的选取有着直接的关系,本系统由于是采用51系列单片机,因此使用Keil C 语言进行开发。

此编程工具相比汇编语言具有结构化、适用围大、可移植性好等特点。

本系统软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进行组合与调整,经过调试后,可以进行仿真测试,已达到设计功能要求。

为配合软件的灵活设计,硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。

硬件电路的设计最重要的选择用于控制的单片机,再确定与之配套的外围芯片,使所设计的系统既经济又高性能。

硬件电路设计可以在焊接元器件之前画出详细电路图,标出芯片的型号、器件参数值,根据电路图在仿真软件上进行调试,发现设计错误时立即修改,高效,准确地完成硬件设计。

3.2 硬件设计本系统采用单片机作为整个控制核心。

控制系统主要由:显示模块、控制模块、报警模块、抢答模块组成。

工作时,该系统通过矩阵键盘输入抢答信号,经单片机的处理后,输出控制信号,利用一个4位数码管来完成显示功能并伴随蜂鸣器报警,用按键来让选手进行抢答,在数码管上显示哪一组先答题,从而实现整个抢答过程。

当主持人按下开始键时,向单片机P3.2引脚输入一个低电平信号,表示整个电路开始工作,此时数码管前两位显示选手编号(无人抢答显示00),后两位显示倒计时剩余时间。

若在25秒仍然无人抢答,蜂鸣器在最后5秒发出连续报警,提示抢答时间快要结束;若在30秒有人抢答,并且抢答成功,则将选手编号显示在数码管前两位上,后两位显示抢答剩余时间,同时蜂鸣器发出一声报警,提示其他没有抢答的选手此题已被人抢答成功。

8路抢答器(数字电路)

课程设计论文课程设计名称:数字电路课程设计课程设计题目:多路智力抢答系统的设计摘要:本设计介绍了一种用74 系列常用集成电路设计的数码显示八路抢答器的电路组成、设计思路及功能。

该抢答器除具有基本的抢答功能外,还具有定时、计时和报警功能。

主持人通过时间预设开关预设供抢答的时间,系统将完成自动倒计时。

若在规定的时间内有人抢答,则计时将自动停止,抢答电路数码管上显示选手编号。

蜂鸣器发生报警,二极管发光,定时电路显示倒计时时间。

若在规定的时间内无人抢答,定时电路显示00,同时系统中的蜂鸣器将发响,提示主持人本轮抢答无效,实现报警功能。

Multisim 软件结合了直观的捕捉和功能强大的仿真,能够快速、轻松、高效地对电路进行设计和验证。

凭借Multisim,可以立即创建具有完整组件库的电路图,并利用工业标准SPICE 模拟器模仿电路行为。

本设计就是利用Multisim 软件进行电路图的绘制并进行仿真。

关键词:八路, 抢答器, 设计,定时,计时,报警一、实验目的1. 熟悉智力竞赛抢答器的工作原理掌握抢答电路、优先编码电路、锁存电路、定时电路、报警电路、时序控制电路、译码电路、显示电路及报警电路的设计方法。

二、实验任务基本功能1. 设计一个多路智力竞赛抢答器,同时供8 个选手参赛,编号分别为0 到7,每个用一抢答按键。

2.给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢答的开始。

3.抢答器具有数据锁存和显示的功能。

抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED 数码管上显示出选手的编号,同时蜂鸣器给出音响提示。

此外,要封锁输入电路,禁止其他选手抢答。

优先抢答选手的编号一直保持到主持人将系统清零为止。

三、扩展功能:1. 具有定时抢答功能,可由主持人设定抢答时间。

当抢答开始后,定时器开始倒计时,并显示在LED 上,同时扬声器发声提醒。

2. 选手在规定时间内抢答有效,停止倒计时,并将倒计时时间显示在LED 上,同时报警。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学 号: 2008961536 湘潭大学

课 程 设 计

题 目 数字式竞赛抢答器 学 院 兴湘学院 专 业 电子信息工程 班 级 08电子信息工程 姓 名 刘妮 指导教师 何凤庭 - 1 -

摘 要 74系列常用集成电路设计的八路数显抢答器的电路主要由五部分组成:数字抢答电路、译码显示电路、可预置时间的定时电路、报警电路以及秒脉冲产生电路。其中数字抢答电路包括了编码电路和锁存电路,实现了对信号编码和锁存的功能,防止二次抢答的问题;译码显示电路能将抢答到的选手编号直观地显示出来;在定时电路中,主持人可通过时间预设开关预设供抢答的时间,且系统将完成自动倒计时;报警电路则起到声报警功能,当在规定的时间内无人抢答时,系统中的蜂鸣器将发出警报声,提示主持人本轮抢答无效,实现报警功能;秒脉冲产生电路用于为定时电路提供一个频率为1Hz的标准时钟信号。该抢答器不仅具有智能化的特点,同时采用数字式显示显得很直观,使得运用范围较广且很方便。

关键词:抢答器 编码 锁存 - 2 -

1原理电路的设计 1.1基于74系列集成电路的抢答器设计 1.1.1设计原理 总体方框图如图2所示:

图2 抢答器原理框图 电路分为主体电路和拓展电路。主体电路完成基本强大功能,即开始抢答当选手按抢答按钮时,能显示选手的编号,同时能封锁输入电路。拓展电路完成定时抢答功能。

1.1.2优缺点 该电路设计较为复杂,但原理简单,思路明确,而且价格便宜。其中所用的元件正好是我们在本学期学过的,可以让我们进一步熟悉其功能。 经过综合分析,我决定使用第三种方案作为我的设计方案。

1.2单元电路设计 - 3 -

1.2.1抢答电路设计 如图3所示为抢答电路图。电路选用优先编码器 74LS148 和锁存器 74LS297 来完成。该电路主要完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号(显示电路采用七段数字数码显示管);二是禁止其他选手按键,其按键操作无效。工作过程:开关S置于"清除"端时,RS触发器的 R、S端均为0,4个触发器输出置0,使74LS148的优先编码工作标志端=0,使之处于工作状态。当开关S置于"开始"时,抢答器处于等待工作状态,当有选手将抢答按键按下时(如按下S5),74LS148的输出经RS锁存后,CTR=1,RBO =1,七段显示电路74LS48处于工作状态,4Q3Q2Q=101,经译码显示为“5”。此外,CTR=1,使74LS148 优先编码工作标志端=1,处于禁止状态,封锁其他按键的输入。当按键松开即按下时,74LS148的 此时由于仍为CTR=1,使优先编码工作标志端=1,所以74LS148仍处于禁止状态,确保不会出二次按键时输入信号,保证了抢答者的优先性。如有再次抢答需由主持人将S开关重新置“清除”然后再进行下一轮抢答。

图3 抢答电路图 1.2.2定时电路设计

如图4为定时电路。该部分主要由555定时器秒脉冲产生电路、十进制同步加减计数器74LS192减法计数电路、74LS48译码电路和2个7段数码管即相关电路组成。 - 4 -

具体电路如图3-1所示。两块74LS192实现减法计数,通过译码电路74LS48显示到数码管上,其时钟信号由时钟产生电路提供。74192的预置数控制端实现预置数,由节目主持人根据抢答题的难易程度,设定一次抢答的时间,通过预置时间电路对计数器进行预置,计数器的时钟脉冲由秒脉冲电路提供。按键弹起后,计数器开始减法计数工作,并将时间显示在共阴极七段数码显示管DPY_7-SEG 上,当有人抢答时,停止计数并显示此时的倒计时时间;如果没有人抢答,且倒计时时间到时, 输出低电平到时序控制电路,控制报警电路报警,同时以后选手抢答无效。

图4 定时电路图 1.2.3报警电路设计

报警电路图如图5所示,其中555定时器构成多谐振荡器。其输出信号经三极管驱动扬声器。PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。 - 5 -

图5 报警电路图 1.2.4时序控制电路设计 时序控制电路如图6所示。若当倒计时结束时依然无人抢答,则BO2输出低电平,封锁两个与非门,使脉冲信号不能输入,计时停止;抢答器输入使能端被封锁,无法再抢答。若有一队抢答,则CTR输出高电平,经过非门变为低电平,封锁两个与非门,使脉冲信号不能输入,计时停止;抢答器输入使能端被封锁,无法再抢答。

图6 时序控制电路 1.3整体电路设计及工作原理 整体电路如图7所示 - 6 - 图7 整体电路图 整体电路分为抢答电路,定时电路,报警电路,脉冲发生电路。抢答电路完成基本的抢答功能,采用74ls148进行编码,74ls279进行锁存。定时电路采用74ls192,接成减数计数。报警电路用555芯片接成多谐振荡器,它的控制信号为定时电路高位片的借位信号。脉冲发生电路也用555芯片接成多谐振荡器,频率为1HZ。

1.4主要参数计算 脉冲发生电路: HZCRRtf1)2(7.011121 (公式1)

取:151RKΩ 682RKΩ 得:1C10F

报警电路: KHZCRRtf4)2(7.011243 - 7 -

取:103RKΩ 124RKΩ 得:2C10F 2电路的仿真

2.1 抢答电路的仿真 抢答电路的仿真如图8所示:

图8 抢答电路仿真图 此电路在仿真过程中需要注意在七段数码管和7448之间加上拉电阻,否则七段数码管无法显示。其他功能满足要求。 开关接地时灭灯,开关打开时开始抢答。当有一队抢答后,其他队伍抢答无效,满足设计要求。 - 8 -

2.2 定时电路的仿真 定时电路仿真图如图9所示:

图9 定时电路仿真图 开关闭合时置数30,开关打开时开始倒数计时,到00后停止,满足设计要求。电路中加入了一个非门,是为了让抢答后,计数立即停止,不会因为脉冲多计一个数。

2.3 脉冲发生电路的仿真 脉冲发生电路仿真图如图10所示:

U14ABCDEFGCKU157448NA7B1C2D6OA13OD10OE9OF15OC11OB12OG14~LT3~RBI5~BI/RBO4R19560ΩR20560ΩR21560ΩR22560ΩR23560ΩR24560ΩR25560ΩU16ABCDEFG

CK

U177448N

A7B1C2D6OA13OD10OE9OF15OC11OB12OG14~LT3~RBI5~BI/RBO

4

R26560ΩR27560ΩR28560ΩR29560ΩR30560ΩR31560ΩR32560Ω

U1874LS192D

A15B1C10D9UP5QA3QB2QC6QD7DOWN4~LOAD11~BO13~CO12CLR

14

U1974LS192D

A15B1C10D9UP5QA3QB2QC6QD7DOWN4~LOAD11~BO13~CO12CLR

14

VCC5V

75363534333231302928272625242322212019181716151413121110987654321

XFG1R110kΩ

VCC

J2Key = A

39

0

U21A74LS00D37

U1A74LS00D

38

4041

0 - 9 - 图10 脉冲发生电路仿真图 为了便于仿真,我将电阻的参数改小,以便让仿真软件能够仿真出波形,波形图如图11所示:

图11 仿真波形 - 10 -

2.4 报警电路的仿真 报警电路的仿真如图12所示:

图12 报警电路仿真图 图中4号端可以控制报警电路的开关,条形管显示报警声的大小。 - 11 -

3性能测试数据 3.1 抢答电路 主持人开关接地时灭灯,开关打开时可以抢答。第一个队伍抢答后,其余队伍抢答无效。

3.2 定时电路 开关闭合时置数30,开关打开时开始倒数计时,到00后停止。

3.3 脉冲发生电路 能产生频率为1HZ的方波。

3.4 报警电路 当计时停止时,能产生频率为4KHZ的报警声,并能被主持人的开关控制。

3.5 综合分析 电路基本上能满足要求,此次设计成功。但此电路只是在仿真上成功,在实际制作时可能还会遇到其他问题,需要进一步解决。 - 12 -

4主要芯片参数 4.1 74LS192引脚排列及功能表

图4-3 74LS192引脚排列

图13 表1

4.2 74LS279引脚排列

图14 4.3 74LS48引脚排列及功能表

图15

CR LD CPU CPD 功能 1 x x x 清零 0 1 x x 置数 0 1 1 1 加计数器 0 1 1 1 减计数器

相关文档
最新文档