4路抢答器设计程序_4路抢答器课程设计

2020-02-28 其他范文 下载本文

4路抢答器设计程序由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“4路抢答器课程设计”。

#include

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,//0~f显示表

0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};unsigned char code table0[]={0xf1,0xf2,0xf4,0xf8};

//P2口位选

unsigned char code table2[]={0xef,0xdf,0xbf,0x7f};

//P3口送行信号 unsigned char display[]={0,0,0,0};//显示位 void sw1();

//子函数申明 void sw2();void sw3();void sw4();void xianshi();void init();unsigned char temp,num2,x,x1,x2,a,count;

//变量声明 int num,num1;unsigned char key;unsigned char i,j;sbit P3_4=P3^4;sbit P3_5=P3^5;sbit P3_6=P3^6;sbit P3_7=P3^7;sbit k1=P1^0;

//位申明(时间加)sbit k2=P1^1;

//位申明(时间减)sbit k3=P1^2;

//位申明(开始)sbit k4=P1^3;

//位申明(复位)sbit sp=P1^4;

//蜂鸣器 sbit l1=P1^5;

//LED显示 sbit l2=P1^6;

//LED显示

void delay(unsigned char z)

//延时1ms子函数 {

unsigned char x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);}

void init()

//初始化子函数 { a=0;TMOD=0x01;

//定时器T0工作方式设定

TH0=(65536-10000)/256;//装初值

TL0=(65536-10000)%256;EA=1;

//开定时器T0 ET0=1;

if(k1==0)

//判断时间加K1是否按下

{

delay(5);

//延时躲过抖动

if(k1==0)

//再次确认是否按下K1

{

num++;

//时间自加1

if(num==99)

//如果时间num=99,清零num

{

num=0;

}

num2=num;

//将num值赋值给num2

while(k1==0);//等待K1松手

}

}

if(k2==0)

//判断时间减K2是否按下

{

delay(5);

//延时躲过抖动

if(k2==0)

//再次确认是否按下K2

{

num--;

//时间自减1

if(num==-1)//如果时间num=-1,赋值num=99

{

num=99;

}

num2=num;//将num值赋值给num2

while(k2==0);//等待K2松手

}

}

if(k3==0)

//判断开始按钮K3是否按下

{

delay(5);

//延时躲过抖动

if(k3==0)//再次确认是否按下K3

{

x++;

//自加1

if(x==2)//假如x=2,清零x

{

x=0;

}

}

} }

void keyboad()

//按键检测子函数 { while(1)

{

P3=0xff;

//读引脚前需写入高电平

P3_4=0;

//置第一行线为低

temp=P3;

//P3口信息送入temp中

temp=temp & 0x0f;//屏蔽高四位,保留低四位

if(temp!=0x0f)//判断:假如列线有不为高的时候,执行if循环体

{

delay(5);//延时躲过抖动

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;//判断是哪个键按下

switch(temp)

{

case 0x0e: //第一行第四个按下

{delay(5);num1=4;l2=0;xianshi();} //第一行第一个键按下

break;

case 0x0d:

//第一行第三个按下

{delay(5);num1=3;l2=0;xianshi();}

break;

case 0x0b:

//第一行第二个按下

{delay(5);num1=2;l2=0;xianshi();}

break;

case 0x07: //第一行第一个按下

{delay(5);num1=1;l2=0;xianshi();} break;//第一行第一个键按下

}

}

}

P3=0xff;

P3_5=0;

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

delay(5);//延时躲过抖动

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

{delay(5);num1=8;l2=0;xianshi();} break;

case 0x0d:

{delay(5);num1=7;l2=0;xianshi();} break;

case 0x0b:

{delay(5);num1=6;l2=0;xianshi();} break;

case 0x07:

{delay(5);num1=5;l2=0;xianshi();} break;

}

}

}

P3=0xff;

P3_6=0;

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

delay(5);//延时躲过抖动

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

{delay(5);num1=12;l2=0;xianshi();} break;

case 0x0d:

{delay(5);num1=11;l2=0;xianshi();} break;

case 0x0b:

{delay(5);num1=10;l2=0;xianshi();} break;

case 0x07:

{delay(5);num1=9;l2=0;xianshi();} break;

//第二行第四个键按下//第二行第三个键按下//第二行第二个键按下//第二行第一个键按下//第三行第四个键按下//第三行第三个键按下//第三行第二个键按下//第三行第一个键按下

}

}

}

P3=0xff;

P3_7=0;

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

delay(5);//延时躲过抖动

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

{delay(5);num1=16;l2=0;xianshi();} break;

case 0x0d:

{delay(5);num1=15;l2=0;xianshi();} break;

case 0x0b:

{delay(5);num1=14;l2=0;xianshi();} break;

case 0x07:

{delay(5);num1=13;l2=0;xianshi();} break;

}

temp=P3;

P0=table[key];

}

}

} }

void xianshi(){

TR0=0;

//停止定时计数

num=0;

//倒计时num清零

sp=1;

//成功抢答,蜂鸣器叫

delay(100);

//延时一段时间

sp=0;

//关蜂鸣器

//第四行第四个键按下//第四行第三个键按下//第四行第二个键按下//第四行第一个键按下

while(1)

{

for(a=0;a

{

delay(5);

P2=table0[a];

P0=table[display[a]];

}

display[0]=num/10;

//倒计时显示0

display[1]=num%10;

display[2]=num1/10;

//显示抢答者号

display[3]=num1%10;

if(k4==0)

//判断复位键K4是否按下

{

num=num2;

//num2值赋值给num

num1=0;

//清零抢答者号显示

TR0=1;

//启动定时器TO

l1=1;

//D1,D2关闭

l2=1;

return;

}

} }

void main()

//主函数 {

l1=1;

//D1,D2关闭

l2=1;

sp=0;//初始化蜂鸣器

x=0;

num=num2=30;

//赋初值

while(1)

{

if(x==1)

//开始键按下

{

delay(5);

TR0=1;

//启动定时

while(1)

{

keyboad();//调用按键检测子函数

if(k4==0)//判断复位键是否按下

{

l1=1;//D1,D2关闭

l2=1;

delay(5);

num=num2;//倒计时时间30秒赋值给num

TR0=1;//启动定时器T0

}

}

}

else

//开始键没有按下

{

for(a=0;a

//显示部分位选

{

delay(5);

P2=table0[a];

P0=table[display[a]];

}

display[0]=num/10;//倒计时显示0

display[1]=num%10;

display[2]=num1/10;

//显示抢答者号

display[3]=num1%10;

init();

//初始化

}

} }

void time0()interrupt 1 //定时器T0中断 {

TH0=(65536-10000)/256;

//重装初值

TL0=(65536-10000)%256;count++;

//中断次数记录

if(k4==0)

//复位键K4检测

{

num=num2;

TR0=1;

num1=0;

return;

}

for(a=0;a

{

delay(10);

P2=table0[a];

P0=table[display[a]];

} display[0]=num/10;

//倒计时显示0

display[1]=num%10;

display[2]=num1/10;//显示抢答者号

display[3]=num1%10;

if(count==100)

//1秒定时是否已到

{

count=0;

//清零记录

num--;

//显示倒计时自减一

if(num

//倒计时倒数6秒,D2亮,蜂鸣器报警

{

l1=~l1;

sp=1;

delay(100);

sp=0;

if(num==0)

//倒计时为0,D2亮,蜂鸣器报警

{

l1=0;

sp=1;delay(200);sp=0;

delay(100);

sp=1;delay(200);sp=0;

delay(100);

sp=1;delay(200);sp=0;

}

if(num==0)

{

while(1)

{

xianshi();

//调用延时子函数

if(k4==0)//假如复位键按下

{

l1=1;

//D1,D2灭

l2=1;

num=num2;//30秒倒计时赋值给num

TR0=1;//启动定时器T0

return;

}

}

}

} } x2++;if(x2==4){

x2=0;} P3=table2[x2];

//分别给行线送低电?

抢答器~C51~带程序

前 言在电视和学校中我们会经常看到一些智力抢答的节目,如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判断出第一抢答者,所......

verilog4路抢答器设计带30s倒计时

四路抢答器一、程序module qiangda4(clr,clk,input1,input2,input3,input4,seg,clockin,scan,LED); input clr,clk,input1,input2,input3,input4; output [7:0] seg;//7段......

51单片机四路抢答器程序

#include sbit key1=P3^0; sbit key2=P3^1; sbit key3=P3^2; sbit key4=P3^3; sbit key5=P3^7; sbit BEEP=P2^0; unsigned char temp; unsigned char pulse_number1=9; uns......

关于路抢答器的实验报告

关于路抢答器的实验报告指导老师:陈老师成员(第四组):章海洋 肖悦 何细义一、设计题目:八路抢答器的设计二、设计要求:1.设计一个智力竞赛抢答器,可同时供8名选手或者8个代表队参......

简易抢答器设计

简易抢答器设计一.设计目的1、通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力;2、掌握Quar......

《4路抢答器设计程序.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
4路抢答器设计程序
点击下载文档
相关专题 4路抢答器课程设计 设计 程序 抢答器 4路抢答器课程设计 设计 程序 抢答器
[其他范文]相关推荐
[其他范文]热门文章
下载全文