四路单片机抢答器Word文档下载推荐.docx

上传人:b****4 文档编号:16902746 上传时间:2022-11-27 格式:DOCX 页数:16 大小:198.98KB
下载 相关 举报
四路单片机抢答器Word文档下载推荐.docx_第1页
第1页 / 共16页
四路单片机抢答器Word文档下载推荐.docx_第2页
第2页 / 共16页
四路单片机抢答器Word文档下载推荐.docx_第3页
第3页 / 共16页
四路单片机抢答器Word文档下载推荐.docx_第4页
第4页 / 共16页
四路单片机抢答器Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

四路单片机抢答器Word文档下载推荐.docx

《四路单片机抢答器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《四路单片机抢答器Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

四路单片机抢答器Word文档下载推荐.docx

有人抢答后,系统自动封锁其他选手的抢答按钮,使其不再抢答,从而实现抢答功能。

该系统还增加了抢答倒计时功能,可以调整。

通过自主的设计、编程和调试出一个简单的四路抢答并在液晶屏显示抢答成功者号码;

熟悉C语言编程以及模电的电路知识;

了解单片机仿真系统的使用方法,达到提高综合运用相关知识的能力;

进一步熟悉和掌握Proteus7的使用方法;

掌握单片机系统设计全部过程的目的。

指标及设计要求:

1、能够运用所学的电路、模拟电子技术、数字电子技术、高频电子技术、单片机原理等课程知识设计基本电子应用系统。

2、能应用电子设计的基本理论,根据所给技术指标,分析系统功能,完成系统的硬件电路设计,对并电路参数进行设计。

3、能够针对所设计的电路,在电脑中用Proteus软件对设计电路进行仿真,并根据仿真结果分析系统是否达到设计要求。

4、能应用撰写设计报告,根据期刊论文要求,撰写系统设计文档。

题目分析

抢答器一般是由很多电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。

因此我们设计了以单片机为核心的新型智能的抢答器,在保留了原始抢答器的基本功能的同时又增加一系列的实用功能。

并简化其电路结构。

控制系统的三个模块为:

显示模块、存储模块、抢答开关模块。

该系统通过开关电路四个按键输入抢答信号,利用1602液晶屏来完成显示功能,用按键来让选手进行抢答,在液晶屏上显示抢答最快的号码及时间,从而实现整个抢答过程。

本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。

系统工作原理本系统采用AT89C52单片机作为核心。

工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理,输出控制信号,单片机控制的智能抢答器设计。

第2章整体构思

抢答器的设计方案要实现以下功能:

(1)抢答器同时供4名选手或4个代表队比赛,分别用4个按钮Nnmber1~Number4表示。

(2)设置一个系统清除Startingsystem和抢答控制开关Start,该开关由主持人控制。

(3)抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,并在1602液晶屏上显示,同时蜂鸣器发出报警声响提示。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如10秒)。

当主持人启动"

开始"

键后,定时器进行减计时(5)如果定时时间已到,无人抢答,本次抢答无效,系统禁止抢答,定时显示器上显示01s。

该设计采用AT89C52单片机作为控制系统核心。

该系统可以完成信号识别,运算控制以及显示功能。

具体实现:

硬件电路应能完成以下功能:

参加竞赛者对主持人提出的问题要在最短的时间内作出判断,并按下抢答按键回答问题。

当第一个人按下按键后,则在显示器上显示此竞赛者的号码并进行声音提示,同时电路将其他抢答按键封锁,使其不起作用。

若有人在可以抢答之前按键,应该有违规提示。

电路应该具有倒计时功能,倒计时时间可以设置并显示,在规定时间内没有人抢答则本题作废。

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

图1抢答器原理图

第3章各部分定性说明

3.1抢答器的电路图

如图

(2)所示为电路图,其工作原理为:

接通电源后主持人将开关拨到“清零”状态,抢答器处于禁止状态,定时器设定时间,主持人将开关置“开始”,宣布抢答开始时,选手要在规定时间内完成抢答;

定时器倒计时优先判断,编号锁存,扬声器提示。

图2抢答器仿真电路图

3.2液晶屏显示电路

使用液晶屏显示抢答成功者号码、时间。

液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点。

3.3按键控制电路

键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。

键盘按结构形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。

在单片机中使用的都是非编码键盘,因为非编码键盘结构简单,成本低廉,非编码键盘的类型很多,常用的有独立式键盘,行列式键盘等。

独立式键盘,键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。

因此可以根据实际需要对键盘中的按键灵活的编码。

如图3所示。

图3独立式键盘原理图

最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进行编码,称按键直接状态码,对于这样编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。

独立式键盘的缺点是需要占用比较多的I/O口线,当单片机应用系统键盘中需要的按键比较少或I/O口线比较富余时,可以采用这样类型的键盘。

第3章仿真部分

3.1仿真实现

本设计的抢答器的程序采用的是C程序设计,C语言的显著特点是用二进制来编写程序,程序的各个部分除了必要的信息交流外彼此之间相互独立。

这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。

本次设计的主程序中包括时钟设计程序,定时器中断子程序,数码管显示程序以及按键控制子程序。

抢答器主流程图如图4所示:

图4抢答器主程序流程图

抢答器定时中断流程图如图5:

图5抢答器定时器中断流程图

4.2系统调试和结果分析

具有清零装置和抢答控制,可由主持人操纵。

具有定时功能,在10S内无人抢答表示所有参赛选手对本题弃权。

10S时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。

电路中的六个按键从上到下分别是清零键、开始键和四组选手的按键。

仿真现象及调试结果如图6、图7、图8所示。

1)图6为主持人按下清零键后的截图,此时液晶屏两项均显示0.

1)运行设计,等待主持人开始。

如图6:

图6

2)主持人按下启动键后的截图,液晶屏显示从10秒开始倒计时。

如图7:

图7

3)选手按下时的截图,显示对应的选手编号,例如3号选手,如图8所示:

图8

设计心得体会

这次课程设计是基于单片机设计四路数字抢答器,让我对电子学习也有了更深刻的认识,只有打下良好的基础才会学以致用,才会发挥出作用。

在本次课程设计过程中遇到了许多困难,PROTEUS做出的仿真效果不符合要求,用C语言编写的程序也出现问题,令人头疼不已,后来在经过查找相关资料,在老师同学的帮助下,终于改正了错误。

完成这次课程设计,让我深刻的认识是单片机对于我们专业的重要性,我对单片机的学习还是不够精通,有了这次课程设计的体会,我一定会利用课余时间更深的了解单片机知识。

认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准,所以这个课程设计对我们的作用是非常大的。

经过二个星期课程设计制作,过程曲折可谓一波三折,点点滴滴无不令我回味无穷。

没有经过实践永远都不会知道结果是怎样的,当实践的结果证实了你要得到的结论时那种心情真是不知如何表达。

我也非常的坚信只要付出了一定会有收获,并且这个过程是很美的享受!

汗水预示着结果也见证着收获。

通过本次课程设计,我真正感受到了那种快乐和喜悦!

并且懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在此我非常要感谢的是我的指导老师,感谢老师的细心认真的辅导,教给我许多原来不知道的知识。

这次课程设计能够顺利的完成,,同时也离不开指导老师的答疑解惑和同学的帮助。

参考文献

[1]李泉溪.《单片机原理与应用实例仿真》.北京航天航空大学出版社2009年

[2]江世明.《基于Proteus的单片机应用技术》.电子工业出版社2008年

[3]喻宗泉.《单片机原理与应用技术》.西安电子科技大学出版社2005年

[4]万光毅.《单片机实验与实践教程》.北京航天航空大学出版社2003年

附录1源程序

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

ucharnum;

//定义中断变量,num计满20表示1秒时间到

ucharnum1;

//十秒倒计时显示初始值

ucharflag1,flag2;

//清零键及开始键按下标志位

ucharflag3,flag4=0;

//定义键盘按下标志位

#defineLCDPORTP0

sbitLCD1602_RS=P2^0;

sbitLCD1602_EN=P2^1;

sbitsp=P2^2;

//定义蜂鸣器端口

sbitclear=P1^0;

//定义清零键

sbitstart=P1^1;

//开始键

sbitkey1=P1^2;

sbitkey2=P1^3;

sbitkey3=P1^4;

sbitkey4=P1^5;

//key1到key4为选手按键

voiddelay(uintz)//延时函数

{

uinti,j;

for(i=z;

i>

0;

i--)

for(j=110;

j>

j--);

}

voidWriteCmd_1602(unsignedcharcmd)

LCD1602_RS=0;

LCDPORT=cmd;

delay

(1);

LCD1602_EN=1;

LCD1602_EN=0;

voidWriteByte_1602(unsignedchardate)

LCD1602_RS=1;

LCDPORT=date;

voidInit_1602()

WriteCmd_1602(0x38);

WriteCmd_1602(0x0c);

//光标不显示地址

WriteCmd_1602(0x06);

WriteCmd_1602(0x01);

voidbeep()//定义蜂鸣器函数

sp=0;

delay(500);

sp=1;

//delay(500);

voiddis(uchar*p)

while(*p!

='

\0'

{

WriteByte_1602(*p++);

}

voiddisplay_init()

WriteCmd_1602(0x80);

dis("

SerialNumber:

"

);

WriteCmd_1602(0x80+0x40);

SurplusTime:

WriteCmd_1602(0x80+0x40+13);

00s"

voiddisplay_num(uchara)//选手编号显示函数

WriteCmd_1602(0x80+15);

WriteByte_1602(a);

voidclr()//清零函数(主持人按下清零键后数码管显示0)

WriteByte_1602('

0'

voiddis10s()//十秒倒计时显示函数

ucharshi,ge;

shi=num1/10;

ge=num1%10;

WriteByte_1602(shi+0x30);

WriteCmd_1602(0x80+0x40+14);

WriteByte_1602(ge+0x30);

}

voidplayer()//选手按键检测函数

if(key1==0&

&

flag4==0)

delay(10);

if(key1==0&

{

display_num('

1'

TR0=0;

flag1=flag2=0;

flag4=1;

beep();

while(!

key1);

}

if(key2==0&

if(key2==0&

2'

key2);

if(key3==0&

if(key3==0&

3'

key3);

if(key4==0&

if(key4==0&

{

4'

key4);

voidkeyscan()//检测按键

if(clear==0&

flag2!

=1)//判断清零键,判断语句的作用是按下开始键清零键失效

if(clear==0&

=1)

clear);

//等待按键释放

flag1=0;

flag2=0;

flag3=0;

flag4=0;

num=0;

num1=10;

clr();

//清零

flag1=1;

//按下清零键标志位

}

if(flag1==1)//如果按下清零键

{

if(start==0&

flag3==0)//判断开始键,判断语句的作用是按下开始键后开始键失效

delay(10);

if(start==0&

flag3==0)

{

flag2=1;

flag3=1;

while(!

start);

}

if(flag2==1)//按下开始键

TR0=1;

//启动定时器0

dis10s();

player();

voidmain()

{

TMOD=0x01;

//设置定时器0工作方式1

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

//开总中断

ET0=1;

//开定时器0中断

Init_1602();

display_init();

while

(1)//一直检测按键

keyscan();

voidT0_ser()interrupt1

num++;

if(num==20)

num=0;

num1--;

if(num1==0)

TR0=0;

flag1=0;

flag2=0;

num1=10;

clr();

beep();

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

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1