久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

基于AT89C51單片機的交通燈課程設計報告[定稿]

時間:2019-05-12 07:05:03下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《基于AT89C51單片機的交通燈課程設計報告[定稿]》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《基于AT89C51單片機的交通燈課程設計報告[定稿]》。

第一篇:基于AT89C51單片機的交通燈課程設計報告[定稿]

單片機原理及應用課程設計任務書

系(部):電子與通信工程系

課題名稱 交通燈程序設計

設計內容及要求(1)課題內容:

以單片機為核心,設計一個簡單交通燈控制系統,用于十字路口車輛交通管理,東西、南北兩個方向分別設置紅、綠、黃3種通行指示燈,計時牌顯示路口通行轉換剩余時間,另外,在特種車輛如119、120通過路口時,系統可轉為特種車輛放行,其他車輛禁止通行的狀態,15s后系統恢復正常管理。

發揮部分:東西、南北兩個方向通行的時間可以通過鍵盤設置。

(2)要求:完成該系統的硬件和軟件的設計,在Proteus軟件上仿真通過后,下載到單片機進行硬件驗證。最后就課程設計本身提交一篇課程設計說明書。

設計工作量

1、匯編或C51語言程序設計;

2、程序調試;

3、在Proteus上進行仿真后,進行下載;

4、提交一份完整的課程設計說明書,包括設計原理、程序設計、程序分析、仿真分析、調試過程,參考文獻、設計總結等。

進度安排 起止日期(或時間量)設計內容(或預期目標)備注

第一天 課題介紹,答疑,收集材料,C51介紹

第二天 設計方案論證,練習編寫C51程序

第三天~第六天 程序設計

第六天~第八天程序調試、仿真

第九天~第十天 系統測試并編寫設計說明書

交通燈程序設計

摘要

本次單片機課程設計選擇的題目是交通燈程序設計,主要是根據本學期所學的《單片機原理和接口技術》的知識,編寫交通燈的控制程序,在WAVE6000集成調試軟件上進行編譯,并在Proteus 7 Professional軟件上進行仿真,觀看結果。在經過多次的調試和電路上的修改,實現了所需要的結果(達到了設計任務書上的要求)。主要涉及的內容包括倒計時、中斷等,使用芯片80C51進行程序控制。

關鍵詞

AT89C51LED顯示交通燈

目錄

1、交通燈程序 62、交通燈仿真電路 93、結論與心得 104、存在的不足及建議 10

參考文獻 101、交通燈程序

#include

//#include //??

#define ucharunsigned char

#define uintunsigned int

uchar h;

uint r=0;

uint s;

uchar codedis[]={ 0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90,0Xff};void delay(uint c)

{

uint i,j;

for(i=0;i

for(j=0;j<100;j++);

}

//interrupt

1void t0(void)interrupt 0 using 1

{

delay(2);

if(INT0==0)

{

P1=0xdb;

P0=0xff;

}

for(h=15;h>0;h--)

{

for(s=248;s>0;s--)

{

P0=0xff;

P2=0x01;

P0=dis[h/10];

delay(1);

P0=0xff;

P2=0x02;

P0=dis[h%10];

delay(1);

P0=0xff;

P2=0x04;

P0=dis[h/10];

delay(1);

P2=0x00;

P0=0xff;

P2=0x08;

P0=dis[h%10];

delay(1);

}

}

}

void main(void)

{

EA=1;

EX0=1;

while(1)

{

P1=0xeb;

for(h=15;h>0;h--)

{

for(s=248;s>0;s--)

{if(h<=3)

P1=0xfb;

if(s<=124)

P1=0xeb;

P0=0xff;

P2=0x01;

P0=dis[h/10];

delay(1);

P0=0xff;

P2=0x02;

P0=dis[h%10];

delay(1);

P0=0xff;

P2=0x04;

P0=dis[(h+3)/10];

delay(1);

P2=0x00;

P0=0xff;

P2=0x08;

P0=dis[(h+3)%10];

delay(1);

}

}

P1=0xf3;

for(h=3;h>0;h--)

{ delay(120);

P0=0xff;

P2=0x0a;

P0=dis[h%10];

delay(900);

}

delay(248);

P1=0xdd;

for(h=10;h>0;h--)

{

for(s=248;s>0;s--)

{

if(h<=3)

P1=0xdf;

if(s<=124)

P1=0xdd;

P0=0xff;

P2=0x01;

P0=dis[(h+3)/10];

delay(1);

P0=0xff;

P2=0x02;

P0=dis[(h+3)%10];

delay(1);

P0=0xff;

P2=0x04;

P0=dis[h/10];

delay(1);

P0=0xff;

P2=0x08;

P0=dis[h%10];

delay(1);

}

}

P1=0xde;

for(h=3;h>0;h--)

{

delay(120);

P0=0xff;

P2=0x0a;

P0=dis[h%10];

delay(900);

}

delay(248);

}

}

2、交通燈仿真電路

3、結論與心得

本次單片機程設計收獲頗豐,不僅對于WAVE6000集成調試軟件和Proteus 7 Professional軟件有了進一步的熟悉,使用WAVE6000集成調試軟件進行了C語言的程序編寫與編譯,也再次的復習了本學期所學的知識。

本學期學習了《單片機原理與接口技術》這門功課,主要學習了使用匯編語言進行編寫程序,利用單片機實現其功能。這次的課程設計,根據所學知識,包括LED的顯示、倒計數器、中斷等,進行交通燈程序的設計,對于軟件編程、排錯調試、相關儀器設備的使用技能等方面得到較全面的鍛煉和提高,也對單片機的使用有了更深刻的了解。遺憾的是沒有作出實物,只是在Proteus 7 Professional軟件進行仿真,看到了所編程序所實現的功能,完全達到了課程設計的要求。也通過這次的課程設計,對使用C語言進行程序編寫,在AT89C51上實現功能,有了更多的了解與認識,也因為學習過C語言,所以很快就摸清了門路。整個設計過程很順利。

通過這次的課程設計,對《單片機原理與接口技術》所學的知識有了更進一步的了解,也看到單片機的優點。收獲頗豐。

4、存在的不足及建議

由于實驗室機器的落后,電腦的病毒太多,導致多次勞動的成功打了水漂。實驗室電腦不能連網,交流不便。

參考文獻

曾屹.單片機原理與應用[M].湖南:中南大學出版社,2009年.

第二篇:交通燈單片機課程設計

《單片機原理與接口技術課程設計報告》

課題:以交通燈為主的多功能任務設計

班級 學號 學生姓名

指導教師

淮陰工學院 電子與電氣工程學院

2015-6 1

目錄

一、課程設計目的......................................................................................................3

二、設計要求..............................................................................................................3 1. 總體要求........................................................................................................3 2. 具體要求........................................................................................................3 3. 系統硬件總框圖............................................................................................4 1)AT89C52單片機.......................................................................................5 3)數碼管顯示電路........................................................................................6 4)LED燈顯示...............................................................................................7 5)鍵盤掃描模塊............................................................................................7 6)蜂鳴器電路................................................................................................8

三、硬件電路的設計及描述......................................................................................8 1. 硬件總框圖及原理圖....................................................................................8 2. 主程序流程圖..............................................................................................10 3. 各模塊流程圖..............................................................................................11 1)時間顯示程序流程圖..............................................................................12 2)流水燈程序流程圖..................................................................................12 3)利用蜂鳴器的音樂流程圖......................................................................13 4)交通燈控制..............................................................................................13

四、源程序代碼........................................................................................................14

六、調試情況

六、設計心得............................................................................................................20

七、參考文獻............................................................................................................20

一、設計目的

《單片機原理及應用》課程設計是一項重要的實踐性教育環節,是學生在校期間必須接受的一項工程訓練。在課程設計過程中,在教師指導下,應用工程的方法,通過一個簡單課題的設計練習,可使學生初步體驗單片機應用系統的設計過程、設計要求、完成的工作內容和具體的設計方法,了解必須提交的各項工程文件,也達到鞏固、充實和綜合運用所學知識解決實際問題的目的。

通過課程設計,應該能加強學生如下能力的培養:(1)獨立工作能力和創造力;

(2)綜合運用專業及基礎知識,解決實際工程技術問題的能力;(3)查閱圖書資料、產品手冊和各種工具書的能力;(4)工程繪圖的能力;

(5)編寫技術報告和編寫技術資料的能力。

二、設計要求

1.總體要求

(1)獨立完成設計任務(2)繪制系統硬件總框圖(3)繪制系統原理電路圖

(4)制定編寫設計方案,編制軟件框圖,完成詳細完整的程序清單和注釋(5)制定編寫調試方案,編寫用戶操作使用說明書

(6)寫出設計工作小結。對在完成以上文件過程所進行的有關步驟如設計思想、指標論證、方案確定、參數計算、元器件選擇、原理分析等作出說明,并對所完成的設計作出評價,對自己整個設計工作中經驗教訓,總結收獲和今后研究方向。

2.具體要求

本次工程實踐的校內部分主要以單片機為基礎,進行單片機軟件編程,目的 3 是為了提高學生的軟件編程和系統設計能力,整個設計系統包括兩個部分,硬件及軟件部分,硬件部分已經制作成功,學生只需要掌握其原理和焊接相應的元器件,掌握元器件的辨別和元器件的作用以及應用場所即可,另外對所焊接的電路還需要進行仔細的檢查,判斷是否有焊接錯誤的地方或者短路的地方,對出現的異常情況要能夠根據現象判別原因,并具備解決問題的能力,從而切實提高學生的硬件電子電路的分析、判斷能力。

軟件編程是本次課程設計的重要環節。在為期兩周的工程實踐中,將占據主要時間,完成的軟件編程任務主要包括以下幾點:

1)、熟悉Keil C51編程平臺及相關編程軟件

2)、編寫、調試蜂鳴器、繼電器動作、方波程序并進行軟硬件聯調 3)、編寫、調試LED流水燈(循環顯示)程序并進行軟硬件聯調 4)、編寫、調試鍵盤掃描子程序并進行軟硬件聯調 5)、編寫、調試數碼管動態掃描程序并進行軟硬件聯調 6)、基于交通燈的多功能控制設計

其中前五個內容是后兩個內容的基礎,主要是編制一些子程序,為后繼的整個系統設計打下基礎。交通燈控制是在五個課題中選做的一個設計,是一個簡單的單片機編程設計,來實現智能交通燈的多功能作用。

3.系統硬件總框圖

圖1 系統設計總框圖

此次課程設計,AT89C52是一種帶2K字節閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機。1)AT89C52單片機

設計中所用的單片機型號為AT89C52,其主要功能為:

AT89C52是低功耗、高性能的CMOS 8位單片機。片內帶有8KB的Flash存儲器,且允許在系統內改寫或用編程器編程。另外,AT89C52的指令系統和引腳與80C52完全兼容,所以,近幾年AT89C52單片機應用極為廣泛。

AT89C52單片機除了含有8KB的Flash存儲器外,片內還有256 B的RAM,32條I/O口線,3個16位定時/計算器、6個中斷源、1個全雙工串行口等。同時,與80C52一樣,有空閑和掉電兩種節電運行方式。

AT89C52引腳如下圖所示:

圖2 AT89C52引腳

AT89C52單片機為40腳雙列直插封裝的8 位通用微處理器,采用工業標準的C51內核,在內部功能及管腳排布上與通用的8xc52 相同,其主要用于會聚調整時的功能控制。功能包括對會聚主IC 內部寄存器、數據RAM及外部接口等功能部件的初始化,會聚調整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。

2)DS1302模塊

DS1302的RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。當RST為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數據傳送,I/O引腳變為高阻態。

其管腳圖如下:

圖3 DS1302管腳圖

各引腳功能:Vcc1為后備電源,VCC2為主電源,X1和X2是振蕩源,SCLK為輸入端

RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節或多字節數據的傳送手段。

3)數碼管顯示電路

圖4 數碼管顯示電路

設計中采用六位共陰極數碼管,通過單片機STC89C52的P0口控制其位選和段選,以達到動態顯示相應數值的效果。在其位選控制部分,采用了一個9012型三極管,要求當P0口輸出低電平時,位選成功。

所謂動態掃描就是指我們采用分時的方法,輪流控制各個顯示器的COM端,6 使各個顯示器輪流點亮。在輪流點亮掃描過程中,每位顯示器的點亮時間是極為短暫的(約1ms),但由于人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各位顯示器并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感。

4)LED燈顯示

圖5 LED顯示模塊

本次課程設計中,“程序語言”通過“翻譯”軟件“翻譯”成單片機所需的二進制代碼,單片機可工作。要用外加電源和分壓電阻來控制低電平驅動點亮,因為單片機不能直接高電平驅動LED燈。如圖D1-D8和R1、R2以及R6-R11連接到單片機IO口,當P1口某腳變低時相應LED發光。實現LED燈的閃爍,只需利用編程方法依次從低位到高位逐個變為低電平,等待少許時刻再變高即可。

5)鍵盤掃描模塊

圖6 按鍵輸入電路

本模塊四個開關分別用于控制流水燈控制電路,時間顯示電路,音樂蜂鳴器電路,交通燈四部分功能。當按下其中一個開關時,該部分電路導通,給單片機 發出地址信號,實現其中一項功能的運做,如圖4所示。

KEYA鍵:其功能是當該鍵按下時,蜂鳴器程序工作; KEYB鍵:其功能是當該鍵按下時,流水燈程序工作;

KEYC鍵:其功能是當該鍵按下時,數碼管動態掃描程序工作; KEYD鍵:其功能是當該鍵按下時,交通燈程序工作。

6)蜂鳴器電

圖7 蜂鳴器電路

蜂鳴器單元電路是通過一個PNP三極管來放大驅動蜂鳴器,蜂鳴器的正極接到+5V電源上面,蜂鳴器的負極接到三極管的發射極,三極管的基極經過限流電阻后由單片機的P3.4控制。

當輸出高電平時,三極管截止,蜂鳴器的兩引腳間的直流電壓接近于0V,沒有電流流過線圈,蜂鳴器不發聲;當輸出低電平時,三極管導通,使蜂鳴器的兩個引腳間獲得將接近+5V的直流電壓,這樣蜂鳴器的電流形成回路,發出聲音。因此,我們可以通過程序控制IO口輸出的電平來控制蜂鳴器是否發出聲音,實現各種可能音響的產生。

三、硬件電路的設計及描述

1.硬件總框圖及原理圖

圖8 硬件總框圖

圖9 硬件總原理圖

2.主程序流程圖

3.各模塊流程圖 1)時間顯示程序流程圖

2)流水燈程序流程圖

3)利用蜂鳴器的音樂流程圖

4)智能交通燈

四、源程序代碼

/******************************************************************** * 文件名

: 4個功能由按鍵控制.c * 描

: 按下A鍵,實現蜂鳴器動作。

按下B鍵,實現LED流水燈循環顯示。

按下C鍵,實現數碼管動態掃描顯示。

按下D鍵,實現交通燈功能。* 創建人

***********************************************************************/ #include #include

#define uint unsigned int

// 無符號整形習慣的定義

#define uchar unsigned char

//無符號字符型習慣的定義 void buzz_key(void);

//子函數聲明 void led_key(void);void tube_key(void);void traffic(void);unsigned char code duanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 0 1 2 3 4 5 6 7 8 9

unsigned char code weima[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

// 選擇哪個數碼管

unsigned char temp[6];uchar i=35;uchar k=30;uchar l=5;uchar j;uchar b;

//定義變量

sbit duan=P2^6;//定義管腳 sbit wei=P2^7;sbit key_A=P3^4;sbit key_B=P3^5;sbit key_C=P3^6;sbit key_D=P3^7;sbit buzz=P2^3;sbit DIOLA=P2^5;sbit csda=P3^2;sbit red=P1^0;//交通燈管腳定義 sbit green=P1^1;sbit yellow=P1^2;/******************************************************************** * 名稱 : Delay_1ms()* 功能 : 延時子程序,延時時間為 1ms * x * 輸入 : x(延時一毫秒的個數)* 輸出 : 無

***********************************************************************/

void Delay_1ms(unsigned int t){ unsigned char x,y;for(x=t;x>0;x--)for(y=110;y>0;y--);

}

/******************************************************************** * 名稱 : Main()* 功能 : 實現蜂鳴器,流水燈,數碼管,交通燈

***********************************************************************/ void main(){

DIOLA=0;//流水燈鎖存器關 流水燈未選通

wei=0;//位選關

duan=1;

P0=0;

duan=0;

csda=0;

while(1){

if(key_A==0 || key_B==0 || key_C==0|| key_D==0)

{

if(key_A==0)

//A鍵按下

{

buzz_key();

//調用蜂鳴器子程序

}

else if(key_B==0)//B鍵按下

{

led_key();

//調用流水燈子程序

}

else if(key_C==0)//C鍵按下時

{

tube_key();//調用數碼管顯示子程序

}

else

//D鍵按下時

{

traffic();

//調用交通燈子程序

i=35;

k=30;

l=5;

return;

}

}

} }

/******************************************************************** * 名稱 : buzz_key(void)* 功能 : 蜂鳴器子程序

***********************************************************************/

void buzz_key(void)

{

DIOLA=0;wei=0;

buzz=0;

//蜂鳴器響

while(key_B&&key_C&&key_D&&!key_A);

buzz=1;

//關蜂鳴器

}

/********************************************************************* * 名稱 : led_key(void)* 功能 : 流水燈子程序

***********************************************************************/ void led_key(void){

DIOLA=1;b=0xfe;

P1=b;//11111110 while(key_B==0){

b=_crol_(b,1);

//左移11111101

Delay_1ms(500);

P1=b;

//111111011

Delay_1ms(500);

}

while(key_A&&key_B&&key_C&&key_D);

P1=0xff;

}

/******************************************************************** * 名稱 : tube_key(void)* 功能 : 數碼管子程序

***********************************************************************/

void tube_key(void){

DIOLA=0;

//流水燈使能端置0 while(key_C==0)

{ unsigned int i;

for(i=0;i<6;i++)

{

wei=1;

P0=weima[i];

//位選信號

wei=0;

duan=1;

P0=duanma[i];//段選信號

duan=0;

Delay_1ms(500);

}

duan=1;

P0=0;

duan=0;

//清零

}

}

/******************************************************************** * 名稱 : traffic_key(void)* 功能 : 交通燈子程序

***********************************************************************/

void traffic(void)

{

DIOLA=0;

while(key_D==0)

{

if(i>0)

{

DIOLA=1;

b=0xfe;

P1=b;//11111110

for(j=0;j<40;j++)

{

P0 = 0;

wei=1;

//消隱

P0 = weima[0];

wei=0;

duan=1;

//第1位數碼管顯示

P0 = duanma[(i / 10)%10];//在這里取 i 的個位數

Delay_1ms(40);

//延時40毫秒后顯示下一個數

P0 = 0;

wei=1;

//消隱

P0 = weima[1];

wei=0;

duan=1;

//第2位數碼管顯示

P0 = duanma[i % 10];

//在這里取 i 的個位數

Delay_1ms(40);

//延時40毫秒后顯示下一個數

}

i--;

}

else if(k>0)

{

DIOLA=1;

b=0xfd;

P1=b;//11111110

for(j=0;j<40;j++)

{

P0 = 0;

wei=1;

//消隱

P0 = weima[0];

wei=0;

duan=1;

//第1位數碼管顯示

P0 = duanma[(k / 10)%10];//在這里取 i 的個位數

Delay_1ms(40);

//延時3毫秒后顯示下一個數

P0 = 0;

wei=1;

//消隱

P0 = weima[1];

wei=0;

duan=1;

//第2位數碼管顯示

P0 = duanma[k % 10];

//在這里取 i 的個位數

Delay_1ms(40);

//延時3毫秒后顯示下一個數

}

k--;

}

else if(l>0)

{

DIOLA=1;

b=0xfb;

P1=b;//11111110

for(j=0;j<40;j++)

{

P0 = 0;

wei=1;

//消隱

P0 = weima[0];

wei=0;

duan=1;

//第1位數碼管顯示

P0 = duanma[(l / 10)%10];//在這里取 i 的個位數

Delay_1ms(40);

//延時3毫秒后顯示下一個數

P0 = 0;

wei=1;

//消隱

P0 = weima[1];

wei=0;

duan=1;

//第2位數碼管顯示

P0 = duanma[l % 10];

//在這里取 i 的個位數

Delay_1ms(40);

//延時3毫秒后顯示下一個數

}

l--;

}

}

}

五、設計心得

通過兩個星期的實驗,我的設計雖然有一些毛病,但總體上還是成功的。兩周的時間雖然短暫,但我從中受益匪淺,畢竟在課堂學習到的東西真真正正的用到實際中還是有很大困難的,要把理論運用于實踐確實并非一件易事。我從最初的設想設計一個什么樣的數字電路到繪制電路圖,然后打印排版,最后矯正設計中的漏洞與不足,整個過程我翻閱了大量的資料。

這次交通燈的課程設計,也使我得到了一次用專業知識、專業技能分析和解決現實問題的能力。使我在單片機的基本原理、單片機應用學習過程中,以及在常用編程設計思路技巧的掌握方面都能向前邁了一大步,為日后成為一名合格的應用型人才打下良好的基礎。綜合課程設計讓我把以前學習到的知識得到鞏固和進一步的提高認識,對已有知識有了更深層次的理解和認識。在此,由于自身能力有限,在課程設計中碰到了很多的問題,我通過查閱相關書籍、資料以及和周圍同學交流得到解決。

還有交通燈是我們生活中非常常見的一種東西,對于我們學以致用的這種能力得到了很好鍛煉,能夠為我們以后的工作于學習打下基礎。

六、參考文獻

1.《單片機原理及接口技術》 李朝青 北京航空航天大學出版社,2004 2.《單片機原理及應用》 李全力 高等教育出版社,2001 3.《電子系統設計與實踐》 楊剛,周群 電子工業出出版社,1997 4.《單片機微型計算機技術》 劉國榮 機械工業出版社,1997 5.《數字電子技術》 楊志忠 高等教育出版社,2003 6.《電子技術》 胡宴如 高等教育出版社,2001 7.《電子線路CAD》 王延才 機械工業出版社,2001 8.《單片機應用技術選編》 何利民 北京航空航天大學出版社,1996 9.《單片機應用技術》 吳國經 中國電力出版社,2004 10.《單片機及接口技術實踐教程》 胡健 北京機械工業出版社,2002 11.《使用接口技術》 李廣軍 成都電子科技大學出版社,1998

第三篇:單片機課程設計任務書(交通燈)

單片機課程設計任務書
本次設計共 41×2 人。

一、設計任務:

1、路口交通燈控制系統設計 1)A 道通行,B 道禁行 30s; 2)黃燈閃爍 5s; 3)A 道禁行,B 道通行 30s; 4)黃燈閃爍 5s。5)按下 K1,A 道通行,B 道禁行,直到 K1 復位; 6)按下 K2,B 道通行,A 道禁行,直到 K2 復位; 7)按下 K3,A、B 禁行。

二、設計要求 1)主控芯片:AT89S52,顯示器件可以選用發光二極管、數碼管或 LCD 其中一種; 2)系統總體設計和軟硬件功能劃分; 3)硬件電路設計; 4)軟件設計; 5)軟件、硬件仿真調試; 6)轉換 PCB 板; 7)生產 PCB 板,焊接調試; 8)樣品試運行。

三、時間分配: 整個設計時間為一周,根據實際進度由指導教師控制。

四、設計者: 電氣 0812,共 41×2 人。

五、使用儀器、材料:

1、電腦、單片機實驗箱、單片機編程器等。

2、AT89S52 單片機芯片,相應的電子元器件等。

六、上繳材料:

1、設計任務書一份;設計說明書(包括:系統功能描述,設計思路,軟、硬件設計,設 計圖紙,樣品等);總結報告等。

2、樣品一件。


第四篇:單片機交通燈控制程序

#include #define uchar unsigned char #define uint unsigned int uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40 };//*************digit display port******* sbit led_w1=P1^1;sbit led_w2=P1^0;sbit led_w3=P1^3;sbit led_w4=P1^2;

//*****define led port ********** sbit R1=P2^4;//east and west red led sbit Y1=P2^3;//east and west yellow led sbit G1=P2^2;//east and west green led sbit R2=P2^5;//south and north red led sbit Y2=P2^6;//south and north yellow led sbit G2=P2^7;//south and north green led

//*********define key************** sbit k0=P3^0;//emergency sbit k1=P3^1;//east and west pass sbit k2=P3^2;//south and north pass sbit k3=P3^3;//start and subtract 1 sbit k4=P3^4;//pause and add 1 sbit k5=P3^5;//set time

//*********define variable********* bit flag,flag_t;uchar dx_time,nb_time;uchar cnt,pass_time,cnt1,y_time;uchar k0num,k1num,k2num,k3num,k4num,k5num;

//*********define key******** void delay(uint i){ uint x,y;for(x=i;x>0;x--)

for(y=110;y>0;y--);} void timer0_init(){ TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;}

void led_display(uchar dx,nb){ uchar dx1,dx2,nb1,nb2;dx2=dx/10;dx1=dx%10;nb2=nb/10;nb1=nb%10;if(dx>99){

led_w1=1;

led_w2=1;} else {

led_w1=0;

P0=table[dx1];

delay(5);

led_w1=1;

if(dx<10&&dx>0)led_w2=1;

else

{

led_w2=0;

P0=table[dx2];

delay(5);

led_w2=1;

} } if(nb>99){

led_w3=1;

led_w4=1;} else {

led_w3=0;

P0=table[nb1];

delay(5);

led_w3=3;

if(nb<10&&nb>0)led_w4=1;

else

{

led_w4=0;

P0=table[nb2];

delay(5);

led_w4=4;

} } } //*************light work********** void circle_led(){ if(!flag){

if(pass_time>5)

{

led_display(pass_time-5,pass_time);

R1=1;Y1=1;G1=0;

//east and west pass

R2=0;Y2=1;G2=1;

//south and north stop

}

if(pass_time<=5&&pass_time>0)

{

if(cnt>=10)led_display(pass_time,pass_time);

else led_display(100,pass_time);

R1=1;G1=1;

//east and west yellow led flash

if(cnt>=10)Y1=0;

else Y1=1;

R2=0;Y2=1;G2=1;

}

if(pass_time==0)

{

pass_time=nb_time;

flag=1;

} } else {

if(pass_time>5)

{

led_display(pass_time,pass_time-5);

R1=0;Y1=1;G1=1;

//east and west stop

R2=1;Y2=1;G2=0;

//south and north pass

}

if(pass_time<=5&&pass_time>0)

{

if(cnt>=10)led_display(pass_time,pass_time);

else led_display(pass_time,100);

R1=0;Y1=1;G1=1;

R2=1;G2=1;

//south and north yellow led flash

if(cnt>=10)Y2=0;

else Y2=1;

}

if(pass_time==0)

{

pass_time=dx_time;

flag=0;

} } }

void emergency()

//east and west,south and north stop { led_display(0,0);R1=0;Y1=1;G1=1;R2=0;Y2=1;G2=1;} void dx_pass()

//east and west pass,south and north stop { led_display(100,100);if(y_time<=5&&y_time>0){

TR1=1;

R1=0;Y1=1;G1=1;

R2=1;G2=1;

//south and north yellow led flash

if(cnt1>=10)Y2=0;

else Y2=1;} if(y_time==0){

TR1=0;

R1=1;Y1=1;G1=0;

R2=0;Y2=1;G2=1;} } void nb_pass()

//south and north pass,east and west stop { led_display(100,100);if(y_time<=5&&y_time>0){

TR1=1;

R1=1;G1=1;

if(cnt1>=10)Y1=0;//east and west yellow led flash

else Y1=1;

R2=0;Y2=1;G2=1;

} if(y_time==0){

TR1=0;

R1=0;Y1=1;G1=1;

R2=1;Y2=1;G2=0;} }

//***********keyboard scan************ void keyscan(){

if(!k5num)

{

if(k0==0)//*******emergency*******

{

delay(10);

if(k0==0)

{

while(!k0);

TR0=0;

k0num=1;

}

}

if(!k1num&&!k0num)

{

if(k1==0)

{

delay(10);

if(k1==0)

{

while(!k1);

k1num=1;

k2num=0;

y_time=5;//單方向通行時,黃燈閃爍時間

TR0=0;

TR1=1;

}

}

}

if(!k2num&&!k0num)

{

if(k2==0)

{

delay(10);

if(k2==0)

{

while(!k2);

k1num=0;

k2num=1;

y_time=5;//單方向通行時,黃燈閃爍時間

TR0=0;

TR1=1;

}

}

}

if(k3==0)

{

delay(10);

if(k3==0)

{

while(!k3);

if(k1num||k2num)pass_time=dx_time;//由東西或南北通行返回時,重新開始執行。

k0num=0;

k1num=0;

k2num=0;

k4num=0;

k5num=0;

TR0=1;

TR1=0;

flag_t=0;

}

} {

} if(!k4&&!k0num)

//pause { delay(10);if(k4==0){

while(!k4);

TR0=0;

k4num=1;} }

if(k4num==1)

//暫停鍵按下時,才可以調整兩個方向通行時間 if(k5==0){ delay(10);if(k5==0){

k5num++;

while(!k5);

switch(k5num)

{

case 1:

TR0=1;

flag_t=1;//調整時間時,pass_time值不變。

k5num=1;

break;

case 2:

k5num=2;

break;

case 3:

TR0=0;

k5num=0;

pass_time=dx_time;//重新賦值

break;

} } } if(k5num!=0){ if(k3==0){

delay(10);

if(k3==0)

{

while(!k3);

switch(k5num)

{

case 1:

dx_time--;

if(dx_time<10)

break;

case 2:

nb_time--;

if(nb_time<10)

break;

}

}

}

if(k4==0)

{

delay(10);

if(k4==0)

{

while(!k4);

switch(k5num)

{

case 1:

dx_time++;

if(dx_time>=100)

break;

case 2:

nb_time++;

if(nb_time>=100)

break;

}

}

}

} } } void main(){ timer0_init();dx_time=45;nb_time=30;

dx_time=99;nb_time=99;dx_time=10;nb_time=10;

pass_time=dx_time;while(1){ keyscan();if(k0num)emergency();else { switch(k4num){

case 0:

if(!k1num&&!k2num)

circle_led();

else

{

if(k1num)dx_pass();

if(k2num)nb_pass();

}

break;

case 1:

switch(k5num)

{

case 0:

if(!k1num&&!k2num)

circle_led();

else

{

if(k1num)dx_pass();

if(k2num)nb_pass();

}

break;

case 1:

R1=1;Y1=1;G1=1;//調整時間時,關閉所有燈

R2=1;Y2=1;G2=1;

if(cnt<=10)

led_display(100,nb_time);

else

led_display(dx_time,nb_time);

break;

case 2:

R1=1;Y1=1;G1=1;//調整時間時,關閉所有燈

R2=1;Y2=1;G2=1;

if(cnt<=10)

led_display(dx_time,100);

else

led_display(dx_time,nb_time);

break;

}

break;

}

}

} } void timer0()interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;cnt++;if(cnt==20){

cnt=0;

if(flag_t==0)pass_time--;//調整時間時,不執行此操作

} } void timer1()interrupt 3 { TH1=(65536-50000)/256;TL1=(65536-50000)%256;cnt1++;if(cnt1==20){

cnt1=0;

y_time--;//單方向通行時,黃燈閃爍時間。

} }

第五篇:數字電路課程設計報告—交通燈

數字電路課程設計

--交通燈控制器的設計

院系:

姓名:

指導教師:

完成日期:2011年6月7日

數字電路課程設計

--交通燈控制器的設計

一、課程設計目的

1.熟悉集成電路的引腳安排

2.掌握各芯片的邏輯功能及使用方法。

3.了解數字交通燈控制電路的組成及工作原理 4.學會用仿真軟件對設計的原理圖進行仿真。

二、設計要求及原理:

要求:設計一個主要街道和次要街道十字路口的交通燈控制器。主要街道綠燈亮6s,黃燈亮2s;次要街道綠燈亮3s,黃燈亮1 s。依次循環。當主要街道亮綠燈和黃燈時,次要街道亮紅燈(8s),當次要街道亮綠燈和黃燈時,主要街道亮紅燈(4 s)。用MG,MY,MR,CG,CY,CR分別表示主要街道的綠燈、黃燈、紅燈,次要街道的綠燈、黃燈、紅燈。

原理:根據設計要求可知,各燈狀態轉換的周期為12s,因此可設計一個12進制的加計數器,來控制秒數,當計數值達到1011時,通過反饋置數法,將計數器清零,從而達到循環效果。列出每秒各燈亮的情況的真值表,通過真值表得到相應的邏輯圖,便可實現對交通燈的控制。

三、設計步驟:

1、根據設計要求列出交通燈控制器的真值表如下:

交通燈控制器真值表:

QD QC QB QA MG MY MR CG 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 1

CY

0 0 0 0 0 0 0 0 0 CR 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 0 X X X X 0 0 0 X X X X 1 1 1 X X X X 1 1 0 X X X X 0 0 1 X X X X 0 0 0 X X X X

2、從元器件庫中拖出邏輯轉換儀,根據交通燈控制器的真值表,獲得MG的最簡邏輯表達式。同理,求出MY,MR,CG,CY,CR的最簡邏輯表達式如下:

MY?B*C MR?D

CG?DB?DA CY?ABD CR?D MG?DC?DB

3、利用邏輯轉換儀將MG,MY,MR,CG,CY,CR由最簡式轉換成下圖所示邏輯圖:

4、將MG,MY,MR,CG,CY,CR邏輯圖進行元件封裝,得到下圖所示封裝元件,并將各元件按下圖方式連接。

(圖一)

5、將連接好的電路再進行整體封裝,得到下圖2所示的元件:

(圖二)

6、將74LS163和上面生成的元件進行下圖所示連接,便得到了一個完整的交通燈控制電路。其中,~LOAD是置數端。CLK接一秒方波。邏輯分析儀時時分析交通燈輸出狀態。

四、仿真結果分析:

時鐘頻率設置為1Hz時,邏輯分析儀顯示各點波形如下:

本次試驗基本達到設計要求:與仿真校對時間相比,主要街道綠燈亮6s,黃燈亮2s,紅燈4s;次要街道綠燈亮3s,黃燈亮1 s,紅燈8s,依次循環。但是,實驗中還存在一點瑕疵,當主要街道MG燈亮時,次要街道亮燈由CR轉換到CG時CY燈有短暫的閃亮,分析其原因,應該是仿真過程中,電路的某一部分有延時,引起了計數器計數的瞬間非法脈沖,或者計數器本身計數跳變時存在中間態,而導致的。

五、參考文獻:

①《電子技術基礎》(模擬部分)康華光主編 華中理工大學電子學教研室

②《電子技術基礎》(數字部分)康華光主編 華中理工大學電子學教研室

③《電子技術試驗與課程設計》 畢滿清主編 機械工業出版社

六、設計心得:

這次的課程設計可謂是歷經波折,面對著多選的題目,不知道該選哪個好,起初試圖性的做了搶答器的設計,但由于對涉及到的大多芯片功能及引腳作用不甚了解,對數電的知識也忘了很多,只進行了一小步就沒辦法再繼續下去了,只好轉而進行交通燈控制器的設計。在設計交通燈控制器的過程中,也碰到了很多問題,不斷的查錯,不斷的修改甚至重新畫電路圖,不斷的查閱相關資料,來解心中的疑惑,最終,完成設計任務。

通過本次課程設計,使我明白了做事應該要有毅力,要敢于面對各種難題。加強了我動手、思考和解決問題的能力,雖說過程有點艱辛,但讓我不僅溫習了數電知識,對書本上的知識有了更深入的理解,也從相關資料中額外的學到了很多東西。因此,這次的課設,總得來說,算是蠻成功的。

下載基于AT89C51單片機的交通燈課程設計報告[定稿]word格式文檔
下載基于AT89C51單片機的交通燈課程設計報告[定稿].doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    交通燈單片機實現實習報告

    單 片 機 課 程 設 計學院: 專業: 班級: 小組成員:交通燈單片機課程設計 SECOND1 EQU 30H ;東西路口計時寄存器 LED_G1 BIT P1.0 ;東西路口綠燈 LED_Y1 BIT P1.1 ;東西路......

    單片機課程設計報告格式

    《單片機課程設計》報告格式 一、 封面(注明:單片機課程設計報告、課題名稱、班級、姓名、指導教師、日期) 二、 摘要(課題簡要說明) 三、 課題設計目標(功能、性能指標)、方案論證......

    單片機課程設計報告格式

    單片機課程設計報告格式要求統一的A4紙打印。每頁約44行,每行約34字;打印正文用宋體小四號字;版面頁邊距上空2.5cm,下空2cm,左空2.5cm,右空2cm;頁碼用小五號字,底端居中。A、封面;B、......

    單片機課程設計報告

    《單片機原理與接口技術》 課程設計報告 設計題目: 基于80C51單片機系統實驗板的制作 與程序設計專業:應用電子專業班級: 11應電班姓名: 丁文俊指導教師: 余靜老師2013 年 5 月2......

    單片機課程設計報告

    課程設計報告 題 目: 自動滴灌系統設計 課程名稱: 單片機原理及應用 學 院: 信息工程學院專 業: 計算機科學與技術 班 級: 2014 級計本 1 班學生姓名: *** 學 號: 201403031......

    單片機課程設計報告

    單片機課程設計報告題目:小直流電機調速實驗教學單位: 機 電 工 程 系專業: 機械設計制造及其自動化班級: 0803班學號: 0811050342姓名: 程懷虎2011 年 11月(以下內容用宋體,五號,單......

    單片機課程設計報告(范文)

    片 機 課 程 設 計 報學號、姓名:年級、專業:培養層次:課程名稱:授課學時學分:考試成績:授課或主講教師簽字:單 告1 單片機最小系統功能說明單片機的最小系統是由組成單片機系統必......

    單片機課程設計報告

    單片機課程設計報告? 課程名稱:單片機原理及接口課程設計? 題目:基于? 學院:電氣信息學院? 專業班級:測控技術與儀器? 姓名:江讓? 學號:? 指導老師:劉升老師 ? 時間: C51單片機的ADC0809數模......

主站蜘蛛池模板: 亚洲国产av无码精品无广告| 九九99久久精品国产| 亚洲一区自拍高清亚洲精品| 亚洲色大成网站www在线观看| 无遮挡又黄又刺激的视频| 中文字幕中文乱码www| 人人超人人超碰超国产97超碰| 无码ol丝袜高跟秘书在线观看| 国产日产欧产精品精乱子| 久久精品国产国产精| 人妻少妇伦在线无码专区视频| 国精一二二产品无人区免费应用| 四虎影在永久在线观看| 亚洲精品无码mv在线观看| 久久久久久无码午夜精品直播| 国产大片黄在线观看私人影院| 欧美一进一出抽搐大尺度视频| 伊人久久大香线蕉亚洲| 无码国产精成人午夜视频| 免费视频爱爱太爽了| 婷婷色婷婷开心五月四房播播| 永久免费的av在线电影网| 毛片a久久99亚洲欧美毛片| 无码午夜人妻一区二区三区不卡视频| 亚洲精品欧美综合四区| 国产乱人伦无无码视频试看| 欧美熟妇精品一区二区三区| 尤物av无码国产在线看| 精品无码国产自产野外拍在线| 国产黑色丝袜在线观看下| 乳乱公伦爽到爆| 亚洲国产精品久久久久秋霞1| 男女啪啪永久免费网站| 无码人妻精品一区二区三区东京热| 女人下边被添全过视频的网址| 国产成人无码精品久久涩吧| 久久精品中文字幕无码绿巨人| 在线看片免费人成视频久网下载| 亚洲精品久久久久久久蜜臀老牛| 特黄大片又粗又大又暴| 国产与黑人在线播放|