1、基于at89c52的抢答器湖北民族学院信息工程学院课程设计报告书题目: 基于AT89C52的竞赛抢答器的设计 课 程:电子线路课程设计专 业:电子信息科学与技术班 级: 0309412 学 号: 学生姓名: 指导教师: 2011 年 11 月 21 日 信息工程学院课程设计任务书学 号学生姓名专业(班级)电子信息科学与技术设计题目基于AT89C52的竞赛抢答器的设计设计技术参数设计要求1、 能实现8位选手抢答。2、 主持人控制抢答的开始和清零。3、 一位选手抢答后另外的选手抢答无效。4、 主持人或选手按下按键时伴随蜂鸣器的响声。5、 主持人按下抢答开始按钮后伴随着抢答到家时开始计时15秒。6、
2、 当主持人按下抢答且倒计时显示到0仍无人抢答时蜂鸣器持续响2秒钟。参考资料【1】谢自美,电子线路设计实验测试.(第三版)华中科技大学出版社【2】郭天祥,51单片机C语言教程. 电子工业出版社,2011【3】张毅刚,新编MCS-51单片机应用设计 哈尔滨工业大学出版社,2003【4】张萌,单片机应用系统开发实例 清华大学出版社,2007【5】王虎林,宋雪丽,一种数字式竞赛抢答器的设计J,电脑开发与应用.2010.(1)【6】王青萍,八路智力竞赛抢答器的设计J,湖北教育学院报.2007.(8)【7】康华光,陈大钦. 电子技术基础模拟部分(第五版)M. 北京:高等教育出版社,2005 年 月 日 学
3、生姓名: 学号: 专业(班级):电子信息科学与技术 课程设计题目:基于AT89C52的竞赛抢答器的设计 成绩: 指导教师: 年 月 日信息工程系课程设计成绩评定表摘 要竞赛抢答器是由AT89C52单片机控制的,有八路选手抢答的只能抢答器,该抢答器由四部分组成,主持人按键部分,选手按键部分,显示部分和蜂鸣器部分。该抢答器设有抢答倒计时,在规定倒计时内有人抢答则显示倒计时会停止,没有人抢答则倒计时完毕蜂鸣器响提示主持人抢答无效,以此实现抢答功能。本文将详细介绍设计过程和实现的功能。关键词:AT89C52单片机,抢答器,倒计时1 任务提出与方案论证1.1 设计要求1、 能实现8位选手抢答。2、 主持
4、人控制抢答的开始和清零。3、 一位选手抢答后另外的选手抢答无效。4、 主持人或选手按下按键时伴随蜂鸣器的响声。5、 主持人按下抢答开始按钮后伴随着抢答到家时开始计时15秒。6、 当主持人按下抢答且倒计时显示到0仍无人抢答时蜂鸣器持续响2秒钟。1.2 系统设计方案论证1.2.1 方案设计方案一:采用模数电设计,包括优先编码电路、锁存电路、译码电路将参赛选手的输入信号显示在数码管上,用控制电路和主持人开关启动报警电路,以上两部分为主题电路,通过定时电路和译码电路 将秒脉冲产生的信号在数码管上输出实现即时功能,构成扩展电路。其总体框图如下: 图1 模数抢答器系统框图方案二:采用AT89C52单片机为
5、核心控制单元,利用软件编程达到控制抢答的目的,利用了单片机的延时电路,按键电路,控制电路等设计的抢答器具有显示抢答选手的和抢答时间的功能,还有清零按键可以开始新一轮的抢答,且功能强大。1.2.2 方案论证选择 上述两个方案都能实现抢答器的抢答功能,但是方案一组成电路很多,线路布置起来很复杂,可靠性不高,功能也很简单,特别是当抢答路数较多时实现起来更加困难。方案二相比较起来实现起来比较简单,线路较少,而且软件实现调试比较简单,所以本设计我选择方案二,即采用AT89C52单片机来实现抢答器的设计。2 总体设计 本设计总体能实现八路抢答及倒计时等功能。通过改变软件程序来达到预期的目的。2.1 硬件设
6、计与实现总体框图图2 系统总体框图2.2 软件程序流程图图3 抢答器系统程序流程图3 详细设计及仿真3.1硬件电路设计3.1.1 主控芯片的介绍本设计采用的是AT89C52单片机,AT89C52是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。AT89C52单片机属于AT89C51单片机的增强型,与Intel公司
7、的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。其有以下主要工作特性:片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;片内数据存储器内含256字节的RAM;具有32根可编程I/O口线;具有3个可编程定时器;中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;串行口是具有一个全双工的可编程串行通信口;具有一个数据指针DPTR;低功耗工作模式有空闲模式和掉电模式;具有可编程的3级程序锁定位;AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;AT89C52最高工作频率为24MHz。单片机正常工作时,都需要有一个时钟电路和一个复位电路。
8、其引脚如下图4所示:图4 AT89C52单片机的引脚图在本设计中,单片机AT89C52引脚的P3口与D/A转换器和液晶显示器1602相连接。其中,P3.0和P3.1口接D/A转换器,P3.2和3.6口接液晶显示器。RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。3.1.2 复位电路启动复位使CPU及系统各部件处于确定的初始状态,并从初态开始工作。另外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也可以按复位键重新启动。RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。本设计使用频率为12
9、MHz的晶振,则复位信号持续时间应超过2us,才能完成复位操作。其电路图如图5所示:图5 复位电路3.1.3 时钟电路时钟电路用于产生MCS-51单片机工作时所必须的时钟信号。时钟是时序的基础,为保证同步工作方式的实现,单片机应在唯一的时钟信号控制下,严格地按时序执行指令进行工作。因此,时钟频率和质量也直接影响单片机系统的速度和稳定性。常用的时钟电路有内部时钟和外部时钟方式。其电路图如图6所示:图6 内部方式时钟产生电路单片机片内由一个反向放大器构成振荡器,可以由它产生时钟。该反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2。这两个引脚外接石英晶体振荡器作为定时元件,内部反向放大器自
10、激振荡,产生时钟。C12,C13对频率有微调作用。C12和C13值选择为30PF。晶振频率选择11.0592MHZ。在实际连接中,为了减少寄生电容,更好地保证振荡器稳定,振荡器和电容应尽可能安装得与单片机芯片靠近。3.1.4 抢答电路按照键盘与单片机的连接方式,可以分为独立键盘和矩阵键盘,独立键盘控制起来简单而且软件程序里很好控制,所以本设计采用的是独立键盘来控制选手的抢答。图7 抢答电路八个独立按键分别接单片机的P1口的八个接口,由八位选手或参赛队控制,K1K8分别代表序号18号,当主持人按下开始抢答键后,其中任意一个按键按下就代表这个选手抢答,并将编号显示在数码管上,从而实现抢答成功。3.
11、1.5 显示电路单片机系统中通常有LED和LCD两种显示方式,两种显示器都能显示数字、字符及系统的状态,本系统采用4位 LED显示。如图8所示图8 显示电路四位数码管的八个段选端接P0口的八个接口,由于P0口内部不带上辣电阻,所以需要外接上拉电阻,数码管的四个位选端接P2.0P3.0口,数码管同通过位选端来选择哪个数码管亮,而通过段选来使亮起来的数码管显示不同的数字,八位段选分别用a,b,c,d,e,f,g,h来表示。数码管也分共阴极和共阳极两种,共阴极数码管当段选接高电平时亮,而共阳极的正好相反,接低电平时亮,本设计采用的是共阳极的数码管。3.1.6 主持人控制电路主持人控制两个按键,即抢答
12、开始按键和复位清零按键,如下图9所示:图9 主持人控制电路两个按键分别接单片机的P3.0和P3.1口,当主持人按下抢答开始按键后,选手可以抢答并在数码管上倒计时显示抢答时间15秒,当一个题目回答完毕后主持人徐按一下复位清零键使显示是初始化状态并进入下一轮的抢答。3.1.7 蜂鸣器报警电路本系统中蜂鸣器报警主要用在主持人按开始键、选手抢答按键、复位清零按键、等键按下及没人抢答倒计时计完之后提示,工作和实现都很简单。如下图10所示:图10 蜂鸣器报警电路3.2软件系统设计软件程序主要是实现设计的要求及相关参数指标,如图11为系统的整体软件程序流程图,主要控制各个模块的运行正常,主要流程为:开始,初
13、始化,即上电后数码管上和所有的元件都以程序中初始化的设置存在,再判断主持人控制的抢答开关是否按下,若抢答开关没按下则继续显示初始状态知道按下,若抢答开关按下则判断抢答选手是否抢答,若没有抢答则继续扫描抢答按键直到有选手按下抢答按键,若有选手抢答则数码管上显示抢答选手的编号且倒计时停止跳动,最后结束抢答。图11 系统总体软件设计流程图3.3 系统的仿真3.3.1 软件keil的仿真 运行程序,查找语法错误,按照错误提示修改程序,直到0错误0警告为止才算调试成功,生成HEX文件以方便下载到单片机中。仿真结果如图12所示:图12 软件的仿真结果3.3.2 硬件的proteus仿真硬件按照详细设计中的
14、设计连接好总体的系统电路图,将软件仿真生成的HEX文件下载到单片机并运行仿真;仿真结果如图13所示:图13 硬件仿真图4 总结通过本次设计,让我明白了学以致用的重要性,虽然本次设计的任务不是很难,但设计起来还是需要一些时间和耐心,本次设计中我查阅了很多资料,也对以前学过的一些相关知识作了一定的总结和复习,当然,再设计过程中我也遇到了一些困难,例如,程序调试阶段,一开始程序出了很多问题,一调试错误就是一堆,后来通过查阅相关书籍和网上的资料慢慢的该修改程序,通过这个阶段让我受益匪浅,让我学会了克服困难的精神,当然也加强了我的动手能力。但由于知识水平的局限,设计中可能还存在一些不足,所以在以后的学习
15、中我会加强这方面的不足并加强相关知识的学习。参考文献【1】谢自美,电子线路设计实验测试.(第三版)华中科技大学出版社【2】郭天祥,51单片机C语言教程. 电子工业出版社,2011【3】张毅刚,新编MCS-51单片机应用设计 哈尔滨工业大学出版社,2003【4】张萌,单片机应用系统开发实例 清华大学出版社,2007【5】王虎林,宋雪丽,一种数字式竞赛抢答器的设计J,电脑开发与应用.2010.(1)【6】王青萍,八路智力竞赛抢答器的设计J,湖北教育学院报.2007.(8)【7】康华光,陈大钦. 电子技术基础模拟部分(第五版)M. 北京:高等教育出版社,2005附录1:系统整体电路图附录2 系统源程
16、序#include#define uchar unsigned char#define uint unsigned intuint x,y,shi,ge,zhuchi,haoma,f,a;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 ,0xff; sbit key1=P10; /键盘端口sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit key5=P14;sbit key6=P15;sbit key7=P16;sbit key8=P17;sbit keyzhu=P3
17、0;sbit keyqing=P31;sbit keyf=P37; /蜂鸣器端口sbit wei1=P20; /位选端口sbit wei3=P22;sbit wei4=P23;void delayms(uint xms) /延时函数uint i,j;for(i=xms;i0;i-)for(j=120;j0;j-);void init() /初始化TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=0;x=15;y=0;shi=0;ge=0;haoma=0;zhuchi=0;f=0;keyf=0;void di
18、splay(uint shi,uint ge,uint haoma) /数码显示wei3=0;P0=tableshi; delayms(5);wei3=1;wei4=0; P0=tablege;delayms(5);wei4=1;wei1=0;P0=tablehaoma;delayms(5);wei1=1;void keyscan() /扫描键盘if(a=1)if(zhuchi=0)if(key1=0)delayms(10);if(key1=0)TR0=0; /抢答1zhuchi=1;haoma=1;keyf=1;delayms(300);keyf=0; if(a=1)if(zhuchi=0)
19、if(key2=0)delayms(10);if(key2=0)TR0=0; /抢答2zhuchi=1;haoma=2;keyf=1;delayms(300);keyf=0; if(a=1)if(zhuchi=0)if(key3=0)delayms(10);if(key3=0)TR0=0; /抢答3zhuchi=1;haoma=3;keyf=1;delayms(300);keyf=0; if(a=1)if(zhuchi=0)if(key4=0)delayms(10);if(key4=0)TR0=0; /抢答4zhuchi=1;haoma=4;keyf=1;delayms(300);keyf=0
20、; if(a=1)if(zhuchi=0)if(key5=0)delayms(10);if(key5=0)TR0=0; /抢答5zhuchi=1;haoma=5;keyf=1;delayms(300);keyf=0; if(a=1)if(zhuchi=0)if(key6=0)delayms(10);if(key6=0)TR0=0; /抢答6zhuchi=1;haoma=6;keyf=1;delayms(300);keyf=0; if(a=1)if(zhuchi=0)if(key7=0)delayms(10);if(key7=0)TR0=0; /抢答7zhuchi=1;haoma=7;keyf=
21、1;delayms(300);keyf=0; if(a=1)if(zhuchi=0)if(key8=0)delayms(10);if(key8=0)TR0=0; /抢答8zhuchi=1;haoma=8;keyf=1;delayms(300);keyf=0; if(keyzhu=0)delayms(10);if(keyzhu=0) a=1;TR0=1; /开始计数 ,暂停keyf=1;delayms(200);keyf=0;if(keyqing=0)delayms(10);if(keyqing=0)init(); /停止,重新计数keyf=1;delayms(300);keyf=0;void main()init();while(1)keyscan();display(shi,ge,haoma);void T0_time() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;y+;f+;if(y=20)y=0;shi=x/10;ge=x%10;if(x=0)TR0=0;x=0;keyf=1;delayms(2000);keyf=0;x-;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1