基于51单片机的八路抢答器控制设计(毕设课设资料)
本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用STC89C52单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间为60秒,倒计时为5秒时蜂鸣器报警,选手抢答成功后显示选手编号以及剩余时间。
【资源下载】下载地址如下:768
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
#include<intrins.h>
sbit smg1=P2^0; //定义数码管第一位
sbit smg2=P2^1; //定义数码管第二位
sbit smg3=P2^2; //定义数码管第三位
sbit keyks=P3^0; //定义开始按键
sbit keytz=P3^1; //定义停止按键
sbit keyqc=P3^2; //定义清除按键
sbit key1=P1^0; //定义1号抢答选手
sbit key2=P1^1; //定义2号抢答选手
sbit key3=P1^2; //定义3号抢答选手
sbit key4=P1^3; //定义4号抢答选手
sbit key5=P1^4; //定义5号抢答选手
sbit key6=P1^5; //定义6号抢答选手
sbit key7=P1^6; //定义7号抢答选手
sbit key8=P1^7; //定义8号抢答选手
sbit spk=P3^7; //定义蜂鸣器
int djs=60,js=0; //djs和bt是初始倒计时时间,可修改
//int table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40};
void delayms(int x) //延时函数
{
char i;
while(x--)
{
for(i=500;i>0;i--);
}
}
void Timer0_init() //定时器0初始化
{
js=0;
TMOD=0x01; //T0为定时器方式1
TH0=0x4c;