1、- - word.zl- -目录绪论- II引言- 1第1章系统设计容-21.1 系统设计依据- 21.2 设计任务和要求-21.3设计目的- 2第2章硬件设计-52.1 单片机控制原理-52.2 抢答器的原理- 52.2.1 原理框图- 52.3 功能模块电路- 52.3.1 开场抢答电路和选手抢答键- 52.3.2.显示与显示驱动电路- 5第3章 软件设计- 103.1程序设计- 10第4章系统调试- 18第5章 总结- 18参考文献- 19附录一 程序代码- 20附录二 原理图- 27- word.zl- -摘 要- word.zl- -随着社会的不断进步,电子技术也飞速的向前开展.特别
2、是大规模集成电路的开展,把我们带进了电子化时代。电子产品的日益增多,也让我们的生活越来越方便。特别是计算机的开展,真可谓是突飞猛进。自从1946年世界上第一台计算机的诞生以来,还不到六十年的时间,计算机就取得了举世瞩目的成绩。特别是在通信领域,实现了信息一体化的时代。作为大学生的我们,更需要加强实践能力的培养。课程设计在一定程度上反映了我们对理论知识的理解程度,是理论与实践的桥梁。它不仅能锻炼我们的动手能力,而且能够培养我们对问题的思考能力以及对知识的进一步了解。当你能把你所学到知识化作为现实的东西时,我们能力就提升到一个新台阶。很多人都认为学习是枯燥无味的,有时觉得与现实太遥远。在学习之余,
3、我们仍然可以找到一点有趣的事情,比方说做一个声控灯泡、数字钟等等。生活中我们要找到自己感兴趣的东西。这次综合课程设计中,我们制作了八路抢答器。抢答器是为智力竞赛参赛者答题时进展抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式,但这种方式制作过程复杂,而且准确性与可靠性不高,成品面积大,安装、维护困难。本节介绍一种利用51单片机作为核心部件进展逻辑控制及信号产生的八路抢答器。近年来,随着单片机档次的不断提高,功能的不断完善,其应用日趋成熟、应用领域日趋扩大,特别是工业测控、尖端武器
4、和日用家电等领域更是因为有了单片机而生辉增色。单片机应用技术已成为一项新的工程应用技术。本次课程设计我们做的是八路抢答器,我们采用AT89C51单片机实现抢答功能,性能更稳定,更易操作调试。关键词:多路数字抢答器 AT89C51PROTEUS- word.zl- - word.zl- - word.zl- -引 言随着电子技术的飞速开展,基于单片机的控制系统已经广泛应用于工业、农业、电力、电子、智能楼宇等行业。微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。同时楼宇智能化的开展与成熟,也为基于单片机的照明控制系统的普及与应用奠定了坚实的根底。电子智能抢答器在抢答过
5、程中,为了知道哪一组或哪一位选手先答复下列问题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒也可以分辨出使哪组优先答复下列问题。抢答组数可以在八组以任意使用,本系统设计为模块形式采用九针插头进展连接,系统工作原理本系统采用AT89C51单片机作为核心。控制系统的五个模块分别为:单片机最小系统、显示模块、显示驱动模块、抢答开关模块、音乐音频输出模块。多路数字抢答器在各种智力竞赛中经常用到。在各校举行的各种竞赛中我们也经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答
6、题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。为解决这个问题,我准备借本次课程设计的时机制作一个八路数显抢答器。一方面加深我们对所学习的知识的了解,稳固模拟、数字电路知识,也提升我们解决日常生活中常见问题的能力,掌握一般设计方法与设计步骤。积累实际设计制作经历,为走向更复杂更实用的应用领域奠定根底。控制系统主要由单片机控制电路、存储器接口电路及显示电路组成。具体以AT89C51单片机为系统工作核心,负责控制各个局部协调工作。在其外围接上了复位电路、上拉电阻、数码管、按钮及扬声器,其中用到了WAVE软件,集成调试环境,集成编辑器、编译器、调试器,支持软件模拟等。同时也用到了PRO
7、TEUS软件,通过仿真可完全实现对所设计系统的功能的模拟。1绪 论单片机作为计算机的一个重要分支,其应用围很广,开展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用围十分广泛。对于计算机专业的学生来说,即使暂时没有从事单片机的应用与开发,学习单片机也有很重要的意义。学习它,不仅为将来可能从事该方面的开发打下根底,另一方面,由于单片机作为微型计算机的一个种类,麻雀虽小,五脏俱全,可以把它当作微型计算机的一个简化模型来对待,学习单片机可以加深对微型计算机工作原理的理解,更加清楚计算机的脉络。同时,提供了一个实际应用手
8、段。21世纪,是一个信息技术飞速开展的时代,智力竞赛是一种形式比拟活泼的教育方式,是人们休闲娱乐生活的一局部。这些竞赛一方面充实了人们的娱乐生活,另一方面也提高了人们努力汲取相关领域的知识的兴趣。智力竞赛,也就是几个参赛选手之间在规定的时间,规定的地点相互竞争的比赛。抢答是各种竞赛常用的一种形式。在抢答赛中,往往要有主持人宣布抢答的开场,还要确定是哪个选手抢到了答题权,具体答题的时间有时也要设定。这些如果仅凭主持人的主观判断,很容易出现误判的情况。因此,在竞赛中,抢答器就扮演了一个非常重要的角色。第1章 系统设计容1.1系统设计依据抢答器由计数器、存放器、集成定时器和译码显示等组合、时序电路组
9、成。可分为抢答电路,定时电路,报警电路等几个单元局部。每个单元电路分别可以处理一些抢答竞赛中的根本问题。本次课程设计设计的是一个多路定时抢答器,是一个多于两位选手参赛的一个抢答器,具有锁存和显示功能。同时有主持人控制系统的清零和抢答的开场。抢答开场后,假设有任何一名选手按动抢答按钮,抢答器就会显示该选手编号直至系统被主持人清零,同时其他人再抢答就无效了。1.2设计任务和要求设计一个八路抢答器要求:(1)设计出硬件电路; (2)设计出软件编程方法,并写出源代码; (3)用PROTEUS进展仿真; (4)论文格式要符合学院的统一规定,构造要合符逻辑,表达要得体。1.3 设计目的通过设计学习单片机最
10、小系统的根本设计方法,掌握单片机应用系统的开发调试过程。1学习单片机开发工具功能、特点和使用方法。2学会单片机控制系统程序的编制和编制和调试方法。3设计单片机抢答器硬件电路,绘制出电路原理图。4编制并调试出键盘扫描程序和显示驱动程序。5掌握单片机定时器的根本用法,编制出定时器的中断程序。第2章硬件设计2.1 单片机控制原理单片机SCM是单片微型计算机Single Chip Microputer的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表部。但存储量
11、小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。简单的说,用单片机系统来设计抢答器,实现两组的抢答时间即使是相差几微秒,也可分辨出哪组优先答题。P0端口P0.0-P0.7:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进展校验时,P0输出原码,此时P0外部必须被拉高。P1端口P1.0-P1.7:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓
12、冲器能接收输出4TTL门电流。P1口管脚写入1后,被部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2端口P2.0-P2.7:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进展存取时,P2口输出地址的高八位。在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进展读
13、写时,P2口输出其特殊功能存放器的容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3端口P3.0-P3.7:P3口管脚是一个带有部上拉电阻的8位的双向I/O端口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被部上拉为高电平,并用作输入。作为输入端时,由于外部下拉为低电平,P3口将输出电流ILL。2.2 抢答器的原理抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。主持人按下开场抢答键才可以抢答。主持人没有按下开场抢答按纽P3.0,有人抢答那么抢答违规,报警并显示组号,主持人按下开场抢答开关重新抢答。主持人按下开场抢答按纽P3.0,蜂鸣响声提示,数
14、码管30秒倒计时抢答,蜂鸣器响声提示并显示他的组号,30秒有人抢答那么开场60秒倒计时60秒必须答复完问题,最后五秒倒计时警报。单片机最小系统、抢答按键模块四位并行数码显示、显示模块、显示驱动模块、抢答开关模块、蜂鸣器音频输出模块。2.2.1 原理及电路总框图图2.2.1抢答器总原理图2.3 功能模块电路2.3.1开场抢答电路和选手抢答键在此次课程设计电路中当一个问题完毕主持人后按下复位开关后进展下一题的准备。89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,中选手按下按钮时,P1口个端口的电平变化从P1口输入,经单片机处理后从P0输出
15、由数码管显示抢答者编号。图2.3.1开场抢答电路和选手抢答键2.3.2显示与显示驱动电路此电路包括显示和驱动,显示采用数码管,驱动用P2口, 违规者编号、抢答30秒倒计时、正常抢答者编号和答复下列问题时间60秒倒计时,数码管采用动态显示。驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平那么能驱动数码管使其显示数字。在+5V电压下接10k的电阻,保证正常压降。图2.3.2显示与显示驱动电路第3章 软件设计3.1 程序代码3.1.1 主程序#include#define uchar unsigned char#define uint unsigned ints
16、bit key1 = P22;sbit key2 = P21;sbit key3 = P20;sbit key4 = P32;sbit key5 = P33;sbit key6 = P34;sbit key7 = P37;sbit key8 = P36;sbit key9 = P35;uchar code led = 0x3F,/ 00x06,/ 10x5B,/ 20x4F,/ 30x66,/ 40x6D,/ 50x7D,/ 60x07,/ 70x7F,/ 80x6F,/ 9;uchar dis_i = 0;uchar num = 0,flag = 0;void delay(uint a)uc
17、har i;while(a-)for(i=0;i250;i+);void main()TMOD = 0x01;ET0 = 1;TH0 = 0xec;TL0 = 0x78;TR0 = 1;EA = 1;while(1)P3 = P3 | 0xfc;P2 = P2 | 0x07;if(flag = 0)if(key9 = 0)delay(10);if(key9 = 0)flag = 1;else if(flag = 1)if(P3 & 0xfc) != 0xfc) | (P2 & 0x07) != 0x07)delay(10);if(P3 & 0xfc) != 0xfc) | (P2 & 0x07
18、) != 0x07)if(key1 = 0 & flag != 2)num = 1;flag = 2;if(key2 = 0 & flag != 2)num = 2;flag = 2;if(key3 = 0 & flag != 2)num = 3;flag = 2;if(key4 = 0 & flag != 2)num = 4;flag = 2;if(key5 = 0 & flag != 2)num = 5;flag = 2;if(key6 = 0 & flag != 2)num = 6;flag = 2;if(key7 = 0 & flag != 2)num = 7;flag = 2;if(
19、key8 = 0 & flag != 2)num = 8;flag = 2;else if(flag = 2)if(key9 = 0)delay(10);if(key9 = 0)flag = 0;num = 0;while(!key9);void display() interrupt 1TH0 = 0xec;TL0 = 0x78;dis_i = (dis_i + 1) % 4;switch(flag)case 0:switch(dis_i)case 0:P0 = 0xff;P2 = 0x7f;break;case 1:P0 = 0xff;P2 = 0xbf;break;case 2:P0 =
20、 0xff;P2 = 0xdf;P0 = led0;break;case 3:P0 = 0xff;P2 = 0xef;P0 = led0;break;break;case 1:switch(dis_i)case 0:P0 = 0xff;P2 = 0x7f;P0 = led0;break;case 1:P0 = 0xff;P2 = 0xbf;P0 = led0;break;case 2:P0 = 0xff;P2 = 0xdf;P0 = led0;break;case 3:P0 = 0xff;P2 = 0xef;P0 = led0;break;break;case 2:switch(dis_i)c
21、ase 0:P0 = 0xff;P2 = 0x7f;P0 = 0x00;break;case 1:P0 = 0xff;P2 = 0xbf;P0 = 0x00;break;case 2:P0 = 0xff;P2 = 0xdf;P0 = 0x00;break;case 3:P0 = 0xff;P2 = 0xef;P0 = lednum;break;break;第4章 系统调试软件的设计与调试实行分模块实现的方法。本设计软件调试中的分模块包括显示功能模块,调整时间功能模块,抢答功能模块以及报警功能模块。各个独立模块功能调试成功后,将这些模块程序通过主程序合并在一起,最后再对合并后的总程序进展调试。各
22、软件模块首先要通过PC和仿真器进展软件调试,当仿真效果符合要求后在烧写进单片机看是否在实际电路板上正常工作。本设计通过利用Proteus仿真,将所编写的程序用wave软件编译,所仿真原理图见附录。第5章 结论自接触单片机以来,一直觉得单片机非常难,这次的课程设计我开场是以教师布置题目为主要选择对象的,但是后面发现,像八路抢答器在我脑海中根本没得一点意象,上网搜了很多资料,也感觉不怎么很懂,于是问教师怎么弄,后面发现教师的意见和我的原本的程序和图只有几个地方不同,于是便将两者综合了一下,经调试和运行后,发现还行的通,于是便开场了忐忑的正文模版之路,以为快搞完了,后面发现其实程序和图还是要细细的弄
23、懂才能写好报告,于是我又将程序和图细细的剖析了一遍,慢慢的画出流程图,然后慢慢将流程图和proteus图画好和截取下来,经过最近这段时间的在电脑前面的驻守,觉得只要自己肯付出和努力,发现其实很多的东西不是那么难懂的,以后还是要好好提升自己的动手能力和独立思考的能力。在此,还是非常感我们的指导教师,她是一位很负责和很细心的教师,她的辅导和鼓励,这次的课程设计给了我一个很好的开场,我会好好努力的以后。纵然课程设计是学校所要求的科目,纵然每次都这么紧和辛苦,但是我还是觉得有些东西做了,就一定会有一定的价值吧。参考文献资料1 迎新. ?单片机初级教程?.航天航空大学 2000年.2 康华光. ?电子技
24、术根底模拟局部?.第四版 高等教育 1999年.3 喻宗泉. ?单片机原理与应用技术?.电子科技大学 2005年.4 万光毅. ?单片机实验与实践教程?. 航天航空大学 2003年.5 俊谟. ?单片机初级教程?.航天航空大学 2000年.附录一抢答器程序 #include#define uchar unsigned char#define uint unsigned intsbit key1 = P22;sbit key2 = P21;sbit key3 = P20;sbit key4 = P32;sbit key5 = P33;sbit key6 = P34;sbit key7 = P37
25、;sbit key8 = P36;sbit key9 = P35;uchar code led = 0x3F,/ 00x06,/ 10x5B,/ 20x4F,/ 30x66,/ 40x6D,/ 50x7D,/ 60x07,/ 70x7F,/ 80x6F,/ 9;uchar dis_i = 0;uchar num = 0,flag = 0;void delay(uint a)uchar i;while(a-)for(i=0;i250;i+);void main()TMOD = 0x01;ET0 = 1;TH0 = 0xec;TL0 = 0x78;TR0 = 1;EA = 1;while(1)P3
26、 = P3 | 0xfc;P2 = P2 | 0x07;if(flag = 0)if(key9 = 0)delay(10);if(key9 = 0)flag = 1;else if(flag = 1)if(P3 & 0xfc) != 0xfc) | (P2 & 0x07) != 0x07)delay(10);if(P3 & 0xfc) != 0xfc) | (P2 & 0x07) != 0x07)if(key1 = 0 & flag != 2)num = 1;flag = 2;if(key2 = 0 & flag != 2)num = 2;flag = 2;if(key3 = 0 & flag
27、 != 2)num = 3;flag = 2;if(key4 = 0 & flag != 2)num = 4;flag = 2;if(key5 = 0 & flag != 2)num = 5;flag = 2;if(key6 = 0 & flag != 2)num = 6;flag = 2;if(key7 = 0 & flag != 2)num = 7;flag = 2;if(key8 = 0 & flag != 2)num = 8;flag = 2;else if(flag = 2)if(key9 = 0)delay(10);if(key9 = 0)flag = 0;num = 0;whil
28、e(!key9);void display() interrupt 1TH0 = 0xec;TL0 = 0x78;dis_i = (dis_i + 1) % 4;switch(flag)case 0:switch(dis_i)case 0:P0 = 0xff;P2 = 0x7f;break;case 1:P0 = 0xff;P2 = 0xbf;break;case 2:P0 = 0xff;P2 = 0xdf;P0 = led0;break;case 3:P0 = 0xff;P2 = 0xef;P0 = led0;break;break;case 1:switch(dis_i)case 0:P0
29、 = 0xff;P2 = 0x7f;P0 = led0;break;case 1:P0 = 0xff;P2 = 0xbf;P0 = led0;break;case 2:P0 = 0xff;P2 = 0xdf;P0 = led0;break;case 3:P0 = 0xff;P2 = 0xef;P0 = led0;break;break;case 2:switch(dis_i)case 0:P0 = 0xff;P2 = 0x7f;P0 = 0x00;break;case 1:P0 = 0xff;P2 = 0xbf;P0 = 0x00;break;case 2:P0 = 0xff;P2 = 0xdf;P0 = 0x00;break;