日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

用四位led数码管作显示器的篮球比赛24秒计时器求c语言代码,单片机编程控制LED七段数码管作显示的篮球赛计时计分系统...

發(fā)布時間:2025/3/12 windows 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用四位led数码管作显示器的篮球比赛24秒计时器求c语言代码,单片机编程控制LED七段数码管作显示的篮球赛计时计分系统... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本次設(shè)計用由AT89C51編程控制LED七段數(shù)碼管作顯示的球賽計時計分系統(tǒng)。系統(tǒng)應(yīng)具有賽程定時設(shè)置,賽程時間暫停,及時刷新甲、乙雙方的成績以及賽后成績暫存等功能。

內(nèi)容包括:顯示、鍵盤、時鐘等內(nèi)容設(shè)計說明

2.1需求分析

2.1.1 計分系統(tǒng)

分為“A隊”和“B隊”的“3分”,“2分”,“1分”各六個按鍵輸入部分,以及兩隊比分的LED顯示部分。在每次增加分?jǐn)?shù)的同時,“24秒”計時恢復(fù)為初始值,“12分鐘”計時暫停,等待比賽的繼續(xù)進(jìn)行

2.1.2 計時系統(tǒng)

(1)比賽開始/繼續(xù):當(dāng)“比賽開始/繼續(xù)”鍵按下后,“24s”和“12分鐘”計時器開始倒計時;

(2)手動24s復(fù)位:當(dāng)“24s復(fù)位” 鍵按下后,“24s”倒計時恢復(fù)初始值,“12分鐘”倒計時暫停,等待比賽的繼續(xù);

(3)比賽暫停:“比賽暫停”鍵按下后,“24s”倒計時和“12分鐘”倒計時均暫停,等待比賽的繼續(xù)進(jìn)行;

(4)自動增加比賽節(jié)數(shù):當(dāng)“12分鐘”倒計時完成后,判斷當(dāng)前節(jié)數(shù)是否為最后一節(jié),若不是,則節(jié)數(shù)自動增加,并“12分鐘”和“24s”均恢復(fù)默認(rèn)值,等待下一節(jié)比賽的進(jìn)行。

2.2原理分析

采用單片機(jī)AT89C51作為本設(shè)計的核心元件。利用7段共陰LED作為顯示器件。在此設(shè)計中共接入了6個7段共陰LED顯示器,其中2個4位LED顯示器用于記錄AB隊的分?jǐn)?shù),每隊1個4位LED顯示器顯示范圍可達(dá)到0~999分,足夠滿足賽程需要;2個兩位LED顯示器用來記錄賽程時間,其中1個用于顯示分鐘,1個用于顯示秒鐘;使用1個2位LED顯示器用于顯示“24s”倒計時,賽程計時均采用倒計時方式。即比賽前將時間設(shè)置好,即12分鐘,比賽開始時啟動計時,直至計時到零為止。本設(shè)計中設(shè)立了10個按鍵,其中6個用于設(shè)置兩隊的比分,1個用于比賽開始/比賽繼續(xù),1個用于暫停,1個用于手動增加比賽節(jié)數(shù),一個用于恢復(fù)“24s”倒計時等功能。

2.3總體設(shè)計

系統(tǒng)主要包括單片機(jī)、LED顯示電路、按鍵控制電路、時鐘電路及復(fù)位電路等組成

2.4軟硬件設(shè)計

2.4.1 硬件設(shè)計

設(shè)計思路:

(1)按鍵模塊設(shè)計 :

按鍵接至P1口和P3口,按鍵按下時輸入是低電平。鍵的設(shè)置如下:“A1”,“A2”,“A3”鍵是A隊加1分、加2分,加3分鍵盤,B隊同理。“比賽開始/比賽繼續(xù)”是啟動鍵,“比賽暫?!笔菚和fI。此外,還有兩個按鍵, “24s”復(fù)位鍵,“增加比賽節(jié)數(shù)”鍵。

(2) LED顯示模塊設(shè)計 :

顯示分為計時和計分顯示兩個部分,均采用共陰極LED數(shù)碼管動態(tài)掃描顯示,由2個四位一體和4個兩位一體的共陰極數(shù)碼管構(gòu)成。數(shù)碼管的7個段控端輸出經(jīng)過74HC573驅(qū)動器進(jìn)行電流放大驅(qū)動接至P0口。采用動態(tài)掃描方式,在足夠短的周期內(nèi),使各位數(shù)碼管逐個輪流受控顯示。

設(shè)計截圖:

2.4.2 軟件設(shè)計

軟件設(shè)計采用C語言模塊設(shè)計方法,程序由主程序、T0中斷程序、顯示程序、外部中斷0程序、按鍵程序、初始函數(shù)、計時函數(shù)、延時函數(shù)組成。

測試結(jié)果與分析

設(shè)計采用C語言編程,在Keil C51軟件編譯環(huán)境中,經(jīng)過編譯和連接,生成十六進(jìn)制的目標(biāo)代碼文件.hex。在硬件上,用Proteus軟件繪制出原理圖,經(jīng)過純電路調(diào)試無誤后,將生成的目標(biāo)代碼文件加載到Proteus界面的AT89C51中。接著再進(jìn)行軟硬件聯(lián)合調(diào)試,反復(fù)調(diào)試,直至所有顯示及按鍵功能實現(xiàn),直至仿真成功。

運(yùn)行截圖:

框圖

C語言程序代碼:

#include

#include

#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隊得分

uchar scoreB=0;? ???//B隊得分

uchar count1=20;? ? //記錄定時器時間

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;

}

/*

初始化時間

*/

void time_init(){

TMOD = 0x01;

TH0 = (65536-50000)/256;

TL0 = (65536-50000)%256;

EA = 1;

ET0 = 1;

}

/*

延時函數(shù)

*/

void delay_ms(uint z){

uint i;

uchar j;

for(i=0;i

for(j=0;j<100;j++);

}

}

/*

計時函數(shù)

*/

void T0_Time() interrupt 1 using 1{

if (count1-- == 0)

{

second--;

rule_time--;

count1 = 20;

}

TH0 = (65536-50000)/256;

TL0 = (65536-50000)%256;

}

/*

時間顯示函數(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;

}

/*

鍵盤輸入函數(shù)

*/

void key(){

static uchar key_new = 0, key_l;

key_status = 0;

P1 = 0x0f;

if((P1 & 0x0f) != 0x0f)

{

delay_ms(1);

if(((P1 & 0x0f) != 0x0f) && (key_new == 1))

{

key_new = 0;

/*

矩陣鍵盤掃描

*/

key_l = (P1 | 0xf0);

P1 = key_l;

switch(P1)

{

/*

開始計時/比賽繼續(xù)

*/

case 0x7e:

TR0=1;

rule_flag=1;

time_display(6,rule_time);

break;

/*

暫停比賽

*/

case 0x7d:

TR0=0;

break;

/*

加分,同時24秒清零和總計時器停止計時

*/

case 0xee:

TR0=0;

scoreA +=3;

rule_time=24;

rule_flag=0;

break;

case 0xed:

TR0=0;

scoreA +=2;

rule_time=24;

rule_flag=0;

break;

case 0xeb:

TR0=0;

scoreA +=1;

rule_time=24;

rule_flag=0;

break;

case 0xde:

TR0=0;

scoreB +=3;

rule_time=24;

rule_flag=0;

break;

case 0xdd:

TR0=0;

scoreB +=2;

rule_time=24;

rule_flag=0;

break;

case 0xdb:

TR0=0;

scoreB +=1;

rule_time=24;

rule_flag=0;

break;

/*

增加比賽節(jié)數(shù),同時24秒復(fù)位和總計時器復(fù)位

*/

case 0xbd:

match++;

minute=12;

second=0;

TR0=0;

rule_time=24;

rule_flag=0;

break;

/*

手動24秒復(fù)位

*/

case 0xbe:

if(TR0==1){

rule_time=0;

rule_flag=0;

}else{

rule_flag=0;

}

break;

}

}

}

else

{

key_new = 1;

}

}

void main()

{

IO_init();

time_init();

while(1){

key();

if(second==0){

/*

判斷某節(jié)比賽是否結(jié)束

*/

if(minute==0){

/*

判斷是否為最后一節(jié)比賽

*/

if(match<4){

/*

計時系統(tǒng)恢復(fù)為默認(rèn)值,比賽節(jié)數(shù)加一

*/

second=60;

minute=11;

match++;

rule_time=24;

rule_flag=0;

}

TR0=0;

}

/*

比賽分鐘數(shù)減一

*/

else {

second=60;

minute--;

}

}

/*

24秒結(jié)束,計時器暫停和24秒復(fù)位

*/

if(rule_time<=0){

TR0=0;

rule_time=24;

}

/*

顯示

*/

time_display(0,minute);

time_display(2,second);

time_display(4,match);

time_display(6,rule_time);

score_dispaly(1,scoreA);

score_dispaly(5,scoreB);

}

}復(fù)制代碼以上的Word格式文檔51黑下載地址:

單片機(jī)文檔 18電3 趙俊杰.docx

(540.65 KB, 下載次數(shù): 8)

2020-12-25 09:42 上傳

點擊文件名下載附件

下載積分: 黑幣 -5

總結(jié)

以上是生活随笔為你收集整理的用四位led数码管作显示器的篮球比赛24秒计时器求c语言代码,单片机编程控制LED七段数码管作显示的篮球赛计时计分系统...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。