基于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

}

}

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; P0=seg[x/10]; delay(1); P2=0xff; P0=0; // A 队分数十位 P2=0xdf; //A队分数个位 P0=seg[x%10]; delay(10); P2=0xff; P0=0; P2=0xbf; P0=seg[y/10]; delay(1); P0=0; P2=0xff; P2=0x7f; P0=seg[y%10]; delay(1); P0=0; P2=0xff; //B队分数十位 //B队分数个位

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; TL0=0x10; TR0=1; P3=0xff; P1=0x7f; while(1) { } //定时计送计数初值,EA=1,开中断p3口电平拉高 //p1-0x7f,上半场指示灯点亮 //通过while (1),反复调用循环体内子程序 display(m,n,x,y); //调用动态刷新显示程序 keyScan(); //按键处理函数 if(m

void keyScan() //按键扫描函数

{

int temp; //中间变量temp ,检测到有按键按下时交换A,B 两队分数

if(A_add==0) //当检测到A 队加分按键按下,对应加分

{

delay(1); //调用延时子程序,实现按键抖动功能,即当检测到按键按下时,延时,按键仍按下,说明非抖动,A 队对应加分

if(A_add==0)

{

x++;

}

}

if(B_add==0) //B队加分键被按下

{

delay(1);

{ y++; } } if(A_sub==0) { delay(1); if(A_sub==0) { if(x>=1) x--; } } if(B_sub==0) { delay(1); if(B_sub==0) { if(y>=1)y--; } } //A队减分 //B队减分 if(Time_add==0) //时间增加按钮 { delay(10); if(Time_add==0) { n++; if(n==60) { m++; n=1; } } } if(Time_sub==0) //时间减少 { delay(10); if(Time_sub==0) { if(!(m == 0 && n == 0)) //防止被减成了负数

} } } } if(n

Proteus 仿真图:

51单片机篮球计分器C语言,基于C51单片机的篮球计分器设计相关推荐

  1. 基于单片机的血压计c语言,基于AT89C51单片机的便携式数字血压计的设计

    1. 引言 目前,由于不科学的饮食习惯以及不健康的生活习惯,导致人们容易患上各种疾病而高血压作为其中的一类疾病,己经严重威胁着现代人的健康.如何及早的检测高血压就成为人们抗击高血压的首要问题.目前的数 ...

  2. 单片机cant通讯 c语言,基于C8051F040单片机的CAN总线通信

    硬件部分 硬件部分电路结构如下: CAN收发模块原本采用的是ATA6660高速CAN收发芯片,电路连接如下: 设计电路为:当单片机发送数据时,D18闪烁,并将数据传送给ATA6660芯片:当ATA66 ...

  3. 单片机设计时钟程序c语言,基于.C51单片机的数字时钟课程设计(C语言,带闹钟).pdf...

    - - .. -- 单片机技术课程设计 数字电子钟 学院 : word 可编辑 . - - .. -- 班级 : 姓名 : 学号 : 教师 : 摘 要 电子钟在生活中应用非常广泛 ,而一种简单方便的数 ...

  4. 脉冲宽度测量程序 c51 c语言,基于C51单片机和LCD1602显示的超声波测距仪C语言程序...

    ; stringBuf=stringBuf[length-i-1]; stringBuf[length-i-1]=t; } stringBuf[length]='\0'; return length; ...

  5. 【C51开发应用】基于C51单片机开发的循迹灭火机器人

    基于C51单片机开发的循迹灭火机器人 一.作品摘要 二.系统设计步骤 三.方案设计 3.1   小车主体设计 3.1.1   购买玩具小车进行改装 3.1.2   自己设计小车主体结构 3.2   电 ...

  6. 基于C51单片机的DA方波可控制发生器

    基于C51单片机的DA方波可控制发生器 文章目录 前言 一.DA转换器 1.DA简介 2.常用DA电路图 二.程序工作流程图 三.C51代码 1.初始化 2.自定义函数 2.主函数 总结 前言 在生活 ...

  7. 【C51】基于C51单片机的定时闹钟(含代码,电路,拿走即可用)

    基于C51单片机的定时闹钟 上电后设置定时时间,按键1选择设置的是小时分钟还是秒钟 按键2对其进行具体的数字设置 一次选择完成之后就默认进入计时模式 达到计时时间后响铃 按键3可以关闭响铃 代码 #i ...

  8. 基于c51单片机的毕业设计——智能温度控制

    本设计采用AT89C51单片机为控制芯片,硬件上用dsb18202做温度采集(有需要也可以采用dht11温湿度模块)直流电机作为降温风扇,用户可通过按键来控制转速的大小,用继电器来控制电阻丝提高温度. ...

  9. 【优秀课设】基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统

    基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统 所用步进电机导轨为两相六线的42电机(实际上为两相四线 两个com端未接) 驱动器选择了以3086A-MFP10S为芯片的模块 ...

  10. 51单片机c语言秒表,C51单片机秒表计时(C语言).doc

    C51单片机秒表计时(C语言).doc 南开大学滨海学院C51嵌入式软件设计(C语言) 题目计时秒表 l 功能描述本设计实现在99秒内的秒表计时,一个按键实现开始.暂停.复位.l 原理概述P1接四位七 ...

最新文章

  1. SQL server 实例教程
  2. C语言第一次博客作业
  3. 使用MLX90640自制红外热像仪(四):stm32f103c8t6刷320x240分辨率屏的时间测试
  4. Solaris RAID 换盘/替换坏盘
  5. 7-CPU Reset
  6. mysql bin.000013_mysql的binlog安全删除的一种方法
  7. drools dmn_DMN 1.1 XML:从建模到使用Drools 7.0的自动化
  8. Linux_CentOS-服务器搭建 五 补充
  9. Linux iptables防火墙详解(二)——iptables基本配置
  10. MongoDB 和 mySql 的关系
  11. AB压力测试(简易版操作)
  12. python 实验七 字典与集合 (上)
  13. 如何通过TXT文件批量生成DataMatrix码
  14. 萝卜小铺与商家的故事(一)
  15. Antd点击select选择框,页面滚动,选项跟着滚动
  16. 四种宽带接入技术功能及说明
  17. TSN-工业通信的未来在这里?
  18. C/C++ 中文帮助文档
  19. 台式计算机内存卡与普通有啥区别,电脑硬盘和内存有什么区别?
  20. 乐学python慕课答案_乐学软件工程

热门文章

  1. 2021年华为Java面经,顺利收获Offer
  2. WIFI计量插座之计量芯片选型
  3. HCIE证书有用吗?
  4. 威纶触摸屏485轮询通讯_威纶通触摸屏与PLC实现一机多屏通讯方法
  5. 电脑关机后键盘灯和风扇还在转的解决方案
  6. 配置深度森林deep forest(2021)环境填坑
  7. 一文详解 Base64编码原理
  8. 虚拟机(VMware Workstation Pro)安装CentOS7镜像
  9. Linux应用开发自学之路
  10. Caffe安装 (OPENCV4 Cuda10.2 Xavier)