单片机控制数字抢答器的设计_毕业论文(编辑修改稿)内容摘要:
其他的 I/O 口线的状态,多用于按键不多的场合。 可采用 JNB 或 JB来查询是哪一个按键按下,并转向相应的功能处理程序。 当按键较多时,就用到了矩阵键盘。 矩阵键盘又称行列键盘,它是用四条 I/O 线作为行线,四条 I/O 线作为列线组 成的键盘,在行线和列线的每个交叉点上设置一个按键,这样键盘上按键的个数就是 4*4 个。 这种行列式键盘结构能够有效地提高单片机系统中 I/O 口的利用率。 但由于本设计的按键不多,所以我们采用独立键盘,编写程序也比较简单,运行速度较快。 12 图 26 选手抢答按键 显示电路的设计 LED 显示器件简介 数码管 是一种半导体发光器件,其基本单元是发光二极管。 数码管的分类 : 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个 “8”可分为 1 位、 2 位、 4 位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。 共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极 (COM)的数码管。 共阳数码管在应用时应将公共极 COM接到 +5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。 当某一字段的阴极为高电平时,相应字段就不亮。 共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极 (COM)的数码管。 共阴数码管在应用时应将公共极 COM接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。 当某一字段的阳 极为低电平时,相应字段就不亮。 数码管的驱动方式 : 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 本设计由于只用两个数码管,所以采用静态显示驱动,这里只介绍静态显示驱动。 静态显示驱动:静态驱动也称直流驱动。 静态驱动是指每个数码管的每一个段码都由一个单片机的 I/O 端口进行驱动,或者使用如 BCD 码二 十进制译码器译码进行驱动。 静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O 端口多,如驱动 5 个数码管静态显 示则需要 58 = 40 根I/O端口来驱动,一个 89C51单片机可用的 I/O 端口才 32个,实际应用时 13 必须增加译码驱动器进行驱动,增加了硬件。 显示部分的设计 显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。 图 272 显示电路(采用共阴极 LED 数码管) 报警电路的设计 蜂鸣器的介绍 蜂鸣器的作用 : 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、 报警器 、电子玩具、汽车电子设备、电话机、定时器等 电子产品 中作发声器件。 蜂鸣器的分类: 1.压电式蜂鸣器 压电式蜂鸣器主要由 多谐振荡器 、 压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。 有的压电式蜂鸣器外壳上还装有 发光二极管。 多谐振荡器由 晶体管 或集成电路构成。 当接通电源后( ~15V 直流工作电压) ,多谐振荡器起振 ,输出 ~ 的音频信号,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。 在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。 2.电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。 振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 报警电路 14 图 282 报警电路 总电路图 图 29 总电路图 15 第 3 章 软件的设计 语言选择 在目前单片机的发展中,其编程语言主要有 C 语言和汇编语言。 C 语言是高级语言,编写起来比较程序比较简便且易维护,汇编语言介于机器语言和高级语言之间,更接近于硬件,但编写起来比较冗长。 但介于本次程序不是太复杂,本人较 C 语言来说更熟悉汇编,所以本次设计的程序采用汇编语言来编写。 软件总体设计 本程序采用子程序设计,在主程序中调用子程序来完成特定的功能,这样程序会通俗易懂,同时也有利于程序的调试和修改。 本程序的程序流程图如下: 图 32 软件的总体设计 系统程序 为开始抢答, 为停止, 为六 路抢答输入 数码管段选P0 口,位选 P2 口,蜂鸣器输出为 口。 16 OK EQU 20H。 抢答开始标志位 RING EQU 22H。 响铃标志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040H MAIN: MOV R1,0FH。 初设抢答时间为 15s MOV R2,0AH。 初设答题时间为 10s MOV TMOD,11H。 设置未定时器 /模式 1 MOV TH0,0F0H MOV TL0,0FFH。 越高发声频率越高 ,越尖 MOV TH1,3CH MOV TL1,0B0H。 50ms 为一次溢出中断 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1。 允许四个中断 ,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0。 一开始就运行定时器 ,以开始显示 ,重置TH1/TL1 就可以了 查询程序 : START: MOV R5,0BH MOV R4,0BH MOV R3,0BH 17 ACALL DISPLAY。 未开始抢答时候显示 FFF JB ,NEXT ACALL DELAY JB ,NEXT。 去抖动 ,如果 开始键 按下就向下执行 ,否者跳到非法抢答查询 ACALL BARK。 按键发声 MOV A,R1 MOV R6,A。 送 R1R6,因为 R1 中保存了抢答时间 SETB OK。 抢答标志位 ,用于 COUNT 只程序中判断是否查询抢答 MOV R3,0AH。 抢答只显示计时 ,灭号数 AJMP COUNT。 进入倒计时程序 ,查询有效抢答的程序 在 COUNT 里面 NEXT: JNB ,FALSE1 JNB ,FALSE2 JNB ,FALSE3 JNB ,FALSE4 JNB ,FALSE5 JNB ,FALSE6 JNB ,FALSE7 JNB ,FALSE8 AJMP START 非法抢答处理程序 : FALSE1: ACALL BARK。 按键发声 MOV R3,01H AJMP ERROR FALSE2: ACALL BARK MOV R3,02H AJMP ERROR FALSE3: ACALL BARK MOV R3,03H AJMP ERROR FALSE4: ACALL BARK MOV R3,04H AJMP ERROR 18 FALSE5: ACALL BARK MOV R3,05H AJMP ERROR FALSE6: ACALL BARK MOV R3,06H AJMP ERROR FALSE7:ACALL BARK MOV R3,07H AJMP ERROR FALSE8:ACALL BARK MOV R3,08H AJMP ERROR INT0(抢答时间 R1 调整程。单片机控制数字抢答器的设计_毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。