导航:首页 > 操作系统 > 单片机篮球计数器

单片机篮球计数器

发布时间:2025-01-05 11:12:09

㈠ 求一份关于篮球计分器的51单片机C语言程序

这是一个数码管显示的篮球计分程序,你可以参考一下:
#include"reg52.h"

#defineu8unsignedchar
#defineu16unsignedint


sbitUP_1=P1^1; //第一队加分键
sbitDOWN_1=P1^2; //第一队减分键
sbitUP_2=P1^3; //第二队加分键
sbitDOWN_2=P1^4; //第二队减分键
sbitChange=P1^5; //交换键
sbitBegin=P1^6; //开始键
sbitPause =P1^7; //暂停键

sbitBeef=P2^4; //蜂鸣器

sbitan=P2^3; //段选
sbitwei=P2^2; //位选


u8Grate_1=0; //第一队计分
u8Grate_2=0; //第二队计分
u8Grate_change=0; //换场标志
u8Time=99; //总时间
u16Flag=0; //计时次数

u8leddata[]={
0x3F,//"0"
0x06,//"1"
0x5B,//"2"
0x4F,//"3"
0x66,//"4"
0x6D,//"5"
0x7D,//"6"
0x07,//"7"
0x7F,//"8"
0x6F,//"9"
};


voidInitTimer1(void)
{
TMOD=0x10; //定时器1设为模式1
TH1=0xFC;
TL1=0x18;//1ms
EA=1;//开总中断
ET1=1;//开定时器1中断
//TR1=1;//
}

voiddelay(u8d) //延时
{
u8a,b,c;
for(c=d;c>0;c--)
for(b=17;b>0;b--)
for(a=16;a>0;a--);
}

voidbeef(u8d)//发声
{
u8a,b,c;
for(c=d;c>0;c--)
for(b=17;b>0;b--)
for(a=16;a>0;a--)
{
Beef=~Beef;
}
}


voiddisplay(u8grate_1,u8grate_2,u8time) //显示
{
u8w1,w2,w3,w4,w7,w8;
w1=grate_1/10; //计算第一队分数十位
w2=grate_1%10; //计算第一队分数个位

w3=grate_2/10; //计算第二队分数十位
w4=grate_2%10; //计算第二队分数个位

w7=time/10; //计算时间十位
w8=time%10; //计算时间个位


P0=0xff; //消隐,该段显示第一队分数十位
wei=1;
P0=0xfe; //送位码
wei=0;
P0=0xff;
an=1;
P0=leddata[w1]; //送段码
an=0;
delay(5);P0=0xff; //显示第一队分数个位
wei=1;
P0=0xfd;
wei=0;
P0=0xff;
an=1;
P0=leddata[w2];
an=0;
delay(5);P0=0xff; //显示第二队分数十位
wei=1;
P0=0xf7;
wei=0;
P0=0xff;
an=1;
P0=leddata[w3];
an=0;
delay(5);

P0=0xff; //显示第二队分数个位
wei=1;
P0=0xef;
wei=0;
P0=0xff;
an=1;
P0=leddata[w4];
an=0;
delay(5);P0=0xff; //显示时间十位
wei=1;
P0=0xbf;
wei=0;
P0=0xff;
an=1;
P0=leddata[w7];
an=0;
delay(5);P0=0xff; //显示时间个位
wei=1;
P0=0x7f;
wei=0;
P0=0xff;
an=1;
P0=leddata[w8];
an=0;
delay(5);
}


voidmain()
{
InitTimer1(); //初始化定时器1
UP_1=1; //以下初始化IO口
DOWN_1=1;
UP_2=1;
DOWN_2=1;
Change=1;
Begin=1;
while(1)
{
if(UP_1==0) //如果第一队加分键按下
{
ET1=0; //关闭定时器1中断
delay(5); //稍加延时
while(UP_1==0);//等待按键抬起
Grate_1++; //第一队分数加1
ET1=1; //开启定时器1中断
}
if(DOWN_1==0) //如果第一队减分键按下
{
ET1=0;
delay(5);
while(DOWN_1==0);
Grate_1--; //第一队分数减1
ET1=1;
}
if(UP_2==0) //如果第二队加分键按下
{
ET1=0;
delay(5);
while(UP_2==0);
Grate_2++; //第二队分数加1
ET1=1;
}
if(DOWN_2==0) //如果第二队减分键按下
{
ET1=0;
delay(5);
while(DOWN_2==0);
Grate_2--; //第二队分数减1
ET1=1;
}
if(Change==0) //如果换场键按下
{
ET1=0;
delay(5);
while(Change==0);
Grate_change=Grate_1;//一下三行语句完成分数交换显示
Grate_1=Grate_2;
Grate_2=Grate_change;
ET1=1;
}
if(Begin==0) //如果开始键按下
{
delay(5);
while(Begin==0);
TR1=1;//开启定时器1
}
if(Pause==0)
{
delay(5);
while(Pause==0);
TR1=0;
}
if(Time<=0) //如果时间计数到0
{
Time=99; //恢复初始时间
TR1=0; //关闭定时器1
beef(100); //发声
}
display(Grate_1,Grate_2,Time);//显示分数、时间
}
}
voidTimer1Interrupt(void)interrupt3 //定时器1中断函数
{
TH1=0xFC; //重赋初值
TL1=0x18;
Flag++; //中断次数加1
if(Flag>=1000)//1000次也就是1秒到
{
Flag=0;
Time--; //秒变量减1
}

}

㈡ 单片机c51篮球计时器程序

暑假写的,你参考参考#include#include#include#include#defineucharunsignedchar#defineuintunsignedint#defineoutbitP3#defineoutsegP1ucharsecond;sbitp20=P2^0;//设置sbitp21=P2^1;//+sbitp22=P2^2;//-sbitchange=P2^3;//显示选择sbitspeak=P2^4;//蜂鸣器ucharclock[7]={6,6,12,58,12,59,0};//依次为月日时分闹钟时闹钟分比较量ucharcodeTAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharm,n,q,i,h;j=6;k=1;a=0xff;b=0xff;c=0xff;d=0xff;voiddelay(){uinte;for(e=0;e1)clock[j]=clock[j]-1;elseclock[j]=12;break;case1:if(clock[j]>1)clock[j]=clock[j]-1;elseclock[j]=31;break;case2:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=23;break;case3:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=59;break;case4:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=23;break;case5:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=59;break;default:break;}}if(change==1){while(1){P2=0x0f;if((P2&0x0f)==0x0f)break;}}}main(){EA=1;ET0=1;TMOD=0x01;TH0=-20000/256;TL0=-20000%256;TR0=1;while(1){display();keyscan();if(j==6){if(change==1){m=clock[3]%10;//选择显示时间n=clock[3]/10;q=clock[2]%10;i=clock[2]/10;outbit=0x08;//显示秒的点闪动outseg=second;delay();}else{m=clock[1]%10;//选择显示日期n=clock[1]/10;q=clock[0]%10;i=clock[0]/10;}}elseif(j==0){q=clock[j]%10;i=clock[j]/10;}elseif(j==1){m=clock[j]%10;n=clock[j]/10;}elseif(j==2){q=clock[j]%10;i=clock[j]/10;}elseif(j==3){m=clock[j]%10;n=clock[j]/10;}elseif(j==4){q=clock[j]%10;i=clock[j]/10;}elseif(j==5){m=clock[j]%10;n=clock[j]/10;}if(clock[2]==clock[4]&&clock[3]==clock[5])//定点报时{if(p20==0||p21==0||p22==0||change==0)//有键按下则停止报警k=0;speak=1&k;}elsek=1;}}voidtimer0()interrupt1using1{uchare,f,g,h;TH0=-20000/256;TL0=-20000%256;e=e+1;if(e==50)//1sec{e=0;g=g+1;second=second^0x80;if(g==60)//1min{g=0;if(clock[3]==59)//每过60s改变下时间{if(clock[2]==23){clock[2]=0;clock[3]=0;}else{clock[2]=clock[2]+1;clock[3]=0;}}elseclock[3]=clock[3]+1;if(clock[3]==0&&clock[2]==0)//时间都为0时改变日期{switch(clock[0]){case1:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=2;}break;case2:if(clock[1]<29)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=3;}break;case3:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=4;}break;case4:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=5;}break;case5:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=6;}break;case6:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=7;}break;case7:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=8;}break;case8:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=9;}break;case9:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=10;}break;case10:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=11;}break;case11:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=12;}break;case12:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=1;}break;default:break;}}}if(j!=6){f=f+1;if(f!=10)//判断10s是否到是否有键按下{switch(j)//所设置的那位闪动{case0:a=~a;b=~b;c=0;d=0;break;case1:c=~c;d=~d;a=0;b=0;break;case2:a=~a;b=~b;c=0;d=0;break;case3:c=~c;d=~d;a=0;b=0;break;case4:a=~a;b=~b;c=0;d=0;break;case5:c=~c;d=~d;a=0;b=0;break;default:break;}if(clock[6]!=clock[j]||h!=j){f=0;h=j;clock[6]=clock[j];}}else{j=6;f=0;a=0xff;b=0xff;c=0xff;d=0xff;}}else{a=0xff;b=0xff;c=0xff;d=0xff;}}}

㈢ 求单片机篮球计分器,8个按钮.开始.结束.加一分.加两分.加三分,不用记时间和换场地,程序和仿图

用单片机做篮球计分器,8个按钮用于计分,这个可以实现,计多少分都可以,可由程序来控制实现。仿图如下图所示。

㈣ 单片机的篮球比赛计时器的工作原理和使用优势

单片机的篮球比赛计时器 是一种可以用于专业比赛的计时工具,通过时钟电路为单片机提供一个振动器,从而产生节拍效果。当节拍与时间相吻合的时候,就可以充当计时器,由于于单片机只能在时钟电路中正常工作,所以这种计时器的工作效率极高,而且准确率也会比较高,常常用在篮球比赛或者其他专业性质的比赛当中。

首先,在 单片机的篮球比赛计时器 中,单片机和时钟电路是完全吻合的,两者缺一,不可始终作为计时单位,并没有其他用处,而单片机缺少了振动器,也失去了计时的意义。所以这种计时器能够在比赛中保证即时效果,对于篮球比赛来说,特别是在比赛后期的一分钟内,如果产生绝杀球,却不能通过计时器完全判断的话,对于篮球比赛来说,是一场莫大的损失,所以高伍缺只有保证精准的计时效果,才可以精彩的篮球比赛。

其次,在篮球比赛中,为了能够保证比赛公平性,一定不能出现问题。 单片机的篮球比赛计戚辩时器 由于其设计操作步骤比较复杂,所以在质量上也有一定保障,只要拥有时钟电路就可以及时计时,精确比赛时间,保证比赛公平。这也是单片机的篮球比赛计时器,能够长期使用的原因,不需要太多人为操作,直接让时钟电路控橘宽制计时器的开始和结束。选择一款合适的比赛计时器,能够在最大程度上保证篮球比赛的时间问题。

㈤ 51单片机的篮球计分器液晶LCD1602显示 proteus仿真C语言程序+原理图+PCB+设计报告

基于51单片机的篮球计分器,采用液晶LCD1602进行显示,主要功能包括篮球比赛计时计分、队伍加分、对调比分、显示比赛倒计时以及创新功能如显示第几小节、小节结束蜂鸣提醒、按键加1、加2、加3操作、24秒进攻倒计时等。

设计内容包括:设计LCD显示篮球比赛计时计分牌,通过加分按钮控制A队或B队的得分,设计对调功能进行中场换场,显示比赛剩余时间,以及添加额外功能如显示当前小节、小节结束提醒和按键控制的得分增加操作,包含24秒进攻倒计时功能。

该设计适用于AT89C51/52(包括AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机),程序使用C语言编写,并支持keil 4/keil 5编译器。提供proteus 7.8及以上版本的仿真模型,PCB布局图,设计报告及讲解视频,帮助用户深入了解设计原理和实现过程。

仿真步骤包括:启动proteus仿真环境,选择单片机型号和对应的hex文件路径,进行仿真测试。通过对比仿真结果与设计要求,验证设计功能的正确性。

仿真与实物作品的差异在于:运行环境、调试方式、电路连接、运行速度及功能实现方式。仿真提供更便捷的调试手段,而实物则受限于硬件性能和物理连接。

资料包包含仿真模型、C语言源码、设计报告、原理图、功能需求文档、元器件清单、软硬件设计流程、讲解视频以及仿真和实物开发所需的相关软件资料,如Altium Designer、KEIL、Proteus等,还包括单片机学习资源和答辩技巧指导。

注意:查看常见使用问题及解决方法、仿真图、程序源码、开题报告、原理图、功能要求、元器件清单、设计报告、软硬件流程框图、讲解视频等资源。包含单片机相关课程毕业设计的链接,以及更多资源获取链接。

㈥ at89s52 篮球计时器 编写求助

130分啊,哈哈,给我吧,谢谢!

阅读全文

与单片机篮球计数器相关的资料

热点内容
铁虎加密算法 浏览:949
手机qq怎么解加密 浏览:756
程序员辞职把所有程序卸载 浏览:121
cf游戏服务器IP地址 浏览:598
python地图上画三维柱状图 浏览:798
学大教育程序员 浏览:979
压缩机维修济南 浏览:739
算法21是什么 浏览:311
加密文件解密时非法的标志 浏览:358
哪些php网站有哪些东西 浏览:789
pdf文件转word文件怎么打开 浏览:808
权限的文件夹图标 浏览:827
智能加密门卡怎么弄在手机 浏览:501
程序员改需求 浏览:111
android环信图片 浏览:134
ees算法具有什么特点 浏览:768
安卓手机如何弄恋爱日记 浏览:624
android连接webservice 浏览:221
对于简单的加密和编码方法 浏览:334
XC8编译结果不同 浏览:217