第一篇:基于單片機(jī)的液位模糊控制器設(shè)計(jì)論文
摘 要:液位控制由于其應(yīng)用極其普遍,種類繁多,其中不乏一些大型的復(fù)雜系統(tǒng),譬如在石油化工等工業(yè)生產(chǎn)中。它主要有以下幾個(gè)特點(diǎn):
1、時(shí)滯性很大。在大型、復(fù)雜的液位控制系統(tǒng)中,當(dāng)改變進(jìn)出容器的液體流量來控制液位時(shí),控制效果在較長(zhǎng)的時(shí)間后才能得到體現(xiàn),這會(huì)使得最后的穩(wěn)態(tài)誤差較大,液位在期望值附近波動(dòng)。
2,時(shí)變性。液位控制一般是通過控制液體流入量的大小來控制液位的,流出量是根據(jù)后續(xù)工藝生產(chǎn)的需求而調(diào)節(jié),這種需求的數(shù)量和速度是在不斷變化的。
3,非線性。容器內(nèi)液體流出量不僅隨后續(xù)工藝生產(chǎn)需求變化,即使在控制閥門保持不變的情況下,實(shí)際的流出量也隨著液位高度的變化而發(fā)生一種非線性的變化。這幾個(gè)特點(diǎn),都嚴(yán)重影響PID控制的效果,當(dāng)實(shí)際生產(chǎn)對(duì)控制有較高的性能指標(biāo)要求時(shí),就需要將智能控制方法引入到液位控制系統(tǒng)中來。
關(guān)鍵詞:模糊控制;液位;PID;單片機(jī)模糊控制的基本原理
模糊控制屬于智能控制的范疇,它是以模糊數(shù)學(xué)和模糊邏輯為理論基礎(chǔ)、模仿人的思維方式而統(tǒng)籌考慮的一種控制方式。它是以模糊集合論、模糊語言變量和模糊邏輯推理為基礎(chǔ)的一種計(jì)算機(jī)數(shù)字控制。模糊控制模仿人的思維方式,計(jì)算控制量時(shí)并不需要參數(shù)的精確量,而是以參數(shù)的模糊信息為基礎(chǔ),通過模糊推理得到控制量的模糊形式,然后再經(jīng)過反模糊化處理輸出具體的控制量。
模糊控制器的設(shè)計(jì)的基本原理
1. 在采樣時(shí)刻,采樣系統(tǒng)的輸出值,然后根據(jù)所選擇的系統(tǒng)的輸入變量來進(jìn)行計(jì)算,得到輸入變量的具體值。一般系統(tǒng)通常選擇誤差及誤差的變化情況作為輸入變量。
2. 將輸入變量的精確值變?yōu)槟:俊.?dāng)然,在這之前需要先確定模糊變量的基本論域、模糊子集論域、模糊詞集及隸屬函數(shù)。系統(tǒng)中輸入變量的實(shí)際變化范圍稱為變量的基本論域,對(duì)于模糊控制輸入所要求的變化范圍稱為它們的模糊子集論域。模糊子集論域的確定和下一步的模糊推理中需要的模糊值有關(guān)。模糊值可用模糊詞集來表示,人們對(duì)數(shù)值的模糊表示一般可用大、中、小加以區(qū)別,再加上正負(fù)模糊詞集就可表示為:
{負(fù) 大,負(fù)中,負(fù)小,零,正小,正中,正大}
一般系統(tǒng)的輸入變量的模糊子集論域所含的元素個(gè)數(shù)應(yīng)為詞集總數(shù)的兩倍以上,這樣才能確保模糊詞集能較好地覆蓋
模糊子集論域,避免出現(xiàn)失控現(xiàn)象。針對(duì)上面選用的模糊詞集,模糊子集論域可選擇為
{-6,-5,-4,-3,-2,一1,0 , 1,2 ,3 ,4 ,5 ,6 }
對(duì)于一個(gè)模糊控制系統(tǒng),它的控制器輸入變量的實(shí)際范圍一般不會(huì)正好和模糊子集論域一致,這時(shí)就需要進(jìn)行轉(zhuǎn)化。假如基本論域?yàn)閇a.b],模糊子集論域?yàn)閇m, n],則將一個(gè)精確輸入量x轉(zhuǎn)化到模糊子集論域中的變量Y是通過以下公式來實(shí)現(xiàn)的。
y=(n-m)*[x-(b-a)/2]/(b-a)
模糊 子 集 論域和模糊詞集之間是通過隸屬函數(shù)來聯(lián)系的。模糊變量的隸屬函數(shù)就和普通變量的特征函數(shù)一樣,但它的取值范圍并不是單純的0或1,而是在[0, 1]之間連續(xù)變化。隸屬函數(shù)的形狀常采用梯形、三角形、鐘形、高斯形等。在實(shí)際應(yīng)用中,為方便起見,采用三角形的較多。
3. 根據(jù)上一步得到的輸入變量(模糊量)及模糊控制規(guī)則,按模糊推理合成規(guī)則計(jì)算控制量(模糊量)。模糊控制規(guī)則是根據(jù)操作者的經(jīng)驗(yàn)或?qū)<业闹R(shí),用if,then描述的一組條件語句。
4. 控制量的模糊量轉(zhuǎn)化為精確量。上一步雖然通過模糊推理得到了控制量,但它是模糊形式的,而真正的執(zhí)行機(jī)構(gòu)不能接受模糊量,只能接受精確量,所以必須把控制量由模糊形式轉(zhuǎn)化為精確形式,這一步也叫做解模糊化。模糊控制器的設(shè)計(jì)過程
2.1模糊控制器的結(jié)構(gòu)設(shè)計(jì)
模糊控制器的結(jié)構(gòu)設(shè)計(jì)是指確定模糊控制器的輸入變量和輸出變量。模糊控制器輸入變量的個(gè)數(shù)稱為模糊控制器的維數(shù),目前廣泛采用的均為二維模糊控制器.在此我們也選擇這一結(jié)構(gòu)形式。我們?cè)O(shè)計(jì)的是液位模糊控制器,就選擇液位的誤差和誤差的變化作為模糊控制器的輸入變量,分別記作E, Ec。模糊控制器的輸出應(yīng)該是用來控制液位的,液位實(shí)際上就是受流入量和流出量的影響,而流出量是根據(jù)后續(xù)工藝不停的變化,是不可控的。所以模糊控制器的輸出就只有一個(gè),作為控制流入量執(zhí)行機(jī)構(gòu)的控制量,記作U。對(duì)于模糊控制器的輸出,可以有兩種形式,一種是絕對(duì)的控制量輸出,另一種是增量方式輸出。在本次設(shè)計(jì)的模糊控制器中,我們選擇了絕對(duì)值輸出方式。
2.2模糊控制規(guī)則的設(shè)計(jì)
控制規(guī)則的設(shè)計(jì)一般包括三部分內(nèi)容:選擇描述輸入輸出變量的詞集,定義各模糊變量的模糊子集和建立模糊控制器的控制規(guī)則。下面就分別來進(jìn)行說明:
1.選擇描述輸入、輸出變量的詞集
對(duì)于液位誤差、誤差變化率及控制量我們選用相同的模糊詞集,都用自然語言大、中、小來進(jìn)行描述,將大、中、小再加上正、負(fù)兩個(gè)方向并考慮變量的零狀態(tài),共有七個(gè)詞匯,即
{負(fù) 大,負(fù) 中,負(fù)小,零,正小,正中,正大}
為敘述方便,用英文字頭縮寫表示為
{N B ,N M , N S ,Z E, PS, PM,P B}
其中,N=Negative, P=Positive, B=Big, M=Medium, S=Small, ZE=Zero。
2.定義各模糊變量的模糊子集
定義一個(gè)模糊子集,實(shí)際上就是要確定模糊子集隸屬函數(shù)曲線的形狀。對(duì)于輸入變量誤差和誤差變化率,我們選用的模糊子集論域和隸屬函數(shù)曲線都完全一致,所以在此就只針對(duì)誤差的模糊子集的確定來進(jìn)行說明。誤差的模糊子集論域取[-6,6 ]之間,然后離散化,只取整數(shù),所以它的模糊子集論域可表示為
{-6,-5,-4,-3,-2,-1,0 ,1 ,2 ,3 ,4 ,5 ,6 }
其中有13個(gè)元素,而模糊詞集中有7個(gè)元素,基本滿足了二倍的關(guān)系,可以保證不會(huì)出現(xiàn)失控現(xiàn)象。為了計(jì)算方便,將隸屬函數(shù)曲線都選為三角形形式,而且根據(jù)經(jīng)驗(yàn),在靠近0附近,三角形的形狀選的窄一些,這樣有利于提高靈敏度,抑制超調(diào)。在遠(yuǎn)離0的地方,三角形的形狀選的寬一些,因?yàn)檫@時(shí)候誤差還很大,不會(huì)引起超調(diào)。至于三角形具體形狀及位置的有關(guān)參數(shù),是根據(jù)經(jīng)驗(yàn)初步確定的,在控制器調(diào)試的時(shí)候還需要對(duì)這些進(jìn)行反復(fù)的修改。
第二篇:基于單片機(jī)的液位控制器設(shè)計(jì)
專業(yè)基礎(chǔ)綜合實(shí)驗(yàn)報(bào)告 題目:測(cè)控技術(shù)與儀器專業(yè)
姓
名:學(xué)
號(hào):專業(yè)班級(jí):
1、總體設(shè)計(jì)方案
1.1 設(shè)計(jì)功能及要求
1、利用單片機(jī)和傳感器構(gòu)建一套完整的水位自動(dòng)控制系統(tǒng)。要求既能實(shí)現(xiàn)水位自動(dòng)控制,又能顯示實(shí)際水位,便于用戶監(jiān)視。在水塔中經(jīng)常要根據(jù)水面的高低進(jìn)行水位的自動(dòng)控制,同時(shí)進(jìn)行水位壓力的檢測(cè)和控制。本液位器具有水位檢測(cè)、報(bào)警、自動(dòng)上水和排水(上水用電機(jī)正轉(zhuǎn)模擬,下水用電機(jī)反轉(zhuǎn)模擬)、壓力檢測(cè)功能。
2、該系統(tǒng)以89S52單片機(jī)為水塔水位控制系統(tǒng)的核心,用傳感器采集水壓模擬信號(hào),然后將模擬信號(hào)送入A/D轉(zhuǎn)換器,換算出某一時(shí)刻水塔水位的實(shí)際高度,然后拿它與標(biāo)定水位進(jìn)行比較,要求實(shí)時(shí)檢測(cè)水箱的液位高度,并與開始預(yù)設(shè)定值做比較,由單片機(jī)控制開關(guān)的開斷進(jìn)行液位的調(diào)整,最終達(dá)到液位的預(yù)設(shè)定值。檢測(cè)值若高于上限設(shè)定值時(shí),要求報(bào)警,斷開繼電器,控制水泵停止上水;檢測(cè)值若低于下限設(shè)定值,要求報(bào)警,開啟繼電器,控制水泵開始上水。現(xiàn)場(chǎng)實(shí)時(shí)顯示測(cè)量值,從而實(shí)現(xiàn)對(duì)水箱液位的監(jiān)控。如此重復(fù)“測(cè)量、比較、開啟”這三步,直至實(shí)測(cè)水位與標(biāo)定水位的偏差落入給定的精度范圍之內(nèi)。落入給定精度范圍之后,將兩個(gè)水泵同時(shí)關(guān)停。
電路焊接好后,接通電源,改變液位使檢測(cè)點(diǎn)變化,當(dāng)液位在A點(diǎn)以下時(shí)紅燈連續(xù)亮并且發(fā)出頻率較高的報(bào)警聲,顯示00,電機(jī)正轉(zhuǎn);當(dāng)A≤液位
3、控制系統(tǒng)中標(biāo)定水位用鍵盤輸入,用十進(jìn)制數(shù)碼顯示。本液位器具有水位檢測(cè)、報(bào)警、自動(dòng)上水和排水、壓力檢測(cè)功能。該控制器主要由89S52單片機(jī),0809A/D轉(zhuǎn)換器,A、B、C三點(diǎn)水位檢測(cè)電路,壓力檢測(cè)電路、數(shù)碼顯示電路、鍵盤和電源電路組成。
4、可根據(jù)需要設(shè)定液位控制高度,同時(shí)具備報(bào)警、高度顯示等功能,液位自動(dòng)控制系統(tǒng)工作流程如下:將壓力傳感器傳送來的電流信號(hào)經(jīng)過前級(jí)放大和A/D轉(zhuǎn)換進(jìn)入單片機(jī),經(jīng)單片機(jī)計(jì)算處理(與用戶的設(shè)定值作比較)。將輸出數(shù)字量進(jìn)行D/A轉(zhuǎn)換送給電動(dòng)執(zhí)行機(jī)構(gòu)。
5、基于單片機(jī)的水位自動(dòng)控制系統(tǒng)的軟件設(shè)計(jì)
本論文是以單片機(jī)為核心設(shè)計(jì)水塔水位控制系統(tǒng),包括硬件電路的設(shè)計(jì)和控制系統(tǒng)程序的設(shè)計(jì)。通過此系統(tǒng)使水塔水位保持在要求的高度
1.2 設(shè)計(jì)方案
1.2.1硬件設(shè)計(jì)方案
(1)基于單片機(jī)的通用水位自動(dòng)控制系統(tǒng)的硬件設(shè)計(jì)系統(tǒng)硬件部分的設(shè)計(jì)采用模塊化的設(shè)計(jì)方法,根據(jù)功能的不同,把系統(tǒng)劃分為如下模塊(圖2)。
圖2 系統(tǒng)模塊圖
(1)硬件設(shè)計(jì)
液位控制器的硬件主要包括由單片機(jī)、傳感器(帶變送器)、鍵盤電路、數(shù)碼顯示電路、A/D轉(zhuǎn)換器和輸出控制電路等。
工作原理:基于單片機(jī)實(shí)現(xiàn)的液位控制器是以AT89C51芯片為核心,由鍵盤、數(shù)碼顯示、A/D轉(zhuǎn)換、傳感器,電源和控制部分等組成。工作過程如下:水箱(水塔)液位發(fā)生變化時(shí),引起連接在水箱(水塔)底部的壓力傳感器,壓力傳感器的壓力受到水的壓力,即把變化量轉(zhuǎn)化成電壓信號(hào);該信號(hào)經(jīng)過運(yùn)算放大電路放大后變成幅度為0~5 V標(biāo)準(zhǔn)信號(hào),送入A/D轉(zhuǎn)換器,A/D轉(zhuǎn)換器把模擬信號(hào)變成數(shù)字信號(hào)量,由單片機(jī)進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,并進(jìn)行處理,根據(jù)設(shè)定要求控制輸出,同時(shí)數(shù)碼管顯示液位高度。通過鍵盤設(shè)置液位高、低和限定值以及強(qiáng)制報(bào)警值。該系統(tǒng)控制器特點(diǎn)是直觀地顯示水位高度,可任意控制水位高度。
1.2.2軟件設(shè)計(jì)方案
(1)設(shè)計(jì)框圖
(2)原理:通過軟件設(shè)計(jì)將將模擬信號(hào)送入A/D轉(zhuǎn)換器,換算出某一時(shí)刻水塔水位的實(shí)際高度,然后拿它與標(biāo)定水位進(jìn)行比較,要求實(shí)時(shí)檢測(cè)水箱的液位高度,并與開始預(yù)設(shè)定值做比較,由單片機(jī)控制開關(guān)的開斷進(jìn)行液位的調(diào)整,最終達(dá)到液位的預(yù)設(shè)定值。檢測(cè)值若高于上限設(shè)定值時(shí),要求報(bào)警,斷開繼電器,控制水泵停止上水;檢測(cè)值若低于下限設(shè)定值,要求報(bào)警,開啟繼電器,控制水泵開始上水。現(xiàn)場(chǎng)實(shí)時(shí)顯示測(cè)量值,從而實(shí)現(xiàn)對(duì)水箱液位的監(jiān)控。
2.硬件設(shè)計(jì)
2.1 液位檢測(cè)電路
2.2 單片機(jī)最小系統(tǒng)
2.3 LED顯示電路
2.4 按鍵電路
2.5 報(bào)警電路
2.6 電源電路
我們組做的是按鍵電路、報(bào)警電路和電源電路 PCB板圖如下
3.軟件設(shè)計(jì)
3.1 主程序設(shè)計(jì)
系統(tǒng)主程序設(shè)計(jì):
ORG
0000H AJMP MAIN ORG
0060H MAIN: MOV P1, #FFH
;P1 P3口初始化置1 MOV
P3,#FFH JNB P1.3,AUT
;若手動(dòng)在自動(dòng)位置,跳到自動(dòng)模式子程序 AJMP MEN
;否則轉(zhuǎn)到手動(dòng)模式子程序 END
自動(dòng)模式子程序設(shè)計(jì)
AUT:NOP
;空命令 JNB P1.2 , LG
;水位高—LG JB
P1.1
LD,;水位沒低---LD CLR P3.1
;水位低報(bào)警
JB
P1.0, LDD
;水位未低低---LDD CLR P3.0
;水位低低報(bào)警 JNB 3.1
P1.6,Y1
;M1已啟動(dòng)—Y1 CLR P1.4
;否則啟動(dòng)M1 Y1: JNB P1.7 ,Y2
;M2已啟動(dòng)---Y2
CLR P1.5
;否則啟動(dòng)M2 Y2: ACALL DELAY
;延時(shí)1分鐘
AJMP AUT
;返回自動(dòng)模式
LDD: JNB P1.6 ,Y3
;單獨(dú)運(yùn)行M1(LDD〈水位〈LD)CLR P1.4 Y3: JB
P1.7 Y2 SETB P1.5 AJMP Y2 LG: CLR P3.2
;水位高報(bào)警 LD: AJMP MAIN
;返回主程序
手動(dòng)模式子程序設(shè)計(jì)
MEN: NOP JNB
P1.1 , MAIN
;水位高返回主程序 ACALL KEY CJNE A ,#FOH,NN
;有無鍵合 AJMP MEN NN:
JNB
ACC.4 ,HM1
JNB
ACC.5, HM2 JNB
ACC.6 ,DM1 JNB
ACC.7 ,DM2 AJMP MEN HM1: JNB
P1.6 ,MEN CLR
P1.4 AJMP MEN HM2: JNB
P1.7, MEN CLR
P1.5 AJMP MEN DM1: JB
P1.6, MEN SETB P1.4 AJMP MEN DM2: JB
P1.7, MEN SETB P1.5 AJMP MEN RET
3.2 子程序設(shè)計(jì)
3.2.1 鍵盤子程序設(shè)計(jì)
有無鍵合子程序:
KEY:
ACALL
KS1
;有無閉合 JNZ
LK1 ACALL
TIM AJMP
KEY
;無鍵閉合返回 LK1:
ACALL
TIM ACALL
TIM ACALL
KS1 JNZ
LK2
延時(shí)1S主程序:
T1M1:
MOV
R1, #F0H L4:
MOV
R2, #08H L1:
MOV
R3, #FAH L2:
MOV
R4, #FAH L1:
DJNZ
R4,L1 DJNZ
R3,L2 DJNZ
R2,L3 DJNZ
R1,L4 RET
3.2.2A/D轉(zhuǎn)換子程序設(shè)計(jì)
A/D模數(shù)轉(zhuǎn)換程序
入口參數(shù):30H---33H;出口參數(shù):BAI,SHI,GE CHANGE
CLRF BAI
CLRF SHI
CLRF GE
;先清除結(jié)果寄存器
MOV FW 31H
;
ADD WF 30H,1
MOV FW 32H
ADD WF 30H,1
MOV FW 33H
ADD WF 30H,1
RRF 30H,1
RRF 30H,0
MOV WF TEMP
MOV LW 64H
;減100,結(jié)果保留在W中
SUB WF TEMP,0
BTFSS
TATUS,C
;判斷是否大于100
GOTO
SHI_VAL
;否,轉(zhuǎn)求十位結(jié)果
MOVWF
TEMP
;是,差送回TEMP中
INC F BAI,1
;百位加1
GOTO
$-6
;返回繼續(xù)求百位的值 SHI_VAL
MOV LW 0AH
;減10,結(jié)果保留在W中
SUBWF
TEMP,0
BTFSS
STATUS,C
;判斷是否大于10
GOTO
GE_VAL
;否,轉(zhuǎn)去判斷個(gè)位結(jié)果
MOVWF
TEMP
;是,差送回TEMP中
INCF
SHI,1
;十位值加1
GOTO
$-6
;轉(zhuǎn)會(huì)繼續(xù)求十位的值 GE_VAL
MOVFW
TEMP
MOVWF
GE
RETURN 顯示程序
入口參數(shù):BAI,SHI,GE 出口參數(shù):無 DISPLAY MOV FW
BAI
CALL
TABLE
MOVWF
PORTD
BCF
PORTA,3
CALL
DELAY
CALL
DELAY
BSF
PORTA,3
MOVFW
SHI
CALL
TABLE
MOVWF
PORTD
BCF
PORTA,4
CALL
DELAY
CALL
DELAY
BSF
PORTA,4
MOVFW
GE
CALL
TABLE
MOVWF
PORTD
BCF
PORTA,5
CALL
DELAY
CALL
DELAY
BSF
PORTA,5
RETURN
;個(gè)位的值
;顯示百位
;顯示十位
;顯示個(gè)位
第三篇:基于單片機(jī)的時(shí)鐘控制器設(shè)計(jì)論文
單片機(jī)原理與應(yīng)用技術(shù)課程設(shè)計(jì)報(bào)告
基于單片機(jī)控制的時(shí)鐘控制器
專業(yè)班級(jí): _電氣XX班_ __ 姓
名:__ ___XXX__ ___ 時(shí) 間:2013/11/25~12/15 指導(dǎo)教師: XXXX XXX
2013年12月11日
基于單片機(jī)控制的時(shí)鐘控制器課程設(shè)計(jì)任務(wù)書
1。設(shè)計(jì)目的與要求
設(shè)計(jì)出一個(gè)基于單片機(jī)控制的時(shí)鐘控制器。通過向單片機(jī)輸入不同的指令可以實(shí)現(xiàn)24小時(shí)制時(shí)鐘的基本顯示和連續(xù)的調(diào)時(shí),調(diào)分和調(diào)秒的功能,同時(shí)又?jǐn)U展了整點(diǎn)報(bào)時(shí)功能。該電路硬件較為簡(jiǎn)單、計(jì)時(shí)精度高、可控性好,可以隨時(shí)調(diào)整和設(shè)定時(shí)間,并且調(diào)時(shí)間的誤差小,操作簡(jiǎn)單、通用性強(qiáng)。
(1)基本功能
<1>、顯示:可以顯示時(shí)、分和秒
<2>、調(diào)時(shí)功能:時(shí)(0-24)、分和秒(0-60)可以連續(xù)可調(diào)(2)性能:時(shí)間日誤差< 2秒(3)擴(kuò)展功能 <1>.增加整點(diǎn)報(bào)時(shí)功能 <2>.增加鬧鐘任意設(shè)定功能 2.設(shè)計(jì)內(nèi)容
(1)畫出電路原理圖,正確使用邏輯關(guān)系;(2)確定元器件及元件參數(shù);(3)進(jìn)行電路模擬仿真;(4)SCH文件生成與打印輸出; 3.編寫設(shè)計(jì)報(bào)告
寫出設(shè)計(jì)的全過程,附上有關(guān)資料和圖紙,有心得體會(huì)。4.答辯
在規(guī)定時(shí)間內(nèi),完成敘述并回答問題。
目錄
摘要...................................................................1 1.引言................................................................1 2.設(shè)計(jì)目的和要求......................................................1 3.總體設(shè)計(jì)方案........................................................1 3.1 方案設(shè)計(jì)要求.......................................................1 3.2 方案設(shè)計(jì)與論證.....................................................1 3.3 整體設(shè)計(jì)框圖.......................................................2 3.4 系統(tǒng)設(shè)計(jì)流程圖.....................................................2 4.設(shè)計(jì)原理分析........................................................3 4.1 外接晶振電路..................................................3 4.2 復(fù)位電路...........................................................3 4.3 數(shù)碼管顯示電路.....................................................3 4.4 鍵盤控制電路.......................................................4 4.5 Proteus仿真電路....................................................4 4.6 單片機(jī)程序的編寫...................................................5 4.7 電路的檢測(cè).........................................................5 4.8 CAD電路的連接及PCB電路布線并做出電路板............................5 4.9 軟件與硬件的調(diào)試...................................................5 5.總結(jié)與體會(huì)..........................................................5 6.附錄................................................................5 6.1 CAD電路連接圖......................................................5 6.2 PCB電路布線圖......................................................6 6.3 時(shí)鐘控制器參考源程序...............................................6 7.參考文獻(xiàn)...........................................................13
基于單片機(jī)控制的時(shí)鐘控制器 班級(jí):電氣115班 姓名:趙傳陽
摘要:近年來隨著計(jì)算機(jī)在社會(huì)領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機(jī)的應(yīng)用不斷地走向深入,由于它具有功能強(qiáng),體積小,功耗低,價(jià)格便宜,工作可靠,使用方便等特點(diǎn)。本次設(shè)計(jì)的時(shí)鐘控制器是以單片機(jī)(AT89C51)為核心,結(jié)合相關(guān)的元器件(3個(gè)2位共陽數(shù)碼管,一個(gè)發(fā)光二極管和一個(gè)蜂鳴器)和應(yīng)用程序(在Proteus軟件和KEIL編譯軟件),構(gòu)成相應(yīng)的應(yīng)用系統(tǒng)。
關(guān)鍵詞:?jiǎn)纹瑱C(jī) AT89C51 共陽數(shù)碼管 發(fā)光二極管 蜂鳴器 Proteus軟件 KEIL編譯軟件 中斷
1.引言
隨著科技的發(fā)展,電子技術(shù)得到了飛速的發(fā)展,尤其是單片機(jī)的應(yīng)用更為普遍。單片機(jī)的應(yīng)用已深入眾多技術(shù)領(lǐng)域,從軍事、工業(yè)到家庭日常生活,單片機(jī)因體積小、功能強(qiáng)、價(jià)格低廉而得到廣泛應(yīng)用。在此基礎(chǔ)上,越來越多各式各樣的時(shí)鐘也逐漸走進(jìn)我們的生活,它們?cè)O(shè)計(jì)精巧、方便、耐用、美觀,深得各領(lǐng)域的厚愛。隨著科技的進(jìn)步,基于單片機(jī)控制的時(shí)鐘控制器的出現(xiàn)則打破了人們對(duì)時(shí)鐘的傳統(tǒng)概念,因?yàn)閿?shù)字時(shí)鐘不僅可以通過數(shù)字直觀地顯示出時(shí)間,還可以定時(shí)發(fā)出各種聲、光、電信號(hào),以啟動(dòng)各種設(shè)備實(shí)現(xiàn)實(shí)時(shí)控制、時(shí)間順序控制。該課程設(shè)計(jì)既有一般時(shí)鐘的基本顯示和調(diào)整功能,同時(shí)又增加了整點(diǎn)報(bào)時(shí)功能,復(fù)位功能及實(shí)時(shí)時(shí)鐘控制功能。
2.設(shè)計(jì)目的與要求
設(shè)計(jì)出一個(gè)基于單片機(jī)控制的時(shí)鐘控制器。通過向單片機(jī)輸入不同的指令可以實(shí)現(xiàn)24小時(shí)制時(shí)鐘的基本顯示和連續(xù)的調(diào)時(shí),調(diào)分和調(diào)秒的功能,同時(shí)又?jǐn)U展了整點(diǎn)報(bào)時(shí)功能。該電路硬件較為簡(jiǎn)單、計(jì)時(shí)精度高、可控性好,可以隨時(shí)調(diào)整和設(shè)定時(shí)間,并且調(diào)時(shí)間的誤差小,操作簡(jiǎn)單、通用性強(qiáng)。
在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號(hào),主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時(shí)時(shí)鐘,即定時(shí)時(shí)間。
本文主要介紹用單片機(jī)為核心部件的時(shí)鐘控制器,本設(shè)計(jì)由單片機(jī)AT89C51芯片和3個(gè)兩位一體的共陽極的數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個(gè)單片機(jī)時(shí)鐘控制器。基本要求:1.顯示: 可以顯示時(shí)、分和秒
2.調(diào)時(shí)功能:時(shí)(0-24)、分和秒(0-60)可以連續(xù)可調(diào)并進(jìn)行校準(zhǔn) 3.能夠完成時(shí)間的顯示、定時(shí)鬧鐘、整點(diǎn)報(bào)時(shí)及復(fù)位功能
3.總體設(shè)計(jì)方案
3.1.方案設(shè)計(jì)要求
設(shè)計(jì)制作一個(gè)時(shí)鐘控制器,要求能實(shí)現(xiàn)基本走時(shí),并以數(shù)字形式顯示時(shí)、分、秒,采用24小時(shí)制,能實(shí)現(xiàn)校時(shí)、校分連續(xù)可調(diào)、整點(diǎn)報(bào)時(shí)功能、復(fù)位功能以及鬧鐘任意設(shè)定功能。3.2方案設(shè)計(jì)與論證
方案一:采用各種純數(shù)字芯片實(shí)現(xiàn)數(shù)字時(shí)鐘的設(shè)計(jì)。優(yōu)點(diǎn):各個(gè)模塊功能清晰,電路易于理解實(shí)現(xiàn)。缺點(diǎn):各個(gè)模塊功能已定不能進(jìn)行智能化調(diào)整,整體電路太龐大。
方案二:采用 FPGA模塊用硬件語言實(shí)現(xiàn)功能。優(yōu)點(diǎn):運(yùn)算速度快,走時(shí)精度高,算法簡(jiǎn)單。缺點(diǎn):成本高,大材小用。
方案三:采用單片機(jī)最小系統(tǒng)實(shí)現(xiàn)功能。優(yōu)點(diǎn):電路簡(jiǎn)單,能通過程序進(jìn)行隨機(jī)調(diào)整并擴(kuò)展功能,成本低,易于實(shí)現(xiàn)。缺點(diǎn):走時(shí)有一定的誤差。
經(jīng)過綜合考慮成本問題以及電路實(shí)現(xiàn)問題,選擇第三種方案實(shí)現(xiàn)設(shè)計(jì)要求。3.3整體設(shè)計(jì)框圖
整體設(shè)計(jì)框圖如圖1所示:
4.設(shè)計(jì)原理分析
4.1外接晶振電路
晶振連接電路圖如圖3,以12MHZ晶振為基準(zhǔn)。
圖3 外接晶振電路連接圖
XTAL1、XTAL2:XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時(shí),時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,如晶振為12MHz,時(shí)鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇,一般選用12MHZ晶振,電容取30PF左右。4.2復(fù)位電路
常用復(fù)位電路圖如圖4:
圖4 復(fù)位電路連接圖
在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24個(gè)振蕩周期)以上的高電平出現(xiàn)在此引:腳時(shí),將使單片機(jī)復(fù)位,只要這個(gè)腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0-P3口均置1引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR全部清零。4.3 數(shù)碼管顯示電路
二位一體共陽極數(shù)碼管電路連接圖如圖5,以PNP三極管為驅(qū)動(dòng)。
圖5 數(shù)碼管顯示電路連接圖
4.4 鍵盤控制電路
鍵盤控制電路如圖6。
圖6 時(shí)鐘按鍵控制電路圖
通過S1、S2、S3和S4四個(gè)按鍵,對(duì)時(shí)間進(jìn)行修改和鬧鐘的設(shè)置,S0控制鬧鐘的啟動(dòng)和停止。按下S4鍵顯示鬧鐘,松開后顯示時(shí)間;按下S1鍵進(jìn)入時(shí)間修改模式,再按S1鍵時(shí)間的時(shí)加1,按S3分加1,調(diào)整結(jié)束后按下S4恢復(fù)正常顯示;按下S2鍵進(jìn)入鬧鐘修改模式,再按S3鍵鬧鐘的時(shí)加1,按S3分加1,調(diào)整結(jié)束后按下S4恢復(fù)正常顯示。在按鍵按下和放開時(shí)會(huì)出現(xiàn)抖動(dòng)現(xiàn)象。通過延時(shí)程序,可以進(jìn)行去抖動(dòng)設(shè)計(jì)。4.5 Proteus仿真電路
整體電路連接圖如圖7:
圖7 整體電路連接圖
4.6 單片機(jī)程序的編寫
用KEIL編譯軟件進(jìn)行程序的設(shè)計(jì)、編譯并生成可執(zhí)行文件。4.7 電路的檢測(cè)
電路連接完畢后,應(yīng)用單片機(jī)程序燒錄工具進(jìn)行程序燒錄,然后單擊運(yùn)行按鈕進(jìn)行仿真,檢測(cè)電路是否有誤。
4.8 CAD電路的連接及PCB電路布線并做出電路板
待仿真電路檢測(cè)無誤后,則通過CAD軟件進(jìn)行電路圖的連接并對(duì)元件進(jìn)行封裝,確定無誤后生成PCB圖進(jìn)行電路的布線,之后做出電路板進(jìn)行元件的焊接。4.9 軟件與硬件的調(diào)試
單片機(jī)應(yīng)用系統(tǒng)的調(diào)試包括硬件和軟件兩部分,但是它們并不能完全分開。一般的方法是排除明顯的硬件故障,再進(jìn)行綜合調(diào)試,排除可能的軟件或硬件故障。
軟件調(diào)試是指用仿真軟件進(jìn)行仿真調(diào)試,驗(yàn)證系統(tǒng)的各項(xiàng)功能;硬件調(diào)試即軟件調(diào)試成功后,將程序下載至AT89C51芯片中,用焊接好的電路來進(jìn)行各項(xiàng)功能的驗(yàn)證與檢測(cè)。
需要特別注意的是軟件調(diào)試與硬件調(diào)試的差異,軟件調(diào)試只是初步的估測(cè),硬件的調(diào)試才是最真實(shí)的。
5總結(jié)與體會(huì)
經(jīng)過三周的實(shí)習(xí)設(shè)計(jì),我設(shè)計(jì)的時(shí)鐘控制器實(shí)現(xiàn)了它最基本功能,三個(gè)星期的緊張實(shí)習(xí),讓我獲益非淺,更加熟練的掌握了Proteus軟件、KEIL軟件及CAD軟件的應(yīng)用,使我看到了自己專業(yè)知識(shí)的淺薄與不足。通過本次的課程設(shè)計(jì),我對(duì)單片機(jī)這門課程有了更深的了解,單片機(jī)課程設(shè)計(jì)則是人生課程,我學(xué)到了很多課堂上無法學(xué)到的東西,懂得了學(xué)習(xí)的不容易,在以后的學(xué)習(xí)中我會(huì)更加努力的去學(xué)習(xí)和研究,以取得更好的成績(jī)。
6.附錄
6.1 CAD電路連線圖如圖8。
圖8 CAD電路連接圖
6.2 PCB電路布線圖如圖9。
圖9 PCB布線電路圖(注:未連線的端口用外接線連接)
6.3 時(shí)鐘控制器參考源程序
使用keil軟件編寫源程序 ORG 0000H LJMP START ORG 000BH LJMP TIME;********初始化********* START: MOV SP, #50H MOV 20H,#00H;定義秒
MOV 21H,#00H;定義分 MOV 22H,#00H;定義時(shí)
MSTOP1: MOV C,P1.3;P1.3為0時(shí)轉(zhuǎn)移 JNC MSTOP1 LCALL DELAY1;延時(shí)
MOV A,50H
INC 50H
CJNE A,#00H,HJ1
LJMP L0 HJ1: MOV C,P1.3 JNC MSTOP1 INC 22H;小時(shí)自加一 MOV A,22H CJNE A,#18H,GO12;MOV 22H,#00H;MOV 34H,#00H MOV 35H,#00H LJMP L0 L1: JB P1.1,L2;P1.1=1 MOV C,P1.1 JC L1 LCALL DELAY1;JC L1 MSTOP2: MOV C,P1.1 JNC MSTOP2 LCALL DELAY1;MOV C,P1.1 JNC MSTOP2 INC 21H;MOV A,21H CJNE A,#3CH,GO11;MOV 21H,#00H;MOV 32H,#00H MOV 33H,#00H LJMP L0 GO11: MOV B,#0AH DIV AB MOV 32H,B;MOV 33H,A;LJMP L0 GO12: MOV B,#0AH DIV AB MOV 34H,B;MOV 35H,A;LJMP L0 L2: JB P1.0,L0;P1.0 MOV C,P1.0 JC L2 LCALL DELAY1;MOV C,P1.0 JC L2 STOP1: MOV C,P1.0 JNC STOP1
小時(shí)計(jì)數(shù)循環(huán)
復(fù)位 時(shí)轉(zhuǎn)移 延時(shí);P1.1=0時(shí)轉(zhuǎn)移 延時(shí) 分鐘加一 分鐘計(jì)數(shù)循環(huán) 復(fù)位 將A的低4位存入32單元 將A的高4位存入33單元 將A的低4位存入34單元 將A的高4位存入35單元=1時(shí)轉(zhuǎn)移 延時(shí);P1.0=0時(shí)轉(zhuǎn)移
LCALL DELAY1;延時(shí) MOV C,P1.0 JNC STOP1
MOV 50H,#00H LJMP MAIN;*******設(shè)置鬧鐘******* SETATIME:LCALL DISPLAY2;調(diào)用DISPLAY2顯示鬧鐘 N0: LCALL DISPLAY2 MM2: JB P1.2,N1;P1.2=1時(shí)轉(zhuǎn)移 MOV C,P1.2 JC MM2 LCALL DELAY1;JC MM2 MSTOP3: MOV C,P1.2 JNC MSTOP3 LCALL DELAY1;
LJMP N0 HJ2: MOV C,P1.2 JNC MSTOP3 INC 24H;MOV A,24H CJNE A,#24,GO22;MOV 24H,#00H;MOV 38H,#00H MOV 39H,#00H LJMP N0 N1: JB P1.1,N2;P1.1 MOV C,P1.1 JC N1 LCALL DELAY1;JC N1 MSTOP4: MOV C,P1.1 JNC MSTOP4 LCALL DELAY1;MOV C,P1.1 JNC MSTOP4 INC 23H;MOV A,23H CJNE A,#60,GO21;MOV 23H,#00H;MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21: MOV B,#0AH DIV AB MOV 36H,B;MOV 37H,A;LJMP N0
延時(shí) =0時(shí)轉(zhuǎn)移 延時(shí) 小時(shí)加一 小時(shí)計(jì)數(shù)循環(huán) 復(fù)位 =1時(shí)轉(zhuǎn)移 延時(shí) =0時(shí)轉(zhuǎn)移 延時(shí) 分鐘加一 分鐘計(jì)數(shù)循環(huán) 復(fù)位 將A的低4位存入36單元 將A的高4位存入37單元
;P1.2 MOV A,50H INC 50H CJNE A,#00H,HJ2;P1.1
GO22: MOV B,#0AH DIV AB MOV 38H,B;將A的低4位存入38單元 MOV 39H,A;將A的高4位存入39單元 LJMP N0 N2: JB P1.0 ,N0;P1.0=1時(shí)轉(zhuǎn)移 MOV C,P1.0 JC N2 LCALL DELAY1;延時(shí) MOV C,P1.0 JC N2 STOP2: MOV C,P1.0 JNC STOP2 LCALL DELAY1 MOV C,P1.0 JNC STOP2
MOV 50H,#00H LJMP MAIN;*******鬧鐘判斷***************** TIMEPRO: MOV A,21H MOV B,23H CJNE A,B,BK;判斷定時(shí)鬧鐘的分鐘 MOV A,22H MOV B,24H CJNE A,B,BK;判斷定時(shí)鬧鐘的小時(shí) SETB 25H.0 MOV C,25H.0 LCALL TIMEOUT;調(diào)用TIMEOUT BK:RET;**************喇叭報(bào)警***************** TIMEOUT: X1: LCALL BZ;調(diào)用喇叭響應(yīng)程序 CLR 25H.0;調(diào)用喇叭響應(yīng)程序結(jié)束 LCALL DELAY;延時(shí) CLR 25H.0 LJMP DISPLAY1 BZ:MOV C,25H.1 MOV P1.6,C CLR P1.7 MOV R7,#0FFH;喇叭響應(yīng)時(shí)間 T2: MOV R6,#0FFH T3: DJNZ R6,T3 DJNZ R7,T2 SETB P1.7 RET;*************顯示鬧鐘時(shí)間************ LOOKATIME:LCALL DISPLAY2 MM: JNB P1.0,LOOKATIME LCALL DELAY1 LJMP MAIN DELAY1: MOV R4,#14H;時(shí)間延時(shí)
0
POP ACC RETI;********顯示子程序********** DISPLAY1: MOV R0,#30H MOV R3,#0FEH MOV A,R3 PLAY1: MOV P2,A MOV A,@R0;取要顯示的數(shù)據(jù) MOV DPTR,#DSEG1;指向字形段碼首地址 MOVC A,@A+DPTR CJNE R0,#34H,PA ORL A,#80H PA:CJNE R0,#32H,PB ORL A,#80H PB:CPL A;MOV P0,A;LCALL DL1 MOV P2,#0FFH MOV A,R3;RL A;JNB ACC.6,LD1 INC R0;MOV R3,A LJMP PLAY1 LD1: RET DISPLAY2: PUSH ACC;PUSH PSW MOV R0,#36H MOV R3,#0FBH MOV A,R3
PLAY2: MOV P2,A MOV A,@R0;MOV DPTR,#DSEG1;MOVC A,@A+DPTR CJNE R0,#38H,PP ORL A,#80H PP:CPL A;MOV P0,A;LCALL DL1;MOV P2,#0FFH MOV A,R3;RL A;JNB ACC.6,LD2 INC R0;MOV R3,A LJMP PLAY2;LD2: POP PSW POP ACC;RET;******DELAY*******
查表取字形段碼 指向P0口 判斷是否顯示到最低位 左移一位 緩沖器地址加一 保護(hù)現(xiàn)場(chǎng) 取要顯示的數(shù)據(jù) 指向字形段碼首地址 查表取字形段碼 指向P0口 調(diào)用DL1 判斷是否顯示到最低位左移一位 緩沖器地址加一 調(diào)用PLAY2 恢復(fù)現(xiàn)場(chǎng)
DL1: MOV R7,#20H DL: MOV R6,#20H DL6: DJNZ R6,$ DJNZ R7,DL RET DSEG1: DB 3FH,06H,5BH,4FH,66H;七段碼表 DB 6DH,7DH,07H,7FH,6FH END 7.參考文獻(xiàn)
[1].王建校,楊建國.51系列單片機(jī)及C51程序設(shè)計(jì).北京:科學(xué)出版社, 2002.[2].吳金戊, 沈慶陽等.8051單片機(jī)實(shí)踐與應(yīng)用.北京:清華大學(xué)出版社, 2002.[3].李建忠.單片機(jī)原理及應(yīng)用(第二版).西安:西安電子科技大學(xué)出版社, 2008.2.[4].張毅剛.新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)(第3版).哈爾濱: 哈爾濱工業(yè)大學(xué)出版社, 2006.10.[5].李學(xué)禮.基于Proteus的8051單片機(jī)實(shí)例教程.電子工業(yè)出版社出版時(shí)間, 2008.6.[6].百度文庫:http://wenku.baidu.com/view/a9243c18fad6195f312ba6d3.html
第四篇:基于單片機(jī)的時(shí)鐘控制器設(shè)計(jì)
時(shí)鐘控制器設(shè)計(jì)任務(wù)書
1.設(shè)計(jì)目的與要求
設(shè)計(jì)出一個(gè)用于數(shù)字時(shí)鐘的控制器,準(zhǔn)確地理解有關(guān)要求,獨(dú)立完成系統(tǒng)設(shè)計(jì),要求所設(shè)計(jì)的電路具有以下功能:
(1)顯示: 可以顯示時(shí)、分和秒
(2)調(diào)時(shí)功能:時(shí)(0-24)、分和秒(0-60)可以連續(xù)可調(diào)(3)時(shí)間日誤差< 2秒(4)增加整點(diǎn)報(bào)時(shí)功能(5)增加鬧鐘任意設(shè)定功能 2.設(shè)計(jì)內(nèi)容
(1)畫出電路原理圖,正確使用邏輯關(guān)系;(2)確定元器件及元件參數(shù);(3)進(jìn)行電路模擬仿真;(4)SCH文件生成與打印輸出;(5)PCB文件生成與打印輸出; 3.編寫設(shè)計(jì)報(bào)告
寫出設(shè)計(jì)的全過程,附上有關(guān)資料和圖紙,有心得體會(huì)。4.答辯
在規(guī)定時(shí)間內(nèi),完成敘述并回答問題。
目錄
1.引言…………………………………………………………………………-1-2 總體設(shè)計(jì)方案………………………………………………………………-1-2.1 設(shè)計(jì)思路…………………………………………………………………-1-2.2 方案確立…………………………………………………………………-1-2.3 設(shè)計(jì)方框圖………………………………………………………………-2-3 設(shè)計(jì)原理分析………………………………………………………………-2-3.1 系統(tǒng)硬件電路設(shè)計(jì) ……………………………………………………-2-3.2 主控器件AT89S51 ………………………………………………………-2-3.3 譯碼器74HC245 …………………………………………………………-3-3.4 顯示電路 …………………………………………………………………3-3.5 按鍵電路…………………………………………………………………-4-3.6 復(fù)位電路…………………………………………………………………-4-3.7 蜂鳴電路…………………………………………………………………-5-3.8 時(shí)鐘電路…………………………………………………………………-5-3.9 總體原理圖………………………………………………………………-5-3.10程序框圖…………………………………………………………………-5-4 結(jié)束語………………………………………………………………………-7-參考文獻(xiàn)………………………………………………………………………-8-附錄 1 電路總原理圖 ………………………………………………………-9-附錄 2 總程序………………………………………………………………-10-
基于單片機(jī)控制的時(shí)鐘控制器
摘要:本設(shè)計(jì)以Atmel公司的AT89S51單片機(jī)為控制系統(tǒng)的核心,模型采用單片機(jī)作為主控制器,以匯編語言為程序設(shè)計(jì)的基礎(chǔ),設(shè)計(jì)的一個(gè)用兩個(gè)四位一體數(shù)碼管串口顯示的時(shí)鐘控制電路,包含了時(shí)鐘控制電路的基本功能:數(shù)碼顯示,時(shí)間調(diào)整,鬧鐘設(shè)定,秒表顯示等,按照二十四小時(shí)循環(huán),具有調(diào)節(jié)方便,簡(jiǎn)單實(shí)用,可靠性強(qiáng)的優(yōu)點(diǎn),有很高的利用價(jià)值。關(guān)鍵詞:?jiǎn)纹瑱C(jī) AT89C51 74LS245 數(shù)碼管 引言
數(shù)字鐘是采用數(shù)字電路實(shí)現(xiàn)對(duì)時(shí)、分、秒及數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭、車站、碼頭、辦公室等公共場(chǎng)所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵罚捎跀?shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非常現(xiàn)實(shí)的意義。為了適應(yīng)時(shí)代的潮流,本設(shè)計(jì)采用AT89S51單片機(jī)為核心,使得計(jì)時(shí)的精度有了很大的提高,而且調(diào)節(jié)也變的簡(jiǎn)單實(shí)用,采用數(shù)字顯示也跟加的直觀方便。總體設(shè)計(jì)方案
2.1 設(shè)計(jì)思路
本設(shè)計(jì)采用AT89S51單片機(jī)為控制核心,產(chǎn)生精確的時(shí)鐘震蕩,來控制數(shù)碼管顯示電路來進(jìn)行數(shù)碼顯示,外圍電路主要有復(fù)位電路,震蕩電路,按鍵電路,顯示電路,蜂鳴電路組成;復(fù)位電路可及時(shí)的對(duì)單片機(jī)進(jìn)行復(fù)位,恢復(fù)到初始的狀態(tài),震蕩電路主要用于計(jì)數(shù),定時(shí),產(chǎn)生合適的波特率,按鍵電路主要是給人們提供一個(gè)合適的人機(jī)對(duì)話的界面,方便人們進(jìn)行實(shí)時(shí)的調(diào)節(jié),顯示電路主要用于數(shù)碼的顯示,蜂鳴電路用于鬧鈴設(shè)定等輔助功能。2.2 方案確立
本設(shè)計(jì)主要有包含了時(shí)鐘電路,按鍵掃描,顯示電路等幾個(gè)部分。由單片機(jī)實(shí)現(xiàn)時(shí)鐘功能單片機(jī)內(nèi)部具有定時(shí)器,可方便實(shí)現(xiàn)定時(shí)功能。按鍵電路:鍵盤分為矩陣式鍵盤掃描電路和獨(dú)立式按鍵電路。。矩陣式鍵盤電路,此類鍵盤是采用行列掃描方式,優(yōu)點(diǎn)是當(dāng)按鍵較多時(shí)可以降低占用單片機(jī)的I/O口數(shù)目,缺點(diǎn)是電路復(fù)雜且會(huì)加大編程難度。獨(dú)立按鍵電路,每個(gè)鍵單獨(dú)占有一根I/O接口線,每個(gè)I/O口的工作狀態(tài)互不影響,此類鍵盤采用端口直接掃描方式。缺點(diǎn)是當(dāng)按鍵較多時(shí)占用單片機(jī)的I/O數(shù)目較多,優(yōu)點(diǎn)是電路設(shè)計(jì)簡(jiǎn)單,且編程極其容易。由于該系統(tǒng)采用了常規(guī)鐘表式的校對(duì)方式,用鍵較少,系統(tǒng)資源足夠用,故采用了獨(dú)立按鍵電路。顯示電路分為:靜態(tài)顯示法與動(dòng)態(tài)顯示法,由于靜態(tài)顯示法需要數(shù)據(jù)鎖存器等硬件,接口復(fù)雜一些,又考慮到時(shí)鐘顯示只有6位,且系統(tǒng)沒有其它復(fù)雜的處理任務(wù),所以決定采用動(dòng)態(tài)顯示法。2.3 硬件設(shè)計(jì)方框圖
電路的設(shè)計(jì)以AT89S51單片機(jī)為核心,包含了按鍵電路,復(fù)位電路,震蕩電路,數(shù) 碼顯示電路,整點(diǎn)報(bào)時(shí)電路等一系列獨(dú)立環(huán)節(jié),下面介紹一下電路設(shè)計(jì)過程中的總體框圖,如圖1所示。
圖1 時(shí)鐘電路總體框圖 設(shè)計(jì)原理分析
用AT89S51單片機(jī)控制的數(shù)字時(shí)鐘電路,外接震蕩電路,按鍵電路,顯示電路,蜂鳴電路等:用單片機(jī)電路P0口來輸出7段碼數(shù)據(jù),P2.0~P2.5口作列掃描輸出;按鍵用P1口控制,分別用于調(diào)節(jié)時(shí),分,以及秒表和鬧鐘的設(shè)定;P1.7口接5V的小蜂鳴器,用于按鍵發(fā)音以及定時(shí)提醒,整點(diǎn)報(bào)時(shí)提醒等;采用74HC245作為數(shù)碼管的段碼驅(qū)動(dòng),為了提供共陽LED數(shù)碼管的列掃描驅(qū)動(dòng)電壓,用三極管8550做電源的驅(qū)動(dòng)輸出;采用12MHZ晶振,可提高秒計(jì)時(shí)的精確性;在軟件設(shè)計(jì)方面,應(yīng)完成時(shí)鐘控制電路的各項(xiàng)要求。
3.1 系統(tǒng)硬件電路設(shè)計(jì)
系統(tǒng)硬件電路主要組成:主控制器AT89S52、譯碼器74HC245、顯示電路、蜂鳴器電路,復(fù)位電路時(shí)鐘電路。3.2 主控器件AT89C51 AT89S51是一款低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,AT89S51在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。管腳如圖2所示。
圖2 DIP-40封裝89C51引腳圖
3.3譯碼器74LS245 74LS245是我們常用的芯片,用來驅(qū)動(dòng)led或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。當(dāng)89S51單片機(jī)的P0口總線負(fù)載達(dá)到或超過P0最大負(fù)載能力時(shí),必須接入74LS245等總線驅(qū)動(dòng)器。當(dāng)片選端/CE低電平有效時(shí),DIR=“0”,信號(hào)由 B 向 A 傳輸;(接收)DIR=“1”,信號(hào)由 A 向 B 傳輸;(發(fā)送)當(dāng)CE為高電平時(shí),A、B均為高阻態(tài)。P0口與74LS245輸入端相連,E端接地,保證數(shù)據(jù)線暢通。管腳如圖3所示。
圖3 74LS245管腳圖
3.4 顯示電路
LED顯示塊是由發(fā)光二極管顯示字段的顯示器件。這種顯示塊有共陰與共陽兩種結(jié)構(gòu)。共陰極LED顯示塊的發(fā)光二極管陰極共地,當(dāng)某個(gè)發(fā)光二極管的陽極為高電平時(shí),發(fā)光二極管點(diǎn)亮。共陽極LED顯示塊的放光二極管陽極并接。顯示塊與單片機(jī)接口非常容易,只要將一個(gè)8位并行輸出口語顯示塊的發(fā)光二極管引腳相連即可(AT89S51需要加上拉電阻)。此次電路采用2個(gè)4位共陽LED數(shù)碼管,從P0口輸出段碼,列掃描用P2.0~P2.7來實(shí)現(xiàn)。如圖4所示。
圖4 74LS245驅(qū)動(dòng)段碼顯示電路圖
3.5 按鍵電路
按鍵調(diào)節(jié)電路有四個(gè)獨(dú)立的按鍵接到P1口的P1.0—P1.3端口,控制著電路的調(diào)時(shí),調(diào)分以及秒表功能和鬧鐘的設(shè)定。具體電路如下圖5所示。
圖5 按鍵電路圖
3.6 復(fù)位電路
AT89S51單片機(jī)的復(fù)位電路,如圖5所示中左邊電路。在RESET輸入端出現(xiàn)高電平時(shí)實(shí)現(xiàn)復(fù)位和初始化。在震蕩器運(yùn)行的情況下,要實(shí)現(xiàn)復(fù)位操作,必須使RST引腳至少 保持兩個(gè)機(jī)器周期的高電平。在CPU在第二個(gè)機(jī)器周期內(nèi)執(zhí)行內(nèi)部復(fù)位操作,以后每一個(gè)機(jī)器周期重復(fù)一次,直至RST端電平變低復(fù)位期間不產(chǎn)生ALE信號(hào)。當(dāng)RST引腳返回低電平以后,CPU從0地址開始執(zhí)行程序。3.7 蜂鳴電路
蜂鳴器是廣泛應(yīng)用于各種電子產(chǎn)品的一種元器件,它用于提示、報(bào)警、音樂等許多應(yīng)用場(chǎng)合。三極管8550作蜂鳴器的驅(qū)動(dòng),增加了蜂鳴器的驅(qū)動(dòng)電流。蜂鳴器的正極性的一端接到三極管的集電極,另一端連接到地,三極管的基極由單片機(jī)的P1.7管腳控制,底電平時(shí)蜂鳴器響,高電平時(shí)不響。另外,蜂鳴器的聲音大小及音調(diào)可以通過調(diào)整P1.7管腳的置低時(shí)間及輸出的波形進(jìn)行控制。蜂鳴器的連接電路的原理圖如圖5所示。3.8 時(shí)鐘電路
AT89S51內(nèi)部片內(nèi)有一個(gè)由反相放大器構(gòu)成的振蕩電路,XTAL1和XTAL2分別為震蕩電路的輸入端和輸出端。時(shí)鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。在XTAL1和XTAL2引腳上外接定時(shí)元件,內(nèi)部震蕩電路就產(chǎn)生自己震蕩。定時(shí)元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。外部方式的時(shí)鐘電路,XTAL1接地,XTAL2接外部振蕩器。一般要求輸入方波信號(hào)的頻率低于33Mhz。本文設(shè)計(jì)的系統(tǒng)采用的是內(nèi)部方式的時(shí)鐘電路。如圖6所示。
圖6 時(shí)鐘電路原理圖
3.9 總體原理圖
見附錄1 3.10程序框圖
主程序如圖7所示首先是初始化部分,主要是計(jì)時(shí)單元清零,中斷初始化,啟動(dòng)定時(shí)器工作,然后是調(diào)用顯示子程序,接著是判斷有無按鍵。無按鍵則回到調(diào)用顯示子程序處;有按鍵,則執(zhí)行按鍵處理子程序,執(zhí)行完后回到調(diào)用顯示子程序處,重復(fù)循環(huán)。定時(shí)器T0中斷如圖8所示
圖7 主程序流程圖
圖8 中斷程序流程圖 結(jié)束語
三周實(shí)習(xí)很快就過去了,通過自行設(shè)計(jì)、焊接和調(diào)試一個(gè)單片機(jī)系統(tǒng),我熟悉了單片機(jī)基本的開發(fā)流程和單片機(jī)的深入學(xué)習(xí)。在完成這個(gè)設(shè)計(jì)的同時(shí),我復(fù)習(xí)了書本上的許多相關(guān)內(nèi)容,受益匪淺。因此我在獲得理論知識(shí)的同時(shí),實(shí)踐中也獲得了許多書本上沒有的東西。提高了調(diào)試以及查找并解決問題的能力,我深入了解了焊普通元件與電路元件的技巧、數(shù)字時(shí)鐘的工作原理及其它各電路元件的作用等。這些知識(shí)不僅在課堂上有效,對(duì)以后的學(xué)習(xí)工作有很大的指導(dǎo)意義,在日常生活中更是有著現(xiàn)實(shí)意義;也對(duì)自己的動(dòng)手能力是個(gè)很大的鍛煉。實(shí)踐出真知,縱觀古今,所有發(fā)明創(chuàng)造無一不是在實(shí)踐中得到檢驗(yàn)的。沒有足夠的動(dòng)手能力,就奢談在未來的科研尤其是實(shí)驗(yàn)研究中有所成就。最后,感謝老師對(duì)我們這次實(shí)習(xí)的辛勤指導(dǎo)和幫助。
參考文獻(xiàn)
[1] 李光飛,樓然苗,胡佳文編著.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo).北京:北京航空航天大學(xué)出版社.2004 [2] 黃仁欣主編.單片機(jī)原理及應(yīng)用技術(shù).北京: 清華大學(xué)出版社.2005.[3] 高吉祥主編.電子技術(shù)基礎(chǔ)實(shí)驗(yàn)與課程設(shè)計(jì).北京:電子工業(yè)出版社.2002 [4] 肖玲妮.印刷電路板設(shè)計(jì)教程.[M].北京:清華大學(xué)出版社,2003.[5] 康華光.電子技術(shù)基礎(chǔ).[M].北京;高等教育出版社,2006.[6] 余小平等.電子系統(tǒng)設(shè)計(jì).[M].北京:北京航空航天大學(xué)出版社,2007.附錄1: 11 電路總原理圖
附錄2: 總程序
ORG 0000H LJMP START ORG 000BH LJMP INIT0 START: MOV 70H,#0 MOV 71H,#0 MOV 72H,#0 MOV 73H,#0 MOV 74H,#0 MOV 75H,#0 MOV 76H,#0 MOV 77H,#0 MOV 78H,#0 MOV 79H,#0 MOV 7AH,#0 MOV 7BH,#0 MOV 7CH,#0 MOV 7DH,#0 MOV 7EH,#0 MOV 72H,#0AH;對(duì)連字符進(jìn)行裝值
MOV 75H,#0AH MOV 60H,#0 MOV 61H,#0 MOV 63H,#0 MOV 64H,#0 CLR P1.7 MOV TMOD,#01H;選擇定時(shí)器/計(jì)數(shù)器T0的方式1 MOV TL0,#0B0H;對(duì)低位賦初值 MOV TH0,#03CH;高位賦初值 SETB EA SETB ET0 SETB TR0 START1: LCALL SCAN LCALL KEYSCAN SJMP START1 DL1MS: MOV R6,#14H;延時(shí)1子程序 DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET DELAY: MOV R6,#10 D1: MOV R7,#30 DJNZ R7,$ DJNZ R6,D1 RET
DL20MS: ACALL SCAN;延時(shí)20ms子程序 ACALL SCAN ACALL SCAN RET
;整點(diǎn)報(bào)時(shí)將秒和分的單元與零比較 SCAN: MOV A,7EH;7F單元的內(nèi)容為0
CJNE A,79H,NEXT MOV A,7DH
CJNE A,7AH,NEXT SETB P1.7 AJMP NEXT1 NEXT: CLR P1.7 NEXT1:
MOV A,79H
CJNE A,#0,NEXT2 MOV A,78H
CJNE A,#0,NEXT2 SETB P1.7 LJMP NEXT3 NEXT2:CLR P1.7
;數(shù)碼管總顯示程序開始分兩部分
;校正時(shí)間和數(shù)碼管正常工作的顯示程序 NEXT3: MOV A,78H MOV B,#0AH
DIV AB;時(shí)間秒的十位送給A,時(shí)間秒的個(gè)位送B
MOV 71H,A;時(shí)間秒要顯示的十位
MOV 70H,B;時(shí)間秒要顯示的個(gè)位
MOV A,79H MOV B,#0AH
DIV AB;時(shí)間分的十位送給A,時(shí)間分的個(gè)位送B
MOV 74H,A;時(shí)間分要顯示的十位送地址
MOV 73H,B;時(shí)間分要顯示的個(gè)位送地址
MOV A,7AH MOV B,#0AH DIV AB;時(shí)間時(shí)的十位送給A,時(shí)間時(shí)的個(gè)位送B MOV 77H,A;時(shí)間時(shí)顯示的十位送地址
MOV 76H,B;時(shí)間時(shí)要顯示的個(gè)位送地址
MOV R1,#70H LCALL DL1MS JB P1.2,LAST HERE3:JNB P1.2,HERE3 INC 7EH MOV A,7EH
CJNE A,#3CH,LOOP3 MOV 7EH,#00H;調(diào)制鬧鈴的時(shí)間顯示 LOOP3: MOV DPTR,#TAB MOV R5,#0FEH MOV A,7DH MOV R3,#09H
MOV B,#10 SCAN1: MOV A,R5;數(shù)碼管正常工作的顯 DIV AB 示程序
MOV 64H,A MOV P2,A MOV 63H,B MOV A,@R1 MOV A,7EH MOV DPTR,#TAB
MOV B,#10 MOVC A,@A+DPTR;對(duì)字段表取值 DIV AB 顯示
MOV 61H,A MOV P0,A MOV 60H,B MOV A,R5 MOV P2,#0F7H LCALL DL1MS MOV A,60H INC R1 MOVC A,@A+DPTR MOV A,R5 MOV P0,A RL A LCALL DELAY MOV R5,A MOV P2,#0EFH DJNZ R3,SCAN1 MOV A,61H MOV P2,#00H MOVC A,@A+DPTR MOV P0,#00H MOV P0,A JB P1.3,QQ LCALL DELAY LCALL DL1MS MOV P2,#0DFH JB P1.3,QQ MOV P0,#40H HERE: JNB P1.3,HERE LCALL DELAY SJMP LOOP1 MOV P2,#0BFH
MOV A,63H QQ: LJMP LAST MOVC A,@A+DPTR LOOP1:JB P1.1,LOOP2 MOV P0,A LCALL DL1MS LCALL DELAY JB P1.1,LOOP2 MOV P2,#07FH HERE1:JNB P1.1,HERE1 MOV A,64H INC 7DH MOVC A,@A+DPTR MOV A,7DH
MOV P0,A CJNE A,#18H,LOOP2 LCALL DELAY MOV 7DH,#00H JB P1.3,LOOP4 LOOP2:JB P1.2,LOOP3 LCALL DL1MS 14 JB P1.3,LOOP4 HERE4:JNB P1.3,HERE4 LJMP LAST LOOP4:LJMP LOOP1 LAST: RET;“0~9”和“-”的字段表 TAB:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
;定時(shí)/計(jì)數(shù)器T0中斷程序 INIT0: PUSH ACC PUSH PSW CLR ET0 CLR TR0 MOV TL0,#0B0H MOV TH0,#03CH SETB TR0 INC 7BH MOV A,7BH CJNE A,#14H,OUTT0;50ms是否到20次,沒有到就繼續(xù)執(zhí)行50ms的延時(shí)
MOV 7BH,#00 INC 78H MOV A,78H CJNE A,#3CH,OUTT0;一秒的延時(shí)是否計(jì)到60次,沒有就繼續(xù)執(zhí)行
MOV 78H,#00 INC 79H MOV A,79H CJNE A,#3CH,OUTT0 MOV 79H,#00 INC 7AH MOV A,7AH CJNE A,#18H,OUTT0;60分鐘的延時(shí)是否計(jì)到24次,沒有就繼續(xù)執(zhí)行程序 MOV 7AH,#00 OUTT0: SETB ET0;啟動(dòng)定時(shí)器T0 POP PSW POP ACC RETI;按鍵處理程序 KEYSCAN:CLR EA
JNB P1.0,KEYSCAN0;P1.0有按鍵按下則跳轉(zhuǎn)到子程序
JNB P1.1,KEYSCAN1;P1.1有按鍵按下則跳轉(zhuǎn)到子程序
JNB P1.2,KEYSCAN2;P1.2有按鍵按下則跳轉(zhuǎn)到子程序
KEYOUT: SETB EA RET
KEYSCAN0:LCALL DL20MS;20ms的延時(shí)消抖
JB P1.0,KEYOUT WAIT0: JNB P1.0,WAIT0;判斷按鍵是否松手,松手就往下執(zhí)行程序 INC 7CH MOV A,7CH CLR ET0 CLR TR0
CJNE A,#04H,KEYOUT;按下第一次和第二次對(duì)時(shí)、分選定
MOV 7CH,#00;按下第三次時(shí)就啟動(dòng)計(jì)時(shí)
SETB ET0 SETB TR0 LJMP KEYOUT
KEYSCAN1:LCALL DL20MS;按鍵加一的程序
JB P1.1,KEYOUT WAIT1: JNB P1.1,WAIT1 MOV A,7CH
CJNE A,#03H,KSCAN11;如果功能鍵按下則對(duì)時(shí)加一調(diào)整 INC 78H MOV A,78H
CJNE A,#60,KEYOUT MOV 78H,#00 LJMP KEYOUT
KSCAN11: CJNE A,#02H,KSCAN12 INC 79H MOV A,79H
CJNE A,#60,KEYOUT;如果加到60則清零
MOV 79H,#00 LJMP KEYOUT KSCAN12:CJNE A,#01H,KEYOUT INC 7AH;如果功能鍵是按下第二次則對(duì)分進(jìn)行加一調(diào)整
MOV A,7AH CJNE A,#18H,KEYOUT MOV 7AH,#00 LJMP KEYOUT KEYSCAN2:LCALL DL20MS;延時(shí)消抖程序 JB P1.2,KEYOUT WAIT2: JNB P1.2,WAIT2;判斷是否放開按鍵
MOV A,7CH;如果功能鍵是按下第一次對(duì)時(shí)進(jìn)行減一 CJNE A,#03H,KSCAN22 DEC 78H MOV A,78H CJNE A,#00H,KEYOUT MOV 78H,#3BH LJMP KEYOUT KSCAN22:CJNE A,#02H,KSCAN23 DEC 79H MOV A,79H CJNE A,#00H,KEYOUT1 MOV 79H,#3BH LJMP KEYOUT KSCAN23:CJNE A,#01H,KEYOUT1 DEC 7AH MOV A,7AH;如果功能鍵是按下第二次則對(duì)分進(jìn)行減一 CJNE A,#00H,KEYOUT1 MOV 7AH,#17H LJMP KEYOUT1 KEYOUT1: SETB EA RET END
第五篇:基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
2014屆本科生畢業(yè)設(shè)計(jì)
分類號(hào):TP368.1
題目:基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
姓 名: 張建猛 學(xué) 號(hào) : 2010080870 學(xué) 院: 機(jī)械與電子工程學(xué)院 專 業(yè): 自動(dòng)化 指導(dǎo)教師職稱: 胡波 劉明
指導(dǎo)教師職稱: 助教(碩士)工程師
2014-05-11
摘 要
本文采用AT89C51單片機(jī)芯片為核心控制器件設(shè)計(jì)的交通燈控制器,該系統(tǒng)主要包括單片機(jī)最小系統(tǒng),按鍵,數(shù)碼管顯示,交通燈演示系統(tǒng)。系統(tǒng)主要具有有人行道,交通燈的基本功能,倒計(jì)時(shí),緊急情況處理,根據(jù)具體情況手動(dòng)控制等功能。通過AT89C51并接數(shù)碼管和發(fā)光二極管來實(shí)現(xiàn)交通燈的變化規(guī)律,P1口設(shè)置紅,綠燈點(diǎn)亮?xí)r間功能的實(shí)現(xiàn);紅綠燈循環(huán)點(diǎn)亮,倒計(jì)時(shí)剩余10秒時(shí)黃燈閃爍警示。本系統(tǒng)的研發(fā)周期短,可靠性高,實(shí)用性,操作簡(jiǎn)單,維護(hù)方便,擴(kuò)展功能強(qiáng)大。本系統(tǒng)軟硬件相結(jié)合,通過Proteus軟件仿真,基本實(shí)現(xiàn)了交通信號(hào)燈的模擬。
關(guān)鍵詞:AT89C51;數(shù)碼管;交通燈控制器
ABSTRACT In this paper, AT89C51 chip as the core control device design traffic light controller, the system includes smallest single-chip system, keyboard, digital display, traffic lights demonstration system.System mainly has a sidewalk, the basic functions of traffic lights, countdown, emergency treatment, according to the specific circumstances of manual control and other functions.And connected via AT89C51 LED digital tube and realized traffic lights change, P1 port settings of red, green lighting time function is implemented;traffic light cycle light, countdown 10 seconds remaining yellow flashing warning.The system development cycle is short, high reliability, practicality, simple operation, easy maintenance, expansion and powerful.This system combines hardware and software, Through the Proteus Software Simulation,the basic realization of traffic lights simulation.Keywords: AT89C51;System;Digital pipe;Traffic light controller
目錄
緒
論...........................................................................................................................1 1.整體方案設(shè)計(jì)...........................................................................................................2 1.1 方案分析.........................................................................................................2 1.2 方案確立.........................................................................................................3 2.系統(tǒng)的硬件設(shè)計(jì).......................................................................................................3
2.1設(shè)計(jì)原理及方法..............................................................................................3 2.2 AT89C51單片機(jī)最小系統(tǒng)..............................................................................4 2.2.1 復(fù)位電路..............................................................................................4 2.2.2 時(shí)鐘電路..............................................................................................5 2.2.2 EA腳的功能及接法.............................................................................6 2.3其它硬件模塊介紹及連接..............................................................................7
2.3.1 倒計(jì)時(shí)顯示模塊.................................................................................7
2.3.2 交通燈顯示模塊................................................................................8
2.3.3 按鍵控制模塊......................................................................................9 2.3.4 電源模塊............................................................................................10 3.系統(tǒng)的軟件設(shè)計(jì).....................................................................................................10
3.1系統(tǒng)相關(guān)參數(shù)計(jì)算........................................................................................10 3.1.1 T0的計(jì)數(shù)初值...................................................................................10 3.1.2 倒計(jì)時(shí)顯示的理論分析....................................................................10 3.1.2 交通燈狀態(tài)顯示的理論分析............................................................11 3.2系統(tǒng)主程序設(shè)計(jì)............................................................................................11 4.系統(tǒng)的 Proteus軟件仿真....................................................................................12 4.1 Proteus仿真圖............................................................................................12 4.2 Proteus仿真的結(jié)果分析............................................................................12 結(jié)束語.........................................................................................................................14 參考文獻(xiàn).....................................................................................................................14 致 謝.........................................................................................................................15 附錄:程序源代碼.....................................................................................................16
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
緒 論
隨著人口的迅速增長(zhǎng),道路資源的有限性和交通工具爆炸性的發(fā)展,城市交通正面臨著嚴(yán)峻考驗(yàn),因此造成日益嚴(yán)重的交通問題,每天的交通擁堵成了家常便飯但又不得不忍受。在這種情況下,與我國城市道路交通的實(shí)際情況相結(jié)合,開發(fā)出適合我們自身特點(diǎn)的智能信號(hào)燈控制系統(tǒng)已成為一個(gè)主要的任務(wù)。一個(gè)好的交通燈控制系統(tǒng),將給道路擁堵,違章行駛等方面給予技術(shù)創(chuàng)新。隨著電子技術(shù)的發(fā)展,采用單片機(jī)技術(shù),能夠智能管理交通燈,已成為目前廣泛使用的方法。
在人類的生活,工作環(huán)境中,交通扮演著極其重要的角色,人們的出行與交通時(shí)時(shí)刻刻打著交道。城市交通控制系統(tǒng)是基于城市交通信號(hào)控制技術(shù)為主導(dǎo)的發(fā)展,與汽車行業(yè)的發(fā)展并行。在其發(fā)展的不同階段,由于交通出現(xiàn)的各種矛盾,人們總是試圖把各個(gè)歷史階段的最新科技成果應(yīng)用到交通自動(dòng)控制中,從而促進(jìn)交通自動(dòng)控制技術(shù)不斷發(fā)展。
早在1850年,城市交叉路口處安全和擁堵問題引起人們的關(guān)注,全球第一個(gè)自動(dòng)交通燈誕生,打開城市交通控制的序幕。在1868年,英國工程師娜奕特在倫敦西部威斯敏斯特街口安裝一個(gè)紅色和綠色煤氣照明燈,用來控制交叉路口的馬車通行,但一次煤氣爆炸事故致使交通信號(hào)燈消失了近半個(gè)世紀(jì)。1914年,美國克利夫蘭,紐約和芝加哥重新出現(xiàn)的交通信號(hào)燈,他們使用電動(dòng)驅(qū)動(dòng),與現(xiàn)在意義的交通信號(hào)燈幾乎是一樣的。隨著時(shí)代的發(fā)展,各種運(yùn)輸方式和交通管制的需要,第一光名副其實(shí)的三色燈(紅,黃,綠)出生于1918年。它的周圍是三色圓形投影機(jī)被安裝在紐約市五號(hào)街一座高塔上,由于它的誕生,城市交通大大改善。
在近一個(gè)世紀(jì)的發(fā)展,道路交通信號(hào)控制系統(tǒng)經(jīng)歷了一個(gè)手動(dòng)到自動(dòng),從固定到靈活配時(shí),從無感應(yīng)控制到有感應(yīng)控制,從單點(diǎn)控制到干線控制,從區(qū)域控制到網(wǎng)絡(luò)控制的長(zhǎng)期過程。
交通網(wǎng)絡(luò)是城市的動(dòng)脈,是一個(gè)城市的生活經(jīng)濟(jì)水平,工業(yè)文明的象征。交通關(guān)系到人民對(duì)財(cái)產(chǎn),安全和時(shí)間相關(guān)的利益。憑借優(yōu)良科學(xué)的交通控制技術(shù)對(duì)資源物流和人們出行是非常有價(jià)值的,確保交通安全線的暢通,才能確保舒適的出行,物流按時(shí)到位,甚至是生命通道延伸。為了確保安全,高效的交通秩序,除了制定一系列的交通規(guī)則,而且還必須通過一定的技術(shù)手段來實(shí)現(xiàn)。隨著單片機(jī)和傳感器技術(shù)的迅速發(fā)展,自動(dòng)檢測(cè)領(lǐng)域發(fā)生了翻天覆地的變化,交通自動(dòng)檢測(cè)控制研究已經(jīng)取得了顯著的進(jìn)步,必將以其優(yōu)良的性能價(jià)格比,逐步取代傳統(tǒng)的交通控制措施。
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
1.整體方案設(shè)計(jì)
1.1 方案分析
交通燈一般設(shè)在城市道路的十字路口,可以分為東西方向(主干道)和南北方向(次干道),東西南北四個(gè)路口均設(shè)有有紅綠黃3種燈和1個(gè)二位數(shù)碼顯示管。在某一時(shí)刻規(guī)定只有一個(gè)方向可以通行,另一方向被禁行,狀態(tài)經(jīng)過一定的過渡時(shí)間,將通行方向和禁行方向相互對(duì)換。其具體狀態(tài)如下圖所示。(白色表示滅)。通過具體的路口交通燈狀態(tài)的演示分析我們可以把這四個(gè)狀態(tài)歸納如圖1:
圖1 交通燈狀態(tài)圖
·東西方向(主干道)紅燈滅,同時(shí)綠燈亮,南北方向(次干道)黃燈滅,同時(shí)紅燈亮,倒計(jì)時(shí)顯示60秒。在此種狀態(tài)下,東西方向(主干道)允許通行,南北方向(次干道)禁止通行。
·東西方向(主干道)綠燈滅,同時(shí)黃燈閃爍,南北方向(次干道)紅燈亮,倒計(jì)時(shí)顯示10秒。在此種狀態(tài)下,除了正在通行中的車輛外,其他所有的車輛都應(yīng)該等待狀態(tài)轉(zhuǎn)換。
·南北方向(次干道)紅燈滅,同時(shí)綠燈亮,東西方向(主干道)黃燈滅,同時(shí)紅燈亮,倒計(jì)時(shí)50秒。在此種狀態(tài)下,東西方向(主干道)禁止通行,南北向允許通行。
·南北方向(次干道)綠燈滅,同時(shí)黃燈閃爍,東西方向(主干道)紅燈亮,倒計(jì)時(shí)10秒。在此種狀態(tài)下,除了正在通行中的車輛外,其他所有車輛都應(yīng)該等待狀態(tài)轉(zhuǎn)換。
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
1.2 方案確立
本設(shè)計(jì)系統(tǒng)以AT89C51單片機(jī)為控制核心,連接成最小系統(tǒng),由倒計(jì)時(shí)顯示模塊、交通燈顯示模塊、按鍵開關(guān)控制模塊組成。軟件部分使用的是C 語言編程,由軟件設(shè)置交通燈的初始時(shí)間,東西方向(主干道)通行60秒,南北方向(支干道)通行50秒,數(shù)碼管采用動(dòng)態(tài)顯示,P0口送字形碼,P2口送字位選通信號(hào),通過單片機(jī)的P1口控制各種信號(hào)燈的點(diǎn)亮與熄滅,采用中斷方式實(shí)現(xiàn)各按鍵的功能。
2.系統(tǒng)的硬件設(shè)計(jì)
2.1 設(shè)計(jì)原理及方法
本設(shè)計(jì)采用模塊化的分層次設(shè)計(jì)方法,以單片機(jī)AT 89C 51為控制核心,連接成最小系統(tǒng),由倒計(jì)時(shí)顯示模塊、交通燈顯示模塊、按鍵開關(guān)控制模塊等組成。系統(tǒng)的總體框圖如下所示。
圖2 交通燈控制器框圖
本系統(tǒng)采用AT89C51單片機(jī)及外圍器件構(gòu)成最小控制系統(tǒng),12個(gè)發(fā)光二極管分成4組紅綠黃三色燈構(gòu)成信號(hào)燈指示模塊,4個(gè)數(shù)碼管東西南北方向各一個(gè)構(gòu)成倒計(jì)時(shí)顯示模塊,通過四個(gè)按鍵K0、K1、K2、K3模擬控制交通燈東西通行,南北通行,返回,緊急情況各個(gè)交通燈工作情況之間相互轉(zhuǎn)化。
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
2.2 AT89C51單片機(jī)最小系統(tǒng)
單片機(jī)最小系統(tǒng)一般有晶振、復(fù)位、電源、系統(tǒng)的輸入控制、輸出顯示,以及其他外圍模塊(如通信、數(shù)據(jù)采集等)等模塊組成。2.2.1 復(fù)位電路
單片機(jī)復(fù)位電路原理是在單片機(jī)的復(fù)位引腳RST上外接電阻和電容,實(shí)現(xiàn)上電復(fù)位。當(dāng)復(fù)位電平持續(xù)兩個(gè)機(jī)器周期以上時(shí)復(fù)位有效。復(fù)位電平的持續(xù)時(shí)間必須大于單片機(jī)的兩個(gè)機(jī)器周期。具體數(shù)值可以由RC電路計(jì)算出時(shí)間常數(shù)。復(fù)位電路由手動(dòng)復(fù)位和上電復(fù)位兩部分組成。
(1)上電復(fù)位電路要求接通電源后,通過外部電容充電來實(shí)現(xiàn)單片機(jī)自動(dòng)復(fù)位操作。上電瞬間RESET引腳獲得高電平,隨著電容的充電,RERST引腳的高電平將逐漸下降。RERST引腳的高電平只要能保持足夠的時(shí)間(2個(gè)機(jī)器周期),單片機(jī)就可以進(jìn)行復(fù)位操作。
(2)手動(dòng)復(fù)位:手動(dòng)復(fù)位就是在復(fù)位電容上并聯(lián)一個(gè)開關(guān),當(dāng)開關(guān)按下時(shí)電容被放電、RST也被拉到高電平,而且由于電容的充電,會(huì)保持一段時(shí)間的高電平來使單片機(jī)復(fù)位。單片機(jī)復(fù)位期間不產(chǎn)生ALE和PSEN信號(hào),即ALE=1和PSEN=1。這表明單片機(jī)復(fù)位期間不會(huì)有任何取指操作。
圖3 單片機(jī)手動(dòng)復(fù)位電路
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
2.2.2 時(shí)鐘電路
單片機(jī)系統(tǒng)里都有晶振,在單片機(jī)系統(tǒng)里晶振作用非常大,全稱叫晶體振蕩器,它結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生單片機(jī)所需的時(shí)鐘頻率,單片機(jī)晶振提供的時(shí)鐘頻率越高,那么單片機(jī)運(yùn)行速度就越快,單片機(jī)的一切指令的執(zhí)行都是建立在單片機(jī)晶振提供的時(shí)鐘頻率。單片機(jī)晶振的作用是為系統(tǒng)提供基本的時(shí)鐘信號(hào)。單片機(jī)的時(shí)鐘電路由外接的一只晶振和兩只起振電容,以及單片機(jī)內(nèi)部的時(shí)鐘電路組成,晶振的頻率越高,單片機(jī)處理數(shù)據(jù)的速度越快,系統(tǒng)功耗也會(huì)相應(yīng)增加,穩(wěn)定性也會(huì)下降。
單片機(jī)的時(shí)鐘電路設(shè)計(jì)有兩種方式,一種是內(nèi)部時(shí)鐘方式,一種是外部時(shí)鐘方式。
在內(nèi)部時(shí)鐘方式下單片機(jī)內(nèi)部的高增益、反相放大器通過XTAL1、XTAL2外接作為反饋元件的外部晶體管振蕩器與電容組成的并聯(lián)諧振回路構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,向內(nèi)部時(shí)鐘電路提供振蕩時(shí)鐘。振蕩器的頻率主要取決于晶體的振蕩頻率。外部時(shí)鐘方式是把外部已有的時(shí)鐘信號(hào)引入到單片機(jī)內(nèi)。此方式常用于多片單片機(jī)同時(shí)工作,以便于各單片機(jī)的同步。一般要求外部信號(hào)高電平的持續(xù)時(shí)間大于20μs,且為頻率低于12MHz的方波。本設(shè)計(jì)采用內(nèi)部時(shí)鐘方式,單片機(jī)系統(tǒng)常用的晶振頻率有6MHz、11.0592MHz、12MHz、本系統(tǒng)采用11.0592MHz晶振,電容選22pF或30pF均可。
圖4 單片機(jī)時(shí)鐘電路
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
2.2.2 EA腳的功能及接法
AT89C51 單片機(jī)的EA/VPP(31 腳)是內(nèi)部和外部程序存儲(chǔ)器的選擇管腳。當(dāng)EA 保持高電平時(shí),單片機(jī)訪問內(nèi)部程序存儲(chǔ)器;當(dāng)EA 保持低電平時(shí),則不管是否有內(nèi)部程序存儲(chǔ)器,只訪問外部存儲(chǔ)器。由于現(xiàn)在單片機(jī)內(nèi)部的flash容量都很大,因此基本都是從內(nèi)部的存儲(chǔ)器讀取程序,即不需要外接ROM來存儲(chǔ)程序,因此,EA腳必須接高電平。
圖5 單片機(jī)最小系統(tǒng)
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
2.3 其它硬件模塊介紹及連接 2.3.1 倒計(jì)時(shí)顯示模塊
系統(tǒng)要求南北和東西方向的信號(hào)燈時(shí)間不一樣,所以就利用單片機(jī)的P0口送出數(shù)據(jù)的段碼,位選信號(hào)用P2口送出,用動(dòng)態(tài)掃描的方法顯示東西、南北的倒計(jì)時(shí)間。7段數(shù)碼管一般由8個(gè)發(fā)光二極管組成,其中由7個(gè)細(xì)長(zhǎng)的發(fā)光二極管組成數(shù)字顯示,另外一個(gè)圓形的發(fā)光二極管顯示小數(shù)點(diǎn)。當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆畫發(fā)光。控制相應(yīng)的二極管導(dǎo)通,就能顯示出各種字符。本設(shè)計(jì)采用共陰數(shù)碼管,需要接上470歐上拉電阻以提供足夠大的電流來驅(qū)動(dòng)數(shù)碼管,數(shù)碼管的每段的電流是約10毫安。
圖6 數(shù)碼管顯示模塊
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
2.3.2 交通燈顯示模塊
本系統(tǒng)利用單片機(jī)的P1口來驅(qū)動(dòng)和控制各種信號(hào)燈的燃亮和燃亮?xí)r間,在實(shí)際中,交通燈的信號(hào)燈需要用高電壓控制,在這里我們只是模擬一下它的控制信號(hào),所以我們就只用單片機(jī)的信號(hào)引腳直接來控制發(fā)光二極管。發(fā)光二極管是半導(dǎo)體二極管的一種,可以把電能轉(zhuǎn)化成光能,常簡(jiǎn)寫為L(zhǎng)ED。發(fā)光二極管與普通二極管一樣是由一個(gè)PN結(jié)組成,也具有單向?qū)щ娦浴.?dāng)給發(fā)光二極管加上正向電壓后,從P區(qū)注入到N區(qū)的空穴和由N區(qū)注入到P區(qū)的電子,在PN結(jié)附近數(shù)微米內(nèi)分別與N區(qū)的電子和P區(qū)的空穴復(fù)合,產(chǎn)生自發(fā)輻射的熒光。不同的半導(dǎo)體材料中電子和空穴所處的能量狀態(tài)不同。當(dāng)電子和空穴復(fù)合時(shí)釋放出的能量多少不同,釋放出的能量越多,則發(fā)出的光的波長(zhǎng)越短。常用的是發(fā)紅光、綠光或黃光的二極管。發(fā)光二極管的反向擊穿電壓約5伏。它的正向伏安特性曲線
很陡,使用時(shí)必須串聯(lián)限流電阻以控制通過管子的電流。
圖7 交通燈模塊
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
2.3.3 按鍵控制模塊
本系統(tǒng)設(shè)置了有4個(gè)鍵:K0鍵,K1鍵,K2鍵,K3鍵。每個(gè)按鍵一端接地,另一端接上二極管。低電平有效,當(dāng)按鍵按下端口接地,單片機(jī)捕獲到低電平,從而得到相應(yīng)的輸入信息。本系統(tǒng)采用了二極管做開關(guān),是為了防止有一按鍵被按下3根線同時(shí)被低,中斷無效。二極管在正向電壓作用下電阻很小,處于導(dǎo)通狀態(tài),相當(dāng)于一只接通的開關(guān);在反向電壓作用下,電阻很大,處于截止?fàn)顟B(tài),如同一只斷開的開關(guān)。利用二極管的開關(guān)特性,可以組成各種邏輯電路。
程序開始運(yùn)行先東西段通行、南北段禁止60s,后南北段通行、東西段禁止50s,依此循環(huán)。系統(tǒng)分三種工作模式:南北通行模式、東西通行模式、返回模式、緊急情況模式,并且通過四個(gè)按鍵K0、K1、K2、K3實(shí)現(xiàn)之間的相互轉(zhuǎn)化。
圖8 按鍵控制模塊
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
2.3.4 電源模塊
單片機(jī)工作時(shí)需要的+5V電壓,所以在設(shè)計(jì)電源電路時(shí),需要一個(gè)電子元件能提供+5V電壓,由于78L05能夠提供5V電壓的三端穩(wěn)壓電源,78L05一腳為電源輸入端,二腳為公共接地端,三腳即為我們所需要的+5V電壓輸出端.本系統(tǒng)采用典型的78L05提供電壓的電路,即在78L05的1腳和公共接地端(即2腳)之間接入0.3μF的電容,在公共接地端和三腳+5V電壓輸出端之間接入0.1μF的電容.圖9 電源模塊
3.系統(tǒng)的軟件設(shè)計(jì)
3.1 系統(tǒng)相關(guān)參數(shù)計(jì)算 3.1.1 T0的計(jì)數(shù)初值
T0的計(jì)數(shù)初值:X=216-12*50*1000/12=15536=3CB0H 3.1.2 倒計(jì)時(shí)顯示的理論分析
倒計(jì)時(shí)顯示的理論分析:利用定時(shí)器中斷,設(shè)TH0=TH1=(65536-50000)/256,即每0.05秒中斷一次。每到第20次中斷即過了20*0.05秒=1秒時(shí),使時(shí)間的計(jì)數(shù)值減1,便實(shí)現(xiàn)了倒計(jì)時(shí)的功能。
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
3.1.2 交通燈狀態(tài)顯示的理論分析
狀態(tài)燈顯示的理論分析:黃燈閃爍同樣可以利用定時(shí)器中斷。每到第10次中斷即過了10*0.05秒=0.5秒時(shí),使黃燈標(biāo)志位反置,即可讓黃燈1秒閃爍一次。
3.2 系統(tǒng)主程序設(shè)計(jì)
本系統(tǒng)采用AT89C51單片機(jī)實(shí)現(xiàn)交通燈的控制,程序的編寫用C語言來完成。系統(tǒng)控制程序可以分為若干模塊:初始化程序,按鍵開關(guān)控制程序,交通燈轉(zhuǎn)換控制程序,LED數(shù)碼管顯示程序,按鍵消抖動(dòng)程序,延時(shí)程序,中斷服務(wù)子程序等。系統(tǒng)相應(yīng)的程序流程如圖所示。
圖10 程序流程圖
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
4.系統(tǒng)的 Proteus軟件仿真
4.1 Proteus仿真圖
交通燈控制系統(tǒng)的仿真是通過 proteus 軟件實(shí)現(xiàn)的交通燈控制系統(tǒng)仿真效果,仿真如下圖9所示:
圖11 仿真圖
4.2 Proteus仿真的結(jié)果分析
Proteus仿真實(shí)現(xiàn)東西方向和南北方向的十字路口的車輛相互交替通過,東西方向(主干道)每次通行時(shí)間設(shè)置為60秒、南北方向(次干道)通行時(shí)間設(shè)置為50秒。同時(shí)可以實(shí)現(xiàn)紅燈、黃燈、綠燈各狀態(tài)之間的相互轉(zhuǎn)換,黃燈閃爍時(shí)間設(shè)置為10秒,數(shù)碼管可以準(zhǔn)確進(jìn)行倒計(jì)時(shí)顯示。按下東西放行鍵K0,東西方向(主干道)綠燈亮,南北方向(次干道)紅燈亮;按下南北放行鍵K1,南北方向(次干道)綠燈亮,東西方向(主干道)紅燈亮;無論在任何時(shí)候按下返回鍵K2,該控制系統(tǒng)都將返回到初始狀態(tài);若遇緊急情況,按下緊急情況按鍵K3,東西南北方向都亮紅燈,實(shí)現(xiàn)主干道和支干道全部禁止通行;模擬了控制交通燈東西方向(主干道)通行,南北方向(次干道)通行,返回,緊急情況各個(gè)交通燈工作情況之間相互轉(zhuǎn)化,實(shí)現(xiàn)了課程設(shè)計(jì)的要求。宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
結(jié)束語
通過這次畢業(yè)設(shè)計(jì),使我受益匪淺。使我在軟硬件結(jié)合的綜合運(yùn)用能力上有了進(jìn)一步的提升,對(duì)課堂上所學(xué)的單片機(jī)知識(shí)有了進(jìn)一步的加深和鞏固,在C語言的掌握方面也向前邁了一大步,在老師和同學(xué)的幫助下,提高了個(gè)人分析解決實(shí)際問題的綜合能力以及協(xié)同合作的能力,同時(shí)還鍛煉了我查閱資料的能力、動(dòng)手能力、發(fā)現(xiàn)問題、解決問題的能力。面對(duì)電腦搜索資料,一點(diǎn)點(diǎn),一塊塊的電路慢慢拼成完整的電路經(jīng)過一次次的反復(fù)修改終于設(shè)計(jì)出了屬于自己的程序和電路,雖然還有諸多不足之處,不過使自己真正的體會(huì)到了探索事物的奧秘的快樂,同時(shí)自己也更深入的了解到了單片機(jī)的巨大的潛力,雖然有的時(shí)候可能遇到了一些困難,但是我最終解決了,我也會(huì)感覺到成功給我?guī)淼南矏偅抑牢以趯I(yè)知識(shí)上的掌握還是遠(yuǎn)遠(yuǎn)不夠的,我還要更加努力的去學(xué)習(xí),提高自己了實(shí)踐能力。
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
參考文獻(xiàn)
[1] 楊素行.模擬電子技術(shù)[M].北京:高等教育出版社.2006 [2] 余孟嘗.?dāng)?shù)字電子技術(shù)[M].北京:高等教育出版社. 2006 [3] 邱關(guān)源,羅先覺.電路[M].北京:高等教育出版社.2011 [4] 張毅剛.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社.2011 [5] 凌志浩.AT89C52單片機(jī)原理與接口技術(shù)[M].北京:高等教育出版社.2011 [6] 郭循釗,鄺帆.基于單片機(jī)的多功能交通燈控制系統(tǒng)設(shè)計(jì)與仿真實(shí)現(xiàn)[J].公路交通技術(shù).2010 [7] 劉日華,宋海.基于單片機(jī)的交通燈設(shè)計(jì)[J].科技致富向?qū)В?012 [9] 高文慶,呂英英. 基于AT89C51單片機(jī)的數(shù)字秒表設(shè)計(jì)[J]. 電腦知識(shí)與技術(shù).2012 [10] 譚浩強(qiáng)著,C程序設(shè)計(jì) 第三版[M].清華大學(xué)出版社.2006 [11] 彭虎,周佩玲. 微機(jī)原理與接口技術(shù)[M].電子工業(yè)出版社.2011 [12] GUO Haili.Design of Traffic Light Control System Based on Proteus and Single-chip Computer.Journal of Hengshui University[J].2012 [13] Tang Jing-nan, Qin Shen .Development and Examples of 51 Microcontroller's C Language [M].Posts & Telecom Press.2008
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
致 謝
本畢業(yè)設(shè)計(jì)在胡波和劉明老師的親切關(guān)懷和悉心指導(dǎo)以及同學(xué)們的熱心幫助下完成的。感謝他們?cè)诖舜萎厴I(yè)設(shè)計(jì)過程中給予我的悉心指導(dǎo)與各方面的幫助,他們給了我許多非常有益的建議和意見,使我在思路上得到了很大的啟發(fā),從中認(rèn)識(shí)到了自己存在的不足,并且學(xué)到了很多非常寶貴的知識(shí)。同時(shí)也要感謝系里其它同學(xué)和我的朋友在設(shè)計(jì)中給我提供的幫助和支持。總的來說,這次設(shè)計(jì)給了我一個(gè)很好的鍛煉機(jī)會(huì),讓我學(xué)到了很多東西,讓我將自己所掌握的理論知識(shí)切實(shí)運(yùn)用于工作和生活實(shí)踐中,這不僅有利于加深對(duì)書本知識(shí)的理解和鞏固,而且在很大程度上提高了我們?cè)诶碚撝R(shí)的指導(dǎo)下觀察、分析和解決問題的能力。最后,再次向所有幫助過我的老師、同學(xué)表示衷心的感謝!謝謝你們!宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
附錄:程序源代碼
/*#include
code 宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
{ uchar i;
while(ms--){ {} for(i=0;i<200;i++)}
} /*中斷0處理程序*/ void int0(void)interrupt 0 { EA=0;/*CPU禁止響應(yīng)一切中斷*/ P1=0xF6,P0=duanma[0];/*東西南北方向均紅燈亮,P0口輸出0*/
{ P2=weima[0],P0=duanma[(SN_G+Y)%10];/*南北方向數(shù)碼管顯示可通行 while(1)/*無條件循環(huán)*/ 時(shí)間的個(gè)位*/ delayms(10);/*延時(shí)*/
P2=weima[1],P0=duanma[(SN_G+Y)/10];/*南北方向數(shù)碼管顯示可通行 delayms(10);/*延時(shí)*/ 時(shí)間的十位*/ P2=weima[2],P0=duanma[(WE_G+Y)%10];/*東西方向數(shù)碼管顯示可通行時(shí)間的個(gè)位*/ delayms(10);/*延時(shí)*/
P2=weima[3],P0=duanma[(WE_G+Y)/10];/*東西方向數(shù)碼管顯示可通行時(shí)間的十位*/
/*設(shè)置南北方向通行時(shí)間*/ if(K0==0)/*P3^7=0*/ { delayms(10);/*延時(shí)*/ 17 宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
delayms(20);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(K0==0)*/ { } SN_G++;/*南北方向綠燈時(shí)間+1*/ if(SN_G==100)SN_G=0;/*由于使用的是兩位數(shù)碼管,當(dāng)南北方向綠燈時(shí)間加到100后清零*/ }
} /*設(shè)置東西方向通行時(shí)間*/ if(K1==0)/*P3^6=0*/ { { while(K0==0)/*當(dāng)松開K0開關(guān)時(shí),跳出空循環(huán),執(zhí)行后面的程序 delayms(20);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(K1==0){ while(K1==0)/*當(dāng)松開K1開關(guān)時(shí),跳出空循環(huán),執(zhí)行后面的程序*/ { } WE_G++;/*東西方向綠燈時(shí)間+1*/ if(WE_G==100)WE_G=0;/*由于使用的是兩位數(shù)碼管,當(dāng)東西方向綠燈時(shí)間加到100后清零*/ }
} /*返回*/ if(K3==0)/*P3^5=0*/ delayms(20);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(K3==0){ { 18 宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
while(K3==0)/*當(dāng)松開K3開關(guān)時(shí),跳出空循環(huán),執(zhí)行后面的程
{ } count=0;/*清零*/ k=0;/*南北方向通車,東西方向不通車*/ SN=SN_G,WE=SN_G+Y;/*南北方向顯示時(shí)間為南北方向綠燈通行序*/ 時(shí)間,東西方向顯示時(shí)間為南北方向綠燈通行時(shí)間加黃燈閃亮?xí)r間*/ light();/*調(diào)用交通燈函數(shù)*/
led();/*調(diào)用數(shù)碼管函數(shù)*/ EA=1;/*CPU開放總中斷*/
break;/*跳出*/ }
} } } /*中斷1處理程序*/ {
P1=0xF6,P0=duanma[0];/*東西南北方向均紅燈亮,P0口輸出0*/ TR0=!TR0;/*計(jì)數(shù)器停止工作*/ {/*數(shù)碼管掃描程序,*/ P2=weima[0];/*顯示南北方向個(gè)位*/ delayms(10);/*延時(shí)*/ delayms(10);/*延時(shí)*/ P2=weima[2];/*顯示東西方向個(gè)位*/ delayms(10);/*延時(shí)*/ P2=weima[3];/*顯示東西方向十位*/ delayms(10);/*延時(shí)*/ /*返回*/ EA=0;/*CPU禁止響應(yīng)一切中斷*/ while(1)/*無條件循環(huán)*/
void int1(void)interrupt 2 P2=weima[1];/*顯示南北方向十位*/ if(K3==0)/*P3^5=0*/ { 19 宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
delayms(20);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/
if(K3==0){ while(K3==0)/*當(dāng)松開K3開關(guān)時(shí),跳出空循環(huán),執(zhí)行后面的程序*/
{ } TR0=!TR0;/*啟動(dòng)計(jì)數(shù)器*/ EA=1;/*CPU開放總中斷*/
break;/*跳出*/
}
} } } /*鍵盤程序*/ void key(){ /*南北有車而東西無車*/ if(K0==0)/*K0=0*/ { delayms(20);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(K0==0){ while(K0==0)/*當(dāng)松開K0開關(guān)時(shí),跳出循環(huán),執(zhí)行后面的程序*/ { light();/*調(diào)用交通燈函數(shù)*/ led();/*調(diào)用數(shù)碼管函數(shù)*/ } count=0;/*清零*/ k=0;/*南北方向通車,東西方向不通車*/ SN=SN_G,WE=SN_G+Y;/*南北方向顯示時(shí)間為南北方向綠燈通行時(shí)間,東西方向顯示時(shí)間為南北方向綠燈通行時(shí)間加黃燈閃亮?xí)r間*/ light();/*調(diào)用交通燈函數(shù)*/ led();/*調(diào)用數(shù)碼管函數(shù)*/ } }
宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
/*南北無車而東西有車*/ if(K1==0)/*K1=0*/ { delayms(20);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(K1==0){ while(K1==0)/*當(dāng)松開K1開關(guān)時(shí),跳出循環(huán),執(zhí)行后面的程序*/ { light();/*調(diào)用交通燈函數(shù)*/ led();/*調(diào)用數(shù)碼管函數(shù)*/ } count=0;/*清零*/ k=1;/*南北方向不通車,東西方向通車*/ SN=WE_G+Y,WE=WE_G;/*南北方向顯示時(shí)間為東西方向綠燈通行時(shí)間加黃燈閃亮?xí)r間,東西方向顯示時(shí)間為東西方向綠燈通行時(shí)間*/ light();/*調(diào)用交通燈函數(shù)*/
} /*定時(shí)函數(shù)*/ void time1(void)interrupt 1 {
TH0=0x3c;TL0=0xb0;/*計(jì)50000個(gè)數(shù),用時(shí)50ms*/ count++;/*自增運(yùn)算*/ if(count>=20)/*當(dāng)count大于或等于20時(shí),歷時(shí)1s,執(zhí)行程序*/ { SN--;/*自減運(yùn)算*/ WE--;/*自減運(yùn)算*/ count=0;/*清零*/ if(SN==0||WE==0)/*當(dāng)SN=0或者WE=0時(shí),執(zhí)行程序*/ { } led();/*調(diào)用數(shù)碼管函數(shù)*/ } k++;/*自增運(yùn)算*/ if(k>3)/*當(dāng)k>3時(shí),執(zhí)行程序*/ 21 宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
k=0;/*清零*/ switch(k)/*switch 語句*/ { case 0:SN=SN_G,WE=SN_G+Y;break;/*南北方向顯示時(shí)間為南北方向綠燈通行時(shí)間,東西方向顯示時(shí)間為南北方向綠燈通行時(shí)間加黃燈閃亮?xí)r間*/ case 1:SN=Y,WE=Y;break;/*東西南北方向顯示時(shí)間均為黃燈閃亮?xí)r間*/ case 2:SN=WE_G+Y,WE=WE_G;break;/*南北方向顯示時(shí)間為東西方向綠燈通行時(shí)間加黃燈閃亮?xí)r間,東西方向顯示時(shí)間為東西方向綠燈通行時(shí)間*/ case 3:SN=Y,WE=Y;break;/*東西南北方向顯示時(shí)間均為黃燈閃亮?xí)r間*/ } } } /*交通燈函數(shù)*/ void light(){
P1=deng[k];/*交通燈對(duì)應(yīng)著k的值變化*/ if(P1==deng[1]&&count==0)/*當(dāng)南北方向亮黃燈且count=0時(shí),執(zhí)行程序*/
{ TH1=(65536-50000)/256;
} TL1=(65536-50000)%256;/*延時(shí)50ms*/
P1=0xDF;/*南北方向黃燈熄滅,東西方向亮紅燈*/ } else if(P1==deng[3]&&count==0)/*當(dāng)東西方向亮黃燈且count=0時(shí),執(zhí)行程序*/ { TH1=(65536-300000)/256;
TL1=(65536-300000)%256;/*延時(shí)50ms*/ P1=0xFB;/*南北方向亮紅燈,東西方向黃燈熄滅*/ 22 宿州學(xué)院本科生畢業(yè)設(shè)計(jì)
基于單片機(jī)AT89C51的交通燈控制器的設(shè)計(jì)
} } /*數(shù)碼管函數(shù)*/ void led(){
} /*主函數(shù)*/
void main(void){
init();/*調(diào)用程序初始化函數(shù)*/ { key();/*調(diào)用鍵盤程序*/ light();/*調(diào)用交通燈函數(shù)*/ led();/*調(diào)用數(shù)碼管函數(shù)*/ } while(1)/*無條件循環(huán)*/ P2=weima[0],P0=duanma[SN%10];/*顯示南北方向個(gè)位*/ P2=weima[1],P0=duanma[SN/10];/*顯示南北方向十位*/ delayms(10);/*延時(shí)*/ P2=weima[2],P0=duanma[WE%10];/*顯示東西方向個(gè)位*/ delayms(10);/*延時(shí)*/ P2=weima[3],P0=duanma[WE/10];/*顯示東西方向十位*/ delayms(10);/*延時(shí)*/ delayms(10);/*延時(shí)*/ } 23