篮球计时计分控制系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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中断服务程序--------*/

相关文档
最新文档