基于单片机的智能抢答器的设计与制作毕业论文(编辑修改稿)内容摘要:
如何去除抖动,也 就是消除在按键过程中产生的“毛刺” 现象。 常用的去抖动的方法有两种:硬件方法和软件方法。 单片机设计中常用软件法,因此,对于硬件方法我们在此不做介绍。 软件去除抖动其实很简 单, 这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺”脉冲一般持续时间短,约为几 ms,而我们按键的时间一般远远大于这个时间 ,所以当单片机检测到有按键动静(按键按下或释放)后再延时一段时间 (这里我们取 10ms)后再判断此电平是否保持原状态 ,如果是则为有效按键,否则无效。 不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。 当然,实际应用中,对按键的要求也是千差万别,要根据不同的需要来编制处理程序。 计分显示电路设计 在单片机的应用系统中,显示器是最常见的输 出设备,而数码管则是最常用到的工具。 数码管发光原理分两种情况:共阴极型 a、 b、 c、 d、 e、 f、 g 各引脚输入高电平有效。 只要哪个引脚输入为高电平,对应的二极管就会发亮;共阳极型结构数码管的 a、 b、c、 d、 e、 f、 g 各引脚输入低电平有效。 只要哪个引脚输入低电平,对应的二极管就会发亮。 通过点亮不同的发光段可组成不同的字形。 输入到数码管 dp 、 g、 f、 e、 d、 c、b、 a 的二进制码称为字段码(或称字形码),数码管显示的结果为字形。 表 21是显示字形与共阳极和共阴极两种接法的字段码对应关系。 表 21 显示字形 字段码对应关系 (字体 ) 显示字型 共阳极段选码 共阴极段选码 0 C0H 3FH 1 F9H 06H 2 A4H 5BH 3 B0H 4FH 4 99H 66H 5 92H 6DH 6 82H 7DH 11 显示字型 共阳极段选码 共阴极段选码 7 F8H 07H 8 80H 7FH 9 90H 6FH A 88H 77H B 83H 7CH C C6H 39H D A1H 5EH E 86H 79H F 8EH 71H “灭” FFH 00H 表 21中,各发光段 a、 b、 c、 d、 e、 f、 g 及 dp 与数据线的对应关系是 D0~ D7,即 a 对应 D0、 b 对应 D„、依次类推,而 dp 对应 D7。 只要把共阳极数码管按照引脚 a、 b、 c、 d、 e、 f、 g、 dp 的顺序 分别对应接 单片机 P0 口的 ~ ,由于 P0 口在输出时具有锁存功能,只要用指令向 P0 口送出字段码,数码管就可显示出所需字形。 例如 MOV P0,3FH,若采用共阴的数码管,则数码管显示“ 0”; 若采用共阳型数码管, MOV P0, 88H 则显示“ A ” 显示功能与硬件关系极大,当硬件固 定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。 七段数码管通常在显示上我们采用的方法一般包括两种:一种是静态显示,一种是动态显示。 静态显示就是显示某一字符时,相应的发光二极管恒定的导通或截止,这种方法,每一显示位都需要一个 8位的输出口控制,一般仅用于显示位数较少的场合,其特点是显示稳定不闪烁,程序编写简单,但占用端口资源多; 动态显示就是一位一位的轮流点亮各位显示器,对每一位显示器而言,每隔一段时间点亮一次,利用人的视觉留感达到显示的目的,显示器的亮度跟导通的电流有关,也和点亮 的时间与间隔的比例有关,其的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用 端口资源少,硬件成本较低。 在本设计中根据实际情况采用的是共阳极静 态显示方法。 4位七段数码管显示电路如图 27所示。 12 图 27智能抢答器显示模块 图 37中数码管采用的是 4位七段共阳极数码管,其中 AG段分别通 过 八路 D 型透明 锁存 器 74HC573 接到单片机的 P1口,由 锁存器的 LE和 OE 口数据来决定 输入输出 ,位选码 P1P7分别接到 另一个锁存器上 , 由锁存器的 LE 和 OE 口来决定 当前该显示的是位 码还是段码。 74HC573包含八路 D 型透明锁存器,每个锁存器具有独立的 D 型输入,以及适用于面向总线的应用的三态输出。 所有锁存器共用一个锁存使能( LE)端和一个输出使能( OE)端。 当 LE 为高时,数据从 Dn 输入到锁存器,在此条件下,锁存器进入透明模式,也就是说,锁存器的输出状态将会随着对应的 D输入每次的变化而改变。 当 LE 为低时,锁存器将存储 D输入上的信息一段就绪时间,直到 LE 的下降沿来临。 当 OE 为低时, 8个锁存器的内容可被正常输出;当 OE为高时,输出进入高阻态。 OE端的操作不会影响锁存器的状态。 报警电路设计 报警信号通常有三种类型:一是闪光报警,因为闪动的指示灯更能提醒人们注意;二是鸣音报警,发出特定的音响,作用于人的听觉器官,易于引起和加强警觉;三是语音报警,不仅能起到报警作用,还能直接给出警报种类的信息中。 前两种报警装置因硬件结构简单,软件编程方便,常常在单片机应用系统中使用;而语音报警虽然警报信息较直接,但硬件成本高,结构较复杂,软件量也增加,综合考虑采用鸣音报警。 发声 电路用于报警,当遇到 发声 信号时,发出警报。 一般喇叭是一种电感性 , 声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单 片 机某个口线的 “ 高 ” 电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭 ( 压电陶瓷 型扬声器 ) 就能发出一定频率的声音,若再利用延时程序控制 “ 高 ”“ 低 ” 电平的持续时间,就能改 13 变输出频率,从而改变音调,使喇叭发出不同的声音。 抢答器发声电路设计如图 28所示。 单片机的 23脚 的 IO端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。 图 28 发声电路 在图 28 中, P 接三极管基极输入端,当 P 输出高电平“ 1”时 , 三极管导通,蜂鸣器的通电而发音,当 P 输出低电平“ 0”时,三极管截止,蜂鸣器停止发音。 在本系统中,当抢答时间和答题时间倒计 10 秒后 就调用报警子程序发声报警。 14 3 软件设计 抢答 器主 程序设计 子 程 序 入 口初 始 化答 题 开 始对 应 LED至 1判 断 0分 数98主 持 人 加 减分返 回选 手 抢 答 图 31 主程序流程图 void Compere_key_function(void){ if(have_key == 0) return。 have_key = 0。 switch (key_value){ case start_all_key: answer_statu = 0。 score[0] = 0。 score[1] = 0。 score[2] = 0。 score[3] = 0。 Led_Off_All()。 15 break。 case start_answer_key: answer_time[0] = 0。 answer_time[1] = 0。 answer_time[2] = 0。 answer_time[3] = 0。 answer_statu = 1。 /* = 1 Led_Off_All()。 Answer_time_count = 10*500*time_2ms。 break。 case answer_right_key: if(answer_statu == 2){ answer_statu = 0。 if(score[answer_group] = 97) score[answer_group] = score[answer_group] + 2。 } break。 case answer_error_key: if(answer_statu == 2){ answer_statu = 0。 if(score[answer_group] 0) score[answer_group] = score[answer_group] 1。 } break。 default : break。 } } 16 报警程序设计 子 程 序 入 口P 2 .2至 高 电平延 时延 时P 2 .2至 低 电平 图 32 主程序子程序流程图 void En_beep(void) { unsigned char i。 for (i=0。 i100。 i++){ Delay(50)。 BEEP=!BEEP。 } BEEP=1。 } void Cheak_Answer_time_over(void) { if(Answer_time_over == 1 || answer_statu == 1){ En_beep()。 Delay(250)。 Delay(250)。 En_beep()。 Delay(250)。 17 Delay(250)。 En_beep()。 } } 分数显示程序设计 子 程 序 入 口初 始 化查 表 取 段 码查 表 取 数 码送 段 码送 数 码判 断 是 否显 示 完 毕返 回 图 33分数显示子程序流程图 void Display_shumaguan(void) { static unsigned char Witch_isplay。 unsigned char Temp_score,Display_score。 if(Display_time == 0) return。 Display_time = 0。 cs_1 = 1。 18 P0 = 0xff。 cs_1 = 0。 Delay(1)。 cs_1 = 1。 switch (Witch_isplay){ case 0: P0 = 0x01^0xff。 break。 case 1: P0 = 0x02^0xff。 break。 case 2: P0。基于单片机的智能抢答器的设计与制作毕业论文(编辑修改稿)
相关推荐
人力资源系统知识 6S系统模板 派克精益体系“ 6 S” 系统模板Ss(5S + 1S) 什么是“ 6 S”? 如何实施 “ 6 S” 如何监控,改进,保持 “ 6 S”的绩效 准备审核项目清单,表格及图表来管理 “6 S” 系统学习目标旺昌资料城 管理营销资料大全 s(5S + 1S) 一种重要的精益基本组成元素 一位最先发现工作环境是影响产品质量,产量及成本的人。 他写道
封装与引脚 SO24, SSOP24, DIP24, TSSOP24 74HC154 4 线 16 线译码器 /解调器 74HC154 译码真值表 将 4 个二进制编码输入译成 16 个彼独立的输出之一 8 将数据从一个输入线分配到 16 个输出的任意一个而实现解调功能 输入箝位二极管简化了系统设计 与大部分 TTL 和 DTL 电路完全兼容 74154 这种单片 4 线 — 16
单片机的工作方式有:复位、程序执行、掉电保护和低功耗、编程、校验与加密等方式。 通过某种方式 , 使单片机内各寄存器的值变为初始状态的操作称为复位。 复位方式是单片机的初始化操作。 单片机除了正常的初始化外,当程序运行出错或由于操作错误而使系统处于死循环时,也需要按复位键重启机器。 MCS—51 单片机复位后 , 程序计数器 PC 和特殊功能寄存器复位的状态如图 所示。 复位不影响片内 RAM
化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20 做成探头,探入到狭小的地方,增加了实用性。 DS18B20 与传统的热敏电阻相比, 它可以直接测量当前环境的温度, 并且可 按照自己的需求采用 编程实现数字 读取。 另外 从 数字温度传感器 DS18B20 读出的 数据 或写入的 数据只 要 一根线就可以完成, 因而使用 DS18B20 可使 设计的硬件电路结
路传感器的实物如图 所示。 图 四 路红外探测系统 四路红外探测系统具有四个探测头,我们给它标记为 X X Y1 和 Y2。 根据上述介绍, X2 和 Y2 分别是 X1 和 Y1 的后备探头,这样能更加准确有效的达到循迹的目的。 在实测的时候,探测器检测到黑线的时候,图中右下角对应的 LED 灯就会发光, 比如 :当 X1 检测到黑线的时候,从上往下数第三个灯就会亮
................................................................................................. 错误 !未定义书签。 附录 1 .....................................................................................