标题:
简易篮球计分器的单片机源码与仿真
[打印本页]
作者:
电子发烧人
时间:
2018-1-7 13:59
标题:
简易篮球计分器的单片机源码与仿真
简易计分器,两个外部中断,每次加一。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(20.59 KB, 下载次数: 64)
下载附件
2018-1-8 00:53 上传
0.png
(14.14 KB, 下载次数: 69)
下载附件
2018-1-8 00:53 上传
单片机源程序如下:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define dat P0
code uchar d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint second=0,minter=0,hour=0;
uint mge,mshi,hshi,hge;
static char court=0;
sbit q1=P2^0;
sbit q2=P2^1;
sbit q3=P2^2;
sbit q4=P2^3;
sbit q5=P2^4;
sbit q6=P2^5;
sbit q7=P2^6;
sbit q8=P2^7;
sbit key1=P3^2;
sbit key2=P3^3;
void delay(uint number)
{
uchar i,j;
for(i=0;i<number;i++)
for(j=0;j<200;j++);
}
void int11() interrupt 1 using 2 //中断服务
{
TH0=0x5c;
TL0=0xb0;
//court++;
}
void int0() interrupt 0 using 1 //外部中断int0
{
minter++;
if(minter==99)
minter=0;
}
void int1() interrupt 2 using 1 //外部中断int1
{
hour++;
if(hour==99)
hour=0;
}
void main()
{
TMOD=0X01;
TH0=0x5c;
TL0=0xb0;
ET0=1; //打开定时器T0中断
EX0=1; //打开外部中断0中断
EX1=1; //打开外部中断1中断
IT0=1; //外部中断0触发
IT1=1; //外部中断1触发
EA=1; //开总中断
TR0=1; //启动定时器0
while(1)
{
mshi=minter/10;
mge=minter%10;
hshi=hour/10;
hge=hour%10;
dat=d[mge];
q8=1;
delay(2);
q8=0;
dat=d[mshi];
q7=1;
delay(2);
q7=0;
dat=0xbf;
q6=1;
delay(2);
q6=0;
dat=0xbf;
q5=1;
delay(2);
q5=0;
dat=0xbf;
q4=1;
delay(2);
q4=0;
dat=0xbf;
q3=1;
delay(2);
q3=0;
dat=d[hge];
q2=1;
delay(2);
q2=0;
dat=d[hshi];
q1=1;
delay(2);
q1=0;
if(court==20)
{court=0;
second++;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
计分器3.rar
(57.2 KB, 下载次数: 38)
2018-1-7 13:57 上传
点击文件名下载附件
简易计分器
下载积分: 黑币 -5
作者:
1476928506
时间:
2018-12-3 09:51
非常不错,谢谢大佬
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1