# 基于51单片机篮球计分器proteus仿真
51单片机篮球计分器proteus仿真(源码+原理图+PCB+仿真+设计报告+讲解视频)
仿真:proteus 7.8
程序编译器:keil 4/keil 5
编程语言:C语言
编号C0004
51单片机篮球计分器
- 讲解视频
- 1 设计要求:
- 讲解视频
- 2 仿真图:
- 3 原理图:
- 4 程序:
- 5 报告:
- 器件清单:
- 6 资料清单&&网盘下载链接:
电路采用单片机作为核心元件,利用两个供阴的三位一体数码管来显示两队的分数,一个四位一体数码管显示时间的计时。显示分数范围可达0~999分,足够赛程计分的需要。四位一体数码管中2个用于显示分钟,2个用于显示秒钟。
该系统具有赛程定时设置,赛程时间暂停,及时刷新甲、乙双方的成绩等功能。设计分为软件设计和硬件设计两部分。主控芯片采用AT89C51,使用C语言编写软件程序,主体分为计时显示模块、计分显示模块、定时报警、按键控制模块。编程后利用Keil C51软件来进行编译,再将生成的HEX文件装入芯片中,检验功能是否能够正常实现。
讲解视频
51单片机篮球计分器(程序+仿真+原理图+报告)
1 设计要求:
1、能记录整个赛程的比赛时间,并能修改时间,暂停比赛时间。
2、能随时刷新甲、乙两队在整个赛程中的比分。
3、场中交换比赛场地时,能交换甲、乙两队比分的位置。
4、比赛时间结束时,能发出报警指令。
5、有24秒倒计时功能,可通过按键随时复位24秒,如果24秒违例会启动蜂鸣器报警,同时比赛时间暂停,处理好后按一下24秒复位键,比赛继续。
二、实现功能:
1、一个四位一体数码管显示比赛时间,时间格式如:15:00,两个三位一体数码管显示甲乙两对的比分,比分格式如:008。
2、比赛时间采用倒计时方式,以一秒的频率减时,上电时默认初值为15:00,在没有开始比赛时,可以修改时间,比赛开始后不能修改。
3、甲乙队比分采用三位数,上电初值为000,最大值为999,满足常理要求,未开始比赛以及比赛结束后比分无法加减,
4、比赛未开始之前,可以通过ADD1、DEC1键对比较时间的分钟进调时,通过ADD2、DEC2键对比较时间的秒进行调时。
5、可随时暂停/启动比赛时间。
6、比赛进行时,可以通过ADD1、DEC1键对甲队比分加、减,可以通过ADD2、DEC2对乙队比分加、减。每按一次键,加/减1分。
7、当一节比赛完后,可以通过(EXCHANGE)换场键换场,换场后,比分交换显示,交换后,下一节比赛开始时,相应的比分加减键也随之交换。
8、当比赛结束时,发出报警。
三、作用说明:
1、调整比赛时间:插上电源后,系列默认比赛时间为15:00,甲乙队比分默认000,此时按下ADD1键,可以对比赛时间分钟加1,按下DEC1键,可以对比赛时间的分钟减1,按下ADD2键,可以对比赛时间秒加1,按下DEC2键,可以对比赛时间秒减1。
2、启动比赛:按下RUN/STOP键,计时开始,比赛时间以1秒的频率倒计时。
3、暂停比赛:比赛运行的状态下,按RUN/STOP键,比赛暂停,计时暂停。
4、比分加减,在比赛进行的状态下按ADD1,DEC1键,可以对甲队比分加、减1,按ADD2、DEC2键,可以对乙队比分加、减1.
5、交换场地:在一节比赛时间结束后,按下EXCHANGE键,比赛时间重新预置为15:00,同时左右两边数码管的比分交换显示。此时按下启动键可以开始新一节的比赛。
6、报警提示:在一节比赛时间倒计时到00:00时,蜂鸣器发出报警提示。
7、比赛时,24秒会以1秒的速度减,可随时按下24秒复位键重置24秒。
讲解视频
包含仿真讲解和代码讲解,详情见压缩包内
2 仿真图:
3 原理图:
4 程序:
显示函数
void display(void)
{
//-----------显示时间分--------------LEDData=LEDCode[minit/10];led1=0;Delay5ms();led1=1;LEDData=LEDCode[minit%10];led2=0;Delay5ms();led2=1;
//-------------秒点闪动------------if(halfsecond==1)LEDData=0x7f;elseLEDData=0xff;led2=0;Delay5ms();led2=1;secondpoint=0;
//-----------显示时间秒------------LEDData=LEDCode[second/10];led3=0;Delay5ms();led3=1;LEDData=LEDCode[second%10];led4=0;Delay5ms();led4=1;
//-----------显示1组的分数百位-------if(AorB==0)LEDData=LEDCode[scoreA/100];elseLEDData=LEDCode[scoreB/100];led5=0;Delay5ms();led5=1;
//---------------显示1组分数的十位-----------if(AorB==0)LEDData=LEDCode[(scoreA%100)/10];elseLEDData=LEDCode[(scoreB%100)/10];led6=0;Delay5ms();led6=1;//---------------显示1组分数的个位-----------if(AorB==0)LEDData=LEDCode[scoreA%10];elseLEDData=LEDCode[scoreB%10];led7=0;Delay5ms();led7=1;//-----------显示2组分数的百位-------if(AorB==1)LEDData=LEDCode[scoreA/100];elseLEDData=LEDCode[scoreB/100];led8=0;Delay5ms();led8=1;
//-----------显示2组分数的十位-----------if(AorB==1)LEDData=LEDCode[(scoreA%100)/10];elseLEDData=LEDCode[(scoreB%100)/10];led9=0;Delay5ms();led9=1;//-----------显示2组分数的个位-----------if(AorB==1)LEDData=LEDCode[scoreA%10];elseLEDData=LEDCode[scoreB%10];led10=0;Delay5ms();led10=1;//-----------显示时间分--------------LEDData=LEDCode[sec24/10];led11=0;Delay5ms();led11=1;LEDData=LEDCode[sec24%10];led12=0;Delay5ms();led12=1;
}
main函数
//******************************主函数*************************************************
void main(void)
{TMOD=0x11;TL0=0xb0;TH0=0x3c;TL1=0xb0;TH1=0x3c;minit=min; //初始值为15:00second=sec;EA=1;ET0=1;ET1=1;TR0=0;TR1=0;EX0=1;IT0=1;IT1=1;
// EX1=1;PX0=1;
// PX1=1;PT0=0;P1=0xFF;P3=0xFF;alam=1;while(1){keyscan();display(); }
}void PxInt0(void) interrupt 0
{Delay5ms();EX0=0;alam=1;TR1=0;if(timeover==1){timeover=0;}if(playon==0){playon=1; //开始标志位TR0=1; //开启计时if((minit+second)==0){sec24=24;minit=min; second=sec;}}else{playon=0; //开始标志位清零,表示暂停TR0=0; //暂时计时} EX0=1; //开中断
}
5 报告:
8615字设计报告附赠开题报告
器件清单:
篮球计分器元件清单
\1) 万用板9*15
\2) stc89C51单片机
\3) 40脚IC座
\4) 0.36四位一体共阳数码管
\5) 0.36三位一体共阳数码管*2
\6) 0.36两位一体共阳数码管
\7) 10K排阻(103)
\8) 2.2K电阻*13
\9) 10K电阻
\10) 10uF电容
\11) 按键*7
\12) 12M晶振
\13) 30P电容 *2
\14) 9012三极管*13
\15) 蜂鸣器
\16) DC电源插座
\17) 自锁开关
\18) 导线若干
\19) 焊锡若干
USB电源线(电池盒+DC插头)
6 资料清单&&网盘下载链接:
资料下载地址