• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的篮球比赛计时器(二)

04/07 10:11
1359
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

仿真版本:Proteus8.6及以上版本

程序编译:Keil5 C51

编程语言:C语言

设计编号:【D02】

1.? 简介

本文介绍一种用AT89C51作为核心部件进行逻辑控制及信号产生的单片机技术和C语言编程设计的篮球比赛计时器。此篮球计时计分器在硬件方面主要采用AT89C51单片机作为主控核心,由独立按键、共阳数码管显示屏显示。具有灵活方便、适用范围广的特点,基本能够满足实践需求。

2.? 主要功能

a.支持按键设置开始、暂停、清除、A加分、A减分、B加分、B减分。

b.支持数码管显示A队、B队分数、比赛时间。

c.支持LED灯显示比赛运行状态。

d.支持比赛结束后蜂鸣器告警。

3.? 源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED_RED 	=	P3^5;		  //定义LED指示灯接口
sbit LED_YELLOW =	P3^6;		  //定义LED指示灯接口
sbit LED_GREEN	=	P3^7;		  //定义LED指示灯接口
sbit K1=P1^3; //定义按键接口
sbit K2=P1^4;
sbit K3=P1^5;
sbit K4=P1^6;
sbit K5=P1^7;
sbit K6=P1^1;
sbit K7=P1^2;
sbit BUZZ=P3^2;
uchar Display_data[6]= {0,0,0,0,0,0}; //存储要显示的数值
uchar time_count=0,time_1s=0;
uchar status=0;	//比赛的状态
uchar A_val=0,B_val=0;	//AB得分
uchar Run_time=0;//比赛时间
uchar game_over_falg=0;//  比赛结束标志位
uint game_over_delay=0;  //比赛结束后的延时

//************************************
//定时器初始化
//************************************
void Time0_init()
{
    TMOD |= 0x01;			 //使用模式1,16位定时器
    TH0   = (65536-10000)/256;	//定时器装入初始值10ms
    TL0   = (65536-10000)%256;
    EA    = 1;  //总中断
    ET0   = 1;//定时器0初始化
    TR0   = 1;

}
void delay_ms(uint i)//1ms延时
{
    uchar x,j;
    for(j=0; j<i; j++)
        for(x=0; x<=148; x++);
}
//扫描按键
uchar KEY_Scan()
{
    static uchar key_up=1;//按键松开标志

    if(key_up&&(K1==0||K2==0||K3==0||K4==0||K5==0||K6==0||K7==0))
    {
        delay_ms(5);//去除抖动
        key_up=0;
        if(K1==0)return 1;
        else if(K2==0)return 2;
        else if(K3==0)return 3;
        else if(K4==0)return 4;
        else if(K5==0)return 5;
			  else if(K6==0)return 6;
        else if(K7==0)return 7;
    } else if(K1==1&&K2==1&&K3==1&&K4==1&&K5==1&&K6==1&&K7==1)key_up=1;
    return 0;// 无按键按下
}
//数码管刷新函数
void Dis_num()
{
    uchar table[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xf7,0XAF,0XFF};	//共阳数码管编码
    static uchar i;
    P0 = 0xff;
    P2=1<<i;
    P0 = table[Display_data[i]];
    i++;
    if(i>5)i=0;
}

4.? 仿真proteus8.6

本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。

开始:

加分:

暂停:

清零:

5.? 设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。

6.? 资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

7.? 资料获取链接

百度网盘下载链接:【D02】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载

相关推荐