新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機課程設(shè)計(籃球記分器)

單片機課程設(shè)計(籃球記分器)

作者: 時間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
電路圖:


本程序已經(jīng)通過軟件仿真與硬件制作,
首發(fā)于:www.51hei.com,代碼可任意修改,但不可用于商業(yè)目的.
單片機型號是:stc89c52,晶振12兆赫.用了3個4為一體化的數(shù)碼管.
完整代碼下載地址:http://www.51hei.com/f/lqwwe.rar
#include
#define uchar unsigned char
#define uint unsigned int
void delay(uchar x); //延時(時間較短)
void delay1(uchar x); //延時(時間較長)
void Js_Jf_Scan(void); //數(shù)碼管動態(tài)掃描顯示函數(shù)
void Key_if(void); //A、B兩隊分值處理函數(shù)
void Js_50ms(void); //定時50ms中斷函數(shù)
void Key_Y(void); //預置時間函數(shù)
void Ptime(uchar); //時間處理函數(shù)
void sound(void); //鳴笛警示函數(shù)
void jiaohuan(void); //場地交換
sbit CL1=P2^0; //B隊4位計分數(shù)碼管位控線
sbit CL2=P2^1;
sbit CL3=P2^2;
sbit CL4=P2^3;
sbit KL1=P2^4; // A隊4位計分數(shù)碼管位控線
sbit KL2=P2^5;
sbit KL3=P2^6;
sbit KL4=P2^7;
sbit S1=P1^3; //驅(qū)動4位計時數(shù)碼管位控線
sbit S2=P1^2;
sbit S3=P1^1;
sbit S4=P1^0;
sbit YK1=P1^6; //預置分鐘的十位
sbit YK2=P1^7; //預置分鐘的個位
sbit music=P1^4; //P1.4接喇叭,發(fā)聲,鳴笛
sbit Key1=P3^0; //B隊加分鍵
sbit Key2=P3^1; //B隊減分鍵
sbit Key3=P3^4; //A隊加分鍵
sbit Key4=P3^5; //A隊減分鍵
sbit JH=P1^5;
sbit Int_Key=P3^2; //鳴笛鍵
sbit Star=P3^6; //開始按鈕
sbit Puse=P3^7; //停止按鈕
int m=0,ms=0,mg=0; //秒鐘的十位、個位以及秒鐘的變量說明
int fs=0,fg=0,f,fy,num=0; //分鐘的十位、個位以及分鐘的變量說明
int g,s,b,q,sum=0; //B隊定義個十百位
int g1,s1,b1,q1,sum1=0; // A隊定義個十百位
int LED_Num[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x00,}; //段碼

void main(void)
{
TMOD=0x01; //設(shè)置T0為工作方式1,作為16位計數(shù)器
TH0=(65535-50000)/256; //設(shè)置T0的高8位,并且T0的計數(shù)值為50ms
TL0=(65535-50000)%256; //設(shè)置T0的低8位
music=0; //初值喇叭不響
EA=1; //開放所有中斷
ET0=1; //允許定時/計數(shù)器T0溢出中斷
EX0=1; //允許外部中斷0
IT0=1; //設(shè)置外部中斷0為邊沿觸發(fā)方式(下降沿)
while(1) //無窮循環(huán),程序一直運行
{
Key_Y(); //預置場次比賽時間
if(Star==0&&f!=0&&Puse!=0) //按下“開始鍵”,設(shè)置好比賽時間,并且未按“停止”鍵時,比賽正式開始
{
TR0=1; //啟動定時器T0,開始計時
Key_if(); //開始計分
}
else
{
TR0=0; //比賽還未開始或比賽結(jié)束時間到,停止計時
}
Js_Jf_Scan(); //將相應(yīng)的分數(shù)、時間同步進行顯示
}
}


上一頁 1 2 下一頁

評論


技術(shù)專區(qū)

關(guān)閉