基于单片机的简易多路智力抢答器Word文档格式.docx

上传人:b****6 文档编号:19236639 上传时间:2023-01-04 格式:DOCX 页数:16 大小:251.69KB
下载 相关 举报
基于单片机的简易多路智力抢答器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

1.识别最先选手按键并锁存。

2.实时显示当前状态和抢答号码。

3.8路输入与显示。

4.对最先抢答人亮灯。

5.主持人能开始,停止/清零抢答器状态。

2.2各种方案选择比较

2.2.1实现方式的选择

方案一:

采用纯数字门电路。

通过各种逻辑门电路的组合连接,实现系统功能。

此方案设计复杂,电路复杂,功能单一,且需要门电路较多,成本较高,也不美观。

维护调试都比较麻烦。

方案二:

采用单片机为主控制器。

此方案电路简单,设计工作主要是软件设计,设计较为灵活,功能都是通过软件实现,硬件花费少;

应用KEIL软件,C语言编程,软件设计也较为方便。

系统易于调试维护。

应用单片机使得系统更具有智能化的特色,是当今的主流。

故采用本方案。

2.2.2控制器的选择

采用AT89C51系列单片机。

由于AT系列单片机烧录调试程序需要专门烧写器。

购买烧写器成本较高,且烧录不方便。

采用STC89C51系列单片机。

STC8951系列单片机为AT8951的同类替代产品,除去和AT8951具有的相同性能外,还可以直接用串口烧录程序,大大简化了程序烧写的流程。

降低了成本,加快了开发周期。

考虑到单片机内部存储器的大小(STC89C52的flash为8K,RAM为512),本系统选用STC89C52单片机。

2.2.3显示模块的选择

采用L12864液晶显示。

此器件能显示4*8个字符,操作简便,但器件很小,视觉效果差。

采用数码管显示。

此器件价格较低廉,能显示数字,亮度较高,且规格较多,本系统可选用大尺寸、高亮度的LED数码管。

故选用此方案。

2.3系统的描述

图2.3.1抢答器的系统框图

本系统以STC89C52单片机为控制核心,结合周边电路,通过单片机引脚I/O口实现对按键抢答的迅速响应;

应用单片机外部中断实现对按键的快速响应,单片机的相应时间可达几微妙,满足系统快速响应要求。

在此基础上,实现了按键响应并识别。

主持人能够通过“开始”键开始答题,此时选手可以抢答。

单片机通过中断的方式响应最先抢答的选手并识别选手号码,此时选手们的按键锁定,

所有人按键无效,数码管显示最先抢答人的号码,相应选手的LED发光二极管点亮,此时主持人可以按“停止/清零”键停止抢答,停止时,数码管显示“FF”。

第三章电路设计

3.1系统总体设计

本设计的主要电路有:

单片机STC89C52最小系统、数码管显示驱动模块、按键输入模块。

LED发光二极管电路。

外围电路都与单片机引脚I/O口相连,以实现单片机对外围电路的控制,实现相应功能。

3.2单元电路设计

3.2.1单片机最小系统

图3.2.1单片机最小系统

如图3.2.1单片机最小系统包括单片机、时钟电路、复位电路。

其他引脚I/O相应的扩充功能,P1口接8个独立按键,P3.4-5为功能控制按键,P3.6-7为数码管扫描位,INT0、INT1接按键门电路处理的信号中断,P2接LED发光二极管,PO接数码管数据位。

3.2.2电源电路

图3.2.2电源电路

本电源电路如上图所示,应用7805三端稳压电源模块构成。

输出稳压5V电压,为单片机、LED灯和数码管提供工作电压。

电容为滤波作用,使输出电源更平滑稳定。

3.2.3数码管驱动电路

本电路由数码管、三极管构成。

三极管的作用是为数码管提供驱动,使之更亮。

单片机引脚接三极管基极,控制三极管的导通对数码管选择位控制。

数码管为共阳极数码管。

如图3.2.3所示。

图3.2.3数码管驱动电路

3.2.4按键电路

图3.2.4按键电路

如上图所示,按键电路分为两部分,第一部分是选手按键阵列,共有8个独立按键,接到单片机P1口,同时8位按键通过一个8输入与门接入单片机外部中断位INT1。

第二部分是主持人按键阵列,共有2个独立按键,接到P3的两个普通I/O口,同时2位按键通过一个2输入与门接入单片机外部中断位INT0。

主持人的优先级高于选手。

3.2.5LED发光二极管电路

图3.2.5LED发光二极管电路

本电路由高亮度发光二极管组成,共阳极连接,阴极接P2口。

由P2口控制发光二极管的亮灭。

第四章程序设计

4.1程序总体流程图

图4.1.1系统总体流程图

图4.1.2中断程序流程图

主程序实现当主持人按开始时,等待按键并显示最先抢答人号码,相应二极管灯点亮,此时其他人抢答无效。

当主持人按停止清零时,选手按键无效,数码管和二极管灯清零。

中断程序有两个,分别实现1.如果主持人按键,触动外部中断1,识别是否是开始还是停止清零,如果是开始,则开选手按键中断,选手可按键抢答。

如果是停止清零,则选手按键关,选手按键无效。

2.选手按键中断,识别按键并关选手按键,其他人按键无效。

程序见附录。

第五章测试与仿真

5.1测试方法

测试仿真工具:

Protues软件仿真

5.2测试效果

图5.2.1Protues仿真总体效果图

上图为系统启动时,当前为停止清零状态,选手此时不能按键,按键无效,数码管显示"

FF"

,发光二极管都不亮。

图5.2.2开始后效果图

图5.2.3选手抢答后效果图

图5.2.2为主持人按键开始时,此时数码管为00,等待选手抢答。

图5.2.3为选手抢答后,数码管显示选手号码,相应二极管灯点亮。

此时其他选手抢答按键无效。

综上所述,仿真效果完全符合题目要求指标。

第五章总结

本系统以STC89C52单片机为控制核心,结合周边电路。

经过测试,各项功能指标均达到设计要求,且电路设计简洁,程序设计也较为简单,界面效果简洁美观,操作简单实用。

通过此次毕业课题的设计,让我学到很多东西,一方面,它是3年大学所学知识的一个综合应用,考察了我大学所学的知识,是一次彻底的知识巩固和提高。

另一方面,通过综合的应用设计,锻炼了我应用知识的能力和动手能力。

同时,在设计的过程中,也锻炼了我解决问题的能力,遇到问题坚持不懈的毅力和细心程度。

让我在以后求职就业中更好的学习和提高自己。

第六章参考文献

[1]李全利.单片机原理及接口技术.高等教育出版社

[2]公茂法.单片机原理与实践.北京航空航天出版社

[3]全国大学生电子设计竞赛组委会.第九届全国大学生电子设计竞赛获奖作品选编.北京理工大学出版社

[4]及力.Protel99原理图与PCB设计教程.电子工业出版社

第七章附录

/*===========================程序清单========================*/

#include<

reg51.h>

typedefunsignedcharuchar;

typedefunsignedintuint;

#defineKEYP1//8个按键

#defineDATAP0//数码管段

sbitLED1=P2^0;

sbitLED2=P2^1;

sbitLED3=P2^2;

sbitLED4=P2^3;

sbitLED5=P2^4;

sbitLED6=P2^5;

sbitLED7=P2^6;

sbitLED8=P2^7;

//发光二极管

sbitWEI1=P3^6;

//数码管高位

sbitWEI2=P3^7;

//数码管地位

sbitstart=P3^4;

//开始按键

sbitstop=P3^5;

//停止按键

ucharnum,temp,work_mode;

ucharcodelab[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,//数码管编码

0x07,0x7f,0x6f,0x71};

//0123456789F

/*======================自定义子程序===================*/

voiddelay10ms();

//延时10ms

voiddelay5ms();

//计时器计时

voiddisplay_num();

//显示数码管数字

voidinit_INT0();

//初始化

voidinit_INT1();

voidkey_process();

//按键处理

voiddisplay_led();

//LED灯显示

voidinit_port();

//初始化I/O口

/*========================主程序=====================*/

voidmain()

{

init_INT0();

init_INT1();

//系统初始化

init_port();

while

(1)

{

EX1=1;

//开抢答人按键中断,

while(work_mode)//当主持人按键开始抢答时

{

display_num();

//显示抢答号码

display_led();

}

while(!

work_mode)//当主持人按键停止抢答时

EX1=0;

//关抢答按键中断,抢答无效

num=0;

//数字清零

P2=0XFF;

//LED灭灯

WEI1=1;

WEI2=1;

DATA=~lab[10];

//显示FF停止

}

}

voidinit_port()

WEI1=0;

WEI2=0;

voiddelay10ms()

unsignedchara,b,c;

for(c=1;

c>

0;

c--)

for(b=38;

b>

b--)

for(a=130;

a>

a--);

voiddelay5ms()

unsignedchara,b;

for(b=18;

voiddisplay_num()

DATA=~lab[num/10];

WEI1=1;

delay5ms();

DATA=~lab[num%10];

WEI2=1;

voidinit_INT0()

EX0=1;

IT0=1;

EA=1;

voidinit_INT1()

EX1=1;

IT1=1;

voidINT1_SIR()interrupt2

EA=0;

temp=KEY;

key_process();

voidINT0_SIR()interrupt0

if(!

(start&

stop))

delay10ms();

if((!

start)&

stop)work_mode=1;

stop)&

start)work_mode=0;

voidkey_process()

switch(temp)

case(~0x01):

num=1;

EX1=0;

break;

case(~0x02):

num=2;

case(~0x04):

num=3;

case(~0x08):

num=4;

case(~0x10):

num=5;

case(~0x20):

num=6;

case(~0x40):

num=7;

case(~0x80):

num=8;

default:

voiddisplay_led()

switch(num)

case1:

LED1=0;

case2:

LED2=0;

case3:

LED3=0;

case4:

LED4=0;

case5:

LED5=0;

case6:

LED6=0;

case7:

LED7=0;

case8:

LED8=0;

P2=0XFF;

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

当前位置:首页 > 自然科学 > 化学

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

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