本文主要是介绍基于51单片机的篮球计分器设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.硬件方案
本设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。该系统具有赛程定时设置、赛程时间暂停、及时刷新甲乙双方的成绩等功能。
电路主要由STC89C52单片机+最小系统+数码管显示模块+数码管驱动模块+蜂鸣器模块+按键模块;
二.设计功能
(1)采用一个四位一体数码管显示比赛时间,时间格式如:15:00,两个三位一体数码管显示甲乙两对的比分,比分格式如:008;
(2)比赛时间采用倒计时方式,以一秒的频率减时,上电时默认初值为15:00。在没有开始比赛时,“比赛时间”可以按键加减,比赛开始后不能修改;
(3)甲乙队比分采用三位数,上电初值为000,最大值为999,满足常理要求,未开始比赛以及比赛结束后比分无法加减;
(4)本设计加了24秒倒计时功能,可通过按键随时复位24秒。如果24秒违例,会启动蜂鸣器报警,同时比赛时间暂停,处理好后按一下24秒复位键,比赛继续;
(5)比赛未开始之前,可以通过ADD1、DEC1键对比较时间的分钟进调时,通过ADD2、DEC2键对比较时间的秒进行调时;
(6)可随时暂停/启动比赛时间;
(7)比赛进行时,可以通过ADD1、DEC1键对甲队比分加、减,可以通过ADD2、DEC2对乙队比分加、减。每按一次键,加/减1分;
(8)当一节比赛完后,可以通过(EXCHANGE)换场键换场,换场后,比分交换显示,交换后,下一节比赛开始时,相应的比分加减键也随之交换;
(9)当比赛结束时,蜂鸣器发出声音报警,提示比赛结束。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)Protues仿真图如下:
四.软件设计
主程序源码
//******************************主函数*************************************************
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; //开中断
}
资料链接:https://pan.baidu.com/s/1oqKCxVHgPrdQDAvd80OFQg?pwd=i4hu
这篇关于基于51单片机的篮球计分器设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!