15-基于单片机的交通灯系统设计(原理图+仿真+说明书)
15-基于單片機的交通燈系統設計(原理圖、仿真、源代碼工程+說明書+PPT)
文章目錄
- 15-基于單片機的交通燈系統設計(原理圖、仿真、源代碼工程+說明書+PPT)
- 資料
- 任務書
- 設計說明書
- 摘要
- 設計框架架構
- 設計說明書及設計文件
- 源碼展示
資料
資料包含:設計全套資料(精品)
原理圖工程文件
原理圖截圖
仿真模型工程文件
仿真截圖
說明書19236字
英文文獻及翻譯
答辯PPT
visio流程圖工程
資料鏈接
任務書
本設計是基于單片機的交通燈控制系統設計,通過對路口設置的交通指示燈和時間顯示裝置的控制,給行人和車輛的通行提供便利。
1、設計定時器或采用相關的定時芯片給系統提供時間參考信號。
2、單片機依據時間信號,控制指示燈的亮滅控制車輛和行人的通行,同時顯示時間信息。
3、設計相關的硬件電路
4、自行設計軟件編程
設計說明書
摘要
城市交通道路已經是我們生活中不可缺少的一部分,并且隨著社會的不斷發展,交通必將成為一個重點的研究話題。如何疏通交通、防止道路交通堵塞、人員傷亡、交通事故的控制是當前的主要研究方向。隨著微控制技術、電子技術、計算機系統的深入研究發展,將其應用在交通管理上必然是發展趨勢。本次系統針對此現象設計出一款基于單片機的交通系統。
本設計以AT89C51單片機作為系統的控制核心,主要包括主控模塊、交通燈指示模塊、顯示模塊、按鍵模塊組成。系統工作時,依據按鍵設定的工作模式,主控模塊啟動內部的定時器,開始控制不同路口交通燈的工作狀態。當定時時間完成,控制系統發出切換命令,控制不同路口的交通燈切換工作狀態,從而實現控制不同路口的通行狀況。在系統運行時,通過數碼管顯示各路口的時間,為方便操作人員熟知系統的工作方式,又額外附加顯示器顯示系統的工作模式。
本設計具有系統結構簡單、系統性能穩定、成本低廉等優點,能更好的實現傳統交通燈系統的通行控制功能。
設計框架架構
前 言 1
第一章 緒論 2
第一節 課題研究背景 2
第二節 國內外研究現狀與發展趨勢 2
第三節 交通燈研究意義 4
第四節 本文的主要研究內容 4
第五節 本章小結 5
第二章 系統總體方案設計 6
第一節 交通燈系統工作原理 6
第二節 系統總體結構設計 6
第三節 交通燈狀態邏輯方案確定 8
第四節 本章小結 9
第三章 交通燈系統硬件電路設計 10
第一節 主控模塊電路設計 10
一、單片機介紹 10
二、最小系統電路設計 11
第二節 按鍵模塊電路設計 12
第二節 顯示模塊電路設計 13
一、數碼管顯示電路設計 13
二、LED紅黃綠燈電路設計 14
第四節 電源電路設計 15
第五節 系統總電路圖 15
第六節 本章小結 16
第四章 系統軟件設計 18
第一節 系統主程序設計 18
第二節 顯示模塊軟件設計 19
一、數碼管程序設計 19
二、交通信號燈狀態程序設計 20
第三節 按鍵模塊軟件設計 21
第四節 本章小結 22
第五章 系統調試與仿真 23
第一節 開發工具 23
一、Protues軟件介紹 23
二、Keil軟件介紹 24
第二節 系統功能調試 24
一、系統仿真電路設計 24
二、系統功能測試 26
四、測試總結 28
第三節 本章小結 29
結 論 30
致 謝 31
參考文獻 32
附 錄 34
一、英文原文 34
二、英文翻譯 37
三、整體電路圖 39
四、源代碼 40
設計說明書及設計文件
字數:19236字
源碼展示
/*****************************************************十字路口交通燈控制 C 程序 ******************************************************/ #define uchar unsigned char #define uint unsigned int #include <reg52.h> /*****定義控制位**********************/ sbit Time_Show_LED2=P2^5;//Time_Show_LED2控制位 sbit Time_Show_LED1=P2^4;//Time_Show_LED1控制位 sbit EW_LED2=P2^3; //EW_LED2控制位 sbit EW_LED1=P2^2; //EW_LED1控制位 sbit SN_LED2=P2^1; //SN_LED2控制位 sbit SN_LED1=P2^0; //SN_LED1控制位 sbit SN_Yellow=P1^6;//SN黃燈 sbit EW_Yellow=P1^2;//EW黃燈 sbit EW_Red=P1^3;//EW紅燈 sbit SN_Red=P1^7;//SN紅燈 sbit EW_ManGreen=P3^0;//EW人行道綠燈 sbit SN_ManGreen=P3^1;//SN人行道綠燈 sbit Special_LED=P2^6;//交通正常指示燈 sbit Busy_LED=P2^7;//交通繁忙指示燈 sbit Nomor_Button=P3^5;//交通正常按鍵 sbit Busy_Btton=P3^6;//交通繁忙按鍵 sbit Special_Btton=P3^7;//交通特殊按鍵 sbit Add_Button=P3^3;//時間加 sbit Reduces_Button=P3^4;//時間減 bit Flag_SN_Yellow; //SN黃燈標志位 bit Flag_EW_Yellow;//EW黃燈標志位 char Time_EW;//東西方向倒計時單元 char Time_SN;//南北方向倒計時單元 uchar EW=60,SN=40,EWL=19,SNL=19; //程序初始化賦值,正常模式 uchar EW1=60,SN1=40,EWL1=19,SNL1=19;//用于存放修改值的變量 uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1~~~~9段選碼 uchar code S[8]={0X28,0X48,0X18,0X48,0X82,0X84,0X81,0X84};//交通信號燈控制代碼 /**********************延時子程序************************/ void Delay(uchar a){uchar i;i=a;while(i--){;}} /*****************顯示子函數**************************/ void Display(void){char h,l;h=Time_EW/10;l=Time_EW%10;P0=table[l];EW_LED2=1;Delay(2);EW_LED2=0;P0=table[h];EW_LED1=1;Delay(2);EW_LED1=0;h=Time_SN/10;l=Time_SN%10;P0=table[l];SN_LED2=1;Delay(2);SN_LED2=0;P0=table[h];SN_LED1=1;Delay(2);SN_LED1=0;h= EW1/10;l= EW1%10;P0=table[l];Time_Show_LED1=1;Delay(2);Time_Show_LED1=0;P0=table[h];Time_Show_LED2=1;Delay(2);Time_Show_LED2=0; } /**********************外部0中斷服務程序************************/ void EXINT0(void)interrupt 0 using 1{EX0=0; //關中斷 if(Add_Button==0) //時間加{ EW1+=5;SN1+=5;if(EW1>=100){EW1=99;SN1=79;}} if(Reduces_Button==0) //時間減{EW1-=5;SN1-=5;if(EW1<=40){ EW1=40;SN1=20;} } if(Nomor_Button==0)//測試按鍵是否按下,按下為正常狀態{EW1=60;SN1=40;EWL1=19;SNL1=19;Busy_LED=0;//關繁忙信號燈Special_LED =0;//關特殊信號燈} if(Busy_Btton==0) //測試按鍵是否按下,按下為繁忙狀態{EW1=45;SN1=30;EWL1=14;SNL1=14;Special_LED=0;//關特殊信號燈Busy_LED=1;//開繁忙信號燈 } if(Special_Btton==0)//測試按鍵是否按下,按下為特殊狀態{EW1=75;SN1=55;EWL1=19;SNL1=19;Busy_LED=0;//關繁忙信號燈Special_LED =1;//開特殊信號燈 } EX0=1;//開中斷} /**********************T0中斷服務程序*******************/void timer0(void)interrupt 1 using 1 {static uchar count;TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++; if(count==10){if(Flag_SN_Yellow==1) //測試南北黃燈標志位{SN_Yellow=~SN_Yellow;}if(Flag_EW_Yellow==1) //測試東西黃燈標志位{EW_Yellow=~EW_Yellow;} }if(count==20){Time_EW--;Time_SN--;if(Flag_SN_Yellow==1)//測試南北黃燈標志位{SN_Yellow=~SN_Yellow;}if(Flag_EW_Yellow==1)//測試東西黃燈標志位{EW_Yellow=~EW_Yellow;}count=0;} } /*********************主程序開始**********************/ void main(void) { Busy_LED=0;Special_LED=0;IT0=1; //INT0負跳變觸發 TMOD=0x01;//定時器工作于方式1TH0=(65536-50000)/256;//定時器賦初值TL0=(65536-50000)%256;EA=1; //CPU開中斷總允許ET0=1;//開定時中斷EX0=1;//開外部INTO中斷TR0=1;//啟動定時while(1) { /*******S0狀態**********/EW_ManGreen=0; //EW人行道禁止SN_ManGreen=1;//SN人行道通行Flag_EW_Yellow=0; //EW關黃燈顯示信號Time_EW=EW; Time_SN=SN; while(Time_SN>=5){P1=S[0]; //SN通行,EW紅燈Display();}/*******S1狀態**********/P1=0x00;while(Time_SN>=0){Flag_SN_Yellow=1; //SN開黃燈信號位EW_Red=1; //SN黃燈亮,等待左拐信號,EW紅燈 Display();}/*******S2狀態**********/Flag_SN_Yellow=0; //SN關黃燈顯示信號Time_SN=SNL;while(Time_SN>=5){P1=S[2];//SN左拐綠燈亮,EW紅燈Display();}/*******S3狀態**********/P1=0x00;while(Time_SN>=0){Flag_SN_Yellow=1; //SN開黃燈信號位EW_Red=1; //SN黃燈亮,等待停止信號,EW紅燈 Display();}/***********賦值**********/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;/*******S4狀態**********/EW_ManGreen=~EW_ManGreen;//EW人行道通行SN_ManGreen=~SN_ManGreen;//SN人行道禁止Flag_SN_Yellow=0; //SN關黃燈顯示信號Time_EW=SN;Time_SN=EW;while(Time_EW>=5){P1=S[4]; //EW通行,SN紅燈Display();}/*******S5狀態**********/P1=0X00;while(Time_EW>=0){Flag_EW_Yellow=1;//EW開黃燈信號位SN_Red=1;//EW黃燈亮,等待左拐信號,SN紅燈 Display();}/*******S6狀態**********/Flag_EW_Yellow=0; //EW關黃燈顯示信號Time_EW=EWL;while(Time_EW>=5){P1=S[6];//EW左拐綠燈亮,SN紅燈Display();}/*******S7狀態**********/P1=0X00;while(Time_EW>=0){Flag_EW_Yellow=1; //EN開黃燈信號位SN_Red=1;//EW黃燈亮,等待停止信號,SN紅燈 Display();} /***********賦值**********/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;}}總結
以上是生活随笔為你收集整理的15-基于单片机的交通灯系统设计(原理图+仿真+说明书)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Studio中R文件丢失
- 下一篇: PMC Organometallix继续