久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6713|回復: 1
打印 上一主題 下一主題
收起左側

51單片機交通燈(四個方向)word格式設計報告與源碼下載

[復制鏈接]
跳轉到指定樓層
樓主
《微型計算機系統》
課程設計
題目名稱:基于單片機的交通燈控制系統設計
專業:電氣工程及其自動化
班級:151
姓名:趙*
學號:201*58
指導教師:*
青島理工大學自動化工程學院
課程設計任務書

課程名稱:微型計算機系統

設計題目:基于單片機的交通燈控制系統設計

系統要求:

可用紅、黃、綠三種顏色發光二極管和兩位LED數碼管模擬交通燈的變化規律:

  • 首先,東西路口紅燈亮,同時開始60秒倒計時;
  • 南北路口直行綠燈亮,同時開始40秒倒計時,南北人行道綠燈亮。當南北路口倒計時至4秒時,黃燈開始閃爍,南北人行道紅燈亮;倒計時至0秒時,直行燈變紅,左轉綠燈亮,同時開始20秒倒計時。當20秒倒計時結束時,南北路口紅燈亮,開始60秒倒計時;
  • 東西路口直行綠燈亮,開始40秒倒計時,東西人行道綠燈亮;按照上述變化規律依次循環。

硬件設計:

  • 最小系統設計: 51單片機為本設計的控制器,包括外擴ROMRAM(其大小由設計者自己設計),系統時鐘電路、復位電路等構成的最小系統;
  • 接口電路的設計:設計者擴展一個并行接口〔8155〕;
  • 鍵盤設計:由設計者根據需要設計鍵盤的數量
  • 顯示設計:采用LED數碼管顯示時間,顯示電路根據顯示的內容設計;采用三種顏色(紅、黃、綠)的發光二極管模擬交通燈;有開機顯示狀態(如顯示888888);
  • 在完成基本設計功能的基礎上可以另加其他功能。

軟件設計:

1)主程序設計

2)各功能子程序設計

其他要求:

  • 每位同學獨立完成本設計。
  • 依據題目要求,提出系統設計方案。
  • 設計系統電路原理圖。
  • 調試系統硬件電路、功能程序。
  • 編制課程設計報告書并裝訂成冊,報告書內容(按順序)

(1)報告書封面

(2)課程設計任務書

(3)系統設計方案的提出、分析

(4)系統中典型電路的分析

(5)系統軟件結構框圖

(6)系統電路原理圖

(7)源程序

(8)課設字數不少于3000字

成績

評語:

基于單片機的交通燈控制系統設計

摘要:

當你路過一個十字路口時,你是否注意到各個方向車輛和信任有條不紊的通過十字路口。這樣井然有序的情景靠什么來實現呢?靠的是交通燈控制系統。在論文中我使用STC89C51作為主控單元。通過單片機芯片的P1口和P2口分別控制東西方向和南北方向紅黃綠燈的點亮。通過單片機芯片STC89C51的RXD和TXD控制數碼管的顯示時間。采用發光二極管來實現交通燈的點亮,由數碼管實現時間的顯示。該系統不僅僅具有交通等的基本功能還有倒計時,還可以通過按鍵在緊急事件中四個方向都設置為紅燈緊急模式。當然也可以通過按鍵來設置倒計時時間,使系統更加符合實際交通情況。

我設計的交通燈控制系統可以較好的模擬十字路口出現的交通狀況,使行人和車輛能有序的通行。

關鍵詞:交通控制系統 單片機 AT89C51 數碼管 按鍵 LED

內容

1系統方案論證

1.1設計方案

方案一:控制系統主要控制東西方向和南北方向交通狀況,系統以單片機芯片STC89C51為主控單元,通過控制三種顏色LED燈的亮滅來指導個車道通行,上電時復位系統使系統進入運行狀態。總體框圖如下:(見51hei附件   




1.2功能概述

在東西方向和南北方向的十字路口分別設立紅黃綠交通指示燈,用數碼管倒計時顯示。正常情況下兩個主干線上的紅黃綠燈進行交換。紅燈亮表示禁止通行,綠燈亮表示可以通行,每次綠燈變紅燈之前,黃燈亮五秒,方便那些未能及時通過十字路口的車輛能繼續通過。十字路口設立數碼管有倒計時功能,方便人們直關把握通過時間。本設計也考慮緊急情況,當按下緊急模式按鍵后,四個方向紅燈都會常亮。對于夜晚車輛比較少,本設計設計了夜晚模式,按下按鍵后四個方向黃燈會常亮。

2系統硬件設計

2.1交通信號燈控制系統的組成

2.1.1 ATC89C51芯片

選用的ATC89C51與同系列AT89C51在功能上有明顯的提高,最突出的是可以實現在線編程。用于系統的總控制。其主要功能列舉如下:

  • 為一般控制應用的8位單片機
  • 內部具有時鐘振蕩器
  • 內部程序存儲器(ROM)位4KB
  • 內部數據存儲器(RAM)為128B
  • 外部程序存儲器可擴充至64KB
  • 外部數據存儲器可擴充至64KB
  • 32條雙向輸入線,且每條均可以單獨做I/O的控制
  • 5個中斷源
  • 2組獨立的16位定時器
  • 1個全雙工串行通信端口
  • 單片機芯片提供位邏輯運算指令

單片機引腳圖如下:

2.1.2交通燈控制系統構成

芯片ATC89C51一片,2段共陰極數碼管四個,紅黃綠發光二極管各四個,電阻若干,晶振一個,電容若干,按鍵若干。

交通燈控制系統結構框圖:(見51黑附件)

系統各部分工作原理:采用單片機的I/O口P0口通過上拉電阻和交通燈相連接,P3.0、P3.1口接到數碼管控制位上,控制數碼管的顯示,程序放在ATC89C51單片機的ROM中來設置初始時間,在十字路口的四組紅、黃、綠交通燈中,由單片機的P1.5—P1.7、P1.0—P1.2、P2.5—P2.7、P2.0—P2.2分別控制東西南北方向的三色燈。由于交通燈為發光二極管并且陽極通過限流電阻與電源正極相連,因此I/O口輸出電平時,與之相連的指示燈才會點亮,然后通過數碼管倒計時時間。I/O口輸出高電平時,相應指示燈會滅。由于ATC89C51本身集成了看門狗指令,當系統出現異常時看門狗會發出溢出中斷。通過專用的端口輸出,引起RESET復位信號復位系統。

2.2各單元電路模塊功能

2.2.1時鐘電路模塊

本時鐘電路由一個晶體振蕩器12MHz和兩個30pF的瓷片電容組成。時鐘電路用于產生單片機工作所需的時鐘信號,而是需所研究的是指令執行中各信號之

間的相互關系。單片機本身就是一個復雜的同步時序電路,為了保證同步工作方式的實現,電路應在唯一的時鐘信號控制下嚴格的工作。其電路圖所示:

2.2.2復位電路模塊

電容在上接高電平,電阻在下接低電平,中間為RST。這種復位電路為高電平復位。其工作原理是:通電時,電容兩端相當于是短路,于是RST引腳上為高電平,然后電源通過電容對電阻充電,RST端電壓慢慢下降,降到一定程度,即為低電平,單片機開始正常工作。其電路如下:

2.2.3信號燈輸出控制模塊

路口交通燈指示采用紅、黃、綠發光二極管進行提示。其電路如下:

2.2.4時間顯示電路模塊

  本系統使用數碼管完成倒計時顯示功能。以東西方向為例,數碼管顯示的數值從綠燈的設置時間最大值往下減,每秒鐘減1,一直減到零。然后又從紅燈的設置時間最大值往下減,一直減到零。接下來又顯示綠燈時間,如此循環。系統共有4個兩位LED數碼管,分別放在模擬交通燈的上方。路口通行剩余時間采用紅色7段數碼管顯示,采用共陰極數碼管,如用單機IP0口加上拉電阻驅動,P3.0/P3.1口來控制數碼管的位。其顯示電路如下:

2.2.5按鍵輸入模塊

由于該系統具有夜間模式,緊急情況模式和交通燈倒計時時間設定功能,所有需要加上這些功能鍵,如下圖所示:







3系統軟件設計


3.2延時的設定

3.2.1 計數器初值計算

定時器工作時必須給計數器送初值,這個值是送到TH和TL中的。他是以加法記數的,并能從全1到全0自動產生溢出中斷請求。因此,可以把計數器記滿為零所需的計數值設定為C和計數初值設定為TC可得到如下計算公式:

TC=M-C

式中,M為計數器模值,該值與計數器工作方式有關。在方式0時M為

2^13;在方式1時M的值為2^16;在方式2和3中為2^8。

算法公式:T=(M-TC)T(計數)或TC=M-T/T(計數)

T(計數)是單片機時鐘周期T(clk)的12倍;TC為定時的初值

如果單片機的主脈沖頻率為T(clk)12MHz,經過12分頻

方式0 TMAX=2^13*1微妙=8.192毫秒

方式1 TMAX=2^16*1微妙=65.536毫秒

實現1秒鐘方法:

采用在主程序中設定一個初值為20的軟件計數器和使T1定時50毫秒。

這樣每當T1到50毫秒時CPU就響應他的溢出中斷請求,進入他的中斷服務子程序。在中斷服務子程序中,CPU先使軟件計數器減1,然后判斷他是否為零。為0表示1秒已到可以返回到輸出時間顯示程序。


  • 2.2相應程序代碼

定時器需定時50毫秒,故T1工作于方式1。

初值計算:TC=M-T/T(計數)=2^16-50ms/1us=15536=3CB0H

延時程序:

START:MOV              TMOD,#10H              ;令TO為定時器方式1

 MOV              TH0,#3CH                            ;裝入定時器初值

 MOV              TL0,#0B0H

 SETB EA                                                                      ;打開總中斷

 SETB ET1                                                        ;開T1中斷

 SETB ER                                                                      ;啟動T1計數器

 CLR  FLAG1

 CLR  FLAG2

 CLR               FLAG3

 MOV  R3,#20H                            ;軟件計數器賦初值

  • 相應中斷服務子程序

 ORG              001BH

 LJMP DSD

 ORG 0300H

DSD:INC              R3

 MOV TH0,#3CH                            ;重裝定時器初值

 MOV TL0,#B0H

 CJNE R3,#20,FH

 DEC R0

 DEC R1

 MOV R3,#00H

 FH: RETI

程序的軟件延時:

單片機的工作頻率為12MHz。機器周期與主頻有關,機器周期是主頻的12倍,所以一個機器周期的時間為12*(1/12M)=1us。可以知道具體每條指令的周期數,這樣就可以通過指令的執行條數來確定1秒的時間。

具體的延時程序分析:

DELY: MOV   R4,#80H                                          ;延時一秒主程序

DE2: LCALL              DELAY1

     DJNE   R4,DE2

RET

DELAY1: MOV  R4,#00H                                          ;延時125us子程序

D1:                            MOV  R5,DL2

        DJNE R4,D1

RET

   DELAY1為一個雙重循環,循環次數為256*256=65536次,所以延時時間=65536*2=131072us約為125ms。

DELY R4設置為初值8,主延時程序循環8次,所以125ms*8=1s

  • 數碼管動態顯示

用于四個數碼管的倒計時顯示,代碼如下:

sbit  smg1=P3^0;     //定義南北方向數碼管低位

sbit  smg2=P3^1;     //定義南北方向數碼管高位

sbit  smg1=P3^2;     //定義東西方向數碼管低位

sbit  smg2=P3^3;     //定義東西方向數碼管高位

void djsxs()

{

int b1=0,b2=0;

b1=djs/10;       //將倒計時時間的高位賦予b1

b2=djs%10;       //將倒計時時間的低位賦予b2

P0=table[b1];

smg1=0;

delayms(3);

smg1=1;           //顯示b1

P0=table[b2];

smg2=0;

delayms(3);

smg2=1;           //顯示b2

P0=table[b1];

smg3=0;

delayms(3);

smg3=1;           //顯示b1

P0=table[b2];

smg4=0;

delayms(3);

smg4=1;           //顯示b2


仿真電路圖:


實物:


總結:
經過我反復思考及驗證,逐漸完善電路以及程序 bug,具體程序及電路圖請詳見附錄。通過此次課程設計的學習,我已掌握老師課堂所述內容,并應用于實踐中,在設計及過程中,發現自己好多知識都掌握不扎實,通過詢問其他同學,以及查閱資料等,已逐步掌握未扎實的內容,為此,我從心底不免升起一份感激之情,感謝老師為了我們著想,老師謝謝您!

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<LED.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar time,second,seconde,miao1,miao0;
  6. sbit smg1=P2^5;//低位
  7. sbit smg2=P2^6;//東西高位
  8. sbit smg3=P2^7;//南北高位
  9. uchar code table1[]={0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f};
  10. uchar code table2[]={0x6d,0x66,0x4f,0x5b,0x06,0x3f};
  11. uchar code table3[]={0x4f,0x5b,0x06,0x3f,0x06,0x3f};
  12. void display(uchar miao1,miao0);
  13. void delay(uint z);
  14. void init();
  15. void LED();
  16. void EW_LED();
  17. void NS_LED();
  18. void main()
  19. {        
  20.         init();//初始化子程序
  21.         while(1)
  22.         {
  23.                 display(miao1,miao0);
  24.                 LED();
  25.         }
  26. }

  27. void delay(uint z)
  28. {
  29.         uint x,y;
  30.         for(x=z;x>0;x--)
  31.                 for(y=110;y>0;y--);
  32. }

  33. void display(uchar miao1,miao0)
  34. {
  35.         smg1=0;
  36.         P0=table1[miao0];
  37.         delay(3);
  38.         smg1=1;
  39.         if(seconde<60)
  40.         {
  41.                 smg2=0;
  42.                 P0=table2[miao1];
  43.                 delay(3);
  44.                 smg2=1;        
  45.                 smg3=0;
  46.                 P0=table3[miao1];
  47.                 delay(3);
  48.                 smg3=1;        
  49.         }               
  50.         else if(seconde>=60)
  51.         {
  52.                 smg3=0;
  53.                 P0=table2[miao1];
  54.                 delay(3);
  55.                 smg3=1;        
  56.                
  57.                 smg2=0;
  58.                 P0=table3[miao1];
  59.                 delay(3);
  60.                 smg2=1;        
  61.         }
  62. }

  63. void init()
  64. {        
  65.         smg1=0;
  66.         smg2=0;
  67.         smg3=0;
  68.         P0=0xff;
  69.         TMOD=0x01;
  70.         TH0=0x3c;
  71.   TL0=0xb0;
  72.         EA=1;
  73.         ET0=1;
  74.         TCON=0x10;
  75.         second=0;
  76.         seconde=0;
  77. }

  78. void timer0() interrupt 1
  79. {
  80.         TH0=0x3c;
  81.   TL0=0xb0;
  82.         time++;
  83.         if(time==20)
  84.         {
  85.                 time=0;
  86.                 second++;
  87.                 seconde++;
  88.         }
  89.         if(second>=60)
  90.         {
  91.                 second=0;
  92.         }
  93.         miao0=second%10;
  94.         miao1=second/10;
  95.         if(seconde>=120)
  96.                 seconde=0;
  97. }
  98. void LED()
  99. {
  100.         if(seconde<60)
  101.         {
  102.                 P1=0x12;//60s內東西紅燈亮
  103.                 NS_LED();
  104.         }
  105.         
  106.         else if(seconde>=60)
  107.         {
  108.                 P3=0x12;//60s以上南北紅燈亮
  109.                 EW_LED();
  110.         }
  111. }
  112. void NS_LED()
  113. {
  114.         if(seconde<36)
  115.         {
  116.                 P3=0x28;//36s南北綠燈亮
  117.         }
  118.         else if(seconde>=36&&seconde<40)
  119.         {
  120.                 NSRP=1;
  121.                 NSGP=0;//人行道綠燈滅,紅燈亮
  122.                 NSG=0;
  123.                 NSY=seconde%2;//南北綠燈滅,黃燈閃爍
  124.         }
  125.         else if(seconde>=40&&seconde<60)
  126.         {
  127.                 P3=0x11;//南北左轉燈亮;人行紅燈亮
  128.         }
  129. }
  130. void EW_LED()
  131. {
  132.         if(seconde>=60&&seconde<96)
  133.         {
  134.                 P1=0x28;//東西綠燈亮
  135.         }
  136.         else if(seconde>=96&&seconde<100)
  137.         {
  138.                 EWRP=1;
  139.                 EWGP=0;//人行綠燈滅,紅燈亮
  140.                 EWG=0;
  141.                 EWY=seconde%2;//東西綠燈滅,黃燈閃
  142.         }
  143.         else
  144.         {
  145.                 P1=0x11;//東西左轉燈亮,人行紅燈亮;
  146.         }

  147. }












  148. ……………………

  149. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


所有資料51hei提供下載(word格式的設計報告文件):
交通燈設計.rar (9.99 MB, 下載次數: 112)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:337199 發表于 2018-5-24 12:02 | 只看該作者
朋友 能不能把你pcb的打印圖發一份給我啊 急用
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本网站在线看 | 成人av播放 | 麻豆精品久久 | 久久久精品在线 | 91啪亚洲精品 | 免费永久av | 依人成人 | 国产伦精品一区二区三区四区视频 | 午夜精品一区二区三区免费视频 | 亚洲永久入口 | 国产精品一区久久久 | 亚洲国产精品久久久久婷婷老年 | 中文字幕av色 | 在线91| 古装人性做爰av网站 | 国产高清精品网站 | 欧美一级片在线 | 在线视频第一页 | 久久久久久久久久一区 | www日本在线观看 | 久久久成人一区二区免费影院 | 国产三级| 国产永久免费 | 91久久精品国产91久久性色tv | 色婷婷久久久亚洲一区二区三区 | 日韩久久精品 | 97av在线| 欧美一区二区三区久久精品 | 日韩成人一区 | 狠狠久 | 91在线网| 日韩高清中文字幕 | 日韩性在线 | 亚洲国产成人精品女人久久久 | 日韩欧美专区 | 精精国产xxxx视频在线播放 | 日本视频一区二区 | 日韩国产精品一区二区三区 | 久草视频2 | 国产精品无码久久久久 | 亚洲精品久久久久久久久久吃药 |