《單片機實訓(xùn) 資料報告材料》由會員分享,可在線閱讀,更多相關(guān)《單片機實訓(xùn) 資料報告材料(14頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、word
摘要:
單片機自問世以來,因其小巧靈活、成本低、控制能力強、易于產(chǎn)品化等優(yōu)勢,在社會各領(lǐng)域中得到廣泛的應(yīng)用。根據(jù)89C51單片機的特點及交通燈在實際控制中的特點,本文提出一種利用單片機自動控制交通燈及時間倒計時顯示的方法,將整個系統(tǒng)縮小在一塊小小的單片機上,大大提高了產(chǎn)品的經(jīng)濟性和輕便性。設(shè)計過程包括硬件電路設(shè)計和程序設(shè)計兩大步驟。硬件電路其結(jié)構(gòu)比較簡單,主要包括核心器件單片機、12只二極管組成的模擬交通燈、復(fù)位電路、振蕩電路、顯示數(shù)碼管模塊。單片機開發(fā)中除必要的硬件外,同樣離不開軟件, Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟件,這從近年來各仿真機廠商紛紛
2、宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。本文就用Keil編程,相比硬件設(shè)計程序設(shè)計較為復(fù)雜,必需同時考慮燈控制、時間顯示、緊急開關(guān)等問題,并且具有一定的C語言基礎(chǔ)和一定的思維能力及邏輯能力。利用單片機的定時器產(chǎn)生秒信號,控制十字路口的紅、綠、黃燈交替點亮和熄滅,并且用4只LED數(shù)碼管顯示十字路口兩個方向的剩余時間。系統(tǒng)的工作應(yīng)符合一般交通燈控制的要求。
關(guān)鍵字:單片機,KEIL,交通燈
3、
目錄
一.整體設(shè)計思路:5
二.模塊設(shè)計---單片機的控制模塊與制作6
(一)設(shè)計要求6
1基本要求6
2電路方案:6
3電路設(shè)計方案8
4最終原理圖9
5元件清單10
三.電子系統(tǒng)聯(lián)調(diào)步驟和方法11
(一)單片機調(diào)試11
1)測試地址線,片選線和數(shù)據(jù)線11
1 程序清單11
2 調(diào)試結(jié)果12
(二)通過單片機測試其他模塊13
1)D/A13
1程序清單13
2 調(diào)試結(jié)果14
2)A/D14
1程序清單14
2調(diào)試結(jié)果15
3)數(shù)碼管顯示15
1程序清單15
2調(diào)試結(jié)果16
四.電子系統(tǒng)
4、故障檢測與排除17
(一)單片機模塊17
(二)各模塊故障檢測和排除20
五.實驗設(shè)備22
(一)實驗設(shè)備22
(二)硬件驗收數(shù)模板(示波器圖)22
六.實驗匯總23
(一)實驗總結(jié)23
(二)實驗體會23
(三)實驗建議24
一.整體設(shè)計思路:
(一) 設(shè)計要求
1基本要求:
南
北
東
西
利用單片機完成交通信號燈控制器的設(shè)計,該交通信號燈控制器由一條主干道和一條支干道匯合成十字路口,在每個入口處設(shè)置紅、綠、黃三色信號燈,紅燈亮禁止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時間停在禁行線外。
5、用紅、綠、黃發(fā)光二極管作信號燈。如圖上圖所示。設(shè)東西向為主干道,南北為支干道。
列出交通信號燈的狀態(tài)表如下:(其中,1代表燈亮,0代表燈滅)
狀態(tài)
北
西
南
東
綠黃紅
綠黃紅
綠黃紅
綠黃紅
1
001
100
001
100
2
001
010
001
010
3
100
001
100
001
4
010
001
010
001
2指標 要求:
(1)處于常允許通行的狀態(tài),支干道有車來時才允許通行。主干道亮綠燈時,支干道亮紅燈;支干道亮綠燈時,主干道亮紅燈。
(2)干道均有車時,兩者交替允許通行,主干道每
6、次放行60秒,支干道每次放行40秒,設(shè)立60秒、40秒計時、顯示電路。
(3)綠燈亮到紅燈亮的轉(zhuǎn)換過程中,要亮5秒黃燈作為過渡。黃燈亮?xí)r,原紅燈按1Hz的頻率閃爍。(4)支干道通行時間及黃燈亮的時間均可在0~99秒任意設(shè)置。
(二)設(shè)計方案
方案一 :
利用89C51單片機P0口驅(qū)動12個紅綠黃燈(東西和南北總需要六個I/O口),P1口驅(qū)動數(shù)碼管的段碼,P3口用于進行數(shù)碼管的位選 。
方案二 :
利用89C51單片機P0口驅(qū)動12個紅綠黃燈(東西和南北總需要六個I/O口),P1口作為數(shù)據(jù)練到8255的D0-D7,通過P2^7口進行8255的片選CS,8255的PB口驅(qū)動數(shù)碼管的
7、段碼,PA口用于進行數(shù)碼管的位選 (鍵盤的列控制),PC口用于鍵盤的行控制。
方案三 :
利用89C51單片機P0口驅(qū)動8個紅綠黃燈,P1口作為數(shù)據(jù)練到8255的D0-D7,通過P2^7口進行8255的片選CS,8255的PB口驅(qū)動數(shù)碼管的段碼,PA口用于進行數(shù)碼管的位選 (鍵盤的列控制),PC口用于鍵盤的行控制。PA的高四位作為最后4個紅綠黃燈。
二.模塊設(shè)計
(一)設(shè)計要求
1基本要求:
1)、根據(jù)實驗容,設(shè)計硬件電路原理圖,并給出詳細接線圖(包括8051芯片、晶振電路、復(fù)位電路,電源、0809、0832、8255、LED等)。
8、
2)、畫出程序流程圖
3)、給出源程序清單(匯編語言或C語言源程序)
4)、調(diào)試,調(diào)試結(jié)束后要請老師進行檢查。
5)、利用PROTEL軟件繪制出上述電路原理圖(即.SCH文件)
6)、利用PROTEL軟件設(shè)計出印刷電路板圖(即.PCB文件)。
7)、制作出印刷電路板(即PCB板)。(選作)
(1)若做出了印刷電路板,調(diào)試自己的板子。
(2)若未做出了印刷電路板,可利用接口實驗箱或機器人組件進行調(diào)試。
8)、實驗課后,要認真寫好實驗報告。
2電路方案:
1,確定單片機型號
寄存2
B寄存器
Acc
寄存1
ALU
PSW
SP
RAM
EPROM/ROM
9、
RAM地址寄存器
定時
及控制
振蕩器
P1鎖存器
P1驅(qū)動器
P3鎖存器
P3驅(qū)動器
P0驅(qū)動器
P2驅(qū)動器
P0鎖存器
P2鎖存器
地址
寄存器
緩沖器
PC增1
PC
DPTR
計數(shù)/定時1
串行通信
中斷管理
計數(shù)/定時2
PSEN
ALE
EA
RESET
X1
X2
電源
Vcc
GND
3. MCS-51系列單片機的內(nèi)部資源
2晶振電路
3 復(fù)位電路
4 單片機與8255連接以及數(shù)碼管,LED燈的電路
發(fā)光二極管電路:根據(jù)發(fā)光二極管的特性,將二極管的正極與電源相接
10、(+5V),其中與一個500歐姆的電阻串聯(lián)。而發(fā)光二極管的負極與單片機的P1的八個端口相接,這樣只要P1口的某個端口出現(xiàn)低電平,即二極管導(dǎo)通發(fā)光。
復(fù)位電路:本電路采用的是按鍵電平復(fù)位,按復(fù)位鍵后復(fù)位端通過電阻與VCC電源接通,此時復(fù)位端由低電平變?yōu)榱烁唠娖?,從而達到復(fù)位的效果。復(fù)位電路關(guān)系到一個系統(tǒng)能否可靠地工作,一般由電阻、電容和門電路組成。
晶振電路:80C51系列單片機部有一個高增益反相放大器,用于構(gòu)成振蕩器,但要形成時鐘,外部需附加電路,引腳XTAL1是為反相放大器和時鐘發(fā)生電路的輸入端,XATL2為反相放大器的輸入端。本電路是由一個12M晶振和兩個22pF的無極性電容組成。
11、數(shù)碼管驅(qū)動顯示電路:由于數(shù)碼管是四位一體的,所以必須采用動態(tài)掃描方式,其基本原理是利用人眼的“視覺暫留”效應(yīng)。接口電路把所有顯示器的8個筆端a—b分別并聯(lián)在一起,本電路時接8255的PB口。每一個顯示器的公共端各自獨立地受I/O線控制,本電路采用的PB.0、PB.1、PB.2、PB.3。CPU向8255送入數(shù)據(jù),8255PB輸出口送出字型碼時,所有的顯示器都能接收到,再利用循環(huán)掃描的方式分時選通個顯示器的公共極,是各個顯示器輪流導(dǎo)通。當掃描的速度達到一定程度時,人眼就分辨不出來了,認為各個顯示器同時發(fā)光了。
3最終原理
4系統(tǒng)設(shè)計結(jié)構(gòu)圖
運行顯示子程
12、序加中斷程序
調(diào)用緊急
狀態(tài)子程序
判斷當前狀態(tài)
初始化
開始
程序流程圖
三.程序設(shè)計(中斷程序)
(1)初始化
定時器/計數(shù)器的初始化編程包括以下幾個部分。
根據(jù)要求給定時器/計數(shù)器方式寄存器(TMOD)送一個方式控制字,以設(shè)定定時器/計數(shù)器的工作方式。
根據(jù)需要給TH和TL寄存器送初值,以確定需要的定時時間或計數(shù)的初值。
根據(jù)需要給中斷允許寄存器(IE)送中斷控制字,以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級。
給TCON寄存器送命
13、令字以啟動或禁止定時/計數(shù)器的運行。
(2)定時器/計數(shù)器初值的計算。
計數(shù)器初值:
設(shè)計算器的模值位M,所需的計數(shù)值為C,計數(shù)初值設(shè)定為TC,則TC=M-C (M等于2的13次方,16次方,8次方)。
定時器初值:
設(shè)定時器的模值為M,需要的定時時間為T,定時器的初值設(shè)定為TC,則TC=M-T/t(M等于2的13次方,16次方,8次方)。
為了使定時器時間準確,避免因為定時器重裝而引起的累計誤差,應(yīng)將定時器設(shè)置為初值自動裝置的16位定時器/計數(shù)器,即定時器工作在工作方式2.在12MHz晶振條件下,16位定時器的最長定時時間是56ms,為了方便計算取定時時間為50ms,所以,定時
14、1s需要定時器中斷20次。
四 .實訓(xùn)匯總
(一)總結(jié)
在這一次實習(xí)中,很是受益。在上學(xué)期的基礎(chǔ)上,完成了單片機部分,為我們整體設(shè)計奠定了基礎(chǔ)。這次我們在實踐中,不斷地學(xué)習(xí),通過動手連接電路,熟悉單片機板,是我更加認識了解單片機;一步一步的調(diào)試,是我懂得如何編寫一個簡單的程序。又在一次次的小實驗中,把所學(xué)到的知識都運用到實際中。分析電路的原理,掌握電路之間的關(guān)系。讓我更加認識到,知識的重要性。而最后實習(xí)報告的整理,讓我重新溫習(xí)了一下,實習(xí)的整個過程,盡管很快,但是每個細節(jié)都記憶深刻。使我也更加深刻的理解了整個系統(tǒng)的電路設(shè)計,和布局。
通過這次課程設(shè)計我發(fā)現(xiàn),盡管理論很簡單,但是真正
15、的完成成品還是需要一定的功力,其中需要很多細節(jié)的注重,理論知識還是考實驗驗證的,并且通過自己的手來解決問題比用腦子解決問題更加深刻。我覺得學(xué)習(xí)就應(yīng)該采取理論與實踐結(jié)合的方式,理論的問題,也就是實踐性的課題。這種做法既有助于完成理論知識的鞏固,又有助于帶動實踐,解決實際問題,加強我們的動手能力和解決問題的分析能力。
(二)體會
實習(xí)結(jié)束了,這次的實習(xí)給我感觸很多,也收獲了很多。
在上學(xué)期的基礎(chǔ)上,這次我們要完成單片機設(shè)計的最小系統(tǒng)實訓(xùn)。首先是對單片機的了解,聽上去和微機聯(lián)系緊密,很容易讓我進入了實習(xí)的狀態(tài),開始熟悉單片機的電路,可能第一次自己真正的用單片機,之前都是和同學(xué)一切看程序
16、,并不是自己真正的分配管腳。這次機會,讓我也從每一步開始體會單片機。開始時遇到些問題,但通過老師講解,我理解了點,設(shè)計好了電路。調(diào)試單片機時,覺得很容易,因為主要是老師給我們一些例程,理解了,硬件電路連接好了就可以正確的現(xiàn)實,就不會有錯誤讓我去排除和發(fā)現(xiàn)。然后開始設(shè)計整個系統(tǒng),為了能夠多學(xué)點東西,我選擇第二個題目,計劃先完成第二個題目,然后再把第三個題目做了,因為這兩個題目就差一個鍵盤的輸入,于是定下題目開始設(shè)計。開始還是挺順利的,由于硬件電路用的很熟練,所以硬件電路很快就完成了也通過老師的認可,接著就是編寫程序,先畫了程序設(shè)計圖,慢慢一步一步的調(diào)試,第一次設(shè)計沒有想太多,把一個大程序都寫好了
17、,開始調(diào)試,發(fā)現(xiàn)沒有顯示,找了一下硬件沒有問題,編譯也沒有問題,斷定是邏輯錯誤,才想到要一步一步的調(diào)試,于是開始一點點的調(diào)試,先完成顯示程序,接著中斷程序,最后把大程序放一起,調(diào)試中出現(xiàn)了很多小的問題,通過老師和同學(xué)自己的一些努力終于把這個小系統(tǒng)搞定。覺得這次實習(xí)可能收獲不了太多,由于每個人的電路不一樣,所有部分程序需要自己寫,還真的收獲頗多。我自認為自己是個不容易滿足的人,想在實習(xí)中真正的學(xué)到東西,但是沒有老師的幫忙實在是太困難了。轉(zhuǎn)眼實習(xí)就真的結(jié)束了。我也只學(xué)會了皮毛,沒有嘗試完全的編寫一個更加完整的大程序,鍵盤理想中很簡單的但是沒有弄好,我覺得心里有些遺憾。但是時間有限,希望以后有機會自
18、己多多學(xué)習(xí)。
實驗中還體會到畫圖的樂趣,之前上電子設(shè)計學(xué)習(xí)過畫圖軟件,所以用起來還算得心應(yīng)手,很快完成了那個圖,很有成就感,但是我還是會更加努力的學(xué)習(xí)畫圖軟件,學(xué)習(xí)它更多的功能,盡量熟練掌握這個畫圖技能。
而這次實習(xí)雖然結(jié)束了,但是我們的學(xué)習(xí)任然要繼續(xù)。我會繼續(xù)努力完善自己,總結(jié)經(jīng)驗,絕不辜負老師和家人的期待
(三)實驗建議
可以獨立完成設(shè)計題目,組與組之間的互相競爭增進學(xué)習(xí)興趣,同學(xué)之間互相學(xué)習(xí),互相幫助,更加增進友誼和獨立完成項目的整體思路和意識。
參考文獻
【1】單片機的C語言應(yīng)用程序設(shè)計 馬忠梅 籍順心 航空航天大學(xué)2007
【2】51單片機應(yīng)用開發(fā)案例
19、精選 王為青 邱文勛 人民郵電 2007
【3】51系列單片機設(shè)計實例 樓然苗 廣飛 航空航天大學(xué) 2003
【4】單片機原理與接口技術(shù) 胡漢才 清華大學(xué) 2006
【5】單片機原理與應(yīng)用 丁元杰 機械工業(yè) 2007
致
2012年 04月 05 日
附件一程序清單
#include "Absacc.h"
#include "reg51.h"
#defineuint unsigned int
20、
#defineuchar unsigned char
#define C8255_A XBYTE[0x7F00]
#define C8255_B XBYTE[0x7F01]
#define C8255_C XBYTE[0x7F02]
#define C8255_CON XBYTE[0x7F03]
uint shu;
uchar xianshi,xianshi2;
uchar aa,bb,cc,dd;
unsigned char table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0
21、x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
//延時
void Delay(unsigned int time)
{
unsigned int i;
for(i=0; i