标题:
8人智力抢答器proteus仿真及单片机源码
[打印本页]
作者:
51黑ff
时间:
2016-9-28 00:19
标题:
8人智力抢答器proteus仿真及单片机源码
给51黑电子论坛的朋友们分享一个用51单片机做的8人智力抢答器proteus仿真,下面是原理图:
0.png
(58.57 KB, 下载次数: 95)
下载附件
2016-9-28 00:17 上传
0.png
(52.27 KB, 下载次数: 70)
下载附件
2016-9-28 00:18 上传
抢答器的所有制作资料下载:
8人抢答.zip
(43.09 KB, 下载次数: 29)
2016-9-28 00:19 上传
点击文件名下载附件
下载积分: 黑币 -5
源程序:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define disp_c P0
#define disp_s P3
#define disp_o P2
#define player P1
#define ON 1
#define OFF 0
sbit Juge1=P3^0;
sbit Juge2=P3^1;
sbit Light=P3^7;
sbit Warm=P3^4;
unsigned char key;
unsigned char Num50=0,second,Num,Num1,count_down=29,over_time=99;
unsigned char disdata1,disdata2,disbuf[3];
unsigned char disp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void keyboard(void) //键盘识别
{
key=0;
if(Num==0)
{
if(player!=0xff)
{
Warm=ON;
Light=OFF;
switch(player)
{
case 0xfe:key=1;Light=OFF;break;
case 0xfd:key=2;Light=OFF;break;
case 0xfb:key=3;Light=OFF;break;
case 0xf7:key=4;Light=OFF;break;
case 0xef:key=5;Light=OFF;break;
case 0xdf:key=6;Light=OFF;break;
case 0xbf:key=7;Light=OFF;break;
case 0x7f:key=8;Light=OFF;break;
default:key=0;Light=ON;break;
}
Num=1;
}
}
}
void display(void) interrupt 1 //显示程序
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
Num50++;
if(Num50==20)
{
Num50=0;second--;
disdata2=second;
disbuf[0]=disdata2/10;
disbuf[1]=disdata2%10;
disbuf[2]=disbuf[1]*16+disbuf[0];
P0=disbuf[2];
if(second==0) {TR0=0; Warm=OFF;Light=ON;}
}
}
void display2 (void) interrupt 3
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
Num50++;
if(Num50==20)
{
Num50=0;second--;
disdata2=second;
disbuf[0]=disdata2/10;
disbuf[1]=disdata2%10;
disbuf[2]=disbuf[1]*16+disbuf[0];
P0=disbuf[2];
if(second==0)
{
TR1=0; Warm=OFF;Light=ON;
}
}
}
void main() //主程序
{
EA=1;
ET0=1;ET1=1;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
Num1=0;P2=0;Light=OFF;
while(1)
{
if(Juge1==0)
{while(Juge1==0);P2=0;second=30;TR0=1;TR1=0;Num=0;Num1=1;Light=OFF;}
if(Juge2==0)
{while(Juge2==0);TR0=0;TR1=1;second=100;}
keyboard();
if(key!=0)
{if(Num1==1) {P2=disp[key];TR0=0;second=30;TR1=1;}}
}
}
复制代码
作者:
帅也是一种错
时间:
2017-4-22 22:18
LZ有PCB图吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1