基于单片机八路抢答器的设计 - 图文

更新时间:2023-11-05 11:44:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机课程设计

题 目 八路抢答器 学生姓名 专业班级 学 号 院 (系) 信息工程学院 指导教师 完成时间

目 录

1 课程设计的目的 .......................................................................... 1 2 课程设计的任务及要求 .............................................................. 1 3 设计方案 ...................................................................................... 2 3.1 设计要点 ................................................................................ 2 3.2 硬件设计 ................................................................................ 2 4 设计原理及功能说明 .................................................................. 3 4.1 单片机控制原理 .................................................................... 3 4.2 抢答器原理 ............................................................................ 8 5 单元电路的设计 .......................................................................... 8 5.1开始抢答电路 ......................................................................... 8 5.2选手抢答电路 ......................................................................... 9 5.3 显示驱动电路 ........................................................................ 9 6 硬件调试 ..................................................................................... 10 7 总结 ............................................................................................. 10 参考文献 ......................................................................................... 12 附录1:总体原理仿真图 .............................................................. 13 附录2:元器件清单 ...................................................................... 14

附录3:实物图 .............................................................................. 15 附录4:源程序 .............................................................................. 16

1 课程设计的目的

通过设计学习单片机最小系统的基本设计方法,掌握单片机应用系统的开发调试过程。

(1)学习单片机开发工具功能、特点和使用方法。 (2)学会单片机控制系统程序的编制和编制和调试方法。 (3)设计单片机抢答器硬件电路,绘制出电路原理图。 (4)编制并调试出键盘扫描程序和显示驱动程序。

(5)掌握单片机定时器的基本用法,编制出定时器的中断程序。

2 课程设计的任务及要求

以单片机为核心,设计一个8位竞赛抢答器。

(1)抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0-S7表示。

(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。 (3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30s等)。当主持人启动“开始”按键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续时间为0.5s左右。

(5)参赛选手在设定时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手编号和抢答时间,并保持到主持人将系统清除为止。

(6)如果定时时间到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00;

1

3 设计方案

3.1 设计要点

根据控制系统的工作原理和执行装置,可以将系统设计分为硬件和软件两大部分。硬件设计部分,包括编写电路原理图、合理选择元器件、焊接各个元器件,然后对硬件性能进行调试、测试,以达到设计要求。软件设计部分,首先在设计之前完成系统总框图和确定各个功能模块,然后进行具体设计,包括各模块的流程图,选择合适的编程语言和软件应用程序,进行编程设计等;最后是通过软件对程序进行调试、测试,以及仿真,以达到性能的最优化。

下面是软硬件设计方法确定的。软件设计的方法与开发环境的选取有着直接的关系,本系统由于是采用51系列单片机,因此使用Keil C语言进行开发。此编程工具相比汇编语言具有结构化、适用范围大、可移植性好等特点。本系统软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进行组合与调整,经过调试后,可以进行仿真测试,已达到设计功能要求。为配合软件的灵活设计,硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。硬件电路的设计最重要的选择用于控制的单片机,再确定与之配套的外围芯片,使所设计的系统既经济又高性能。硬件电路设计可以在焊接元器件之前画出详细电路图,标出芯片的型号、器件参数值,根据电路图在仿真软件上进行调试,发现设计错误时立即修改,高效,准确地完成硬件设计。

3.2 硬件设计

本系统采用单片机作为整个控制核心。控制系统主要由:显示模块、控制模块、报警模块、抢答模块组成。工作时,该系统通过矩阵键盘输入抢答信号,经单片机的处理后,输出控制信号,利用一个4位数码管

2

来完成显示功能并伴随蜂鸣器报警,用按键来让选手进行抢答,在数码管上显示哪一组先答题,从而实现整个抢答过程。

当主持人按下开始键时,向单片机P3.2引脚输入一个低电平信号,表示整个电路开始工作,此时数码管前两位显示选手编号(无人抢答显示00),后两位显示倒计时剩余时间。若在25秒内仍然无人抢答,蜂鸣器在最后5秒发出连续报警,提示抢答时间快要结束;若在30秒内有人抢答,并且抢答成功,则将选手编号显示在数码管前两位上,后两位显示抢答剩余时间,同时蜂鸣器发出一声报警,提示其他没有抢答的选手此题已被人抢答成功。若在抢答过程中遇见特殊情况,主持人则可以通过时间加,时间减按键来进行时间调节。若要开始新的一轮抢答,主持人按下复位键再按开始键即可。

图3-1 单片机抢答器设计方案

4 设计原理及功能说明

4.1 单片机控制原理

单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和

3

工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。

U11234567891011121314151617181920P10P11P12P13P14P15P16P17RESETP30/RXDP31/TXDP32/INT0P33/INT1P34/T0P35/T1P36WRP37/RDX2X1GNDSTC89C52VCCP00P01P02P03P04P05P06P07EA/VPALE/PPSENP27P26P25P24P23P22P21P204039383736353433323130292827262524232221 图4-1 STC89C51单片机引脚图

单片机是美国STC公司最新推出的一种新型51内核的单片机。片内含有Flash程序存储器、SRAM、UART、SPI、PWM等模块。 (一)STC89C51主要功能、性能参数如下:

(1)内置标准51内核,机器周期:增强型为6时钟,普通型为12时钟;

(2)工作频率范围:0~40MHZ,相当于普通8051的0~80MHZ; (3)STC89C51RC对应Flash空间:4KB; (4)内部存储器(RAM):512B; (5)定时器\\计数器:3个16位; (6)通用异步通信口(UART)1个; (7)中断源:8个;

(8)有ISP(在系统可编程)\\IAP(在应用可编程),无需专用编程器\\仿真器;

(9)通用I\\O口:32\\36个;

4

(10)工作电压:3.8~5.5V;

(11)外形封装:40脚PDIP、44脚PLCC和PQFP等。 (二)STC89C51单片机的引脚说明:

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

5

(三)STC89C51单片机最小系统:

最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。

STC89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,结构如图4-2所示,由于集成度的限制,最小应用系统只能用作一些小型的控制单元。

时钟电路STC89C51单片机复位电路端口 图4-2 单片机最小系统原理框图

(1) 时钟电路

STC89C51单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图4-3所示。在STC89C51单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容C1和C2的作用是稳定频率和快速起振,电容值在5~30pF,典型值为30pF。晶振CYS的振荡频率范围在1.2~12MHz间选择,典型值为12MHz和6MHz。

6

图4-3 STC89C51内部时钟电路

(2) 复位电路

当在STC89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。

复位电路通常采用上电自动复位和按钮复位两种方式。

最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。 除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST(9)端与电源Vcc接通而实现的。按键手动复位电路见图4-4。时钟频率用11.0592MHZ时C取10uF,R取10kΩ。 启动复位调整抢答时间加减调整答题时间加减 图4-4 STC89C51复位电路

(3)STC89C51中断技术概述

中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理。这是由片内的中断系统来实现的。当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中

7

断服务请求。中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。

如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。

4.2 抢答器原理

抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。主持人按下开始抢答键才可以抢答。主持人没有按下开始抢答按纽(P3.0),有人抢答则抢答违规,报警并显示组号,主持人按下开始抢答开关重新抢答。主持人按下开始抢答按纽(P3.0),蜂鸣响声提示,数码管30秒倒计时抢答,蜂鸣器响声提示并显示他的组号,30秒内有人抢答则开始60秒倒计时(60秒内必须回答完问题)。单片机最小系统、抢答按键模块(四位并行数码显示)、显示模块、显示驱动模块、抢答开关模块、蜂鸣器音频输出模块。

5 单元电路的设计

5.1开始抢答电路

在此次课程设计电路中当一个问题结束主持人后按下复位开关后进行下一题的准备。

8

图5-1开始抢答电路

5.2选手抢答电路

89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口个端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。

图5-2 选手抢答电路

5.3 显示驱动电路

此电路包括显示和驱动,显示采用数码管,驱动用P2口, 违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,

9

数码管采用动态显示。驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。在+5V电压下接1k的电阻,保证正常压降。

图5-3 显示驱动电路

6 硬件调试

软件的设计与调试实行分模块实现的方法。本设计软件调试中的分模块包括显示功能模块,调整时间功能模块,抢答功能模块以及报警功能模块。各个独立模块功能调试成功后,将这些模块程序通过主程序合并在一起,最后再对合并后的总程序进行调试。各软件模块首先要通过PC和仿真器进行软件调试,当仿真效果符合要求后在烧写进单片机看是否在实际电路板上正常工作。本设计通过利用Proteus仿真,将所编写的程序用wave软件编译,所仿真原理图见附录1。

7 总结

随着电子技术的飞速发展,基于单片机的控制系统已经广泛应用于工业、农业、电力、电子、智能楼宇等行业。微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。同时楼宇智能化的发展与成熟,也为基于单片机的照明控制系统的普及与应用

10

奠定了坚实的基础。

多路数字抢答器在各种智力竞赛中经常用到。在各校举行的各种竞赛中我们也经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。为解决这个问题,我准备借本次课程设计的机会制作一个八路数显抢答器。一方面加深我们对所学习的知识的了解,巩固模拟、数字电路知识,也提升我们解决日常生活中常见问题的能力,掌握一般设计方法与设计步骤。积累实际设计制作经验,为走向更复杂更实用的应用领域奠定基础。控制系统主要由单片机控制电路、存储器接口电路及显示电路组成。具体以STC89C51单片机为系统工作核心,负责控制各个部分协调工作。在其外围接上了复位电路、上拉电阻、数码管、按钮及扬声器,其中用到了WAVE软件,集成调试环境,集成编辑器、编译器、调试器,支持软件模拟等。同时也用到了PROTEUS软件,通过仿真可完全实现对所设计系统的功能的模拟。

11

参考文献

[1] 康华光,邹寿彬编.电子技术基础数字部分(第四版)[M].北京:高等教育

出版社,2005

[2] 谢自美编.电子线路设计·实验·测试 (第二版) [M].上海:电子工业出版

社,2001

[3] 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北

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

[4] 陆坤,奚大顺,李之权等,电子设计技术[M].成都:电子科技大学出版社

1997年[5]

[5] 胡学海.单片机原理及应用系统设计[M].北京:京电子工业出版社,2005

[6] 林凌,李刚,丁茹,李小霞.新型单片机接口器件与技术[M].西安:西安电子

科技大学出版社,2005年

[7] 李朝青主编《,单片机原理与接口技术》.北京航天航空大学出版社,1994

[8] 何立民主编,《单片机应用与设计》.北京航天航空大学出版社,1990年 [9] 邹逢兴编著,《计算机硬件技术基础实验教程》高等教育出版社,1994年 [10] 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北

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

12

附录1:总体原理仿真图

13

附录2:元器件清单

序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 名称 万用板 单片机 四位一体数码管 芯片插座 晶振 瓷片电容 三极管 蜂鸣器 自锁开关 电阻 电阻 电解电容 排阻 电源插座 按键 导线 锡焊 电源线 型号规格 9*15 STC89C51 共阴极 4P 12M 30P PNP 5V 5V 2.2K 10K 10μF 102 5V USB 数量 1 1 1 1 1 2 1 1 1 1 1 1 1 1 14 若干 若干 1

14

附录3:实物图

15

附录4:源程序

void main() { init(); {

Timer(); delay(10); while(!k); while(1) {

dis(); m=0; n=0;

if(second==10){beep=1;delay(500);beep=0;} if(second==0) {

TR0=0;n=1; if(k==0)

if(k==0) //主持人按下开始键

{beep=1;delay(500);beep=0;second=29;TR0=1;m=1;}

}

if(n==0) {

if(k1==0) {delay(5);if(k1==0);while(!k1);t=1;}

else if(k2==0) {delay(5);if(k2==0);while(!k2);t=2;}

16

else if(k3==0) {delay(5);if(k3==0);while(!k2);t=3;} else if(k4==0) {delay(5);if(k4==0);while(!k2);t=4;} else if(k5==0) {delay(5);if(k5==0);while(!k2);t=5;} else if(k6==0) {delay(5);if(k6==0);while(!k2);t=6;} else if(k7==0) {delay(5);if(k7==0);while(!k2);t=7;} else if(k8==0) {delay(5);if(k8==0);while(!k2);t=8;} else

if(k==0)

{delay(5);if(k==0);while(!k);t=0;i=0;second=29;beep=1;delay(500);beep=0;TR0=1;}

}

if(a1==0) //选手1的分数 {

second=score1; dis(); if(m1==0)

{delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score1+=1;if(score1==99)score1=60;}

else if(m2==0)

{delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score1-=1;if(score1==0)score1=60;}

}

dis();

else if(a2==0)

{ second=score2;

dis(); if(m1==0)

{delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;sc

17

ore2+=1;if(score2==99)score2=60;} else

if(m2==0)

{delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score2-=1;if(score2==0)score2=60;}

}

dis();

else if(a3==0)

{

second=score3; dis(); if(m1==0)

{delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score3+=1;if(score3==99)score3=60;} else

if(m2==0)

{delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score3-=1;if(score3==0)score3=60;}

}

second=score3; dis();

else if(a4==0)

{

second=score4; dis(); if(m1==0)

{delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score4+=1;if(score4==99)score4=60;} else

if(m2==0)

18

{delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score4-=1;if(score4==0)score4=60;}

}

second=score4; dis();

else if(a5==0)

{

second=score5; dis(); if(m1==0)

{delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score5+=1;if(score5==99)score5=60;} else

if(m2==0)

{delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score5-=1;if(score5==0)score5=60;}

}

second=score5; dis();

else if(a6==0)

{

second=score6; dis(); if(m1==0)

{delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;sc ore6+=1;if(score6==99)score6=60;}

else

19

if(m2==0)

{delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score6-=1;if(score6==0)score6=60;}

second=score6; dis(); }

else if(a7==0)

{

second=score7; dis(); if(m1==0)

{delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score7+=1;if(score7==99)score7=60;} else

if(m2==0)

{delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score7-=1;if(score7==0)score7=60;}

}

second=score7; dis();

else if(a8==0)

{

second=score8; dis(); if(m1==0)

{delay(5);if(m1==0);while(!m1);beep=1;delay(100);beep=0;score8+=1;if(score8==99)score8=60;}

else

20

if(m2==0)

{delay(5);if(m2==0);while(!m2);beep=1;delay(100);beep=0;score8-=1;if(score8==0)score8=60;}

}

second=score8; dis();

if(k==0){i=0;t=0;second=29;beep=1;delay(500);beep=0;TR0=1;}

} }

定时器子程序 void Timer() {

TMOD|=0x01;

TH0=0xd8; //初值55536,计数10000次,每次1US,总计10ms TL0=0xf0; IE=0x82; TR0=1; }

void tim(void) interrupt 1 using 1 //为定时中断TR0 {

}

while(!k); }

TH0=0xd8; //重新赋值

21

}

TL0=0xf0; count++;

if(count==100) //100*10ms=1秒 { count=0; second--; //秒减1 }

延时子程序

void delay(uint z) //延时函数 { }

显示子程序

void display (uchar shiwei,gewei) //显示函数 { }

P2=0xfe; //打开显示时间十位的位选 P0=shiwei;//显示十位 delay(5); P2=0xfd; P0=gewei; delay(5);

//个位位选

uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);

22

本文来源:https://www.bwwdw.com/article/8j82.html

Top