4路智力竞赛抢答器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)
{