當前位置:首頁 » 課程大全 » 具有30秒數字顯示器課程設計

具有30秒數字顯示器課程設計

發布時間: 2021-02-03 07:29:25

❶ 30秒倒計時器課程設計

【摘 要】籃球比賽30秒鍾規則規定:進攻球隊在場上控球時必須在30秒鍾內投籃出手(NBA比賽為24秒,全美大學體育聯合會比賽中為35秒),因此在比賽時裁判既要看比賽又要看秒錶計時,而本文介紹的30秒倒計時器可以解決此問題。

【關鍵詞】AT89C51單片機、30秒倒計時器、LED

30秒倒計時器的設計和製作有很多方法,本文介紹的30秒倒計時器以AT89C51單片機作為控制單元,採用兩個數碼管顯示時間,用三個按鍵分別控制計時器的計時開始、復位和暫停。倒計時器初始狀態顯示「30」,當裁判員按下計時鍵,30秒倒計時開始,當計時器時間減到0時,計時器發出聲光報警,提示裁判計時時間已到。

一、電路設計

30秒倒計時器的電路主要由電源電路、單片機最小系統、按鍵輸入、顯示驅動電路、報警電路組成,30秒倒計時器控制電路如圖1所示。

圖1 30秒倒計時器電路原理圖

1、按鍵輸入

「30秒倒計時器」採用了三個按鍵來完成計數器的啟動計數、復位、暫停/繼續計數等功能。

(1)K1鍵:啟動按鈕(P3.2)。

按下K1鍵,計數器倒計時開始,數碼管顯示數字從30開始每秒遞減計數,當遞減到到零時,報警電路發出聲、光報警信號。當計數器處於暫停狀態時按下K1鍵將回到計時狀態。

(2)K2鍵:復位按鈕(P3.3)。

按下K2鍵,不管計數器工作於什麼狀態,計數器立即復位到預置值 「30」 ,在報警狀態時按下K2鍵還可取消報警。

(3)K3鍵:暫停/計時切換按鈕(P3.4)。

當計數器處於計時狀態時按下該鍵計數器暫停計時,數碼管顯示數字保持不變;當計數器處於暫停狀態按下該鍵計數器將回到計時狀態;初始狀態時該鍵無效。

2、顯示驅動電路

「30秒倒計時器」用兩個共陽數碼管來顯示時間,數碼管顯示方式為動態顯示。顯示驅動電路中,數碼管的段碼引腳通過470歐的電阻接到單片機的P1口,兩個片選引腳各通過一個9012連接到正5V電源,由P3.0和P3.1控制。

4、報警電路

計時時間減到0,顯示數碼管顯示「00」時,發光二極體D1由P3.5控制發出光報警,同時蜂鳴器由P3.7控制發出聲報警。

二、軟體編程思路

1、全局變數

「30秒倒計時器」動作流程主要受三個全局變數控制。首先是bit變數「act」,當「act」為「1」時倒計時開始,為「0」時倒計時停止,「act」初值為「0」,可以由按鈕操作將其置「1」或清「0」。第二個全局變數是char變數「time」,存放倒計時的時間,當倒計時時間為0時,發出聲光報警。變數「time」的初值為30,定時中斷服務程序在「act」為1時,每1s對其進行減1操作,減到0時保持為0,按下「復位鍵」可將「time」復位為30。第三個全局變數是int變數「t」,記錄響應定時中斷0的次數。根據初始化定義,定時器0以方式1工作,每1ms發出一次中斷請求。控製程序只開放了定時器0中斷,因此不會有比定時器0中斷更高級的中斷被允許,所以每次請求都會立刻被響應。響應後在中斷服務程序中將全局變數「t」加1記錄響應中斷次數,每響應1000次即為1秒鍾。變數「t」初值為0,在中斷服務程序中加1,當「t」為2000時由中斷服務程序清0。在按鍵驅動程序中,按下啟動鍵、復位鍵、暫停/啟動鍵時將「t」清0,目的是從0ms開始計時。

2、控制流程

主程序主要用來檢測全局變數「time」當「time」為0時發出「聲光報警」。按鍵驅動、顯示驅動和「time」操作都在定時器0中斷服務程序中進行。其控制流程如圖2所示。

圖2 控制流程圖

三、軟體程序設計

1、數碼管驅動程序

到計時器的兩個數碼管以動態顯示的方式顯示計時時間「time」(全局變數),LED1顯示「time」的十位,LED2顯示「time」的個位。

(1)定義段碼數據口和片選信號

根據實際電路,在C51中定義段碼的數據口為P1,兩個片選信號為P3.0和P3.1。定義如下:

#define an P1

sbit wei1=P3^0;

sbit wei2=P3^1;

(2)定義字形碼

LED顯示數字0~9以及全滅的字形碼表格放在數組zixing[]中。字形碼是固定的表格,定義時加上關鍵字「code」 表示該表格存放在程序存儲器中。

unsigned char code zixing[]=

{

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff

};

(3)定義數碼管LED1和LED2的顯示變數

為了增加驅動程序的可移植性,筆者為數碼管LED1和LED2定義了顯示變數。顯示變數就是本驅動程序的對外介面,外部程序只要改變顯示變數的值就可改變數碼管顯示的數值。定義方式如下:

unsigned char led_str[2]={10,10};

led_str[0]直接對應數碼管LED1, led_str[1]直接對應數碼管LED2。本項目中由專門的子程序將全局變數time計算拆分成led_str[0]和led_str[1]。

void js()

{

led_str[1]=time/10%10;

led_str[0]=time%10;

}

(4)數碼管驅動程序

數碼管驅動程序「void chushi(char i)」在定時中斷服務程序中被調用執行。根據初始化程序的定義,定時中斷服務程序每1ms被執行一次。定時中斷服務程序中運用全局變數「t」記錄進入該服務程序的次數,「t」計滿2000由定時中斷服務程序清零。

數碼管驅動程序的參數「char i」是用來確定當前點亮的是LED1還是LED2,當參數為「0」時點亮LED1,參數為「1」時點亮LED2。如果我們希望偶數次進入定時中斷服務程序時點亮LED1,奇數次進入定時中斷服務程序時點亮LED2,我們可以用程序調用語句「chushi(t%2);」輕松實現。

進入數碼管驅動程序後首先調用子函數js(),計算當前的led_str[0]和led_str[1]。接下來將兩個數碼管全部熄滅以防止余暉的出現。最後點亮需要點亮的數碼管並送出字型碼。驅動程序代碼如下:

void chushi(char i)

{

js(); //計算顯示變數

an=0xff; //去余暉

wei1=i; wei2=!i; //確定片選

an=zixing[led_str[i]]; //送字型碼

}

2、按鍵驅動程序

按鍵驅動程序分為按鍵識別和按鍵功能執行兩部分。按鍵功能執行可在按鍵按下時或按鍵抬起後執行,文中將其設計在按鍵抬起後執行。

(1)定義按鍵I/O地址

根據實際電路,三個按鍵(啟動鍵、復位鍵、暫停/啟動鍵)分別接在P3口的P3.2,P3.3和P3.4三個引腳上。為了取鍵值方便還將P3口定義為「iokey」,程序中可作定義如下:

#define iokey P3

sbit key1=P3^2;

sbit key2=P3^3;

sbit key3=P3^4;

(2)按鍵驅動流程

按鍵識別的通用流程為:I/O口寫「1」→判斷有無鍵按下→延時去抖→確定鍵值→等待按鍵抬起→執行按鍵功能。按鍵驅動程序中定義了兩個靜態變數「ts」 和「kv」,分別用來延時去抖和存放鍵值。

(3)延時去抖

靜態變數「ts」用來延時去抖。按鍵驅動程序在定時中斷服務程序中每1ms被執行一遍,每檢測到有鍵按下「ts」加1,檢測到無鍵按下「ts」清0。按鍵連續按下20ms,則連續20次執行按鍵驅動程序時都檢測到有鍵按下,此時靜態變數「ts」累加到20,可確認按鍵按下有效。

為防止按鍵一直按著不放而使「ts」累加到溢出,確認有鍵按下後可使「ts」的值保持為20,或大於20的某一個值如21。

(4)取鍵值

確認有鍵按下後即可通過讀取按鍵的I/O口狀態來得到鍵值。為讀取P3.2、P3.3和P3.4引腳狀態,屏蔽P3口其他引腳的影響,可將讀取後的數值按位或上11100011B(0xE3)再送給靜態變數「kv」。

靜態變數「kv」存放按鍵的鍵值,無鍵按下或按鍵抬起後kv的值為0。按下啟動鍵key1時kv=11111011B(0xFB),按下復位鍵key2時kv=11110111B(0xF7),按下暫停/啟動鍵key3時kv=11101111B(0xEF)。

(5)執行按鍵功能

按鍵抬起後第一次執行按鍵驅動程序時,靜態變數「kv」任保持著按鍵按下時最後得到的鍵值,以該鍵值作為參數調用按鍵執行程序「actkey(kv);」即可執行按鍵功能。調用後kv值立刻清0,確保按一次鍵執行一次按鍵功能。驅動程序代碼如下:

void key()

{

static unsigned char kv=0;

static unsigned char ts=0;

key1=1;key2=1;key3=1;

if(!(key1&key2&key3))

{

ts++;

if(ts>=20)ts=20; //有鍵按下

if(ts==20)

kv=iokey|0xe3; //取鍵值

}

else

{ //無鍵按下或按鍵已抬起

actkey(kv);

ts=0;

kv=0;

}

}

函數actkey(kv)用來根據鍵值「kv」執行相應操作。當「kv」等於0xFB時代表啟動鍵key1按下,函數actkey(kv)將全局變數act賦值為「1」。當「kv」等於0xF7時代表復位鍵key2按下,函數actkey(kv)將全局變數「time」復位為「30」。當「kv」等於0xEF時代表暫停/啟動鍵按下,函數actkey(kv)將全局變數act取反。每按一個按鈕都有將全局變數「t」清0的操作,目的是每當復位、或啟動計時時,進入定時中斷的次數都從0開始計算,否則會出現第1秒計時不準確的現象。程序代碼如下:

void actkey(unsigned char k)

{

switch(k)

{

case 0xfb:act=1;t=0;break;

case 0xf7:time=30;t=0; break;

case 0xef:act=~act;t=0; break;

}

}

四、結束語

本文在編程過程中以面向對象的編程思路封裝了兩個LED數碼管和三個獨立按鍵。當其驅動程序在定時中斷服務程序中被調用,編程者只要操作其介面:數組「led_str[2]」和函數「actkey(unsigned char k)」,無需直接對硬體進行編程即可改變功能,增強了軟體的通用性和可移植性。

❷ 你們有沒有數字電路邏輯的三位數字顯示器的課程設計

具體什麼要求
我做電子設計的

❸ 有沒有誰知道數字秒錶的課程設計怎麼做的(關鍵是要記錄8個運動員的成績用四位數碼管顯示)

數字電子技術基礎課程設計(一)——電子鍾
數字電子技術基礎
課程設計
電子秒錶
一.設計目的:
1、了解計時器主體電路的組成及工作原理;
2、熟悉集成電路及有關電子元器件的使用;
3、學習數字電路中基本RS觸發器、時鍾發生器及計數、解碼顯示等單元電路的綜合應用。
二.設計任務及說明:
電子秒錶電路是一塊獨立構成的記時集成電路晶元。它集成了計數器、、振盪器、解碼器和驅動等電路,能夠對秒以下時間單位進行精確記時,具有清零、啟動計時、暫停計時及繼續計時等控制功能。

設計一個可以滿足以下要求的簡易秒錶

1.秒錶由5位七段LED顯示器顯示,其中一位顯示「min」,四位顯示「s」,其中顯示分辯率為0.01 s,計時范圍是0—9分59秒99毫秒;

2.具有清零、啟動計時、暫停計時及繼續計時等控制功能;
3.控制開關為兩個:啟動(繼續)/暫停記時開關和復位開關
三.總體方案及原理:
電子秒錶要求能夠對時間進行精確記時並顯示出來,因此要有時鍾發生器,記數及解碼顯示,控制等模塊,系統框圖如下:

時鍾發生器

記數器

解碼器

顯示器

控制器
圖1.系統框圖
其中:
(1)時鍾發生器:利用石英震盪555定時器構成的多諧振盪器做時鍾源,產生100HZ的脈沖;
(2)記數器:對時鍾信號進行記數並進位,毫秒和秒之間10進制,秒和分之間60進制;
(3)解碼器:對脈沖記數進行解碼輸出到顯示單元中;
(4)顯示器:採用5片LED顯示器把各位的數值顯示出來,是秒錶最終的輸出,有分、秒、和毫秒位;
(5)控制器:控制電路是對秒錶的工作狀態(記時開始/暫停/繼續/復位等)進行控制的單元,可由觸發器和開關組成。
四.單元電路設計,參數計算和器件選擇:
1.時鍾發生單元
時鍾發生器可以採用石英晶體震盪產生100HZ時鍾信號,也可以用555定時器構成的多諧振盪器,555定時器是一種性能較好的時鍾源,切構造簡單,採用555定時器構成的多諧振盪器做為電子秒錶的輸入脈沖源。
因輸出要求為100HZ的,選擇占空比為55%,可根據

T=( )Cln2=0.01
可選擇的電阻進行連接可在輸出端3獲得頻率為100HZ的矩形波信號,即T=0.01S的時鍾源,當基本RS觸發器Q=1時,門5開啟,此時100HZ脈沖信號通過門5作為計數脈沖加於計數器①的計數輸入端CP2。

圖2.時鍾發生器555定時器構成的多諧振盪器
2.記數單元

記數器74160、74ls192、74ls90等都能實現十進制記數,本設計採用二—五—十進制加法計數器74LS90構成電子秒錶的計數單元,如圖3所示,555定時器構成的多諧振盪器作為計數器①的時鍾輸入。計數器①及計數器②接成8421碼十進制形式,其輸出端與實驗裝置上解碼顯示單元的相應輸入端連接,可顯示0.01~0.09秒;0.1~0.9秒計時,計數器②及計數器③,計數器③和計數器④也接成8421碼十進制形式,計數器④和計數器⑤接成60進制的形式,實現秒對分的進位。
集成非同步計數器74LS90簡介
74LS90是非同步二—五—十進制加法計數器,它既可以作二進制加法計數器,又可以作五進制和十進制加法計數器。
圖3為74LS90引腳排列,表1為功能表。
通過不同的連接方式,74LS90可以實現四種不同的邏輯功能;而且還可藉助R0(1)、R0(2)對計數器清零,藉助S9(1)、S9(2)將計數器置9。其具體功能詳述如下:
(1)計數脈沖從CP1輸入,QA作為輸出端,為二進制計數器。
(2)計數脈沖從CP2輸入,QDQCQB作為輸出端,為非同步五進制加法計數器。
(3)若將CP2和QA相連,計數脈沖由CP1輸入,QD、QC、QB、QA作為輸出端,
則構成非同步8421碼十進制加法計數器。
(4)若將CP1與QD相連,計數脈沖由CP2輸入,QA、QD、QC、QB作為輸出端,
則構成非同步5421碼十進制加法計數器。
(5)清零、置9功能。
a)
非同步清零

當R0(1)、R0(2)均為「1」;S9(1)、S9(2)中有「0」時,實現非同步清零功能,即QDQCQBQA=0000。
b)
置9功能
當S9(1)、S9(2)均為「1」;R0(1)、R0(2)中有「0」時,實現置9功能,即QDQCQBQA=1001。
圖3.74LS90引腳排列(下)



輸 出


清 0
置 9
時 鍾
QD QC QB QA
R0(1)、R0(2)
S9(1)、S9(2)
CP1 CP2

1
1
0
×
×
0
×
×
0
0
0
0

0
0
×
×
0
1
1
×
×
1
0
0
1

9
0
×
×
0
0
×
×
0

1
QA
輸 出
二進制計數

1

QDQCQB輸出
五進制計數


QA
QDQCQBQA輸出8421BCD碼
十進制計數

QD

QAQDQCQB輸出5421BCD碼
十進制計數

1
1





表1 .74LS90功能表
10秒到分位的6進制位可在十進制的基礎上將QB、QC連接到一個與門,它的置零信號與系統的置零信號通過一個或門連接接至R0(1),即當記數為6或有置零信號是均置零,如圖4所示。

圖4 .74ls90組成的6進制記數器
3 .解碼顯示單元
74LS248(74LS48)是BCD碼到七段碼的顯示解碼器,它可以直接驅動共陰極數碼管。它的管腳圖如圖5所示. 顯示器用 LC5011-11 共陰極LED顯示器.(註:在multisim中模擬可以用解碼顯示器DCD_HEX代替解碼和顯示單元)。

圖5. 74LS248管腳圖
4 .控制單元
(1)
啟動(繼續)/暫停記時開關
採用集成與非門構成的基本RS觸發器。屬低電平直接觸發的觸發器,有直接置位、復位的功能。
它的一路輸出作為單穩態觸發器的輸入,另一路輸出Q作為與非門5的輸入控制信號。
按動按鈕開關B(接地),則門1輸出 =1;門2輸出Q=0,K2復位後Q、狀態保持不變。再按動按鈕開關K1 ,則Q由0變為1,門5開啟, 為計數器啟動作好准備。由1變0,送出負脈沖,啟動單穩態觸發器工作。
(2)
清零開關
通過開關對每個計數器的R0(2)給以高電平能實現系統的清零。
五:在MULTISIM中進行模擬
將各個晶元在MULTISIM8中連接並進行模擬,模擬如圖6所示,結果正確。
六:設計所需元件
555觸發器一片,74ls90五片,74ls248五片,LC5011-11 共陰極LED顯示器五片,
電容、電阻若干。
七:設計心得
本次課程設計對數字電子技術有了更進一步的熟悉,實際操作和課本上的知識有很大聯系,但又高於課本,一個看似很簡單的電路,要動手把它設計出來就比較困難了,因為是設計要求我們在以後的學習中注意這一點,要把課本上所學到的知識和實際聯系起來,同時通過本次電路的設計,不但鞏固了所學知識,也使我們把理論與實踐從真正意義上結合起來,增強了學習的興趣,考驗了我們藉助互聯網路搜集、查閱相關文獻資料,和組織材料的綜合能力。

❹ max-plus籃球競賽30秒計時器設計

MAX PLUS II 主要是提供你的一些器件提取
你只要自己找到連接的電路圖就能用了
MAX PLUS II的基礎操作還是很簡單的

❺ 課程設計——星期數字顯示器

留名.貌似我一直很出名,,,

❻ 數字邏輯課程設計數字式秒錶的設計,

這個難度系數好高,數學不好抱歉,希望有人可以幫助到你。

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919