标题:
51单片机篮球计分器程序+电路图
[打印本页]
作者:
niuniu
时间:
2015-4-19 23:14
标题:
51单片机篮球计分器程序+电路图
下面是电路图:
以下是篮球计分器的c语言程序源代码:
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar secs = 0;
uchar minutes = 1;
uchar LED,num1,num2,num = 4;
uchar flag1 = 1,flag2 = 0;
uchar m_secs = 24;
uchar key_value = 0;
uchar table[13] = {1,2,3,4,5,6,7,8,9,0,1,2,3};
uchar code LedNum[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar scan_kay(void);
void delay(uchar z);
void INT0_Initial(void)
{
EX0 = 1;
IT0 = 1;
EA = 1;
P1 = 0xF0;
}
void INT0_Interrupt(void) interrupt 0
{
uchar temp;
temp = scan_kay();
if(temp!=0x7f)
{
key_value = temp;
}
P1 = 0xF0;
}
void Time0_Initial(void)
{
TMOD = 0x01;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
ET0 = 1;
TR0 = 1;
EA = 1;
PT0 = 1;
PX0 = 0;
}
volatile uchar cnt = 0;
void Time0_Interrupt(void) interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
cnt ++;
minutes=11;
if(cnt==15)
{
cnt = 0;
secs --;
m_secs --;
if(flag2==1)
{
LED = !LED;
}
if(flag2==0)
{
LED = 0;
}
}
if(secs>60)
{
secs = 59;
minutes --;
}
if(m_secs>24)
{
m_secs = 23;
if(flag1==1)
{
flag2 = 1;
}
if(flag1==0)
{
flag2 = 0;
}
}
if(minutes>60)
{
minutes = 11;
m_secs = 24;
num ++;
}
if(num==4)
{
num = 1;
}
}
void HEXTOBCD(void)
{
table[0] = LedNum[num];
table[1] = LedNum[m_secs/10];
table[2] = LedNum[m_secs%10];
table[3] = LedNum[minutes/10];
table[4] = LedNum[minutes%10];
table[5] = LedNum[secs/10];
table[6] = LedNum[secs%10];
table[7] = LedNum[num1/100];
table[8] = LedNum[num1%100/10];
table[9] = LedNum[num1%10];
table[10] = LedNum[num2/100];
table[11] = LedNum[num2%100/10];
table[12] = LedNum[num2%10];
}
void Display(uchar *str)
{
uchar i,temp = 0;
for(i=0;i<13;i++)
{
P0 = 0x00;
_nop_();
P2 = temp+i;
P0 = str[i];
delay(2);
}
}
uchar i,j;
void delay(uchar z)
{
for(i=1;i<z;i++)
for(j=1;j<110;j++);
}
void main()
{
INT0_Initial();
Time0_Initial();
delay(10);
LED = 0;
while(1)
{
switch(key_value)
{
case 12:
{
num1 ++;key_value = 0;
flag1 = 0;
if(num1>255)
{
num1 = 0;
}
break;
}
case 13:
{
num1 --;key_value = 0;
flag1 = 0;
if(num1>255)
{
num1 = 255;
}
break;
}
case 14:
{
num2 ++;key_value = 0;
flag1 = 0;
if(num2>255)
{
num2 = 0;
}
break;
}
case 15:
{
num2 --;key_value = 0;
flag1 = 0;
if(num2>255)
{
num2 = 255;
}
break;
}
case 1:
{
TR0 = 1;
key_value = 0;
break;
}
case 2:
{
num1 = 0;num2 = 0;
num = 4;
secs = 0;minutes = 12;
m_secs = 24;
key_value = 0;
TR0 = 1;
break;
}
case 3:
{
TR0 = 0;
key_value = 0;
break;
}
default:
{
break;
}
}
HEXTOBCD();
delay(5);
Display(table);
delay(10);
}
}
uchar scan_key(void)
{
uchar i,key_value;
P1 = 0xFF;
for(i=0;i<4;i++)
{
P1 = ~(1<<i);
key_value = P1&0xF0;
if(key_value!=0xF0)
{
delay(20);
key_value = P1&0xF0;
if(key_value!=0xF0)
{
key_value &= 0xF0;
switch(key_value)
{
case 0x70: key_value = 15-(3-i)*4;break;
case 0xb0: key_value = 14-(3-i)*4;break;
case 0xd0: key_value = 13-(3-i)*4;break;
case 0xe0: key_value = 12-(3-i)*4;break;
default: key_value = 0x7f;
}
return key_value;
}
}
P1 = 0xFF;
}
return 0x7f;
}
uchar scan_kay(void)
{
uchar key_va1,key_va2;
key_va1 = scan_key();
if(key_va1==0x7f)
{
return 0x7f;
}
do
{
key_va2 = scan_key();
}while(key_va1==key_va2);
return key_va1;
}
复制代码
篮球计分器的仿真文件下载:
http://www.51hei.com/bbs/dpj-51424-1.html
作者:
时间:
2015-4-21 00:59
好东西来的..
作者:
佼佼の者
时间:
2015-4-25 16:18
赞。。。。。。。。。。。。。。。。。。
作者:
不留余力
时间:
2015-5-25 15:11
楼主,板子是自己焊的吗
作者:
不留余力
时间:
2015-5-25 15:11
我很想做,请提供点意见
作者:
413huade
时间:
2016-3-29 14:50
译码器 为什么No model.......
作者:
0827dongdong
时间:
2016-4-16 19:12
顶起,版主加油哦
作者:
ZhTSh
时间:
2016-4-17 17:30
不错不错
作者:
598509644
时间:
2016-4-18 21:14
感谢楼主分享,收藏了先
作者:
sunxiaohua
时间:
2016-4-19 18:06
还有电路图的显示器是用共阴还是共阳
作者:
好久不见
时间:
2016-11-17 17:09
不错,可以看看
作者:
xiaokobe
时间:
2016-12-17 19:05
sunxiaohua 发表于 2016-4-19 18:06
**** 作者被禁止或删除 内容自动屏蔽 ****
共阴极的
作者:
wwww1
时间:
2017-2-1 10:37
感谢楼主分享
作者:
todaaae
时间:
2017-11-2 16:53
感谢楼主分享,收藏了先
作者:
todaaae
时间:
2017-11-2 16:53
感谢楼主分享!
作者:
pengyongnet
时间:
2018-6-27 09:15
能分享下源文件图加程序吗
作者:
pengyongnet
时间:
2018-6-27 09:16
能分享下源文件图加程序吗?学习下
作者:
2452047173
时间:
2018-6-30 16:16
楼主厉害呀
作者:
WCYYYYYYYYY
时间:
2020-9-4 16:14
这是完整的程序吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1