仿真版本:Proteus8.6及以上版本
程序編譯:Keil5 C51
編程語言:C語言
設(shè)計(jì)編號(hào):【D07】
1.? 簡(jiǎn)介
? 本文介紹一種用AT89C51作為核心部件進(jìn)行邏輯控制及信號(hào)產(chǎn)生的單片機(jī)技術(shù)和C語言編程設(shè)計(jì)的籃球比賽計(jì)時(shí)器。此籃球計(jì)時(shí)計(jì)分器在硬件方面主要采用AT89C51單片機(jī)作為主控核心,由矩陣鍵盤、蜂鳴器、數(shù)碼管顯示屏顯示。具有靈活方便、適用范圍廣的特點(diǎn),基本能夠滿足實(shí)踐需求。
2.? 主要功能
a.支持按鍵設(shè)置開始、暫停、24S倒計(jì)時(shí)復(fù)位、A隊(duì)加分、B隊(duì)加分。
b.支持?jǐn)?shù)碼管顯示A隊(duì)、B隊(duì)分?jǐn)?shù)、比賽時(shí)間、比賽節(jié)數(shù)、24S倒計(jì)時(shí)。
c.支持比賽結(jié)束后蜂鳴器告警。
3.? 源程序(Keil5)
本設(shè)計(jì)采用keil5 C51軟件(內(nèi)附安裝包)實(shí)現(xiàn)程序設(shè)計(jì)。如需用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; //按鍵狀態(tài)值
uchar scoreA=0; //A隊(duì)得分
uchar scoreB=0; //B隊(duì)得分
uchar count1=20; //記錄定時(shí)器時(shí)間
uchar match=1; //比賽節(jié)數(shù)
uchar rule_time=24; //記錄24秒規(guī)則
uchar rule_flag=0; //記錄24秒規(guī)則是否啟用
/*
初始化IO口
*/
void IO_init(){
A8=0;
A9=0;
}
/*
初始化時(shí)間
*/
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;
}
/*
延時(shí)函數(shù)
*/
void delay_ms(uint z){
uint i;
uchar j;
for(i=0;i<z;i++){
for(j=0;j<100;j++);
}
}
/*
計(jì)時(shí)函數(shù)
*/
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;
}
/*
時(shí)間顯示函數(shù)
*/
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;
}
/*
分?jǐn)?shù)顯示函數(shù)
*/
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
本設(shè)計(jì)采用proteus8.6軟件(內(nèi)附安裝包)實(shí)現(xiàn)仿真設(shè)計(jì),如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導(dǎo)出的,所以請(qǐng)盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。
開始:
加分:
5.? 設(shè)計(jì)報(bào)告
設(shè)計(jì)報(bào)告主要包括硬件電路、軟件設(shè)計(jì)、仿真調(diào)試等等,僅供參考。
6.? 資料清單
設(shè)計(jì)資料主要包括C程序+仿真+設(shè)計(jì)報(bào)告+使用說明+元件清單+操作視頻等。
7.? 資料獲取鏈接
百度網(wǎng)盤下載鏈接:【D07】百度網(wǎng)盤下載鏈接
更多單片機(jī)仿真設(shè)計(jì)合集:單片機(jī)仿真設(shè)計(jì)合集