篮球计时计分控制系统

上传人:xiao****1972 文档编号:84822074 上传时间:2019-03-05 格式:DOC 页数:10 大小:391KB
返回 下载 相关 举报
篮球计时计分控制系统_第1页
第1页 / 共10页
篮球计时计分控制系统_第2页
第2页 / 共10页
篮球计时计分控制系统_第3页
第3页 / 共10页
篮球计时计分控制系统_第4页
第4页 / 共10页
篮球计时计分控制系统_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《篮球计时计分控制系统》由会员分享,可在线阅读,更多相关《篮球计时计分控制系统(10页珍藏版)》请在金锄头文库上搜索。

1、 作者 张小波学习情境1 篮球计时计分控制系统的设计之 整体模块系统设计 点名,复习1、 简述数码管动态显示技术。2、 矩阵键盘的硬件电路设计以及软件程序代码设计3、 简述74HC573的基本功能以及各引脚的作用。4、 简述74HC154的基本功能以及各引脚的作用。 新课讲授前面我们分别设计好了计时模块(24秒计时和单节时间计时)和计分模块,把各个模块综合起来就构成了篮球计时计分控制系统。因为各个子模块都经过了调试,软件和硬件都没有什么问题,在整合这些子模块时只需做些简单的修改。1.4 整机硬件电路设计整机硬件电路具体如下图所示:1.5 整机软件设计(完整C程序代码)#include#defi

2、ne uchar unsigned char#define uint unsigned int/*-数码管显示代码-*/ucharcodeshuma=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF,0xFF; /共阳/ucharcodeshuma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40; /共阴uchar Attack_time,Temp,m_c

3、ount; uchar part; /定义第几节的变量。第1,2,3,4节uchar Key_Num=16, Pro_Key_Num=9;uint count1,count2,t_count; /时间全局变量,count1,count2用于在中断函数中记录中、/断次数sbit attack_begin=P30; / 24秒进攻开始按键K1sbit attack_pause=P31; / 24秒进攻暂停按键K2int Game_time1,Game_time2; /定义每节时间的分钟和秒钟的时间变量sbit key_start=P32; / 比赛开始按键sbit item_dec=P33; /

4、比赛减分按键 sbit item_add=P34; / 设置比赛为第1,2,3,4节,篮球比赛有4节,每节12分钟bit flag,flag1,first_end; / 定义1秒的标志位,flag,flag1分别用于表示T0和T1定/时器产生了1秒的时间 bit game_over,OR_ZERO,k1,k2,k3,k4,l,p,h; / 定义一些标志位uchar Temp_attack_time,dis_time1,dis_time2; uint attack_sec_shi; / 进攻 秒 十位uint attack_sec_ge; / 进攻 秒 个位 uint game_point1,g

5、ame_point2; /比赛比分变量uint Tgame_sec_ge; / 单节比赛时间 秒钟 个位 uint Tgame_sec_shi; / 单节比赛时间 秒钟 十位 uint Tgame_min_ge; / 单节比赛时间 分钟 个位 uint Tgame_min_shi; / 单节比赛时间 分钟 十位 /*-子程序声明-*/void delay(uint K); /延时子程序void Display(); / 显示子程序void Attack_key_event();/进攻24秒子程序void Pause_key_event(); / 暂停子程序void Initialization

6、(); /初始化子程序void Game_start(); /单节比赛启动子程序,K3按键处理子程序void Increase_part(); /单节自加子程序,每节结束时,单节变量part自动加1void Key_Scan() ; / 矩阵键盘扫描子程序void Add_point(); /加分按键处理子程序void Dec_point(); /减分按键处理子程序/*-主程序-*/void main(void) Initialization();/P2=0xff; while(1) Display(); / 显示子程序 Game_start();/篮球比赛开始子程序 Attack_key_e

7、vent(); /24秒进攻开始子程序 Pause_key_event(); / 暂停子程序 Increase_part();/ 比赛每节自加处理子程序 /Key_Scan(); / 矩阵键盘扫描子程序 Add_point();/ 加分按键处理子程序 Dec_point(); /减分按键处理子程序 /*-T0中断服务程序-*/void T0_int()interrupt 1 / 使用定时器T0,方式1,定时1s TH0 = -50000/256; / 设置定时器初值(定时50ms) TL0 = -50000%256; count1+; if(count1=10) / 循环20次 count1=

8、0; flag=1; /*-T1中断服务程序-*/void T1_int()interrupt 3 / 使用定时器T1,方式1,定时1s TH1 = -50000/256; / 设置定时器初值(定时50ms) TL1 = -50000%256; count2+; if(count2=10) / 循环20次 count2=0; flag1=1; /*-延时子程序-*/void delay(uint K) uint i,j; for(i=K;i0;i-) for(j=120;j0;j-); /*-24秒进攻按键(attack_begin,k1按键P3.0口)处理子程序-*/void Attack_

9、key_event() if(attack_begin=0) /判断进攻按键是否按下 delay(15); /按键消抖 if(attack_begin=0) /再次判断暂停健是否按下。 k1=1; /k1为进攻按键按下标志 TR0=1; / 开T0计时 if(k2=0) /没有按下暂停键。 Attack_time=24; if(k2=1&Attack_time=0) /有按下暂停键。 Attack_time=24; if(k1=1&flag=1) flag=0; Attack_time-; OR_ZERO=1; if(OR_ZERO=1&Attack_time=0) OR_ZERO=0; if

10、(flag=1) flag=0;Attack_time=24; TR0=0; /*-显示子程序-*/void Display() /定义第几节的数码算法。第1,2,3,4节 int j; uchar Group1_ge,Group1_shi,Group1_bai,Group2_ge,Group2_shi,Group2_bai; /uchar KeyNO; Temp_attack_time=Attack_time; attack_sec_shi=Temp_attack_time/10; attack_sec_ge=Temp_attack_time%10; dis_time1=Game_time1

11、; dis_time2=Game_time2; Tgame_sec_shi=dis_time1/10; Tgame_sec_ge=dis_time1%10; Tgame_min_ge=dis_time2%10; Tgame_min_shi=dis_time2/10; Group1_bai= game_point1/100; Group1_shi= game_point1%100/10; Group1_ge = game_point1%100%10; Group2_bai= game_point2/100; Group2_shi= game_point2%100/10; Group2_ge = game_point2%100%10; for(j=0;j10;j+) P2=0x0f; /位选,选中百位数对应的那个数码管 P0=shumaGroup1_bai; / 段选,把百位数的字形码送到上面选通的数码管中 delay(1); P2=0x01; /位选,选中十位数对应的那个数码管 P0=shumaGroup1_shi; / 段选,把十位数的字形码送到上面选通的数码管中 delay(1); P2=0x02; /位选,选中个位数对应的那个数码管 P0=shumaGroup1_ge; /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号