实现暂停/恢复和当前分数显示牌

蒙娜丽宁
企业官方账号
领域专家: 后端开发技术领域
2023-01-13 10:49:01
...全文
254 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
基于C51单片机的篮球计分器设计 题目要求: 1. 设计一款能够显示篮球比分的记分牌; 2. 通过加分按钮可以给A队,或B队加分; 3. 设计对调功能,更换场地后,AB队分数互换; 仿真截图: 完整源代码: #include code unsigned seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 分别对应数码管显示字形0-9 int m=15,n=00,x=0,y=0,jie=2,bujin=1,zanting=0,chuzanting=0; //初始化,m、n为分、秒计时 x、y为A、B两队分数 ,其余为中间变量 sbit A_add = P3^0; // A队加分按钮 sbit B_add = P3^1; // B队加分按钮 sbit Time_add = P3^2; // 时间加按钮 sbit Time_sub = P3^3; // 时间减按钮 sbit A_sub = P3^4; // A队减分按钮 sbit B_sub = P3^5; // B队减分按钮 sbit pause = P3^6; // 暂停、启动按钮 sbit change = P3^7; // 换场地按钮 void keyScan(); //按键扫描函数 void delay(int t) //延时子程序,通过参数t,可以调整暂停时间 { while(t--) { unsigned int i; for(i=0;i<200;i++); //设置变量i的变化范围,能调整延时的单位时间长度,i越小,延时单位时间越短,精 度越高 } } void display(int m,int n,int x,int y)//数码管动态刷新显示程序 { if(jie==1&&bujin!=2) //中间变量jie=1时,为上半场,对p1赋值 P1=0xbf; //p1=0xbf,即p1=1011111B,点亮上半场对应指示灯 P2=0xfe; //数码管动态刷新显示程序p2=11111110,i为分钟 P0=seg[m/10]; //刷新显示时间显示分钟十位,调用延时程序 delay(1); //延时数码管的点亮 P2=0xff; P0=0; P2=0xfd; //同理, 分钟个位并延时点亮 P0=seg[m%10]; delay(1); P2=0xff; P0=0; P2=0xfb; //秒钟十位 P0=seg[n/10]; delay(1); P0=0; P2=0xff; P2=0xf7; //秒钟个位 P0=seg[n%10]; delay(1); P0=0; P2=0xff; P2=0xef; // A队分数十位 P0=seg[x/10]; delay(1); P2=0xff; P0=0; P2=0xdf; //A队分数个位 P0=seg[x%10]; delay(10); P2=0xff; P0=0; P2=0xbf; //B队分数十位 P0=seg[y/10]; delay(1); P0=0; P2=0xff; P2=0x7f; //B队分数个位 P0=seg[y%10]; delay(1); P0=0; P2=0xff; } void t0(void) interrupt 1 //调用定时器T0 基本计时单位秒 中断 { int i; TH0=0xb1; //利用定时器T0,送入计数初值TH0,TL0 TL0=0x10; //定时器定时单位为20ms i++; if(i==50) //利用中间变量i,令i的值为50 50*20ms=1秒 { if(n==0) //分钟与秒时间的调整 当秒减到0后分钟减1 { n=60; if(m > 0) m--; } n--; //实现1秒计时 i=0; } } void main() //主程序 { TMOD=0x01; //设置定时器工作方式 EA=1; ET0=1; TH0=0xb1; //定时计送计数初值,EA=1,开中断p3口电平拉高 TL0=0x10; //p1-0x7f,上半场指示灯点亮 TR0=1; P3=0xff; P1=0x7f; while(1) //通过while(1),反复调用循环体内子程序 { display(m,n,x,y); //调用动态刷新显示程序 keyScan(); //按键处理函数 if(m <=0 && n<=0) //时间结束了 { ET0=0; //关闭中断,停止计时 TR0 = 0; } } } void keyScan() //按键扫描函数 { int temp; //中间变量temp,检测到有按键按下时交换A,B两队分数 if(A_add==0) //当检测到A队加分按键按

75

社区成员

发帖
与我相关
我的任务
社区描述
更多精彩内容请关注微信公众号:「极客起源」,UnityMarvel创始人,企业内训讲师、IT畅销书作者,CSDN学院讲师,拥有多年软件开发经验和培训经验。主要著作包括《鸿蒙征途:App开发实战》、《Python从菜鸟到高手》、《Python爬虫技术:深入理解原理、技术与开发》,培训企业学员数千人。制作在线课程数千小时。更多视频课程,请访问我的B站:https://space.bilibili.com/477001733
社区管理员
  • 蒙娜丽宁
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧