版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p> 一.前言…………………………………………………………3</p><p> 二.功能概述······……………………………………………3</p><p> 三.設計思路……………………………………………………3</p><p> 四.硬件介紹……………………………………………………
2、4</p><p> 五.軟件程序設計………………………………………………7</p><p> 六.電路圖及仿真實現(xiàn)………·………………………………10</p><p> 七.總結(jié)…………………………………………………………11</p><p> 八.源程序………………………………………………………12</p>
3、<p> 參考文獻…………………………………………………………14</p><p><b> 一.前言</b></p><p> 近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術(shù)日益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以
4、完善。</p><p> 十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實現(xiàn)這井然秩序呢?靠的就是交通信號燈的自動指揮系統(tǒng)。交通信號燈控制方式很多,在學習了單片機的有關(guān)知識之后,運用相關(guān)知識來設計完成交通信號燈。</p><p><b> 二.功能概述</b></p><p> 2.1設計任務:交通燈的硬件和軟件設
5、計</p><p><b> 2.2設計目的</b></p><p> 1.進一步熟悉和掌握單片機的結(jié)構(gòu)和工作原理。</p><p> 2.掌握單片機的接口技術(shù)及相關(guān)外圍芯片的外特性,控制方法。</p><p> 3.通過課程設計,掌握以單片機為核心的電路設計的基本方法和技術(shù),了解有關(guān)電路參數(shù)的計算方法。<
6、/p><p> 4.通過實際程序設計和調(diào)試,逐步掌握模塊化程序設計方法和調(diào)試技術(shù)。</p><p> 5.通過完成一個包括電路設計和程序開發(fā)的完整過程,為我們今后從事相應工作打下基礎。</p><p><b> 三.設計思路</b></p><p><b> 交通燈的變化規(guī)律</b></p
7、><p> 按照常規(guī)我們假設一個十字路口為東西南北走向。初始狀態(tài)為狀態(tài)1,南北方向綠燈通車,東西方向紅燈。經(jīng)過過一段時間(25S)轉(zhuǎn)換狀態(tài)2,南北方向綠燈閃幾次轉(zhuǎn)亮黃燈,延時5S,東西方向仍然紅燈。再轉(zhuǎn)換到狀態(tài)3,東西方向綠燈通車,南北方向紅燈。過一段時間(25S)轉(zhuǎn)換到狀態(tài)4,東西方向綠燈閃幾次轉(zhuǎn)亮黃等,延時5S,南北方向仍然紅燈。最后循環(huán)至南北綠燈,東西紅燈。在這些狀態(tài)下,有時鐘倒數(shù)計時。</p>
8、<p><b> 四.硬件介紹</b></p><p><b> 基礎知識</b></p><p> 交通燈控制器實例主要使用了89C51單片機的定時器/計數(shù)器,基礎知識主要包括交通燈的變化規(guī)律、定時器/計數(shù)器的概念、定時器/計數(shù)器的相關(guān)寄存器、定時器/計數(shù)器的4種工作方式、以及定時器/計數(shù)器的變成。</p>&l
9、t;p> 4.1定時器/計數(shù)器</p><p> 定時器/計數(shù)器是單片機中最常用、最重要的功能模塊之一,本節(jié)通過交通燈控制器實例來演示定時器的使用,并復習如何使用散轉(zhuǎn)程序。</p><p> 首先介紹交通燈以及定時器/計數(shù)器的基礎知識,接著介紹本實例的硬件電路構(gòu)成,然后逐步分析定時器的變成以及程序的全貌,最后總結(jié)一下本實例的技巧與注意點。</p><p>
10、; 4.2定時器/計數(shù)器的概念</p><p> 89C51單片機內(nèi)有兩個可編程的定時器/計數(shù)器T0、T1。</p><p> 當定時器/計數(shù)器用作“定時器”時,每經(jīng)過1個機器周期(12個時鐘周期),計數(shù)器加1。</p><p> 當定時器/計數(shù)器用作“計數(shù)器”時,計數(shù)器在對應的外部輸入管腳(T0為P3.4引腳,T1為P3.5引腳)上每發(fā)生一次1到0的跳變時
11、加1。使用“計數(shù)器”功能時,外部輸入每個機器周期被采樣一次。當某一周期管腳狀態(tài)采樣為高電平而下一周期采樣為低電平時,計數(shù)器加1。由于檢測下降沿跳變需要兩個機器周期(24個時鐘周期)的時間,所以技術(shù)頻率最大值只能為時鐘周期的1/24。計數(shù)器對外部輸入信號的占空比并無限制,但為了保證給定的電平信號在其改變之前至少被采樣一次,外部輸入信號必須至少保持一個完整的機器周期。</p><p> 4.3定時器/計數(shù)器的相關(guān)寄
12、存器</p><p> 與定時器/計數(shù)器相關(guān)的寄存器有定時器/計數(shù)器工作方式寄存器(TMOD)、定時器/計數(shù)器控制寄存器(TCON)。TCON已經(jīng)在2.5節(jié)受控輸出實例中介紹過,因此,在本例中主要介紹TMOD寄存器。</p><p> 定時器/計數(shù)器工作方式寄存器(TMOD),字節(jié)地址89H,不可進行位尋址。</p><p> 定時器/計數(shù)器工作方式寄存器(T
13、MOD)的8位分為兩組,高4位控制T1,低4位控制T0。TMOD每一位的功能如下。</p><p><b> GATE:門控位。</b></p><p> GATE=0,僅由運行控制位TRX(X=0,1)=1來啟動定時器/計數(shù)器運行;</p><p> GATE=1,由運行控制位TRX(X=0,1)=1和外部中斷引腳上的高電平共同來啟動定
14、時器/計數(shù)器運行。</p><p> C/T:定時器模式和計數(shù)器模式選擇位。</p><p> C/T=0,為定時器模式;</p><p> C/T=1,為計數(shù)器模式。</p><p> M1、M0:工作方式選擇位。M1、M0的4中編碼對應4種工作方式,對應關(guān)系見表2-10。</p><p> 4.5定時器/
15、計數(shù)器的4種工作方式</p><p> 定時器/計數(shù)器的4種工作方式下的邏輯結(jié)構(gòu)如表所示。</p><p><b> (1)方式0。</b></p><p> 定時器/計數(shù)器的工作方式0稱為13位定時器/計數(shù)器的。它由TLX的低5位和TLX的8位構(gòu)成13位的計數(shù)器,此時TLX的高3位未使用。改工作方式是為了和48系列單片機兼容而設計的一種
16、工作方式,一般情況不使用方式0進行定時/計數(shù)。方式0的控制方式與方式1完全相同,下面重點介紹方式1的控制方式 。</p><p><b> ?。?)方式1</b></p><p> 定時器/計數(shù)器的工作方式1稱為16位定時器/計數(shù)器。它由TLX和THX構(gòu)成,TLX計數(shù)溢出向THX進位,THX計數(shù)溢出置位TCON中溢出標志位TFX。</p><p&
17、gt; GATE位的狀態(tài)定時器/計數(shù)器運行控制取決于TRX一個條件還是TRX和INTX引腳這兩個條件。當GATE=0時,則只要TRX被置為1,定時器/計數(shù)器即被允許計數(shù)(定時器/計數(shù)器的計數(shù)控制僅由TRX的狀態(tài)確定,TRX=1計數(shù),TRX=0停止計數(shù))。當GATE=1時,定時器/計數(shù)器是否計數(shù)由INTX輸入的電平和TRX的狀態(tài)共同確定:當TRX=1,且INTX=1時,才允許定時器/計數(shù)器計數(shù)(定時器/計數(shù)器的計數(shù)控制由TRX和INTX
18、兩個條件控制)。</p><p><b> (3)方式2</b></p><p> 定時器/計數(shù)器的工作方式0和方式1再計數(shù)溢出后,計數(shù)器的值為0,需要通過程序重新裝入計數(shù)初值。</p><p> 定時器/計數(shù)器的工作方式1稱為初值自動重裝的8位定時器/計數(shù)器。在該工作方式下,TLX作為計數(shù)器,當TLX計數(shù)溢出時,在置1溢出標志TFX的同
19、時,還自動的將THX中的常數(shù)送至TLX,使TLX從該常數(shù)開始重新計數(shù)。這種工作方式可以省去用戶軟件中重裝常數(shù)的程序,簡化定時常數(shù)的計算方法(確定計數(shù)初值),可以相當精確地確定定時時間。</p><p><b> ?。?)方式3</b></p><p> 工作方式3僅對定時器/計數(shù)器0有效,在該工作方式之下,定時器/計數(shù)器的0被拆成2個獨立的定時器/計數(shù)器:TL0、T
20、F1。TL0使用T0的狀態(tài)控制C/T、GATE、TR0、INT0,而TH0被固定位一個8位定時器(不能作外部計數(shù)方式),并使用定時器/計數(shù)器1的狀態(tài)控制位TR1、和TF1,同時占用定時器T1的中斷源。此時,定時器/計數(shù)器1可設定為方式0、方式1和方式2,作為串行口的波特率發(fā)生器。</p><p> 4.5 定時器/計數(shù)器的編程</p><p><b> ?。?)初始化</
21、b></p><p> 定時器/計數(shù)器的初始化編程包括以下幾個部分。</p><p> 根據(jù)要求給定時器/計數(shù)器方式寄存器(TMOD)送一個方式控制字,以設定定時器/計數(shù)器的工作方式。</p><p> 根據(jù)需要給TH和TL寄存器送初值,以確定需要的定時時間或計數(shù)的初值。</p><p> 根據(jù)需要給中斷允許寄存器(IE)送中斷
22、控制字,以開放相應的中斷和設定中斷優(yōu)先級。</p><p> 給TCON寄存器送命令字以啟動或禁止定時/計數(shù)器的運行。</p><p> (2)定時器/計數(shù)器初值的計算。</p><p><b> 計數(shù)器初值:</b></p><p> 設計算器的模值位M,所需的計數(shù)值為C,計數(shù)初值設定為TC,則TC=M-C
23、(M等于2的13次方,16次方,8次方)。</p><p><b> 定時器初值:</b></p><p> 設定時器的模值為M,需要的定時時間為T,定時器的初值設定為TC,則TC=M-T/t(M等于2的13次方,16次方,8次方)。</p><p><b> 五.軟件程序設計</b></p><
24、p> 交通燈控制器實例使用了89C51單片機的定時器/計數(shù)器,首先分定時器初始化,定時器中斷服務程序兩個部分介紹定時器計數(shù)器的軟件編程,其次在畫出程序流程圖的基礎上編寫軟件程序,并給出完整的交通燈控制器程序?qū)嵗?lt;/p><p><b> 5.1定時器初始化</b></p><p> 為了使定時器時間準確,避免因為定時器重裝而引起的累計誤差,應將定時器設置
25、為初值自動裝置的8位定時器/計數(shù)器,即定時器工作在工作方式2.在12MHz晶振條件下,8位定時器的最長定時時間是0.256ms,為了方便計算取定時時間為0.25ms,所以,定時0.5s需要定時器中斷2000次。</p><p> 下面計算定時器的初值。定時器初值TC=M-T/t=256-250/1=6,因此TH0=06H,TL0=06H.</p><p> 定時器初始化程序如下,定時器
26、T0設定為工作方式2,初始值為06H,自動重裝入值為06H。</p><p><b> T0-INIT;</b></p><p> MOV TMOD,#00000010B ; 定時器T0工作方式2</p><p> MOV TL0,#06H ; 設定時器T0的初始值</p><p> M
27、OV TH0,#06H ; 設定時器T0的自動重裝值</p><p> MOV TCON,#00010000B ; 定時器T0的使能</p><p> SETB EA ;中斷允許總控制位使能</p><p> SETB ET0 ;T0中斷使能</p><p>
28、;<b> RET</b></p><p> 5.2定時器中斷服務程序</p><p><b> T0-INIT;</b></p><p> DJNZ TIME-COUNT0,T0-INT-EXIT</p><p> MOV TIME-COUNT0,#250</p&g
29、t;<p> DJNZ TIME-COUNT1, T0-INT-EXIT</p><p> MOV TIME-COUNT1,#8</p><p> SETB SECOND-FLAG ;</p><p> T0-INT-EXIT;</p><p><b> RETI</b>&l
30、t;/p><p> 每0.25ms定時器中斷發(fā)生,程序跳轉(zhuǎn)到中斷服務程序T0-INT開始執(zhí)行。中斷服務程序每次將定時器中斷計數(shù)變量減1,但定時器中斷計數(shù)變量為0時,0.5s定時時間到,將位變量SECOND-FLAG置為1.定時器中斷服務程序通過RETI指令返回,程序?qū)⑻D(zhuǎn)到進入中斷前的斷點繼續(xù)執(zhí)行。</p><p><b> 5.3程序流程圖</b></p>
31、;<p> 程序較為簡單,可以直接進行程序的編寫,但本實例的程序流程比較復雜,在編寫程序前,應當先畫出程序流程圖。程序流程圖是描述程序運行流程的一種圖表。它不僅描繪程序從頭到尾的運行順序,也描述程序運行過程中的所有可能</p><p><b> 發(fā)生的狀況。</b></p><p> 六.電路圖及仿真設計</p><p>
32、 6.1設計完成原理圖如下</p><p> 在電路連接完成后,將寫好的程序放入單片機,運行。</p><p> 6.2在初始狀態(tài)南北綠燈,東西紅燈,持續(xù)時間為25s</p><p> 6.3南北跳轉(zhuǎn)到黃燈5s,東西仍為紅燈</p><p> 在南北轉(zhuǎn)換為紅燈的同時,東西燈轉(zhuǎn)換到綠燈持續(xù)25s;東西轉(zhuǎn)換為黃燈持續(xù)5s,南北紅燈不變;如
33、此循環(huán),從而實現(xiàn)交通燈的作用。</p><p><b> 七.總結(jié)</b></p><p> 回顧起此次單片機課程設計,我仍感慨頗多,學到了很多的東西。同時不僅鞏固了以前所學過的知識,而且還學到了很多在書本上所沒有學到過的知識。在實際設計中才發(fā)現(xiàn),書本上理論性的東西與在實際運用中的還是有一定的出入的,所以有些問題不但要深入地理解,而且要不斷地更正以前的錯誤思維。一
34、切問題必須要靠自己一點一滴的解決,而在解決的過程當中你會發(fā)現(xiàn)自己在飛速的提升。對于單片機設計,其硬件電路是比較簡單的,主要是解決程序設計中的問題,而程序設計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個設計的靈魂所在。因此可以說單片機的設計是軟件和硬件的結(jié)合,二者是密不可分的。</p><p> 通過這次課程設計我發(fā)現(xiàn)單片機原理應用行很強,只有老師的講解不行,只看也不中,只有自己動手去做
35、才會發(fā)現(xiàn)自己確實有太多的不足,許多的原理,程序看似簡單,真正去做才知道知識并沒有自己想象的那樣扎實。從而懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。樹立了對自己工作能力的信心,相信會對今后的學習工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。&l
36、t;/p><p> 在設計完成之際再次衷心感謝李泉溪老師的指導!</p><p><b> 八.源程序</b></p><p> #include <REGX51.H></p><p> #define uchar unsigned char</p><p> #define u
37、int unsigned int</p><p> uchar n=0,temp=0; </p><p> uchar code segcode0[]={0x5b,0x06,0x3f,0x5b,0x06,0x3f,0x5b,0x06,0x3f};</p><p> uchar code segcode1[]={0x6f,0x7f,0x07,0x7d,0x6d,
38、0x66,0x4f,0x5b,0x06,0x3f};</p><p> //uchar code segcode0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p> void delay(x)</p><p> { while(x--);</p><p>&
39、lt;b> }</b></p><p> void timer0() interrupt 1</p><p> { TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> n++;</b></p>
40、<p> temp=temp%61;</p><p><b> if(n==20)</b></p><p> { temp++;</p><p><b> n=0;</b></p><p><b> }</b></p><p>
41、if(temp<25) P1=0x21;</p><p> if((temp>=25)&&(temp<28)) P1=0x22;</p><p> if((temp>=28)&&(temp<30)) P1=0x24;</p><p> if((temp>=30)&&(temp&
42、lt;55)) P1=0x0c;</p><p> if((temp>=55)&&(temp<58)) P1=0x14;</p><p> if((temp>=58)&&(temp<60)) P1=0x24;</p><p><b> }</b></p><p&g
43、t;<b> main()</b></p><p> { uint i=0;</p><p><b> //P1_0=0;</b></p><p><b> //P1_7=0;</b></p><p> TMOD=0x01;</p><p>
44、 TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p> //while(1)</p><p> //{//i=temp;</p><p><b> //}</b></p><p> // TH1=256-125
45、;</p><p> // TL1=256-125;</p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> // ET1=1;</b></p><p><b> TR0
46、=1;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p><b> P2_0=0;</b></p><p><b> P2_1=1;</b></p><
47、p> P0=segcode0[temp/10];</p><p> delay(3000);</p><p><b> P2_0=1;</b></p><p><b> P2_1=0;</b></p><p> P0=segcode1[temp%10];</p><
48、;p> delay(3000); </p><p> P2_1=1;//TR1=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> 參考文獻</b></p><p> 【1
49、】單片機的C語言應用程序設計 馬忠梅 籍順心 北京航空航天大學出版社2007</p><p> 【2】51單片機應用開發(fā)案例精選 王為青 邱文勛 人民郵電出版社 2007</p><p> 【3】51系列單片機設計實例 樓然苗 李廣飛 北京航空航天大學出版社 2003</p><p> 【4】單片機原理與接
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機c語言課程設計--基于單片機的電子鐘設計
- 基于單片機的電子密碼鎖設計 單片機課程設計
- 單片機課程設計---基于單片機的電子密碼鎖設計
- 單片機課程設計---基于單片機的電子密碼鎖設計
- 單片機課程設計報告--基于單片機的電子密碼鎖
- 單片機課程設計--基于單片機控制的電子密碼鎖
- 單片機課程設計--基于單片機控制的電子密碼鎖
- 單片機課程設計--基于單片機控制的電子密碼鎖
- 基于單片機的電子密碼鎖設計 單片機課程設計報告
- 基于單片機的電子鎖設計畢業(yè)設計
- 畢業(yè)設計--單片機控制電子鎖
- 單片機課程設計---基于單片機的數(shù)字密碼鎖設計
- 單片機課程設計-單片機課程設計---電子時鐘
- 單片機課程設計---基于單片機的電子琴設計
- 基于c語言單片機秒表課程設計
- 單片機秒表課程設計(c語言)
- 單片機課程設計--基于單片機8051的密碼鎖控制
- 單片機課程設計—基于單片機的電子琴
- 單片機課程設計--電子密碼鎖
- 基于單片機的秒表設計單片機課程設計
評論
0/150
提交評論