4路智力竞赛抢答器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息与电气工程学院

课程设计说明书(2013 /2014学年第二学期)

课程名称:单片机应用

题目:4路智力竞赛抢答器

专业班级:自动化

学生姓名:

学号:

指导教师:

设计周数:两周

设计成绩:

2014年07月10日

一、课程设计目的

通过长达两周的单片机课程设计,使我加深对《单片机原理及应用》课程所学理论知识的理解,并将理论与实践相结合。结合课程设计的内容,学会单片机最小系统及外围电路的设计,基本电子元器件的使用,利用Protel软件绘制电路原理图和PCB图,编写程序并结合protues进行仿真,检查电路的合理性及可行性,进行软硬件联机调试,发现问题并解决问题。学会查阅相关专业技术资料及设计手册,提高团队合作及独立解决问题的能力。

二、课程设计任务及要求

2.1 原始数据及主要任务

采用STC90C52作为控制单元,实现4路智力竞赛抢答器的设计。

1.设计键盘输入电路。

2.设计显示电路。

3.合理分配地址,编写系统程序。

4.利用Protel设计硬件电路原理图和PCB图。

5.用protues仿真

2.2 技术要求

设计一台以MCS-51为核心的可供4名选手参加比赛的智力竞赛抢答器。4名选手各一个按键抢答,主持人一个按键用来系统清零和开始;1个数码管显示抢答倒计时间,由“9”倒计到“0”时,无人抢答,蜂鸣器响;选手抢答成功时,一个数码管显示选手号,同时蜂鸣器发3声间隔1秒笛响,倒计时停止。初始状态,2个数码管均为0,当抢答成功时,时间数码管显示暂停时间,选手号数码管显示选手号,直到系统清零。

三、设计思路及原理

3.1 设计思路

设置5个独立按键,其编号分别是1到5,key1为主持人按键,key2-key5分别为1-4号选手按键。主持人未按键时,其他选手抢答无效,只有当主持人按下开始按键时才可以进行抢答,左边数码管从“9”到“0”开始倒计时,当4个按钮只要有一个按下即只要有人抢答时,左边数码管倒计时停止,右边数码管显示选手编号,蜂鸣器发出3声间隔1秒笛响,选手前面的指示灯也一同点亮,其他抢答都无效。当选手答完后,由主持人按键将数码管清零,继续开始抢答。若10秒内无人抢答,则声鸣器发出超时报警声。选用两个共阳极数码管作为显示,数码管倒计时采用定时器T0进行1S钟计时。

3.2设计原理图

振荡电路

复位电路

键盘输入电路

数码管显示电路

LED灯电路

蜂鸣器电路

3.4源程序代码

/******************************************************************* * 文件名:main.c

* 标题:4路智能抢答器

* 实验平台:STC89C52

* 作者:WuMing

* QQ交流群:131650262 protues仿真及程序请到群共享下载

* 日期:2014/07/08

* 描述:主持人按下key1键时开始抢答,并数码管1从9开始倒计时,若无人抢答,蜂鸣器响;key2~key5分为4位选手,选手抢答成功时,一个数码管显示

选手号,同时蜂鸣器发3声间隔1秒笛响,倒计时停止。主持人按键清零

并继续抢答。

***********************************************************************/

#include

//数码管引脚定义

sbit SMG1=P2^0; //倒计时显示

sbit SMG2=P2^1; //选手号显示

//LED灯引脚定义

sbit LED1=P2^3; //定义LED灯

sbit LED2=P2^4; //定义LED灯

sbit LED3=P2^5; //定义LED灯

sbit LED4=P2^6; //定义LED灯

//独立按键引脚定义

sbit key1=P1^0; //主持人按键

sbit key2=P1^1; //1号选手按键

sbit key3=P1^2; //2号选手按键

sbit key4=P1^3; //3号选手按键

sbit key5=P1^4; //4号选手按键

//蜂鸣器引脚定义

sbit BEEP=P2^7;

//宏定义

#define uchar unsigned char

#define uint unsigned int

#define N 5

#define ON 0

#define OFF 1

//函数声明

void Beep(void);

//定义变量

uchar num,time,count;

//共阴极数码管0-F

// uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,

// 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//共阳极数码管0-9

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //**********************************************

//* NAME: DelayuS(uchar us)

//* FUCTION: us延时

//* 输入参数:无

//* 输出参数:无

//* 说明:根据单片机的主频进行调整,不精确

//**********************************************

void DelayuS( uchar us )

{

while ( us -- );

}

//**********************************************

//* NAME: DelayMS(uint ms)

//* FUCTION: ms延时

//* 输入参数:无

//* 输出参数:无

//* 说明:根据单片机的主频进行调整,不精确

//**********************************************

void DelaymS(uint ms)

{

相关文档
最新文档