基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx

上传人:b****6 文档编号:21755503 上传时间:2023-02-01 格式:DOCX 页数:31 大小:610.88KB
下载 相关 举报
基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx_第1页
第1页 / 共31页
基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx_第2页
第2页 / 共31页
基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx_第3页
第3页 / 共31页
基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx_第4页
第4页 / 共31页
基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx

《基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。

基于C单片机的多路数字定时抢答器设计Word格式文档下载.docx

因此,抢答器成为了我们生活中必不可少的一种竞赛辅助工具。

本次课设所要做的便是一种简易而使用的“八路数字定时抢答器”,可以满足基本的抢答功能。

抢答器主要有抢答电路、定时电路、驱动电路、显示电路、总控制电路组成。

结合功能实现的难易程度和经济成本,本课设采用单片机来完成。

单片机具有强大的“I/O”口,并且电路设计简单,编程方便且可改写,完全足以完成课设要求。

关键词:

八路数字定时抢答器;

单片机;

编程;

I/O

多路数字定时抢答器设计

1设计任务

1.1设计基本要求

可同时供8名选手(或代表队)参赛,其编号分别是0到7,各用一个抢答按钮,按

钮的编号与选手的编号相对应。

给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢

答的开始。

抢答开始后,若有选手按动抢答按钮,编号立

即锁存,并在LED数码管上显示出选手的编号,同时扬声器给出音响提示。

此外,

要封锁输入电路,禁止其它选手抢答。

优先抢答选手的编号一直保持到主持人将系

统清零为止。

1.2设计扩展

当节

目主持人启动“开始”键后,要求定时器立即进行减计时,并用显示器进行显示,

同时扬声器发出短暂的声响,声响持续时间0.5秒左右。

参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选

手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。

如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统进行短暂的报

警,并封锁输入电路,禁止选手超时后抢答,定时显示器上显示00。

画出总体电路原理图。

2设计方案的选取

2.1方案一

图1方案一原理框图

方案一,主要采用逻辑电路来完成。

抢答电路有八个独立按键代表八个人的抢答;

八D锁存器将抢答电路的信息进行锁存,并送入编码电路中进行编译;

译码电路是采用三八译码器,做数码管的驱动电路;

译码显示采用七段共阴或者共阳数码管显示“0-8”数值;

脉冲产生电路的主要作用是产生秒脉冲,用于定时电路的秒进位;

主持人通过对八D锁存器的使能端的控制来控制抢答的与否;

定时电路采用集成芯片74LS192来达到定时作用;

集成单稳态触发器可以产生固定时间的脉冲信号,可以用于报警电路0.5秒的报警时间。

此方案,所用芯片较多,各模块电路之间要进行连接,比较麻烦,完成度极低。

2.2方案二

报警电路

单片机(80C52)

显示电路

→→

控制

电路

定时

↓↓

图2方案二原理框图

方案二是用单片机来完成。

单片机一共有40个引脚,其中28个“I/O”口,强大的“I/O”口足以完成一个简易抢答器。

报警电路采用蜂鸣器来做报警信号的产生;

显示电路采用二位七段共阳数码管显示定时时间和抢答者的序号;

定时电路采用按键来控制计时加和减;

控制电路主要为控制抢答的开始和单片机复位功能。

各电路之间的交流主要由软件来完成。

此方案,所用芯片集成度高,电路所需芯片较少,电路连接简单,成本较低。

但,对软件编程功底要求很高。

综上所述,采用第二种方案来完成本课设

3主要元件介绍

3.180C52RC单片机芯片介绍

3.1.1芯片简介

80C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机。

它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本。

80C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。

此外,80C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。

在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。

掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。

8051片内有ROM,无须外接外存储器和373,更能体现“单片”的简练。

3.1.2芯片引脚图

80C52单片机芯片引脚图见图3:

图380C52的单片机引脚图

3.1.3芯片主要引脚介绍

①并行I/O接口P0X:

当作为通用的I/O口时,P0口的引脚以“开漏”的方式输出,

所以必需外加上拉电阻。

当作为外部程序或数据存储器的数据/地址总线时,内部控

制信号为高电平,P0口的引脚可以在数据/地址总线的作用下实现上拉,不需要外加

上拉电阻。

②P1X:

具有内部的上拉功能,可作为准双向口(用作输入时引脚被拉成高电平)使用。

作为专用功能引脚,相应的口锁存器必须为1状态。

③P2X:

作为外部程序或数据存储器的高地址总线。

④P3X:

具有内部的上拉功能,可作为准双向口(用作输入时引脚被拉成高电平)使

用。

作为专用功能引脚,相应的口锁存器必须为1状态。

⑤EA/VPP:

访问程序存储器控制信号,当其为低电平时,对ROM的读操作限定在外

部的程序存储器,当其为高电平时,对ROM的读操作是从内部存储器开始的,并可

延至外部程序存储器。

⑥ALE/PROG:

编程脉冲

⑦PSEN:

外部程序存储器读选通信号,在读外部ROM时PSEN是低电平有效,以实现

对ROM的读操作。

⑧RST/VPD:

复位信号,当输入信号延续2个周期以上的高电平有效,用以完成单片

机复位初始化操作。

⑨XTAL:

时钟晶振输入端

3.274HC573芯片介绍

3.2.1芯片简介

74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。

当使能(G)为高时,Q输出将随数据(D)输入而变。

当使能为低时,输出将锁存在已建立的数据电平上。

输出控制不影响锁存器的内部工作,即老数据可以保持,甚至输出被关闭时,新的数据也可以置入。

这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。

特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。

3.2.2芯片引脚图

其引脚D0—D7与Q0—Q7为输出端;

OE为使能端,只有在其为低电平是,芯片才能正常工作;

LE为输入使能端,只有在其高电平下,芯片才能正常使能。

74HC573引脚图见图4

图474HC573引脚图

3.2.3芯片真值表

CE端输入低电平,LE端输入高电平时,74HC573芯片才能正常使能工作。

真值表见表1:

输入

输出

CE

LE

D

Q

H

X

Z

L

不变

表174HC573真值表

3.3四位七段数码管介绍

3.3.1引脚图

四位七段数码管引脚图见图5:

图5四位七段数码管引脚图

1-6脚依次是eddpcg4,12-7脚依次是1af23b

3.3.2真值表

四位七段数码管真值表见表2:

显示十进制数

二进制数码

对应十六进制码

dp

g

f

e

d

c

b

a

1

C0H

F9H

2

A4H

3

B0H

4

99H

5

92H

6

82H

7

F8H

8

80H

9

90H

表2四位七段数码管真值表

4设计原理阐述

4.1抢答电路

抢答电路采用八个弹片按键做抢答按钮,从S1-S8分别依次接入单片机的P2.7-P2.0引脚。

当按下按键是,表示抢答,低电平有效,将有效信号传入对应的单片机引脚中,进行软件烧写。

当有效信息传入单片机时,单片机对其他按键进行封锁,不容许其抢答,只锁存有效抢答按键。

抢答电路图见图6:

图6抢答电路

4.2时钟电路设计原理

CPU的定时精确工作需要一个晶振振荡器产生稳定的时钟脉冲来控制89C52。

因此时钟电路采用11.0592MHZ的晶振来产生时钟脉冲,分别接入89C52的XTAL1引脚和XTAL2引脚。

时钟电路见图7:

图7时钟电路图

4.3单片机复位电路

复位是单片机的一个重要部件,可以将单片机工作状态恢复到上点之前。

接在89C52的RST引脚。

单片机复位电路见图8:

图8单片机复位电路

4.4报警电路

报警电路是本次课设的重点要求,当有人抢答时,会发出提示声音,或者没有开始抢答和抢答无效时会发出报警声音。

接在89C52的P1.7引脚上。

报警电路见图9:

图9报警电路

4.5显示电路

显示电路采用四位共阳数码管来显示倒计时的时间和抢答者的序号。

通过74HC573做驱动芯片来驱动控制数码管的显示。

其引脚接在89C52的P0.0-P0.7引脚上。

显示电路见图10:

图10显示电路图

4.6开始、计时加减电路

S11位开始按键,当,S11按下时,抢答开始。

S9和S10位定时设置按键。

S9位计时键按键S10位计时加按键。

S9-S11依次接入89C52的P3.5-P3,7引脚。

开始、计时加减电路见图11:

图11开始、计时加减电路图

5软件设计

5.1软件设计思想

本抢答器的软件系统主要包括以下几个部分:

①主程序:

主程序的功能主要是完成各寄存器单元的初始化,对89C52单片机接口电路的初始化,

内部定时器的初始化,中断的初始化及调用显示程序。

②对开始抢答的处理:

当主持人按下开始按键是,程序部分采用中断方式进行处理。

在中断处理程

序中完成相应操作,修改计时单元的数据发出计时提示声音。

③按键扫描程序:

主要用于各按键的扫描,检测那一个按键发出有效信号。

④显示程序:

采用动态扫描显示,显示倒计时时间和抢答者的序号。

5.2软件逻辑框图

软件逻辑框图见图12:

图12软件逻辑框图

6实物图

实物正面图见图12:

图12实物正面图

实物背面焊接图见图13:

图13实物背面焊接图

7总结体会

经过正确的硬件设计与焊接、软件正确调试,成功的实现了本课设的所有要求。

八人一起抢答,每一次只有一个人或者无人为有效抢答,不存在多人抢答有效。

数码管显示倒计时和抢答者序号也为正确数字。

此系统操作简单可靠,简易而准确。

实为一次成功的课设。

通过本次的课程设计,锻炼了我的硬件和软件能力。

从设计硬件开始,利用Multisim软件画出仿真电路图,通过上网查阅资料和翻阅书籍,充分了解89C52单片机芯片各个引脚的功能,确定每一个电路应接入什么引脚,确保自己设计的电路图是可行的。

在到软件烧写,用keil软件进行C语言的编程,利用模块化将程序的难度降低。

在这一次的课设中,遇到了很多的问题。

首先就是硬件问题,刚开始采用逻辑电路来完成这一次的课设,当因为自己设计的逻辑电路太过复杂,经过焊接调试之后,多次进行寻找错误,当最终还是以失败告终。

因此不得不重新选择用单片机来完成这一次的课设。

在焊接单片机时几乎没有遇到多少问题,硬件焊接一次性成功。

但是软件也是出了一些问题,在数码管显示上和抢答按键上都出现了问题。

经过自己一遍又一遍的调试,终于成功解决了所有问题。

可以说,这一次的课设让我收获很大,从硬件设计到软件烧写,都锻炼了我的能力,为自己以后更好的学习单片机以及其他东西打下了坚实的基础。

参考文献

[1]伍时和.数字电子技术基础.清华大学出版社.2009

[2]宋学松、李冬明、崔长胜.手把手教你学51单片机.清华大学出版社.2014

[3]郭天祥.51单片机C语言教程.电子工业出版社2013

[4]康华光、陈大钦、张林.电子技术基础.华中科技大学出版社。

2002

[5]谢自美.电子线路设计.华中科技大学出版社.2010

[6]孙梅生.电子技术基础课程设计.高等教育出版社.2012

附录1整体电路图

附录2元件清单

序号

名称

型号

数量

51芯片

STC89C52RC

芯片底座

40引脚

复位按键

4脚直插

13

蜂鸣器

有源5V

四位共阳数码管

LG5641BH

锁存器

74HC573

20脚

三极管

NPN8050

NPN9012

10

瓷片电容

30PF直插

11

晶振

11.0592MHZ

12

电解电容

10uF/25V

排阻

10K*8

14

电阻

100Ω、10KΩ直插

各10

15

排针

2.45MM

附录3软件程序

//Responder.c

#include<

reg52.h>

#defineLED_DATA_PORTP0//0亮,共阳数码管

#defineADJUST0//抢答器处于调整状态

#defineANSWER1//抢答状态//单片机IO口位声明,51单片机可以对IO的每一位或Px八位单独进行读写操作

sbitcom4=P1^1;

//1亮

sbitcom3=P1^0;

sbitkey1=P2^1;

sbitkey2=P2^3;

sbitkey3=P2^5;

sbitkey4=P2^7;

sbitkey5=P2^0;

sbitkey6=P2^2;

sbitkey7=P2^4;

sbitkey8=P2^6;

sbitkey9=P3^5;

//倒计时减

sbitkey10=P3^6;

//倒计时加

sbitkey11=P3^7;

//清零端,控制端

sbitbeep=P1^7;

//1响

unsignedcharnum1=0,time=15;

//num1是用来辅助定时器计数,累计时间到一秒,time为倒计时

unsignedcharshi=0,ge=0;

//倒计时time的十位和个位

unsignedcharresult=0;

//抢答结果

unsignedcharstate=ADJUST;

//抢答器状态,初始为调整状态

unsignedcharflag=0;

//结束标识,状态标识,0复位,没有有效信号;

1有人抢答,结束抢答过程;

2时间到,无人抢答,结束抢答过程

constunsignedcharledNum[]=

{//0123456789ABCDEF不显示-0(18)H(19)h(20)C(21)0(22)n(23)

0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90

};

voidDelay(unsignedintt)

{

while(--t);

}//延时函数,n毫秒

voidDelay_ms(unsignedintn)

{

unsignedinti,j;

for(i=n;

i>

0;

i--)

for(j=110;

j>

j--);

}

//开始声音

voidSoundStart(void)

beep=1;

Delay_ms(200);

beep=0;

//报警声音

voidSoundWarning(void)

unsignedchari;

for(i=0;

i<

20;

i++)//报警声音

{

beep=1;

Delay_ms(i);

beep=0;

Delay_ms(20-i);

}

//结束声音

voidSoundOver(void)

80;

i++)

Delay(100);

//按键扫描,扫描K1-K8

unsignedcharKeyScan_8(void)

unsignedcharnum=0;

if(key1==0)

{

Delay_ms(10);

if(key1==0)

{

num=1;

Delay_ms(10);

while(!

key1);

returnnum;

}

}

if(key2==0)

if(key2==0)

num=2;

while(!

key2);

if(key3==0)

if(key3==0)

num=3;

key3);

if(key4==0)

if(key4==0)

num=4;

key4);

if(key5==0)

if(key5==0)

num=5;

key5);

if(key6==0)

if(key6==0)

num=6;

key6);

if(key7==0)

if(key7==0)

num=7;

key7);

if(key8==0)

if(key8==0)

num=8;

key8);

returnnum;

//按键扫描函数为控制开关

unsignedcharKeyScan_3(void)

if(key9==0)

if(key9==0)

num=9;

key9);

if(key10==0)

if(key10==0)

num=10;

key10);

if(key11==0)

if(key11==0)

num=11;

key11);

//按键扫描,只扫描控制端清零端

unsignedcharKe

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

当前位置:首页 > 高等教育 > 经济学

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

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