基于单片机的抢答器设计_毕业论文(编辑修改稿)内容摘要:
监控循环或时钟中断子程序)中。 当监控程序(键盘 解释程序)安排在时钟中断子程序中时,处理比较方便,只要在监控程序的汇合处调用显示模块就可以了。 这里将显示功能集中到一起,作为一个功能模块,就要求它的功能全面,能根据系统软件提供的信息自动完成显示内容的查找,变换和输出驱动。 这样设计使得各功能模块都不必考虑显示问题,只要给出一个简单的信息(如显示格式编码)甚至不用再提供额外信息,直接利用当前状态变量和软件标志就可以完成所需的显示要求。 如果编写这样一个集中显示模块有困难,也可以将显示模块编小一些,只完成显示缓冲区的内容输出到显示器件上的工作。 这时各功能模块在 提出显示申请时,还需要将显示内容按需要的格式送入显示缓冲区中。 这样分而治之比较容易编程,但要小心出现显示混乱。 例如后台程序需要调用显示,将有关信息送入到现实缓冲区进行显示;中断返回后,后台程序继续送完后半部分显示内容,但前半部分内容已经变了,这样就出现了显示错误。 解决的办法是,在申请显示前,先检查是否已经有显示申请,如果有,就不再申请,等待下次机会;如果没有,则先申请标志位,再将显示内容送入显示缓冲区。 这时就不必担心其他前台模块来打扰了,就可以得到一次完整的显示机会。 在这里我们使用的是七段数码管显示,通常 在显示 [6]上我们采用的方法一般包括两种:一种是静态显示,一种是动态显示。 其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。 在本设计中根据实际情况采用的是动态显示方法。 并通过查表法,将其在数码管上显示出来,其中 P0 口为字型码输入端, P2口低 3位为字选段输入端。 在这里我们通过查表将字型码送给 7段数码管显示的数字,数码管显示原理如下: MOV A,R5 MOVC A,@A+DPTR ;查字 型码 MOV P2,01H ;送位选码 17 MOV P0,A ;送字型码 ACALL DELAY ;调延时,去闪烁 在七段数码管显示中可分为共阳极和共阴极两种类型极。 以共阴为例,要想a 段亮,向 a 段送 1 就是,返之送 0,共阳刚好相反。 扫描电路的实现 键盘是人与微机系统打交道的主要设备。 关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。 站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。 在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。 它们各有自己的特点 , 其中独立键盘硬件电路简单 , 而且在程序设计上也不复杂 , 一般用在对硬件电路要求不高的简单电路中 ; 矩阵键盘与独立键盘有很大区别 , 首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。 其次就是消除在按键 过程中产生 的“毛刺” 现象。 这里采用最常用的方法,即延时重复扫描法,延时法的原理为 : 因为 “ 毛刺 ” 脉冲一般持续时间短 , 约为几 ms, 而我们按键的时间一般远远大于这个时间 ,所以当单片机检测到有按键动静后再延时一段时间 (这里我们取 10ms)后再判断此电平是否保持原状态 ,如果是则为有效按键 , 否则无效。 按钮输入的硬件处理 按钮的触点在闭合和断开时均会产生抖动,这是触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。 现在一般均用软件延时的方法来避开抖动阶段,这一延时过程一般大 于 5ms,例如取 1020ms。 如果监控程序中的读键操作安排在主程序(后台程序)或键盘中断(外部中断)子程序中,则该延时子程序便可直接插 入读键过程中。 如果读键过程安排在定时中断子程序中,就可省去专门的延时子程序,利用两次定时中断的时间间隔来完成抖动处理。 发声 18 我们知道,声音的频谱范围约在几十到几千赫兹 [7],若能利用程序来控制单片 机某个口线的 “ 高 ” 电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制 “ 高 ”“ 低 ” 电平的持续时间,就能改变输出频率,从而改变 音调,使喇叭发出不同的声音。 系统复位 使 CPU 进入初始状态,从 0000H 地址开始执行程序的过程叫系统复位。 从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。 硬件复位必须通过 CPU 外部的硬件电路给 CPU 的 RESET 端加上足够时间的高电位才能实现。 上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。 硬件复位后,各专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。 但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视。 软件复位就是用一 系列指令来模拟硬件复位功能,最后通过转移指令使程序从 0000H 地址开始执行。 对各专用寄存器的复位操作是容易的,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成。 而对中断激活标志的清除工作常被遗忘,因为它没有明确的位地址可供编程。 有的编程人员用 020xx0( LJMP 0000H)作为软件陷阱,认为直接转向 0000H 地址就完成了软件复位,就是这类错误的典型代表。 软件复位是使用软件陷阱和软件看门狗后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应。 由 于软件看门是高级中断,它将阻止说要中断响应,由此可见清除中断激活标志的重要性。 在所有的指令中,只有 RETI 指令能够清除中断激活标志。 前文各处提案到的出错处理程序 ERR 主要完成这一功能,其他的善后工作交由复位后的系统去完成。 有复位时系统的历史状况,可将复位分为“冷启动”和“热启动”。 “冷启动”时,系统的状态全部无效,进行彻底的初始化操作;而“热启动”时,对系统的当前状态进行修复和有选择的初始化。 系统初次上电投入运行时,必须是“冷启动”,以后由抗干扰措施引起的复位操作一般均为“热启动”初次上电投入运行时, 必须是“冷启动”,以后由抗干扰措施引起的复位操作一般均为“热启动”。 19 复位 关 中断,设定堆栈 上电标志 冷启自检 全面初始化 热启动恢复被破坏的信息部分初始化 建立上电标志 开始运转 为了使系统能正确决定采用何种启动方式,常用上电标志来区分,如图 36 所示。 图 36 系统复位策略图 第四章 软件设计 软件任务分析 软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由 20 软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。 软件任务分析环节是为软件设计做一个总体规划。 从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如测量 ,计算,显示,打印 [8],输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。 这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。 显示子程序的设计 显示子程序,及部分注解如下: DISPLAY:MOV DPTR,DAT1。 查表显示程序 ,利用 P0 口做段选码口输出 /P2 低三位做位选码输出 , MOV A,R3 MOVC A,@A+DPTR MOV P2,0feH MOV P0,A ACALL DELAY MOV DPTR,DAT2 MOV A,R5 MOVC A,@A+DPTR MOV P2,0fdH MOV P0,A ACALL DELAY MOV A,R4 MOVC A,@A+DPTR MOV P2,0fbH MOV P0,A ACALL DELAY RET DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H。 灭 ,1,2,3,4,5,6,7,8,9,灭 ,F DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H 21 第一个为零 ,其他与上相同 ,因为十位如果为零显示熄灭 定时器 T0、 T1 中断服务程序的设计 =====TO溢出中断 (响铃程序 )===== T0INT: MOV TH0,0ECH MOV TL0,0FFH JNB RING,OUT。 CPL。 RING 标志位为 1 时候 口不断取反使喇叭发出一定频率的声音 OUT: RETI T1 溢出中断 (计时程序 ): T1INT: MOV TH1,3CH MOV TL1,0B0H INC R0 RETI END 抢答器处理程序的设计 抢答器处理程序: TRUE1: ACALL BARK。 按键发声 MOV A,R2 MOV R6,A。 抢答时间 R2 送 R6 MOV R3,01H CLR OK。 因为答题的计时不再查询抢答 ,所以就锁了抢答 AJMP COUNT TRUE2:ACALL BARK。 MOV A,R2 MOV R6,A MOV R3,02H CLR OK AJMP COUNT TRUE3:ACALL BARK。 22 MOV A,R2 MOV R6,A MOV R3,03H CLR OK AJMP COUNT TRUE4:ACALL BARK。 MOV A,R2 MOV R6,A MOV R3,04H CLR OK AJMP COUNT TRUE5: ACALL BARK。 MOV A,R2 MOV R6,A MOV R3,05H CLR OK AJMP COUNT TRUE6: ACALL BARK。 MOV A,R2 MOV R6,A MOV R3,06H CLR OK AJMP COUNT TRUE7: ACALL BARK。 MOV A,R2 MOV R6,A MOV R3,07H CLR OK AJMP COUNT TRUE8: ACALL BARK。 23 MOV A,R2 MOV R6,A MOV R3,08H CLR OK AJMP COUNT 程序及分析 单片机控制 8 路抢答器程序 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,30。 初设抢答时间为 30s MOV R2,60。 初设答题 时间为 60s MOV TMOD,11H。 设置未定时器 /模式 1 MOV TH0,0F0H MOV TL0,0FFH。 越高发声频率越高 ,越尖 MOV TH1,3CH MOV TL1,0B0H。 50ms 为一次溢出中断。基于单片机的抢答器设计_毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。