Ⅰ 急急急!!!求製作計時器的硬體電路
【摘 要】籃球比賽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;
led_str[0]=time;
}
(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
Ⅱ 誰告訴我2秒延時電路怎麼做啊,也就是通電兩秒,電流通過才能電路
不清楚你要控制什麼,簡單的買個時間繼電器就可以了,復雜的請看圖,或者回到這里看看吧答http://image..com/i?ct=201326592&cl=2&lm=-1&st=-1&tn=image&istype=2&fm=index&pv=&z=0&word=%D1%D3%CA%B1%B5%E7%C2%B7&s=0
Ⅲ 要求做一個打開開關延遲3秒才輸出5v電源,硬體電路實現延遲打開,聽說用觸發器可以做,求電路圖和原件
延時3s的時間很短,無需使用觸發器和單穩態電路,僅用一個三極體和電阻電容組成RC延時版電路即可,連小繼電權器都算也才5-6個元件,圖在網上多得很,懶得畫了.隨便找了一個:
如要頻繁啟動(1分鍾內),應在可調電阻上反向並聯一個二極體作為電容的泄放通道,各元件參數要實驗確定.
Ⅳ 什麼是軟體延時什麼是硬體延時以及各自的特點
軟體延時是通過使用空運算來消耗晶元的一定運算周期來實現延時的
硬體延時是通過硬體上的計時模塊或中斷模塊來實現一定的延時的
Ⅳ 延時硬體電路,一個瞬間的高電平信號(5V)如何用硬體電路把它延長
關鍵是延長時間問題,一般的話,用一隻電容充電,給一隻場效應管柵極就能延時很久。
Ⅵ 求通電延時電路,,上電即觸發,,延時1秒後接通電路
1S是准確,還是不準確的,不準確就RC延時,准確就555,更加准確就是晶振+分頻器,或者MCU。
RC延時,
就這樣的電路,9013的VBE是1.2V,計算好分壓電阻的比值就可以了
Ⅶ 如何用硬體電路搭建帶有滯後的一階系統
自鎖電路加個延時很實用,剛實現個自殺電路利用了rc延時。自殺電路用在底層程序活著但是受到干擾運行不正常,斷電硬復位。
模擬方法:超聲波或者電磁延遲線構成純滯後,一節用RC或者RL。
Ⅷ 硬體延時電路設計
本設計中選用目前應用較廣泛的VHDL硬體電路描述語言,實現對路口交通燈系統的控制器的硬體電路描述,在Altera公司的EDA軟體平台MAX+PLUSⅡ環境下通過了編譯、模擬,並下載到CPLD器件上進行編程製作,實現了交通燈系統的控制過程。 關鍵詞:EDA;VHDL;控制器;CPLD
引言
EDA技術是用於電子產品設計中比較先進的技術,可以代替設計者完成電子系統設計中的大部分工作,而且可以直接從程序中修改錯誤及系統功能而不需要硬體電路的支持,既縮短了研發周期,又大大節約了成本,受到了電子工程師的青睞。
實現路口交通燈系統的控制方法很多,可以用標准邏輯器件、可編程序控制器PLC、單片機等方案來實現。但是這些控制方法的功能修改及調試都需要硬體電路的支持,在一定程度上增加了功能修改及系統調試的困難。因此,在設計中採用EDA技術,應用目前廣泛應用的VHDL硬體電路描述語言,實現交通燈系統控制器的設計,利用MAXPLUSⅡ集成開發環境進行綜合、模擬,並下載到CPLD可編程邏輯器件中,完成系統的控製作用。
交通燈系統控制器設計要求
路口交通燈控制系統與其他控制系統一樣,劃分為控制器和受控電路兩部分。控制器使整個系統按設定的工作方式交替指揮車輛及行人的通行,並接收受控部分的反饋信號,決定其狀態轉換方向及輸出信號,控制整個系統的工作過程。
按照路口交通運行的實際情況,在本系統中,設定系統的工作情況如下。
路口交通燈控制系統的東西路有交通燈R(紅)、Y(黃)、G(綠);東西人行安全通道燈:RXR(紅)、RXG(綠)。南北路有交通燈:r1(紅)、y1(黃)、g1(綠);南北人行安全通道燈:rxr1(紅)、rxg1(綠),所有燈均為高電平點亮。設置15s的通行時間和5s轉換時間的變模定時電路,由預置輸入整數cnt決定是模15還是模5,輸入邏輯cx是用來決定計數到4時清零還是到14時清零。Clk是外部提供的基準秒脈沖信號。x0、x1、x2、x3是由控制器輸出的表示計數時間的四位二進制數。圖1是該系統控制器的符號框圖。
控制器的程序設計
* 控制器的ASM圖
根據系統設計要求,得到控制器的ASM圖,如圖2所示。在這里,所有輸入信號均為高電平有效。該ASM圖反映了交通燈系統的不同狀態的轉換過程及持續時間。
* 控制器的VHDL程序設計
根據所分析的系統的ASM圖,結合系統的設計要求,用VHDL語言對各個模塊進行編程,最後形成頂層文件,在MAX+PLUSⅡ環境下進行編譯與模擬,檢查所編程序是否運行正確。如果出現錯誤,需要進行修改,直到完全通過為止。需要說明的是,在進行程序編譯時,要先從底層程序開始,所有底層程序都正確後,才能開始頂層程序的編譯。這是因為頂層程序是對底層程序的概括,它是把底層程序各個模塊連接起來,就相當於把每個模塊的功能匯聚到一起,實現整個系統的控制功能,所以底層程序的正確與否,關繫到頂層程序的運行結果。
在控制器的程序設計中,在定義結構體時,有兩種程序設計方法均可以通過編譯及模擬,但在進行時序分析時結果卻不同。
(1)如果這樣定義:
...
ARCHITECTURE con1_arc of con1 IS
SIGNAL current_state:state;
BEGIN
...
在進行程序調試時,均通過了編譯及模擬,但在進行時序分析中,卻出現了不按設定的計數順序工作的結果:14, 13, 2,1, 0...。經過反復修改調試,對程序進行了修改,如(2)所定義的。
(2)
ARCHITECYTURE con1_arc OF con1 IS
SIGNAL current_state:state;
SIGNAL TEMP_STATE:state;
...
TEMP STATE<=current_state;
BEGIN
...
在這種設計方法中,多定義了一個信號變數,從而使得程序能按設定的狀態14,13,12...進行轉換。通過這個實例,可以看出EDA技術作為電子設計工具的功能修改及調試的方便快捷,即不需要硬體電路的支持就可以找到問題所在並進行修改,體現了它的優越性。
硬體電路實現
根據交通燈系統的控制要求,圖3所示為本系統的硬體電路圖。該電路包含了1個CPLD晶元,2個七段LED數碼顯示器,20個分別表示各個方向上的紅、黃、綠燈,以及相應的限流電阻。這個電路與其他控制方法相比,所用器件可以說是比較簡單經濟的。經過實驗,實現了預定的交通燈系統的控制功能。
或單片機,PLC教材上有實例.
Ⅸ 如何用簡單的硬體製作一個延時電路 就是 按一下開關開始延時三秒,松一下在按再延時三秒,按著不懂只延
最簡單的當然是利用RC延時或者555定時器了,但是你這個配合按鍵,規則又略顯得復雜,倒是不如直接放個C51,然後在軟體裡面解決
Ⅹ 長延時電路 的實現問題 請教一下 怎樣硬體延時 4個小時以上
cd4060
這個圖稍改即可