仿真版本:Proteus8.6及以上版本
程序编译:Keil5 C51
编程语言:C语言
设计编号:【D07】
1. 简介
本文介绍一种用AT89C51作为核心部件进行逻辑控制及信号产生的单片机技术和C语言编程设计的篮球比赛计时器。此篮球计时计分器在硬件方面主要采用AT89C51单片机作为主控核心,由矩阵键盘、蜂鸣器、数码管显示屏显示。具有灵活方便、适用范围广的特点,基本能够满足实践需求。
2. 主要功能
a.支持按键设置开始、暂停、24S倒计时复位、A队加分、B队加分。
b.支持数码管显示A队、B队分数、比赛时间、比赛节数、24S倒计时。
c.支持比赛结束后蜂鸣器告警。
3. 源程序(Keil5)
本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit A8=P2^0;
sbit A9=P2^1;
sbit A10=P2^2;
sbit A11=P2^3;
sfr P00=0x80;
uchar code wei_1[]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
uchar code table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0x77,0x7c,0x39,0x5e,0x79,0x71,0X00,0X40};
uchar minute=12; //分
uchar second=0; //秒
uchar key_status=0; //按键状态值
uchar scoreA=0; //A队得分
uchar scoreB=0; //B队得分
uchar count1=20; //记录定时器时间
uchar match=1; //比赛节数
uchar rule_time=24; //记录24秒规则
uchar rule_flag=0; //记录24秒规则是否启用
/*
初始化IO口
*/
void IO_init(){
A8=0;
A9=0;
}
/*
初始化时间
*/
void time_init(){
TMOD = 0x01;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
EA = 1;
ET0 = 1;
}
/*
延时函数
*/
void delay_ms(uint z){
uint i;
uchar j;
for(i=0;i<z;i++){
for(j=0;j<100;j++);
}
}
/*
计时函数
*/
void T0_Time() interrupt 1 using 1{
if (count1-- == 0)
{
second--;
rule_time--;
count1 = 18;
}
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
}
/*
时间显示函数
*/
void time_display(uchar w2,uchar d2){
uchar shi1,ge1;
shi1=d2/10;
ge1=d2%10;
P00=wei_1[w2];
A10=1;
A10=0;
P00=table[shi1];;
A8=1;
A8=0;
delay_ms(5);
P00=0;
A10=1;
A10=0;
A8=1;
A8=0;
P00=wei_1[w2+1];
A10=1;
A10=0;
P00=table[ge1];
A8=1;
A8=0;
delay_ms(5);
P00=0;
A10=1;
A10=0;
A8=1;
A8=0;
}
/*
分数显示函数
*/
void score_dispaly(uchar w2,uchar d2){
uchar qian2,shi2,ge2;
qian2=d2/100;
shi2=d2%100/10;
ge2=d2%100%10;
P00=wei_1[w2];
A9=1;
A9=0;
P00=table[qian2];;
A8=1;
A8=0;
delay_ms(10);
P00=0;
A9=1;
A9=0;
A8=1;
A8=0;
P00=wei_1[w2+1];
A9=1;
A9=0;
P00=table[shi2];
A8=1;
A8=0;
delay_ms(10);
P00=0;
A9=1;
A9=0;
A8=1;
A8=0;
P00=wei_1[w2+2];
A9=1;
A9=0;
P00=table[ge2];
A8=1;
A8=0;
delay_ms(10);
P00=0;
A9=1;
A9=0;
A8=1;
A8=0;
}
4. 仿真proteus8.6
本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。
开始:
加分:
5. 设计报告
设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。
6. 资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。
7. 资料获取链接
百度网盘下载链接:【D07】百度网盘下载链接
更多单片机仿真设计合集:单片机仿真设计合集