基于STC单片机的路抢答器设计.docx

上传人:b****1 文档编号:10492864 上传时间:2023-05-26 格式:DOCX 页数:16 大小:25.84KB
下载 相关 举报
基于STC单片机的路抢答器设计.docx_第1页
第1页 / 共16页
基于STC单片机的路抢答器设计.docx_第2页
第2页 / 共16页
基于STC单片机的路抢答器设计.docx_第3页
第3页 / 共16页
基于STC单片机的路抢答器设计.docx_第4页
第4页 / 共16页
基于STC单片机的路抢答器设计.docx_第5页
第5页 / 共16页
基于STC单片机的路抢答器设计.docx_第6页
第6页 / 共16页
基于STC单片机的路抢答器设计.docx_第7页
第7页 / 共16页
基于STC单片机的路抢答器设计.docx_第8页
第8页 / 共16页
基于STC单片机的路抢答器设计.docx_第9页
第9页 / 共16页
基于STC单片机的路抢答器设计.docx_第10页
第10页 / 共16页
基于STC单片机的路抢答器设计.docx_第11页
第11页 / 共16页
基于STC单片机的路抢答器设计.docx_第12页
第12页 / 共16页
基于STC单片机的路抢答器设计.docx_第13页
第13页 / 共16页
基于STC单片机的路抢答器设计.docx_第14页
第14页 / 共16页
基于STC单片机的路抢答器设计.docx_第15页
第15页 / 共16页
基于STC单片机的路抢答器设计.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于STC单片机的路抢答器设计.docx

《基于STC单片机的路抢答器设计.docx》由会员分享,可在线阅读,更多相关《基于STC单片机的路抢答器设计.docx(16页珍藏版)》请在冰点文库上搜索。

基于STC单片机的路抢答器设计.docx

基于STC单片机的路抢答器设计

电子制作课程设计

基于STC单片机的8路抢答器设计

姓名:

__朱胜涛___________

班级______测控1151_______

学院:

__自动化学院________

任课教师:

__郭新年_________

2016年05月20日

第一章绪论3

1.1抢答器应用3

1.2抢答器现状分析3

1.3本设计内容、指标3

第二章总体方案设计4

2.1系统构成4

2.2主要硬件选型及介绍4

第三章系统硬件设计5

3.1系统硬件电路5

3.2模块电路设计与实现5

第四章系统软件设计6

4.1软件系统设计6

4.2程序功能流程6

第五章系统调试7

5.1实际硬件系统7

5.1开发环境7

5.1实验结果7

5.1结论与展望7

参考文献8

附件9

要求:

10

第一章绪论

1.1抢答器应用

随着计算机技术的高速发展,单片机以其自身的特点,已广泛应用于智能仪器,工业控制,家用电器,电子玩具等各个领域,特别是抢答题目的时候,同样需要单片机来控制整个过程。

在抢答过程中,为了知道哪一组或哪一位选手先抢答,必须要设计一个系统来完成这个任务,如果在抢答中,靠视觉很难判断出哪组先答题,利用单片机系统来设计抢答器,是以上问题得以解决,即使两组的抢答时间相差几微秒,也可以分辨出哪组优先答题。

这样使得选手都处在同一起跑线上,体现公平公正原则本系统设计的八路抢答器主要是采用ATMEL公司的STC89C51单片机作为核心,控制系统的四个模块分别为:

显示模块,储存模块,语音模块,抢答开关模块。

抢答组数在八组以内任意使用。

通过本系统的设计后,主持人可以很快判断是谁抢答成功,以及给予相应的惩罚。

1.2抢答器现状分析

近年来,随着单片机档次的不断提高,功能的不断完善,其应用日趋成熟、应用日趋扩大,特别是工业侧控、尖端武器和日用家电等领域更是因为有了单片机而生辉增色。

单片机应用技术已成为一项新的工程应用技术。

本课程设计正是以89C52单片机为中心设计的简单的

1.3本设计内容、指标

设计思路

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。

当第一个人按下按键后,则在显示器上显示该组的号码,同时电路将其他各组按键封锁,使其不起作用。

回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。

该电路包括输入开关、声光显示、判别组控制以及组号锁存等部分。

工作原理

接通电源后,选手在定时时间内抢答时,抢答器完成:

优先判断、编号锁存、编号显示、扬声器提示。

当一轮抢答之后,定时器停止、禁止二次抢答。

如果再

次抢答必须由主持人再次操作’‘复位”键才能再次开始抢答。

第二章总体方案设计

2.1系统构成

主要电路的设计

抢答电路完成两个功能:

一是分辨出选手按键的先侯,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效复位电路的设计该复位电路采用上电自动复位和手动复位两种复位方式,要实现复位只需在,StC89C52单片机的RESE下引脚上加上5ms的高电平就可以了。

上电复位是利用电容的充电来实现的,即上电瞬间RESET端的电位与Vcc相同,随着电容上储能增加,电容电压也逐渐增大,充电电流减小,RESET端的电位。

这样就会建立一个脉冲电压,调节电容与电阻的大小可对脉冲的持续时间进行调节。

通常若采用12MHz的晶振时,复位元件参数为10NF的电解电容和1OkQ的电阻。

按钮复位电路是通过按下复位按钮时,电源对RESE丁端维持两个机器周期的高电平实现复位的。

晶振电路的设计

StC89C52单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。

本设计中采用内部时钟方式。

音频放大电路

其主要在于当单片机执行中断后,当输出信号时能够在很短的时间里让扬声器工作并持续一定的时间。

当抢答器程序响应,使三极管导通,蜂鸣器的放大电路被接通,与此同时,喇叭发出声响。

显示电路

显示电路可由LED或LCD来实现。

此处选用LED方式,由6位七段显示器来实现淇亮度高,使用简单方便。

电源电路

电源采用全波整流,简单方便。

2.1主要硬件选型及介绍

第三章系统硬件设计

3.1系统硬件电路

为使硬件电路设计尽可能合理,应注意以下几方面:

(1)尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替若干普通芯片,随着生产工艺的提高,新型芯片的价格不断下降,并不一定比若干普通芯片价格的总和高。

(2)留有设计余地。

在设计硬件电路时,要考虑到将来修改扩展的方便。

因为很少有一锤定音的电路设计,如果现在不留余地,将来可能要为一点小小的修改或扩展而被迫进行全面返工。

(3)程序空间,选用片内程序空间足够大的单片机,本设计采用STC89C52单片机。

(4)I/O端口,在样机研制出来后进行现场试用时,往往会发现一些被忽视的问题,而这些问题不是靠单纯的软件措施来解决的。

如有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。

如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用的时候就派上用场了。

系统设计原理图

1.本设计各原理图所使用的画图软件简介

AltiumDesigner的介绍

如图,AltiumDesigner是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows操作系统。

这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

AltiumDesigner采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源--地层和16个机加工层。

2.原理图

图3.1-1系统原理图

如图,P3.3口为开始START键,P3.4为复位RESET键,P1.0-P1.7为八路抢答输入S1-S8键,数码管段选P0口,位选P2.4、P2.5、P2.6、P2.7,蜂鸣器输出为P2.0口。

P3.5为时间加1ADD键,P3.6为时间减1DEC键。

3.2模块电路设计与实现

1.时钟频率电路的设计

图3.2-1

如图3-3,单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。

本设计采用12M晶振,使计时更加精准。

单片机一般选用石英晶体振荡器。

此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。

电路中两个电容C1,C2的作用有两个:

一是帮助振荡器起振;二是对振荡器的频率进行微调。

C1,C2的典型值为30PF。

单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。

其大小是时钟信号频率的倒数,常用fosc表示。

如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12μs。

2.显示电路的设计

图3.2-2

如图3-5,数码管采用4位八段共阳极LED,位选采用PNP三极管间接控制。

增强数码管的电流输入。

避免了因单片机驱动电流较小而引起的显示问题。

使选手和主持人都能清楚的看到显示内容。

且大大减小了单片机的负担。

3.键盘扫描电路的设计

键盘是人与微机系统打交道的主要设备。

键盘分为独立式和矩阵式。

它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。

其次就是消除在按键过程中产生的“毛刺”

现象。

这里采用最常用的方法,即延时法,延时法的原理为:

因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取200ms)后再进行运算。

本设计共12个键。

为增强本设计的稳定性,减少单片机的工作量,在单片机剩余引脚允许的情况下,本设计采用了独立式键盘。

1.抢答部分

图3.2-3

2.主持人控制部分

图3.2-4

4.报警电路的设计

图3.2-5

如图,本设计对声音要求不高,不需要复杂的编程。

我们只需要简单的控制P2.7的高低电平即可。

4.电源电路的设计

图3.2-6

如图,为了能够使用更广的电源电压范围,并且保证系统电压的稳定性,这里使用简单且性能可靠的线性稳压器78M05,为系统提供可靠的5V电源。

第四章系统软件设计

4.1软件系统设计

采用单片机内部定时器来产生倒计时所需的秒信号,因为定时器所能计数的最大值为65535,在12M系统时钟下,单次计时时间最多为65535us,为了计算方便,我们对计数器赋初值65535-50000=15535,这样使得定时器单次定时为50ms,计时完成后进入定时器中断,用变量t来计量进入中断的次数,当进入次数为20时,刚好为一秒时间,此时将变量t清零,并将倒计时值减一。

4.2程序功能流程

图4.2-1

第五章系统调试

5.1实际硬件系统

图5.1-1

实验测试的效果图,在程序烧录成功后,取得理想的效果。

5.1开发环境

运用KeiluVision5软件进行编程,烧录软件进行烧录,达到实验的最终目的,取得成功。

图5.2-1

KeiluVision5

如图,KeiluVision5是一款主要用于ARM开发的MDK软件,我们通过一定的配置使其与C51编译器融合,实现可以同时用于ARM和51单片机的开发。

Keil的网站虽然没有中文版本,但是Keil软件却被中国80%的硬件工程师使用,但凡与电子相关的专业,都会开始从单片机和计算机编程开始学习,而学习单片机自然会用到Keil软件。

国内由米尔科技、亿道电子、英倍特提供Keil的销售和技术支持服务,他们是ARM公司合作伙伴,也是国内领先的嵌入式解决方案提供商。

5.2实验结果

在单片机输入程序后,经过认真的测试,效果特别的正常,各项结果符合老师给的要求。

5.3结论与展望

首先,结业课题的研究是检验我们课堂学习成果的重要措施,也是提高教学质量的重要环节,是作为大学生所必须完成的任务。

通过本次课题的研究,可以锻炼我们同学仔细认真的学习态度,可以很好的培养我的求实创新思维。

本课题主要是研究和设计基于51单片机的8位数字抢答器,选用STC89C52单片机芯片作为核心,加上廉价的LED数码管巧妙完美的配合,设计出了廉价,实用,小巧的抢答器,提升了抢答器市场的竞争力,弥补了智力竞赛的不足。

本课题是以产品的低能耗、提高性价比为出发点进行构思设计,STC89C52单片机采用CMOS工艺。

大大减少了系统的能耗。

符合国家节能减排的大背景。

数字抢答器的设计这一课题具有很强的针对性实战性,很好的考查了我对电子类知识的掌握能力,在研究课题期间让我学习到了很多知识同时也认识到了自己的不足之处,为我今后的发展提供更好的指引;拿到课题后在老师的关怀指导和同学们的热心帮助下,通过查阅相关书籍、上网查阅等途径涉猎与课题相关的知识,经过不懈努力最终将课题完成,在这期间很好的培养了我独立处理问题的能力和主动涉猎知识的习惯,为我以后的学习生活打下了更好的基础。

附件

/*******************>>>程序开始<<<******************//

//项目:

基于STC单片机的8路抢答器设计

//作者:

朱胜涛

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitSW1=P1^0;

sbitSW2=P1^1;

sbitSW3=P1^2;

sbitSW4=P1^3;

sbitSW5=P1^4;

sbitSW6=P1^5;

sbitSW7=P1^6;

sbitSW8=P1^7;

sbitSTART=P3^3;

sbitRESET=P3^4;

sbitADD=P3^5;

sbitDEC=P3^6;

sbitA=P2^0;

sbitH1=P2^4;

sbitH2=P2^7;

sbitH3=P2^6;

显示部分:

段选:

P0.0~P0.6;7段

位选:

P2.4,P2.6,P2.7;三位

注:

共阳极LED

*/

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,};

voidkeyscan();

voiddisplay();

voiddelay(uint);

voidreset();

voiddeal();

uintinput=30;

ucharge,shi,bai=0,n=1,m=0,t=0,temp;

voidmain()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

while

(1)

{

keyscan();

display();

}

}

//系统复位函数

voidreset()

{

TR0=0;//关定时器

TH0=(65536-50000)/256;//重装初值。

TL0=(65536-50000)%256;//低8位

t=0;//中断函数计数清零

A=0;//***********

delay(500);//报警500毫秒

A=1;//***********

bai=0;//选手编号清零

input=30;//设置剩余时间

}

//系统显示函数

voiddisplay()

{

H1=0;//**************************************

P0=table[bai];//*********选手编号显示*************

delay

(1);//**************************************

H1=1;//关一位数码管,保证选手编号位不被干扰**

H2=0;//**************************************

P0=table[shi];//*********剩余时间十位显示*********

delay

(1);//**************************************

H2=1;//*********关二位数码管*************

H3=0;//**************************************

P0=table[ge];//*********剩余时间个位显示*********

delay

(1);//**************************************

H3=1;//*********关三位数码管*************

}

//拆分任意两位数函数

voiddeal()

{

shi=input/10;//取整

ge=input%10;//取余

}

//键盘扫描函数

voidkeyscan()

{

//复位操作,无论何时,都可以复位,节省时间

if(RESET==0)

{

delay(10);//延时10毫秒,防止按键机械振动引起的误差

reset();//系统复位

n=1;//复位后开启主持人其他权限

}

//n为1时,表示还没开始抢答,可以操作

if(n)

if(START==0)//开始抢答>>需要自锁<<

{

TR0=1;//开定时器

A=0;//*************

delay(500);//报警500毫秒*

A=1;//*************

m=1;//开启选手抢答权限

n=0;//自锁,开始后不检测此按钮,有效防止在选手答题时主持人误操作。

}

//调整时间函数,抢答前可操作。

if(n)

{

if(ADD==0)

{

delay(10);//防止按键抖动重复加一

input++;//时间加一

}

if(DEC==0)

{

delay(10);

input--;//时间减一

}

}

//主持人启动START按钮后,开始检查选手按钮。

if(m)

{

if(P1!

=0xFF)//如果有选手抢答,则找出他的编号

{

temp=P1;

m=0;//自锁,此后不再检测选手抢答键,直到主持人启动START为止。

switch(temp)

{

case0xFE:

bai=1;//一号选手答题

break;

case0xFD:

bai=2;//二号选手答题

break;

case0xFB:

bai=3;//三号选手答题

break;

case0xF7:

bai=4;//四号选手答题

break;

case0xEF:

bai=5;//五号选手答题

break;

case0xDF:

bai=6;//六号选手答题

break;

case0xBF:

bai=7;//七号选手答题

break;

case0x7F:

bai=8;//八号选手答题

break;

}

TR0=0;//关定时器,剩余时间不再减少,显示剩余时间

}

}

}

//中断方式一服务程序。

voidtimer()interrupt1

{

TH0=(65536-50000)/256;//重装初值。

TL0=(65536-50000)%256;

t++;//每累加一次,判断是否到20.

if(t==20)//如果到了20次,说明1秒时间到。

{

t=0;//然后把t清零重新再记20次。

input--;//减一秒

if(input==0)//如果没人回答,自动复位;

reset();//系统复位

deal();//刷新显示

}

}

//延时函数,利用系统计算时间延时,不占用计时器。

voiddelay(uintz)

{

uintx,y;

for(x=100;x>0;x--)

for(y=z;y>0;y--);

}

参考文献

[1]臧殿红,臧殿红.基于AT89S51的八路抢答器的设计[J].科技信息,2011,25期:

3.

[2]张毅刚.新编MCS-51单片机应用设计[M].3版.哈尔滨:

哈尔滨工业大学出版社,2008:

4

[3]王建.单片机入门与典型应用实例[M].1版.北京:

中国电力出版社,2010:

6-7

[4]郭天祥.新概念51单片机C语言教程[M].1版.哈尔滨:

电子工业出版社,2009:

7-10.

[5]凌志浩.AT89C52单片机原理与接口技术[M].1版.北京:

高等教育出版社,2011:

10

[6]李学海.经典80C51单片机轻松入门与上手[M].1版.哈尔滨:

清华大学出版社,2009:

10-11

[7]赵建岭.Protel99SE设计宝典[M].1版.哈尔滨:

电子工业出版社,2011:

17

[8]郭天祥.新概念51单片机C语言教程[M].1版.哈尔滨:

电子工业出版社,2009:

13.

[9]李朝青.单片机原理及接口技术[M].3版.北京:

北京航空航天大学出版社,2006:

15.

[10]王东锋.单片机C语言应用100例[M].1版.哈尔滨:

电子工业出版社,2009:

17.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2