基于51单片机篮球计时计分器(Proteus仿真+Keil源码+设计文档)附下载链接!

📅 2026/6/30 13:41:40
基于51单片机篮球计时计分器(Proteus仿真+Keil源码+设计文档)附下载链接!
提供对应的Proteus仿真电路图Keil程序源码C语言设计文档等电子资料参考学习文末附全部资料的下载链接。01设计要求设计一个基于51单片机的心形流水灯设计设计功能1.在整个比赛过程中记录比赛时间和改变比赛时间。2.可以在比赛期间随时更新A和B队的比分。3中场休息期间交换场地交换A队和B队的位置。4.当添加比赛分数时如果有错误可以手动更改赛场分数。5.赛事结束时可以触发警报。02系统概述该设计显示A队B队赛场比分的程序、主程序、报警程序、赛场比赛时倒计时程序、赛场比赛时间显示程序、时间重置初设状态程序、交换A队B队场地程序、初始化以及按键和子程序协同调节都由主程序按流程来控制的。03Proteus仿真04示例代码#includereg51.htypedefunsignedcharuchar;// 引脚、全局变量省略定义sbit beepP1^7;uchar start,time,fen,miao,fena,fenb,flag,beep_time;sbit k1P3^0;sbit k2P3^1;sbit k3P3^2;sbit k4P3^3;sbit k5P3^4;sbit k6P3^5;sbit k7P3^6;sbit led1P1^0;sbit led2P1^1;sbit smg1P2^0,smg2P2^1,smg3P2^2,smg4P2^3,smg5P2^4,smg6P2^5,smg7P2^6,smg8P2^7;uchar code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(uchar t){while(t--);}/************************ 主函数数码管刷新按键扫描 ************************/voidmain(void){uchar k0;TMOD|0x11;// T0/T1为模式1 16位定时器TH00x3C;TL00xB0;// T0初值50ms中断TH1(65536-1000)/256;TL1(65536-1000)%256;ET0ET1EATR01;// 开中断、启动T0while(1){// 状态指示灯led1(start1)?0:1;led2(start2)?0:1;// 动态扫描时间数码管(分、秒)P0smgduan[fen/10];smg10;delay(100);smg11;P0smgduan[fen%10]|0x80;smg20;delay(100);smg21;P0smgduan[miao/10];smg30;delay(100);smg31;P0smgduan[miao%10];smg40;delay(100);smg41;// 动态扫描双方分数数码管P0flag?smgduan[fenb/10]:smgduan[fena/10];smg50;delay(100);smg51;P0flag?smgduan[fenb%10]:smgduan[fena%10];smg60;delay(100);smg61;P0!flag?smgduan[fenb/10]:smgduan[fena/10];smg70;delay(100);smg71;P0!flag?smgduan[fenb%10]:smgduan[fena%10];smg80;delay(100);smg81;// 按键逻辑加减分、启动暂停、交换场地、清零if(start0){if(!k1k!1){k1;if(fena99)fena;}if(!k2k!2){k2;if(fena0)fena--;}if(!k3k!3){k3;if(fenb99)fenb;}if(!k4k!4){k4;if(fenb0)fenb--;}}if(!k7k!7){k7;if(start0){start1;fen12;miao0;}elsestart(start1)?2:1;}if(start0){if(!k6k!6){k6;flag!flag;}if(!k5k!5){k5;fenfenafenbmiao0;}}if(k1k2k3k4k5k6k7)k0;}}/************************ 定时器0 50ms中断倒计时计时、蜂鸣控制 ************************/voidTimer0()interrupt1{TH00x3C;TL00xB0;// 重装50ms初值if(start1)// 计时运行状态{if(time19)time;// 累计20次1selse{time0;if(miao0)miao--;elseif(fen0){fen--;miao59;}else{start0;beep_time60;}// 时间到蜂鸣触发}}elsetime0,TR10;TR1(beep_time0)?1:0;// 控制蜂鸣器定时器开关if(beep_time0)beep_time--;}注源码使用Keil4或Keil5打开仿真使用的是Proteus7.8及以上版本版本过低可能会打不开。05资料获取1项目完整资料获取链接下载链接2Keil、Proteus各个版本安装包 下载链接