單片機c語言課程設計交通燈_第1頁
單片機c語言課程設計交通燈_第2頁
單片機c語言課程設計交通燈_第3頁
單片機c語言課程設計交通燈_第4頁
單片機c語言課程設計交通燈_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計報告200 8 200 9 學年第 2 學期課程名稱 單片機的c語言程序設計設計題目 交通燈 學生姓名 學 號 0628030053 專業(yè)班級 通信06-1班 指導教師 2009年06月 02日目錄一前言3二功能概述······3三設計思路3四硬件介紹4五軟件程序設計7六電路圖及仿真實現(xiàn)·10七總結11八源程序12參考文獻14 一前言近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往作為一個核心部件來使用,僅單片機方面知識是不夠的,

2、還應根據(jù)具體硬件結構軟硬件結合,加以完善。十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實現(xiàn)這井然秩序呢?靠的就是交通信號燈的自動指揮系統(tǒng)。交通信號燈控制方式很多,在學習了單片機的有關知識之后,運用相關知識來設計完成交通信號燈。二功能概述2.1設計任務:交通燈的硬件和軟件設計2.2設計目的1.進一步熟悉和掌握單片機的結構和工作原理。2.掌握單片機的接口技術及相關外圍芯片的外特性,控制方法。3.通過課程設計,掌握以單片機為核心的電路設計的基本方法和技術,了解有關電路參數(shù)的計算方法。4.通過實際程序設計和調(diào)試,逐步掌握模塊化程序設計方法和調(diào)試技術。5.通過完成一個包括電路設

3、計和程序開發(fā)的完整過程,為我們今后從事相應工作打下基礎。三設計思路交通燈的變化規(guī)律按照常規(guī)我們假設一個十字路口為東西南北走向。初始狀態(tài)為狀態(tài)1,南北方向綠燈通車,東西方向紅燈。經(jīng)過過一段時間(25S)轉換狀態(tài)2,南北方向綠燈閃幾次轉亮黃燈,延時5S,東西方向仍然紅燈。再轉換到狀態(tài)3,東西方向綠燈通車,南北方向紅燈。過一段時間(25S)轉換到狀態(tài)4,東西方向綠燈閃幾次轉亮黃等,延時5S,南北方向仍然紅燈。最后循環(huán)至南北綠燈,東西紅燈。在這些狀態(tài)下,有時鐘倒數(shù)計時。四硬件介紹基礎知識交通燈控制器實例主要使用了89C51單片機的定時器計數(shù)器,基礎知識主要包括交通燈的變化規(guī)律、定時器計數(shù)器的概念、定時

4、器計數(shù)器的相關寄存器、定時器計數(shù)器的4種工作方式、以及定時器計數(shù)器的變成。4.1定時器/計數(shù)器定時器計數(shù)器是單片機中最常用、最重要的功能模塊之一,本節(jié)通過交通燈控制器實例來演示定時器的使用,并復習如何使用散轉程序。首先介紹交通燈以及定時器計數(shù)器的基礎知識,接著介紹本實例的硬件電路構成,然后逐步分析定時器的變成以及程序的全貌,最后總結一下本實例的技巧與注意點。4.2定時器計數(shù)器的概念89C51單片機內(nèi)有兩個可編程的定時器計數(shù)器T0、T1。當定時器計數(shù)器用作“定時器”時,每經(jīng)過1個機器周期(12個時鐘周期),計數(shù)器加1。當定時器計數(shù)器用作“計數(shù)器”時,計數(shù)器在對應的外部輸入管腳(T0為P3.4引腳

5、,T1為P3.5引腳)上每發(fā)生一次1到0的跳變時加1。使用“計數(shù)器”功能時,外部輸入每個機器周期被采樣一次。當某一周期管腳狀態(tài)采樣為高電平而下一周期采樣為低電平時,計數(shù)器加1。由于檢測下降沿跳變需要兩個機器周期(24個時鐘周期)的時間,所以技術頻率最大值只能為時鐘周期的124。計數(shù)器對外部輸入信號的占空比并無限制,但為了保證給定的電平信號在其改變之前至少被采樣一次,外部輸入信號必須至少保持一個完整的機器周期。4.3定時器計數(shù)器的相關寄存器與定時器計數(shù)器相關的寄存器有定時器計數(shù)器工作方式寄存器(TMOD)、定時器計數(shù)器控制寄存器(TCON)。TCON已經(jīng)在2.5節(jié)受控輸出實例中介紹過,因此,在本

6、例中主要介紹TMOD寄存器。定時器計數(shù)器工作方式寄存器(TMOD),字節(jié)地址89H,不可進行位尋址。定時器計數(shù)器工作方式寄存器(TMOD)的8位分為兩組,高4位控制T1,低4位控制T0。TMOD每一位的功能如下。GATE:門控位。GATE0,僅由運行控制位TRX(X0,1)1來啟動定時器計數(shù)器運行;GATE1,由運行控制位TRX(X0,1)1和外部中斷引腳上的高電平共同來啟動定時器計數(shù)器運行。CT:定時器模式和計數(shù)器模式選擇位。CT0,為定時器模式;CT1,為計數(shù)器模式。M1、M0:工作方式選擇位。M1、M0的4中編碼對應4種工作方式,對應關系見表210。4.5定時器計數(shù)器的4種工作方式定時器

7、計數(shù)器的4種工作方式下的邏輯結構如表所示。M1M2工作方式00方式0,為13位定時器/計數(shù)器01方式1,為16位定時器/計數(shù)器10方式2,為初值自動重裝的8位定時器/計數(shù)器11方式3,僅T0有效,將T0分為兩個8位定時器/計數(shù)器(1)方式0。定時器計數(shù)器的工作方式0稱為13位定時器計數(shù)器的。它由TLX的低5位和TLX的8位構成13位的計數(shù)器,此時TLX的高3位未使用。改工作方式是為了和48系列單片機兼容而設計的一種工作方式,一般情況不使用方式0進行定時計數(shù)。方式0的控制方式與方式1完全相同,下面重點介紹方式1的控制方式 。(2)方式1定時器計數(shù)器的工作方式1稱為16位定時器計數(shù)器。它由TLX和

8、THX構成,TLX計數(shù)溢出向THX進位,THX計數(shù)溢出置位TCON中溢出標志位TFX。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兩個條件控制)。(3)方式2定時器計數(shù)器的工作方式0和方式1再計數(shù)溢出后,計數(shù)器的值為0,需要通

9、過程序重新裝入計數(shù)初值。定時器計數(shù)器的工作方式1稱為初值自動重裝的8位定時器計數(shù)器。在該工作方式下,TLX作為計數(shù)器,當TLX計數(shù)溢出時,在置1溢出標志TFX的同時,還自動的將THX中的常數(shù)送至TLX,使TLX從該常數(shù)開始重新計數(shù)。這種工作方式可以省去用戶軟件中重裝常數(shù)的程序,簡化定時常數(shù)的計算方法(確定計數(shù)初值),可以相當精確地確定定時時間。(4)方式3工作方式3僅對定時器計數(shù)器0有效,在該工作方式之下,定時器計數(shù)器的0被拆成2個獨立的定時器計數(shù)器:TL0、TF1。TL0使用T0的狀態(tài)控制CT、GATE、TR0、INT0,而TH0被固定位一個8位定時器(不能作外部計數(shù)方式),并使用定時器計數(shù)

10、器1的狀態(tài)控制位TR1、和TF1,同時占用定時器T1的中斷源。此時,定時器計數(shù)器1可設定為方式0、方式1和方式2,作為串行口的波特率發(fā)生器。4.5 定時器計數(shù)器的編程(1)初始化定時器計數(shù)器的初始化編程包括以下幾個部分。根據(jù)要求給定時器計數(shù)器方式寄存器(TMOD)送一個方式控制字,以設定定時器計數(shù)器的工作方式。根據(jù)需要給TH和TL寄存器送初值,以確定需要的定時時間或計數(shù)的初值。根據(jù)需要給中斷允許寄存器(IE)送中斷控制字,以開放相應的中斷和設定中斷優(yōu)先級。給TCON寄存器送命令字以啟動或禁止定時計數(shù)器的運行。(2)定時器計數(shù)器初值的計算。計數(shù)器初值:設計算器的模值位M,所需的計數(shù)值為C,計數(shù)初

11、值設定為TC,則TC=M-C (M等于2的13次方,16次方,8次方)。定時器初值:設定時器的模值為M,需要的定時時間為T,定時器的初值設定為TC,則TC=M-T/t(M等于2的13次方,16次方,8次方)。五軟件程序設計交通燈控制器實例使用了89C51單片機的定時器/計數(shù)器,首先分定時器初始化,定時器中斷服務程序兩個部分介紹定時器計數(shù)器的軟件編程,其次在畫出程序流程圖的基礎上編寫軟件程序,并給出完整的交通燈控制器程序?qū)嵗?.1定時器初始化為了使定時器時間準確,避免因為定時器重裝而引起的累計誤差,應將定時器設置為初值自動裝置的8位定時器/計數(shù)器,即定時器工作在工作方式2.在12MHz晶振條件

12、下,8位定時器的最長定時時間是0.256ms,為了方便計算取定時時間為0.25ms,所以,定時0.5s需要定時器中斷2000次。下面計算定時器的初值。定時器初值TC=M-T/t=256-250/1=6,因此TH0=06H,TL0=06H.定時器初始化程序如下,定時器T0設定為工作方式2,初始值為06H,自動重裝入值為06H。T0-INIT; MOV TMOD,#00000010B ; 定時器T0工作方式2MOV TL0,#06H ; 設定時器T0的初始值 MOV TH0,#06H ; 設定時器T0的自動重裝值 MOV TCON,#00010000B ; 定時器T0的使能 SETB EA ;中斷

13、允許總控制位使能 SETB ET0 ;T0中斷使能RET5.2定時器中斷服務程序T0-INIT; DJNZ TIME-COUNT0,T0-INT-EXIT MOV TIME-COUNT0,#250DJNZ TIME-COUNT1, T0-INT-EXITMOV TIME-COUNT1,#8SETB SECOND-FLAG ;T0-INT-EXIT; RETI每0.25ms定時器中斷發(fā)生,程序跳轉到中斷服務程序T0-INT開始執(zhí)行。中斷服務程序每次將定時器中斷計數(shù)變量減1,但定時器中斷計數(shù)變量為0時,0.5s定時時間到,將位變量SECOND-FLAG置為1.定時器中斷服務程序通過RETI指令返回

14、,程序?qū)⑻D到進入中斷前的斷點繼續(xù)執(zhí)行。5.3程序流程圖 程序較為簡單,可以直接進行程序的編寫,但本實例的程序流程比較復雜,在編寫程序前,應當先畫出程序流程圖。程序流程圖是描述程序運行流程的一種圖表。它不僅描繪程序從頭到尾的運行順序,也描述程序運行過程中的所有可能發(fā)生的狀況。開始初始化變量0.5s定時時間到狀態(tài)標志變量的值時間計數(shù)變量減1南北紅東西黃時間計數(shù)=4狀態(tài)變量=5南北綠東西紅狀態(tài)變量=0東西綠燈時間計數(shù)變量減1時間計數(shù)變量減1時間計數(shù)變量減1時間計數(shù)變量減1時間計數(shù)變量減1狀態(tài)變量=3南北紅東西綠狀態(tài)變量=4時間計數(shù)=6時間計數(shù)=40南北綠燈南北黃東西紅狀態(tài)變量=2時間計數(shù)=40時間

15、計數(shù)=4時間計數(shù)=6狀態(tài)標志變量=1時間計數(shù)變量為0時間計數(shù)變量為0時間計數(shù)變量為0時間計數(shù)變量為0時間計數(shù)變量為0時間計數(shù)變量為0六電路圖及仿真設計6.1設計完成原理圖如下在電路連接完成后,將寫好的程序放入單片機,運行。6.2在初始狀態(tài)南北綠燈,東西紅燈,持續(xù)時間為25s6.3南北跳轉到黃燈5s,東西仍為紅燈 在南北轉換為紅燈的同時,東西燈轉換到綠燈持續(xù)25s;東西轉換為黃燈持續(xù)5s,南北紅燈不變;如此循環(huán),從而實現(xiàn)交通燈的作用。七總結回顧起此次單片機課程設計,我仍感慨頗多,學到了很多的東西。同時不僅鞏固了以前所學過的知識,而且還學到了很多在書本上所沒有學到過的知識。在實際設計中才發(fā)現(xiàn),書本

16、上理論性的東西與在實際運用中的還是有一定的出入的,所以有些問題不但要深入地理解,而且要不斷地更正以前的錯誤思維。一切問題必須要靠自己一點一滴的解決,而在解決的過程當中你會發(fā)現(xiàn)自己在飛速的提升。對于單片機設計,其硬件電路是比較簡單的,主要是解決程序設計中的問題,而程序設計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個設計的靈魂所在。因此可以說單片機的設計是軟件和硬件的結合,二者是密不可分的。通過這次課程設計我發(fā)現(xiàn)單片機原理應用行很強,只有老師的講解不行,只看也不中,只有自己動手去做才會發(fā)現(xiàn)自己確實有太多的不足,許多的原理,程序看似簡單,真正去做才知道知識并沒有自己想象的那

17、樣扎實。從而懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。樹立了對自己工作能力的信心,相信會對今后的學習工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。在設計完成之際再次衷心感謝李泉溪老師的指導!八源程序#include <REGX51.H>#define uchar unsigned char#define uint unsigned intuchar n=0,temp=0; uchar c

18、ode segcode0=0x5b,0x06,0x3f,0x5b,0x06,0x3f,0x5b,0x06,0x3f;uchar code segcode1=0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f;/uchar code segcode0=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void delay(x) while(x-);void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; n+; temp=temp%61; if(n=20) temp+; n=0; if(temp<25) P1=0x21; if(temp>=25)&&(temp<28) P1=0x22; if(temp>=28)&&(temp<30) P1=0x

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論