仿真版本:Proteus8.6及以上版本
程序編譯:Keil5 C51
編程語言:C語言
設(shè)計編號:【D02】
1.? 簡介
本文介紹一種用AT89C51作為核心部件進行邏輯控制及信號產(chǎn)生的單片機技術(shù)和C語言編程設(shè)計的籃球比賽計時器。此籃球計時計分器在硬件方面主要采用AT89C51單片機作為主控核心,由獨立按鍵、共陽數(shù)碼管顯示屏顯示。具有靈活方便、適用范圍廣的特點,基本能夠滿足實踐需求。
2.? 主要功能
a.支持按鍵設(shè)置開始、暫停、清除、A加分、A減分、B加分、B減分。
b.支持數(shù)碼管顯示A隊、B隊分數(shù)、比賽時間。
c.支持LED燈顯示比賽運行狀態(tài)。
d.支持比賽結(jié)束后蜂鳴器告警。
3.? 源程序(Keil5)
本設(shè)計采用keil5 C51軟件(內(nèi)附安裝包)實現(xiàn)程序設(shè)計。如需用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}; //存儲要顯示的數(shù)值
uchar time_count=0,time_1s=0;
uchar status=0; //比賽的狀態(tài)
uchar A_val=0,B_val=0; //AB得分
uchar Run_time=0;//比賽時間
uchar game_over_falg=0;// 比賽結(jié)束標志位
uint game_over_delay=0; //比賽結(jié)束后的延時
//************************************
//定時器初始化
//************************************
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;// 無按鍵按下
}
//數(shù)碼管刷新函數(shù)
void Dis_num()
{
uchar table[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xf7,0XAF,0XFF}; //共陽數(shù)碼管編碼
static uchar i;
P0 = 0xff;
P2=1<<i;
P0 = table[Display_data[i]];
i++;
if(i>5)i=0;
}
4.? 仿真proteus8.6
本設(shè)計采用proteus8.6軟件(內(nèi)附安裝包)實現(xiàn)仿真設(shè)計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。
開始:
加分:
暫停:
清零:
5.? 設(shè)計報告
設(shè)計報告主要包括硬件電路、軟件設(shè)計、仿真調(diào)試等等,僅供參考。
6.? 資料清單
設(shè)計資料主要包括C程序+仿真+設(shè)計報告+使用說明+元件清單+操作視頻等。
7.? 資料獲取鏈接
百度網(wǎng)盤下載鏈接:【D02】百度網(wǎng)盤下載鏈接
更多單片機仿真設(shè)計合集:單片機仿真設(shè)計合集