基于89c51的八位抢答器-单片机系统课程设计内容摘要:
其中 S9 和 S10 分别为“抢答时间调整键” 10 和“回答时间调整键”, 其对应的 I∕O 接口分别为 和 ; S11 和 S12 分别为时间“加 1”和“减 1”按键,其对应的 I∕O 接口分别为 和 ; S13 和 S14 分别为 时钟与复位模块包括时钟电路和复位电路,单片机的最小系统就是由时钟电路、复位电路及单片机构成。 单片机的时钟信号用来提供单片机片内各种操作的时间基准,单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外 部振荡方式。 复位操作则使单片机的片内电路初始化,使单片机从一种确定的初态开始运行。 根据应用的要求,复位操作通常有两种基本形式:上电复位或开关复位。 当 51 系列单片机的复位引脚RST(全称 RESET)出现 2 个机器周期以上的高电平时,单片机就执行复位操作。 如果 RST持续为高电平,单片机就处于循环复位状态。 报警模块在本系统中为附加模块,它的主要用途就是起到提示并引起人们的注意。 它只有在两种情况下才发出报警,一是“开始抢答”按键没有按下时,选手就按下了“抢答键”,报警电路发出报警,提示有选手发生抢答;二是每道题的抢 答时间和问题的回答时间在倒计时 5 秒时,报警电路发出报警,提示选手倒计时的时间即将耗尽。 核心控制模块就是人们所谓的 CPU,它是整个系统的总控制部分,本系统的核心控制模块为 51 系列的单片机,只有我们通过软件程序的编写,并将程序写入单片机,该系统才会正确的工作。 时钟模块 图 32 时钟电路 单片机必须在时钟的驱动下才能工作。 AT89C51 单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。 无论何种形式,都需要外部附加电路,产生时钟脉冲。 本系统中采用的是内部时钟方式。 时钟电路如图 32 所示。 主要作用有两点:一是可以促使单片机系统快速起振;二是 C C2 具有对频率进行微调作用,有利于单片机系统振荡频率的稳定,维持单片机的正常运行。 谐振电容的 11 容值选择,与所用的晶体振荡器的频率值有关。 晶体振荡器的振荡频率越高,相应的谐振电容的容值也要提高。 二者如果配合的好,可以发挥谐振电容的积极作用。 反之,自激振荡器频率的稳定性将受到影响。 经过大量的实际应用,晶体振荡器的频率与谐振电容的容值之间形成了一定的固定搭配。 例如:当晶体振荡器的频率为 12MHz 时,谐振电容的容值一般为 30pF 左右。 复位模块 单片机的第 9 脚 RST 为硬件复位端,只要将该端持续 2 个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图 33 所示 : 图 33 复位电路 数码管发光原理分两种情况:共阴极型 a、 b、 c、 d、 e、 f、 g 各引脚输入高电平有效。 只要哪个引脚输入为高电平,对应的二极管就会发亮;共阳极型结构数码管的 a、 b、c、 d、 e、 f、 g 各引脚输入低电平有效。 只要哪个引脚输入低电平,对应的二极管就会发亮。 通过点亮不同的发光段可组成不同的字形。 输入到数码管 dp 、 g、 f、 e、 d、 c、b、 a 的二进制码称为字段码(或称字形码),数码管显示的结果为字形。 本文 显示电路使用七段数码管 7SEGMPX4CC,它是共阴极的,由高电电平点亮。 12 图 34 七段数码显示管 并通过查表法,将其在数码管上显示出来,其中 P0 口为字型码输入端, P2 口低 3 位为字选段输入端。 在这里我们通过查表将字型码送给 7 段数码管,数码管显示原理如下 : 表 31 显示字形字段码对应关系 (字体 ) 显示字型 共阳极段选码 共阴极段选码 0 C0H 3FH 1 F9H 06H 2 A4H 5BH 3 B0H 4FH 4 99H 66H 5 92H 6DH 6 82H 7DH 7 F8H 07H 8 80H 7FH 9 90H 6FH F 8EH 71H “灭” FFH 00H MOV A,R5 MOVC A,@A+DPTR ;查字型 MOV P2,0FDH ;送位选码 MOV P0,A ;送字型码 ACALL DELAY ;调延时,去闪烁 键盘的去抖动 组成键盘的按键有触点式和非触点式两 种,单片机中应用的一般是由机械触点构成的。 按键如图 35所示,当开关 S1断开时,单片机接入口输入为高电平, S1闭合时,单片机 13 接入口输入为低电平。 图 35 按键图 由于按键是机械触点,当机械触点断开、闭合时,会有抖动, P1输入端的波形如图36所示。 这种抖动对于人来说是感觉不到的,但对单片机来说,则是完全可以感应到的,因为单片机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对单片机而言,这已是一段“漫长”的时间了。 如果键处理程序采用中断方式的话,在响应按键时就可能会出现问题,也就是说按键有时灵,有 时不灵,其实就是这个原因,你只按了一次按键,可是单片机却已执行了多次中断的过程,若执行的次数正好是奇数次,那么结果正如你所料,若执行的次数是偶数次,那就不对了。 而如果键处理程序采用查询方式的话也会存在响应按键迟钝的现象,甚至可能会漏掉信号。 图 36 抖动波形图 按键电路图 八路智能抢答器设计中由于按键较少,端口资源丰富,因此采用了独立键盘的方式,无双功能和多功能设计,本设计中有 8 个抢答按键输入,一个开始按键、一个结束按键,此外还有抢答时间调整键、回答时间调整键,加一按键减一按键各一个。 按键 连接图如图 37 所示。 14 图 37 按键电路图 实现单频音报警的接口电路比较简单,其发音元件通常可采用压电蜂鸣器,当在蜂鸣器两引脚上加 3~ 15V 直流工作电压 ,就能产生 3KHz 左右的蜂鸣振荡音响。 图 38 报警电路 压电式蜂鸣器结构简单、耗电少,更适于在单片机系统中应用。 压电式蜂鸣器,约需 10mA 的驱动电流,可在某端口接上一只三极管和电阻组成的驱动电路来驱动。 第四章 软件设计 本系统由于较简单,程序内容相对较少,本着简单易懂的原则,所以采用汇编语言实现其软 件的设计。 15 图 41 主程序流程图 任何控制系统开始正常工作前都必须要进行初始化, 在其它应用程序确定之后,本部分程序设计在于协调各部分程序之间的关系,以促使各部分程序之间有序运行,达到进一步优化程序设计的目的。 该智能抢答器的初始化子程序主要是两个定时器和两个外部中断的初始化。 主程序流程图如图 41 所示。 在主持人未按下“抢答开始键”时,为防止参赛选手发生抢答,专门设计了非法抢答查询子程序。 当有选手发生抢答时,系统会将选手的号码保持下来,并送到 LED 显示装置进行显示,同时调用非法抢答子程序。 非法抢答查询子程序流程图如图 42 所示。 16 返 回开 始 该智能抢答器的抢答时间是可以根据实际需要进行调整的,如果想调节抢答时间,按下“抢答时间调整键”。 此时, LED 显示装置会显示当前抢答时间的设定值,如果想加 1S,按下“加 1”键;如果想减 1S,按下“减 1”键。 LED 显示装置会自动显示修改后的抢答时间。 抢答时间的设定值范围是 0~ 99S, 0S 再减 1S 会变成 99S,同理 99S 再加 1S 会变成 0S。 回答 时间的调整与此类似。 抢答时间调整子程序流程图如图 43 所示。 17 开 始结 束 图 43 抢答时间调整子程序流程图 第 五章 软件仿真及程序调试 随着仿真软件的广泛推广应用。基于89c51的八位抢答器-单片机系统课程设计
相关推荐
,ds:data start: mov ax,data mov ds,ax MOV AH,0FH。 清屏 INT 10H MOV AH,0h INT 10H LEA DX,string1 MOV AH,09H INT 21H LEA DX,string2 MOV AH,09H INT 21H LEA DX,string3 MOV AH,09H INT 21H LEA DX,string4 MOV
Y, 中断入口 保护现场 10000 次计数值减一 设置下次 10000 次计数值 读取计数值 计数值为 0 送计数值 恢复现场 中断返回 开始 初始化显示参数 关所有位显示 取显示数据 输出段码数据 输出位选通信号 延时 位选通信号移位 指向下一位显示数据 6 位完成 返回 图 6 显示处理流程图 图 5 定时中断处理流程图 5 程序清单 outbit equ 08002h。 位控制口
67abcdefg8dpdpD S ?D P Y _7 S E G _D PabfcgdeDPY1234567abcdefg8dpdpD S ?D P Y _7 S E G _D PabfcgdeDPY1234567abcdefg8dpdpD S ?D P Y _7 S E G _D PR?R E S 2S?S W P BS?S W P BV C C 程序流程图 主程序 中断程序 N Y N Y
富等。 在 SCM 系统已经被广泛的应用。 液晶显示器可以分为三个类别根据功能 :Biduan 字符点阵液晶显示器、液晶显示器、点阵液晶显示器、光两种可以显示数字、字符等 ,和图形点阵液晶显示器可以显示字符和图形。 [13] 滨州学院本科毕业设计(论文) 12 本设计选择相对负担得起的字符 LCD1602 液晶显示器可以显示两行 16字符 ,使用 + 5 V电源 ,电路结构简单
的检测电路 ,图中 R2 为限流电阻,当有光反射回来时,光电传感器的三极管导通, 在 LM324 的 2 脚出产生低电平电压,通过 LM324处理后在 出产生高电平,返回给单片机,从而 达到检测的目的。 并通过变阻器 R3 可调节 传感器的灵敏度。 四川理工学院创新基金 第 7 页 共 19 页 231A411U1ALM324NGND
1”。 如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持 10ms。 (4)[44h] Convert T(温度变换) 这条命令启动一次温度转换而无需其他数据。 温度转换命令被执行,而后DS18B20 保持等待状态。 如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20 又忙于做时间转换的话, DS18B20 将在总线上输出“ 0”,若温度转换完成,则输出“