单片机课程设计:八路抢答器设计(编辑修改稿)内容摘要:
果在硬件电路设计就预留出一些 I/O 端口,虽然当时空着没用,那么用的时候就派上用场了。 单片机 课程设计 11 总体原理图 本原理图是利用 Proteus 软件 是英国 Labcenter electronics 公司出版的 EDA 工具(仿真软件 )。 它不仅具有其它 仿真 软件的仿真功能,还能仿真单片机及外围器件。 它是目前最好的仿真单片机的工具。 虽然目前国内推广刚起步,但已受到从事单片机教学的教师、致力于单片机开发应用的科技工作 者 和 单片机爱好者的青睐。 在编译方面,它支持 IAR、 Keil 和 MPLAB 等多种 编译器 [9]。 Proteus 软件除了可以编辑设计电路原理图,还可以进行电路仿真。 首先在画好的电路原理图中选中需要编写程序的芯片,并单击鼠标左键,打开 Edition Component 对话框,设置单片机晶振频率为 12MHZ,在此窗口中的 program file 栏中,选择之前用keil 软件生成的 KEIL 生成的 HEX 文件。 在 Proteus 的菜单栏中选择 file 并 Save Desig选项,保存设计。 在 Proteus 的菜单栏中,打开 Debug 下拉菜单,在菜单中选中 Use start/restart debugging 选项,这样 proteus 中绘制的电路原理图就可以链接上, keil 中生成的 HEX 文件进行仿真了。 打开 proteus 软件,在 File 的下拉菜单中找到 New Design 新建 Proteus 并 选择A4 版面 ,然后保存,这样就完成 proteus 的新建了。 把元件排布好后,使用导线将各个元件连接起来,最后绘制完成 八路扫描式抢答器电路原理图。 单片机 课程设计 12 图 系统 仿真 原理图 XTAL218XTAL119ALE30EA31PSEN29RST939383736353433321234567810111213141716152821222324252627U1 AT89C51X1 CRYSTALC1 33pC2 33pC3 10uR1 200RR2510RLS1SPEAKER12U2:A74LS0412345611128U4 74S30R3 100kR4 100kR5 100kR6 100kR7 100kR8 100kR9 100k单片机 课程设计 13 图中 U1 为单片机 AT89C51, U2 为 芯片 74HC30, U3 为 芯片 74LS04。 K1~K8 分别为 8 路 抢答 按键,分别接到单片机的 ~ 中。 开始按键与结束按键分别接到单片机的 11 脚,由于单片机的 11 脚既有串行接口 RXD、 TXD 功能,又有 、 的 IO 端口功能,此处按键用到单片机 11 脚的 IO 端口功能。 抢答时间调整按键和回答时间调整按键分别接到单片机的 1 14 管脚, 加一按键和减一按键分别接到单片机的 1 16 管脚。 4 位七段 数码管段选 P0 口。 4 位七段数码管的 位选 接 P2 口低 3位,蜂鸣器输出为 口 [8]。 时钟频率电路 的设计 单片机必 须在时钟的驱动下才能工作。 在单片机内部有一个时钟振荡电路 , 只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元 , 决定单片机的工作速度。 时钟电路如图 所示。 图 外部振荡源电路 一般选用石英晶体振荡器。 此电路在加电大约延迟 10ms 后振荡器起振 , 在 XTAL2 引脚产生幅度为 3V 左右的正弦波时钟信号 , 其振荡频率主要由石英晶振的频率确定。 电路中两个电容 C1, C2 的作用有两个 : 一是帮助振荡器起振 ; 二是对振荡器的频率进行微调。 C1, C2 的典型值为 20PF。 单片机在工作时 , 由内部振荡器产 生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。 其 大小是时钟信号频率的倒数 , 常用 fosc 表示。 图中 时钟频率为 12MHz, 即 fosc=12MHz, 则时钟周期为 1/12181。 s。 单片机 课程设计 14 复位电路 的设计 单片机的第 9 脚 RST 为硬件复位端 , 只要将该端持续 4 个机器周期的高电平即可实现复位 , 复位后单片机的各状态都恢复到初始化状态,其电路图如图 所示 : 图 复位电路 图 中由按键 RESET1 以及电解电容 C电阻 R2 构成按键及上电复位电路。 由于单片机是高电平复位,所以当按键 RESET1 按下 时候,单片机的 9 脚 RESET 管脚处于高电平,此时单片机处于复位状态。 当上电后,由于电容的缓慢充电,单片机的 9 脚电压逐步由高向低转化,经过一段时间后,单片机的 9 脚处于稳定的低电平状态,此时单片机上电复位完毕,系统程序从 0000H 开始执行。 值得注意的是 , 在设计当中使用到了硬件复位和软件复位两种功能 , 由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值 , 而前面的功能介绍中提到了倒计时时间的记忆功能 , 该功能的实现的前提条件就是不能对单片机进行硬件复位 ,所以设定了软复位功能。 软复位实际上就是当程序执行完 毕之后 , 将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。 显示电路 的设计 显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。 在这里我们使用的是七段数码管显示 , 通常在显示上我们采用的方法一般包括两种 : 一种是静态显示 , 一种是动态显示。 其中静态显示的特点是显示稳定不闪烁 , 程序编写简单 , 但占用端口资源多 ; 动态显示的特点是显示稳定性没静态好 , 程序编写复杂 ,单片机 课程设计 15 但是相对静态显示而言占用端口资源少。 在本设计中根据实际情况采用的是动态显示方法。 通过查表法 , 将其 在数码管上显示出来 , 其中 P0 口为字型码输入端 , P2 口低 3 位为字选段输入端。 在这里我们通过查表将字型码送给 7 段数码管显示的数字 , 数码管显示原理如下 : 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 4 位七段数码管显示电路如图 7 所示。 单片机 课程设计 16 图 共阴极数码管 图 中 数码管 采用的是 4 位七段共 阴 数码管,其中 A~H 段分别接到单片机的 P0口,由单片机输出的 P0 口数据来决定段码值,位选码 COM COM COM4 分别接到单片机的 、 、 ,由单片机来决定当前该显示的是哪一位。 在图中还有 八个 1K 的电阻 ,连接在 P0 口上,用作 P0 口的上拉电阻,保证 P0 口没有数据输出时候处于高电平状态。 键盘扫描 电路的设计 键盘是人与 单片机 打交道的主要设备。 关于键盘硬件电路的设计方法 也 可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。 站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。 在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。 它们各有自己的特点 , 其中独立键盘硬件电路简单 , 而且在程序设计上也不复杂 ,一般用在对硬件电路要求不高的简单电路中 ; 矩阵键盘与独立键盘有很大区别 , 首先在硬件电路上它要比独立键盘复杂得多 , 而且在程序算法上比它要烦琐 , 但它在节省端口资源上有优势得多 , 因此它更适合于多按键电路。 其次就是消除在按键过程中产生 的 “ 毛刺” 现象。 这里采用最常用的方法 , 即延时重复扫描法 , 延时法的原理为 : 因为 “ 毛刺 ”脉冲一般持续时间短 , 约为几 ms, 而我们按键的时间一般远 远大于这个时间 ,所以当单片机检测到有按键动静后再延时一段时间 (这里我们取 10ms)后再判断此电平是否保持原状态 ,如果是则为有效 按键 , 否则无效。 单片机 课程设计 17 在本文设计中采用了独立键盘的方式,本设计中有 8 个抢答按键输入,一个开始按键、一个结束按键,此外还有抢答时间调整键、回答时间调整键,加一按键、 减一按键各一个。 如图 所示。 图 抢答按键及 调整 按键 在图 中 8 个抢答按键分别接入单片机的 ~ 端口,单片机通过读取~ 的值来判断当前输入的是 8 个抢答按键中的哪一个。 抢答时间调整和回 答时间调整 接到单片机的 和 接口, 加一及减一按键接到单片机的 和 接口。 图 开始、结束按键 在图 中,开始及结束按键接到单片机的 11 脚,这里用到了单片机 11脚复合功能中的 IO 端口功能,单片机通过读取 11 脚的 、 的 IO 端口值来判断当前是否处于抢答开始状态或抢答结束状态。 按键的触点在闭合和断开时均会产生抖动,这 时 触点的逻辑电平是不稳定的,如不单片机 课程设计 18 妥善处理,将会引起按键命令 的错误执行或重复执行。 现在一般均用软件延时的方法来避开抖动阶段, 这一 延时过程一般大于 5ms,例如 取 1020ms。 如果监控程序中的读键操作安排在主程序(后台程序)或键盘中断(外部中断)子程序中,则该延时子程序便可直接插 入读键过程中。 如果读键过程安排在定时中断子程序中,就可省去专门的延时子程序,利用两次定时中断的时间间隔来完成抖动处理。 K1~ K8 八个按键的 输入 电平靠 74HC30 输入与非门 和 74LS04 反向器组成的电路改变输入电平。 图 中电路就是由一个 74HC30 输入与非门和 74LS04 反向器组成的去抖电路。 图 去抖 电路 发声 电路 我 们知道,声音的频谱范围 约在几十到几千赫兹,若能利用程序来控制单 片 机某个口线的 “ 高 ” 电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制 “ 高 ”“ 低 ” 电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。 本文设计如图 所示。 图中单片机的 14 脚输出具有复合功能,此处用到了单片机 17 脚的 IO 端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。 单片机 课程设计 19 图 发声电路 系统复位 使 CPU 进入初始状态,从 0000H 地址开始执行程序的过程叫系统复位。 从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。 硬件复位必须通过 CPU 外部的硬件电路给 CPU 的 RESET 端加上足够时间的高电位才能实现。 上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。 硬件复位后,各专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。 但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视。 软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程 序从 0000H 地址开始执行。 对各专用寄存器的复位操作是容易的,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成。 而对中断激活标志的清除工作常被遗忘,因为它没有明确的位地址可供编程。 有的编程人员用 020200( LJMP 0000H)作为软件陷阱,认为直接转向 0000H地址就完成了软件复位,就是这类错误的典型代表。 软件复位是使用软件陷阱和软件看门狗后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响 应。 由于软件看 门 是高级中断,它。单片机课程设计:八路抢答器设计(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。