八路抢答器单片机毕业设计(论文)(编辑修改稿)内容摘要:
a g 3 = 4F l a g 3 = 3F l a g 3 = 1关 闭定 时 器 T 1再 次 启 动 T 0 倒计 时关 闭定 时 器 T 1启 动 T 1定 时 器 NYYNNNNYYYF l a g 3 + +S T A R T = 0图 13 中断流程图 仿真软件 —— Proteus Proteus 是一款常用的仿真软件,和 Keil 联 合使用,对设计的完善起到很大的作用,也对硬件的搭建提供了连线依据。 Proteus 的使用相对比较简单,在元件库中找到相应电路所要用到的元件后放置在原理图纸上,然后用导线连接起来就可以了。 在选用元件后,可以在原理图纸上双击某元件,更改它的属性,如电阻的名称、阻值等。 本设计中使用了单片机,需要加载程序文件。 之前已经使用 Keil C生成了所需要的 HEX 文件,直接加载进来就可以了。 这时就可以运行仿真了。 在仿真之前最好再检查一下电路的连接,确认正确之后再运行,以免粗心造成运行结果与设计的不相符合。 设计的仿真原理 图如图 14 所示: 16 图 14 电路仿真原理图 制板软件 —— Protel 99 SE PCB 电路板的设计流程: ( 1) 设计原理图 创建一个新项目 ; 创建一张新的原理图图纸 ; 查找元件 ; 在原理图中放置元件 ; 设置元件属性 ; 放置电源和接地符号 ; 绘制原理图。 ( 2) 定义元件封装 原理图设计完成后 , 元件的封装有可能被遗漏或有错误。 对于用户自己设计的元件或者是某些特殊元件 , 必须由用户自己定义或修改元件的封装。 ( 3) 设置 PCB 图纸 可以 设定 PCB 电路板的结构及尺寸,板层数目,通孔的类型,网格的大小等,既可以用系 统提供的 PCB 设计模板进行设计,也可以手动设计 PCB 板。 ( 4) 生成网表和加载网表 网表是电路原理图和印刷电路板设计的接口,只有将网表引入 PCB 系统后,才能进行电路板的自动布线。 ( 5) 布线 设置布线规则后,先自动布线,然后手工调整。 在元件很少且布线简单的情况下,也可以直接进行手动布线。 17 第五章 调试及故障分析 程序调试 程序调试:分步骤进行调试,对每一个子程序进行编译链接后,将整个程序全部编译,生成 HEX 文件加载到单片机上,进行仿真。 出现错误和警告时要进行分析,解决问题。 仿真分析:启动( 上电)后,显示 00— 00。 当主持人按键,显 示 30 秒的抢答时间,如有选手抢答,会显示选手号码以及 60 秒的回答时间,回答时间剩余 5 秒时,会响提示音。 如果第一位选手不能回答,那么主持人再次按下 START 键允许其他选手继续抢答,允许其他选手抢答的时间为上一次抢答的剩余时间,答题时间仍是 60 秒。 如果没有人抢答,抢答倒计时还有 5 秒的时候会响提示音,抢答时间过后抢答器会自动进入复位状态,可以进行下一轮的抢答。 如果主持人未按 START 键,有选手按了抢答按键,犯规抢答,显示犯规选手号并闪烁 FF,直到主持人复位。 这 与预期的效果是一致的。 硬件焊接及故障分析 电子电路是由许多元器件和导线连接而成,每一个元件和导线的好坏,连接的正确可靠与否,都可能产生故障,情况很复杂。 有的是一种原因引起的简单故障,也有的是多种原因引起的复杂故障。 以下是一些常见的故障: ( 1)电路组装有错误或连接不牢,致使电路与原理电路不一致。 ( 2)电路元器件本身特性不良或损坏,特别是芯片的损坏最为常见,其次是电容的击穿、短路以及电阻的阻值与标称值不符。 因此在组装电路前应进行检查和筛选,以防组装完电路后,再查找原因所带来的种种麻烦。 ( 3)各仪 器连线是否正确,是否与电路共地;仪表使用是否得当。 ( 4)以上检查无错误时,应考虑电路设计,这也是实验中尤其是在数字电路中常遇到的。 硬件搭建:按照设计的原理图一步一步完成电路的搭建。 这过程中一定要耐心、细心,否则很容易跳错线。 实物电路搭好以后,仔细对照原理图检查一遍,然后就可以上电检测了。 制作硬件过程中,出现了以下问题经过检查得到了解决: ( 1)接上电源后发觉数码管无显示。 经检查后现单片机的 29 脚悬空未接,应该接在高电平上,这是单片机正常工作的前提。 ( 2)选手键盘的其中一个不正常工作。 经检查后发现是 虚焊。 18 总 结 通过此次的 毕业设计 , 让我更进一步的巩固了单片机的各种知识。 但在设计的过程中,遇到了很多的问题,有一些知识已经不太清楚了,但是通过一些资料又重新的翻阅并且认真的复习了相关教科书中的内容。 此次的 毕业设计树立了对自己工作能力的信心,相信会对今后的学习工作生活都有非常重要的影响,而且大大的提高了动手能力,使我充分的体会到了创造过程中的探索的艰难和成功的喜悦。 虽然这次做出的作品还存在很多需要改进的地方,但是在整个设计过程中期间所得到的最大收获,使我终身受益。 不过在此设计期间,还是要感谢我的同班许 多同学给予我的帮助,还有感谢学院各位教育过我的老师,你们在这三年期间对我的培养上和教育,使我受益匪浅,我对他们报以崇高的敬意红外感谢。 在论文结束之际,我要感谢指导老师,他的专业知识丰富,治学严谨,而且认真负责,耐心讲解问题,对喔的毕业设计提供了很大的指导和帮助。 在这次毕业设计过程中,在指导老师的严格要求及一些合理性建议。 在此向我的指导老师及主任、祝敏老师这三年对我的培养衷心的感谢。 19 参考文献 [1]模拟电子技术 高等教育出版社 [2]数字电子技术 高等教育出版社 [3]基于集 成电路的电路设计 西安交通大学出版 [4]谭浩强 《 C语言程序设计 》 [M]. 北京: 清华大学出版社 . [5] 51单片机 C语言教程 — 入门、提高、开发、扩展全攻略 电子工业出版社 [6 ]51单片机开发与应用技术详解 电子工业出版社 [7]单片机 C语言应用 100例 电子工业出版社 20 附录 1:整机原理图 附录 2: PCB 制板图 21 附录 3:程序清单 //能够显示抢答、回答时间倒计时,能够调节抢答、回答时间,能够报警犯规抢答,可以计分,可以实现软复位 include define uchar unsigned char define uint unsigned int sbit fmq=P3^6。 sbit Key_Start=P3^4。 //开始键 ,时间设置时 + sbit Key_Stop=P3^5。 //停止键,时间设置时 sbit Key_Restart=P3^0。 //复位键 sbit Key_set_Q=P3^2。 //抢答时间设置键 sbit Key_set_H=P3^3。 //回答时间设置键 sbit led=P3^7。 //抢答 LED 提示 uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6,0xf0,0xb6}。 //段码表 uchar code table_char[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc7,0xc0,0x92,0x86,0xbf,0xb7,0xff,0xb9,0x8f}。 //09 L O S E uchar table_score[9]={0,50,50,50,50,50,50,50,50}。 //记分数组 ,初设值 50分 void delay(uint z)。 //延时函数声明 void init()。 //初始化函数声明 void display(uchar XuanShou,uchar time)。 //显示数字函数声明 void display_char(uchar char_1,uchar char_2,uchar char_3,uchar char_4 )。 //显示字符函数声明 void display_set(uchar char_1,uchar time,uchar char_2)。 //时间设置闪动显示函数声明 void display_score(uchar xs_num)。 //分数查询显示函数 void beep()。 //蜂鸣器函数 void beep_last()。 //蜂鸣器特殊报警 void LED()。 //提示灯函数 uchar QiangDa_time,HuiDa_time,QiangDa_time_temp=20,HuiDa_time_temp=30。 //抢答时间、回答时间变量 uchar count_0,count_1。 //定时中计 22 数用的 uint shan_count=0。 //闪动显示计数用 void main() { uchar AnJian,ShuJu,XuanShou_num。 Top:init()。 //初始化 XuanShou_num=1。 //为分数查询做好准备 while(1) { display(10,0)。 //显示一杠 ShuJu=P1。 if(ShuJu!=0xff)// 犯规抢答。 { AnJian=ShuJu。 switch(AnJian)//取出选手编号 { case 0xfe : XuanShou_num=1。 break。 //1111 1110 case 0xfd : XuanShou_num=2。 break。 //1111 1101 case 0xfb : XuanShou_num=3。 break。 //1111 1011 case 0xf7 : XuanShou_num=4。 break。 //1111 0111 case 0xef : XuanShou_num=5。 break。 //1110 1111 case 0xdf : XuanShou_num=6。 break。 //1101 1111 case 0xbf : XuanShou_num=7。 break。 //1011 1111 case 0x7f : XuanShou_num=8。 break。 //0111 1111 default : goto LOSE。 //无法显示了,有两个以上的键同时按下了。 不过这种概率相当小 } while(1) { display_char(13,14,14,XuanShou_num)。 //闪动显示犯规选手并且报警 if(shan_count==50) 23 {。八路抢答器单片机毕业设计(论文)(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。