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

下載本文檔

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

文檔簡介

1、河 南 理 工 大 學萬 方 科 技 學 院單 片 機 課 程 設 計 20112012學年 第 1 學期課 程 名 稱:單片機原理與應用實例仿真設 計 題 目: 單片機課程設計 學 生 姓 名: 學 號: 0926304017 專 業(yè) 班 級:計算機科學與技術01班 指 導 教 師: 2011-10-24目 錄一概述2二功能概述22.1設計任務:交通燈的硬件和軟件設計22.2設計目的2三硬件設計23.1定時器33.2定時器計數(shù)器的概念33.3定時器計數(shù)器的相關寄存器33.4 定時器計數(shù)器的編程4四軟件設計54.1定時器初始化5五電路圖及仿真設計55.1設計完成原理圖如下55.2南北跳轉到黃燈

2、5s,東西仍為紅燈65.3程序代碼7六總結12參考文獻13一概述引 言近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據(jù)具體硬件結構軟硬件結合,加以完善。十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實現(xiàn)這井然秩序呢?靠的就是交通信號燈的自動指揮系統(tǒng)。交通信號燈控制方式很多。本系統(tǒng)采用單片機設計交通燈控制器,. 二功能概述2.1設計任務:交通燈的硬件和軟件設計2.2設計目的1.進一步熟悉和掌握單片機的結構和工作原理。2.掌握單片

3、機的接口技術及相關外圍芯片的外特性,控制方法。3.通過課程設計,掌握以單片機為核心的電路設計的基本方法和技術,了解有關電路參數(shù)的計算方法。4.通過實際程序設計和調試,逐步掌握模塊化程序設計方法和調試技術。5.通過完成一個包括電路設計和程序開發(fā)的完整過程,為我們今后從事相應工作打下基礎。三硬件設計基礎知識交通燈控制器實例主要使用了89C52定時器,基礎知識主要包括交通燈的變化規(guī)律、定時器概念和工作方式、以及數(shù)碼管的動態(tài)顯示方式。3.1定時器定時器是單片機中最常用、最重要的功能模塊之一,本節(jié)通過交通燈控制器實例來演示定時器的使用。首先介紹交通燈以及定時器計數(shù)器的基礎知識,接著介紹本實例的硬件電路構

4、成,然后逐步分析定時器的變成以及程序的全貌,最后總結一下本實例的技巧與注意點。3.2定時器計數(shù)器的概念89C52片機內有兩個可編程的定時器計數(shù)器T0、T1。當定時器計數(shù)器用作“定時器”時,每經(jīng)過1個機器周期(12個時鐘周期),計數(shù)器加1。當定時器計數(shù)器用作“計數(shù)器”時,計數(shù)器在對應的外部輸入管腳(T0為P3.4引腳,T1為P3.5引腳)上每發(fā)生一次1到0的跳變時加1。使用“計數(shù)器”功能時,外部輸入每個機器周期被采樣一次。當某一周期管腳狀態(tài)采樣為高電平而下一周期采樣為低電平時,計數(shù)器加1。由于檢測下降沿跳變需要兩個機器周期(24個時鐘周期)的時間,所以技術頻率最大值只能為時鐘周期的124。計數(shù)器

5、對外部輸入信號的占空比并無限制,但為了保證給定的電平信號在其改變之前至少被采樣一次,外部輸入信號必須至少保持一個完整的機器周期。3.3定時器計數(shù)器的相關寄存器與定時器計數(shù)器相關的寄存器有定時器計數(shù)器工作方式寄存器(TMOD)、定時器計數(shù)器控制寄存器(TCON)。TCON已經(jīng)在2.5節(jié)受控輸出實例中介紹過,因此,在本例中主要介紹TMOD寄存器。定時器計數(shù)器工作方式寄存器(TMOD),字節(jié)地址89H,不可進行位尋址。定時器計數(shù)器工作方式寄存器(TMOD)的8位分為兩組,高4位控制T1,低4位控制T0。TMOD每一位的功能如下。GATE:門控位。GATE0,僅由運行控制位TRX(X0,1)1來啟動定

6、時器計數(shù)器運行;GATE1,由運行控制位TRX(X0,1)1和外部中斷引腳上的高電平共同來啟動定時器計數(shù)器運行。CT:定時器模式和計數(shù)器模式選擇位。CT0,為定時器模式;CT1,為計數(shù)器模式。M1、M0:工作方式選擇位。M1、M0的4中編碼對應4種工作方式,對應關系見表210。3.4 定時器計數(shù)器的編程(1)初始化定時器計數(shù)器的初始化編程包括以下幾個部分。根據(jù)要求給定時器計數(shù)器方式寄存器(TMOD)送一個方式控制字,以設定定時器計數(shù)器的工作方式。根據(jù)需要給TH和TL寄存器送初值,以確定需要的定時時間或計數(shù)的初值。根據(jù)需要給中斷允許寄存器(IE)送中斷控制字,以開放相應的中斷和設定中斷優(yōu)先級。給

7、TCON寄存器送命令字以啟動或禁止定時計數(shù)器的運行。(2)定時器計數(shù)器初值的計算。計數(shù)器初值:設計算器的模值位M,所需的計數(shù)值為C,計數(shù)初值設定為TC,則TC=M-C (M等于2的13次方,16次方,8次方)。定時器初值:設定時器的模值為M,需要的定時時間為T,定時器的初值設定為TC,則TC=M-T/t(M等于2的13次方,16次方,8次方)。四軟件設計交通燈控制器實例使用了89C52片機的定時器,首先分定時器初始化,定時器中斷服務程序兩個部分介紹定時器計數(shù)器的軟件編程,其次在畫出程序流程圖的基礎上編寫軟件程序,并給出完整的交通燈控制器程序實例。4.1定時器初始化為了使定時器時間準確,避免因為

8、定時器重裝而引起的累計誤差,應將定時器設置為初值自動裝置的8位定時器/計數(shù)器,即定時器工作在工作方式2.在12MHz晶振條件下,8位定時器的最長定時時間是0.256ms,為了方便計算取定時時間為0.25ms,所以,定時0.5s需要定時器中斷2000次。下面計算定時器的初值。定時器初值TH0=(65536-50000)/256;TL0=(65536-50000)%256;每0.5ms定時器中斷發(fā)生,num+1,程序跳轉到中斷服務程序T0-INT開始執(zhí)行。中斷服務程序每次將定時器中斷計數(shù)變量減1,但定時器中斷計數(shù)變量為0時,0.5s定時時間到,將位變量SECOND-FLAG置為1.定時器中斷服務程

9、序通過RETI指令返回,程序將跳轉到進入中斷前的斷點繼續(xù)執(zhí)行。五電路圖及仿真設計5.1設計完成原理圖如下在電路連接完成后,將寫好的程序放入單片機,運行。5.2南北跳轉到黃燈5s,東西仍為紅燈在南北轉換為紅燈的同時,東西燈轉換到綠燈持續(xù)25s;東西轉換為黃燈持續(xù)5s,南北紅燈不變;如此循環(huán),從而實現(xiàn)交通燈的作用。5.3程序代碼#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit kai=P30;sbit jia=P31;sbit jian=P32;bit guan=1,flag=0,ci=0

10、;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar i,num;uchar max=30;void delay(uchar z)uchar x,y;for(x=0;x<z;x+)for(y=0;y<110;y+);void key()while(!kai)delay(10);if(!kai) guan=guan;while(!kai);void tiao()bit sub,add;if(bit)(P3&0x02)=0)delay(5);if(bit)(P3&0x02)=0

11、)add=(bit)(P3&0x02);max+;if(max>30)max=30;while(!add)add=(bit)(P3&0x02);if(bit)(P3&0x04)=0)delay(5);if(bit)(P3&0x04)=0)sub=(bit)(P3&0x04);max-;if(max<6)max=6;while(!sub)sub=(bit)(P3&0x04);void main()TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;while(1)key(

12、);if(guan)ET0=1;TR0=1;if(!flag) if(num<2*(max-5) P2=0xde;P0=0XF2;P1=table(max-num/2)/10; delay(1);P1=0xff; P0=0xf1;P1=table(max-num/2)%10;delay(1);P1=0xff;else if(num<2*max)if(num%2)P2=0x2e;else P2=0x3e;P0=0XF2;P1=table(max-num/2)/10;delay(1);P1=0xff;P0=0XF1;P1=table(max-num/2)%10;delay(1);P1=

13、0xff; if(flag)if(num<2*(max-5)P2=0xf3;P0=0XF2;P1=table(max-num/2)/10;delay(1);P1=0xff;P0=0XF1;P1=table(max-num/2)%10;delay(1);P1=0xff;else if(num<2*max)if(num%2)P2=0x35;else P2=0x37;P0=0XF2;P1=table(max-num/2)/10;delay(1);P1=0xff;P0=0XF1;P1=table(max-num/2)%10;delay(1);P1=0xff; elseTR0=0;num=0

14、;tiao();P0=0XF2;P1=tablemax/10;delay(1);P1=0xff;P0=0xF1;P1=tablemax%10;delay(1);P1=0xff;void time() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;i+; if(i=10)i=0;num+;if(num=2*max)num=0;flag=flag;六總結回顧起此次單片機課程設計,我仍感慨頗多,學到了很多的東西。同時不僅鞏固了以前所學過的知識,而且還學到了很多在書本上所沒有學到過的知識。在實際設計中才發(fā)現(xiàn),書本上理論性的東西與在實際運用

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

溫馨提示

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

最新文檔

評論

0/150

提交評論