篮球c语言程序,源程序C代码:篮球比赛应用系统
/*****************************************************************
题目:篮球比赛计时记分系统
硬件:STC89C52RC、1602LCM液晶屏、六个按键
软件:Keil C
*****************************************************************/
#include //头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
sbit S1=P3^2; //中断0(比赛倒计时开始/暂停)
sbit S2=P3^3; //中断1(24s倒计时重新开始)
sbit key="P2"^4; //连接S3、S4、S5、S6(矩阵按键)
sbit key_S3=P2^3; //连接S3
sbit key_S4=P2^2; //连接S4
sbit key_S5=P2^1; //连接S5
sbit key_S6=P2^0; //连接S6
sbit FM="P1"^5; //蜂鸣器接口
sbit EN="P1"^0;
sbit RS="P1"^1;
char sec,min,num,time,sec_24s;
uchar hpoint,rpoint;
uchar code table1[]={"H.T 000:000 R.T "};
//H.T(home team)代表主队,R.T(road team)代表客队,中间是比分
uchar code table2[]={"12:00 SEC-1 24"};
//SEC-X代表第X节比赛,左边是单节比赛倒计时,右边是24秒倒计时
/***1ms延时子程序***/
void delay(int z)
{
int x;
uchar y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/***LCD写指令***/
void write_com(uchar com)
{
RS=0;
P0=com;
delay(5);
EN=1;
delay(5);
EN=0;
}
/***LCD写数据***/
void write_dat(uchar dat)
{
RS=1;
P0=dat;
delay(5);
EN=1;
delay(5);
EN=0;
}
/***初始化程序***/
void init(void)
{
uchar i;
hpoint=0; //H.T分数初始化
rpoint=0; //R.T分数初始化
time=0;
TMOD=0x10; //定时器1初始化
TL1=0x00;
TH1=0x4c;
EA=1; //开总中断
ET1=1; //开定时器1
TR1=0; //定时器1不工作
EX0=1; //开中断0
EX1=1; //开中断1
IT0=1; //中断0为边沿触发
IT1=1; //中断1为边沿触发
EN=0;
sec=0;
min=12;
num=1;
sec_24s=24;
write_com(0x38); //LCD设置初始化
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80); //LCD显示初始化
for(i=0;i<16;i++)
{
write_dat(table1[i]);
}
write_com(0x80+0x40);
for(i=0;i<16;i++)
{
write_dat(table2[i]);
}
}
/***LCD分数更新***/
void point_lcd(uchar add,uchar dat)
{
write_com(0x80+add);
write_dat(0x30+dat/100);
write_dat(0x30+(dat%100)/10);
write_dat(0x30+dat%10);
}
/***按键检测***/
void keyscan(void)
{
key=0;
if(key_S3==0) //S3按下H.T分数加一
{
hpoint++;
point_lcd(0x04,hpoint); //分数显示更新
if(key_S3==0) //松手检测
{
while(key_S3==0);
delay(20);
}
}
else if(key_S4==0) //S4按下H.T分数减一
{
hpoint--;
point_lcd(0x04,hpoint);
if(key_S4==0)
{
while(key_S4==0);
delay(20);
}
}
else if(key_S5==0) //S5按下R.T分数加一
{
rpoint++;
point_lcd(0x08,rpoint);
if(key_S5==0)
{
while(key_S5==0);
delay(20);
}
}
else if(key_S6==0) //S6按下R.T分数减一
{
rpoint--;
point_lcd(0x08,rpoint);
if(key_S6==0)
{
while(key_S6==0);
delay(20);
}
}
}
/***比赛倒计时/24s倒计时(同步)***/
void counter_down(void)
{
uchar i;
if(time>=20) //每1s倒计时做减一操作
{
sec--;
sec_24s--;
write_com(0x80+0x4e); //24s倒计时显示
write_dat(0x30+sec_24s/10);
write_dat(0x30+sec_24s%10);
if(sec_24s==0) //24s结束发出3s连续报警
{
FM="0";
delay(3000);
FM="1";
sec_24s=24;
}
if((sec==0)&&(min==0)) //检测一节比赛是否结束
{
TR1=0; //定时器1暂停
write_com(0x80+0x44);
write_dat(0x30);
num++;
sec_24s=24; //24s计时复位
write_com(0x80+0x4e); //24s倒计时显示
write_dat(0x30+sec_24s/10);
write_dat(0x30+sec_24s%10);
if(num<5) //每节结束蜂鸣器发出8s的间断报警
{
for(i=80;i>0;i--)
{
FM="0";
delay(500);
FM="1";
delay(500);
}
}
if(num==5) //终场结束,蜂鸣器发出10s的连续警报声
{
FM="0";
delay(10000);
num="1";
}
FM="1"; //蜂鸣器关闭
write_com(0x80+0x4b); //更新"SEC-?"
write_dat(0x30+num);
sec="0"; //倒计时复位
min="12";
}
if(sec==-1)
{
sec="59";
min--;
}
write_com(0x80+0x40); //更新倒计时显示
write_dat(0x30+min/10);
write_dat(0x30+min%10);
write_com(0x80+0x43);
write_dat(0x30+sec/10);
write_dat(0x30+sec%10);
time=0;
}
}
/***主程序***/
void main()
{
init();
while(1)
{
keyscan(); //分数按键检测
}
}
/***S1按键中断0***/
void exter0() interrupt 0 //比赛时间开始/暂停
{
TR1=~TR1; //定时器1工作/暂停
if(TR1==1) //当倒计时工作时,S1按下定时器立即停止工作
{
PT1=0;
}
else //倒计时不工作时,S1按下倒计时立即工作
{
PT1=1;
}
if(S1==0) //松手检测
{
while(S1==0)
{
counter_down();
}
delay(20);
}
}
/***S2按键中断1***/
void exter1() interrupt 2 //24s倒计时重新开始
{
sec_24s=24;
write_com(0x80+0x4e); //24s倒计时显示
write_dat(0x30+sec_24s/10);
write_dat(0x30+sec_24s%10);
if(S2==0) //松手检测
{
while(S2==0)
{
counter_down();
}
delay(20);
}
}
/***定时器1中断***/
void timer1() interrupt 3 //定时器1中断20次为1s
{
time++;
TL1=0x00;
TH1=0x4c;
counter_down(); //倒计时
}
篮球c语言程序,源程序C代码:篮球比赛应用系统相关推荐
- C语言程序与设计:篮球游戏
文章目录 @[toc] C语言程序与设计:篮球游戏 1.题目 2.代码实现(输出坐标) C语言程序与设计:篮球游戏 1.题目 你们正在编写一个篮球游戏.假设篮球质量为1kg,将其放在高度为y米高的地方 ...
- c语言程序2000行代码,C语言教务管理系统2000行代码
<C语言教务管理系统2000行代码>由会员分享,可在线阅读,更多相关<C语言教务管理系统2000行代码(56页珍藏版)>请在读根文库上搜索. 1.C语言教务管理系统一.程序结构 ...
- 微信 开发 聊天机器人设计方案 java语言 程序和数据库代码
转自:http://www.tuicool.com/articles/RBJfqyM 使用 Liferay 和 Lucene 实现企业门户智能帮助机器人 时间 2015-04-30 12:00:00 ...
- 摇摇棒C语言程序,摇摇棒代码C语言.doc
摇摇棒代码C语言 /**************************************************************************** * * ********* ...
- 电流速断保护c语言程序,TQXDB-III多功能继电保护实验培训系统实验指导书2.doc
TQXDB-III多功能继电保护实验培训系统实验指导书2,继电保护作业指导书,多功能电表作业指导书,实验指导书,计算机网络实验指导书,实验室作业指导书,c语言实验指导书答案,实验指导书格式,信号与系统 ...
- 已知c语言程序有主程序模块prog.c,嵌入式系统试卷--A卷
第 1 页 (共 页) 班级(学生填写) : 姓名: 学号: 命题: 符秋丽 审题: 审批: ----------------------------------------------- 密 --- ...
- 八楼电梯的c语言程序,本科毕业设计—电梯自动语音提示系统.doc
电梯自动语音提示系统 院 系:信息科学与工程学院 专 业 班:电子科学与技术1102班 姓 名: 学 号: 指导教师: 2015年5月 电梯自动语音提示系统 The Elevator Automati ...
- c语言自行车存放管理系统,C语言程序编写单片机控制的电动自行车驱动系统程序...
>1); CCPR1L=FULLDUTY; asm("CLRWDT"); }while(voltage>=1; curek=gcur-currenth;//计算本次偏差 ...
- 水质检测c语言程序,基于51单片机的水质监测系统的设计.doc
基于51单片机的水质监测系统的设计 基于AT89C51单片机的水质监测系统的设计 摘要:现在水源污染已经成了社会密切关注的话题,所以对水质进行监测成了保护水资源的一项重要措施,基于此本文设计了一款能够 ...
- 秒表清零c语言程序,显示的秒表 C语言程序
显示的秒表 C语言程序 源程序代码: //名称:用1602LCD设计的秒表 //说明:首先按下K1键时开始计时,自此按下时暂停,第三次按下时继续累积计时,再次按下时停止计时,K2键用于清零秒表. // ...
最新文章
- 遗传算法主程序(辅助)
- VC6导入和使用二进制资源
- 2021互联网大厂中秋礼盒哪家强?!
- 虚幻四如何实现第一人称_虚幻周报20200930 | 双节快乐么么哒!
- unity算法面试_Unity面试题汇总
- 不用加好友,查看对方校内照片
- java快速查找素数_Java实现快速查找某个范围内的所有素数
- 计算机视觉论文-2021-06-02
- 面向全局搜索的自适应领导者樽海鞘群算法
- 基于python的数据分析-基于Python的南京二手房数据可视化分析
- 分享:一个轻量级的企业Wiki和团队知识分享平台CMS
- 慢慢来,一切都来得及
- python|简单实现英文单词大小写转化
- ES地理范围查询第一讲:Java操作地理位置信息(geo_point)
- 1497: 变态杀人狂
- 浏览器原理 39 # 页面性能工具:如何使用 Performance?
- python海龟绘图画玫瑰花_python学习(二)之turtle库绘图
- 史上最小 x86 Linux 模拟器「GitHub 热点速览 v.22.50」
- Flutter 功能最全的JsonToDart工具(桌面Web海陆空支持)
- 赫兹是如何发现电磁波从而证明了麦克斯韦方程的?
热门文章
- linux系统清理命令行,快速解决Win10系统升级助手打不开无法运行的方法
- 贴片晶振为什么要邻层挖空敷铜,背后的原理原来是这样的!#终南小师傅
- 汉庭董事长季琦:成功创业者的必经之路
- HashMap初始容量指定规则
- 抑制广播风暴 各种发包
- BO Xcelsius 2008注册方法
- 计算机科学系班服主题,高校流行班服“设计风”
- word为什么前面空白但是字上不去?
- [慈溪2011]电子警察
- (固态)产品的质量和可靠性标准全系列(JEDEC+ASTM) - 最齐全、最完整及最新版