立即注册 登录
返回首页

俣戈的个人空间

日志

单片机模拟八路抢答器

已有 1023 次阅读2018-7-20 20:22 |个人分类:单片机

#include"reg52.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unisgned int

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7;

sbit beep=P3^7;

uchar code shu[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
uchar DisplayData[16];
uchar time=10,m;
bit j=0;

void delay(uchar i)
{
while(i--);
}

void init()
{
TMOD|=0x01;
TH0=0xfc;
TL0=0x18;
EA=1;
ET0=1;
TR0=1;
}

void DigDisplay()
{
uchar i;
for(i=0;i<8;i++)
{
switch(i) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//显示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//显示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//显示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//显示第7位
}
P0=DisplayData[i];//发送段码
delay(1); //间隔一段时间扫描
P0=0x00;//消隐
}
}


void main()
{
init();
while(1)
{
DigDisplay();
if(j==0)
{
if(!k1){j=1;delay(1000);if(!k1){while(!k1);m=1;}}
if(!k2){j=1;delay(1000);if(!k2){while(!k2);m=2;}}
if(!k3){j=1;delay(1000);if(!k3){while(!k3);m=3;}}
if(!k4){j=1;delay(1000);if(!k4){while(!k4);m=4;}}
if(!k5){j=1;delay(1000);if(!k5){while(!k5);m=5;}}
if(!k6){j=1;delay(1000);if(!k6){while(!k6);m=6;}}
if(!k7){j=1;delay(1000);if(!k7){while(!k7);m=7;}}
if(!k8){j=1;delay(1000);if(!k8){while(!k8);m=8;}}
}


if(j==1)
{
TR0=0;
DisplayData[0]=shu[m];
beep=~beep;
}

}
}

void t0() interrupt 1
{
static unsigned int i=0;
TH0=0xfc;
TL0=0x18;
i++;
if(i==1000)  //1s
{
i=0;
time--;
}
DisplayData[6]=shu[time/10];
DisplayData[7]=shu[time%10];

if(time==0)TR0=0;
}

路过

鸡蛋

鲜花

握手

雷人

全部作者的其他最新日志

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部