篮球计时计分控制系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习情境1 篮球计时计分控制系统的设计
之整体模块系统设计
☆点名,复习
1、简述数码管动态显示技术。
2、矩阵键盘的硬件电路设计以及软件程序代码设计
3、简述74HC573的基本功能以及各引脚的作用。
4、简述74HC154的基本功能以及各引脚的作用。
☆新课讲授
前面我们分别设计好了计时模块(24秒计时和单节时间计时)和计分模块,把各个模块综合起来就构成了篮球计时计分控制系统。因为各个子模块都经过了调试,软件和硬件都没有什么问题,在整合这些子模块时只需做些简单的修改。
1.4 整机硬件电路设计
整机硬件电路具体如下图所示:
1.5 整机软件设计(完整C程序代码)
#include
#define 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_count;
uchar part; //定义第几节的变量。第1,2,3,4节
uchar Key_Num=16, Pro_Key_Num=9;
uint count1,count2,t_count; //时间全局变量,count1,count2用于在中断函数中记录中、
//断次数
sbit attack_begin=P3^0; // 24秒进攻开始按键K1
sbit attack_pause=P3^1; // 24秒进攻暂停按键K2
int Game_time1,Game_time2; //定义每节时间的分钟和秒钟的时间变量
sbit key_start=P3^2; // 比赛开始按键
sbit item_dec=P3^3; // 比赛减分按键
sbit item_add=P3^4; // 设置比赛为第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,game_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(); //初始化子程序
void Game_start(); //单节比赛启动子程序,K3按键处理子程序
void Increase_part(); //单节自加子程序,每节结束时,单节变量part自动加1 void Key_Scan() ; // 矩阵键盘扫描子程序
void Add_point(); // 加分按键处理子程序
void Dec_point(); //减分按键处理子程序/
/*--------主程序--------*/
void main(void)
{
Initialization();
//P2=0xff;
while(1)
{
Display(); // 显示子程序
Game_start(); //篮球比赛开始子程序
Attack_key_event(); //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=0;
flag=1;
}
}
/*--------T1中断服务程序--------*/