H3=1; }
void qushu()
{ shi=input/10; ge=input;
}
void keyscan()
{ if(RESET==0) { delay(200);
FUWEI();
n=1;
}
if(n)
if(START==0)
{ A=0;
delay(500); A=1; TR0=1; m=1;
n=0; }
if(n) { if(ADD==0) { delay(200); input++;
} if(DEC==0) {
delay(200); 菏泽学院本科微机原理与接口技术课程设计
//关三位数码管 //拆分任意两位数函数 //取整 //取余
//键盘扫描函数
//复位操作,无论何时,都可以复位,节省时间 //延时200毫秒,防止按键机械振动引起的误差 //系统复位
//复位后开启主持人其他权限
//n为1时,表示还没开始抢答,可以操作
//开始抢答 需要自锁
//报警500毫秒
//开定时器 //开启选手抢答权限
//自锁,有效防止在选手答题时主持人误操作
//调整时间函数,抢答前可操作
//防止按键抖动重复加一
//时间加一
15
基于AT89C51的智能抢答器的设计
{ }
input--;
//时间减一
} }
//主持人启动START按钮后,开始检查选手按钮
if(m)
}
if(P1!=0xFF) //如果有选手抢答,则找出他的编号 {
temp=P1;
m=0; //自锁,此后不再检测选手抢答键,直到主持人启动 START. switch(temp) { }
case 0xFE:bai=1; //一号选手答题 case 0xFD:bai=2; //二号选手答题 case 0xFB:bai=3;
//三号选手答题
break; break; break;
case 0xF7:bai=4; //四号选手答题 break; }
//关定时器,剩余时间不再减少,显示剩余时间
case 0xEF:bai=5; case 0xDF:bai=6;
//五号选手答题 //六号选手答题
break; break;
case 0xBF:bai=7; //七号选手答题 case 0x7F:bai=8;
//八号选手答题
break; break;
TR0=0;
//中断方式一服务程序
16
菏泽学院本科微机原理与接口技术课程设计
void timer() interrupt 1 { }
//延时函数,利用系统计算时间延时,不占用计时器 void delay( uint z) { }
uint x, y;
for(x=100;x>0;x--) for(y=z;y>0;y--); TH0=(65536-46080)/256; TL0=(65536-46080)%6; t++; if(t==20) { } { }
t=0; input--;
//如果没人回答,自动复位 //系统复位 //刷新显示
//然后把t清零重新再记20次 //减一秒
//每累加一次,判断是否到20. //如果到了20次,说明1秒时间到
//重装初值
if(input==0)
FUWEI(); Qushu ();
17
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于STC89C51的抢答器设计 - 图文(4)在线全文阅读。
相关推荐: