51单片机篮球计分器C语言,基于C51单片机的篮球计分器设计
基于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单片机的篮球计分器设计相关推荐
- 基于单片机的血压计c语言,基于AT89C51单片机的便携式数字血压计的设计
1. 引言 目前,由于不科学的饮食习惯以及不健康的生活习惯,导致人们容易患上各种疾病而高血压作为其中的一类疾病,己经严重威胁着现代人的健康.如何及早的检测高血压就成为人们抗击高血压的首要问题.目前的数 ...
- 单片机cant通讯 c语言,基于C8051F040单片机的CAN总线通信
硬件部分 硬件部分电路结构如下: CAN收发模块原本采用的是ATA6660高速CAN收发芯片,电路连接如下: 设计电路为:当单片机发送数据时,D18闪烁,并将数据传送给ATA6660芯片:当ATA66 ...
- 单片机设计时钟程序c语言,基于.C51单片机的数字时钟课程设计(C语言,带闹钟).pdf...
- - .. -- 单片机技术课程设计 数字电子钟 学院 : word 可编辑 . - - .. -- 班级 : 姓名 : 学号 : 教师 : 摘 要 电子钟在生活中应用非常广泛 ,而一种简单方便的数 ...
- 脉冲宽度测量程序 c51 c语言,基于C51单片机和LCD1602显示的超声波测距仪C语言程序...
; stringBuf=stringBuf[length-i-1]; stringBuf[length-i-1]=t; } stringBuf[length]='\0'; return length; ...
- 【C51开发应用】基于C51单片机开发的循迹灭火机器人
基于C51单片机开发的循迹灭火机器人 一.作品摘要 二.系统设计步骤 三.方案设计 3.1 小车主体设计 3.1.1 购买玩具小车进行改装 3.1.2 自己设计小车主体结构 3.2 电 ...
- 基于C51单片机的DA方波可控制发生器
基于C51单片机的DA方波可控制发生器 文章目录 前言 一.DA转换器 1.DA简介 2.常用DA电路图 二.程序工作流程图 三.C51代码 1.初始化 2.自定义函数 2.主函数 总结 前言 在生活 ...
- 【C51】基于C51单片机的定时闹钟(含代码,电路,拿走即可用)
基于C51单片机的定时闹钟 上电后设置定时时间,按键1选择设置的是小时分钟还是秒钟 按键2对其进行具体的数字设置 一次选择完成之后就默认进入计时模式 达到计时时间后响铃 按键3可以关闭响铃 代码 #i ...
- 基于c51单片机的毕业设计——智能温度控制
本设计采用AT89C51单片机为控制芯片,硬件上用dsb18202做温度采集(有需要也可以采用dht11温湿度模块)直流电机作为降温风扇,用户可通过按键来控制转速的大小,用继电器来控制电阻丝提高温度. ...
- 【优秀课设】基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统
基于C51单片机3086A-MFP10S驱动的42步进电机导轨控制系统 所用步进电机导轨为两相六线的42电机(实际上为两相四线 两个com端未接) 驱动器选择了以3086A-MFP10S为芯片的模块 ...
- 51单片机c语言秒表,C51单片机秒表计时(C语言).doc
C51单片机秒表计时(C语言).doc 南开大学滨海学院C51嵌入式软件设计(C语言) 题目计时秒表 l 功能描述本设计实现在99秒内的秒表计时,一个按键实现开始.暂停.复位.l 原理概述P1接四位七 ...
最新文章
- SQL server 实例教程
- C语言第一次博客作业
- 使用MLX90640自制红外热像仪(四):stm32f103c8t6刷320x240分辨率屏的时间测试
- Solaris RAID 换盘/替换坏盘
- 7-CPU Reset
- mysql bin.000013_mysql的binlog安全删除的一种方法
- drools dmn_DMN 1.1 XML:从建模到使用Drools 7.0的自动化
- Linux_CentOS-服务器搭建 五 补充
- Linux iptables防火墙详解(二)——iptables基本配置
- MongoDB 和 mySql 的关系
- AB压力测试(简易版操作)
- python 实验七 字典与集合 (上)
- 如何通过TXT文件批量生成DataMatrix码
- 萝卜小铺与商家的故事(一)
- Antd点击select选择框,页面滚动,选项跟着滚动
- 四种宽带接入技术功能及说明
- TSN-工业通信的未来在这里?
- C/C++ 中文帮助文档
- 台式计算机内存卡与普通有啥区别,电脑硬盘和内存有什么区别?
- 乐学python慕课答案_乐学软件工程