基于单片机的交通灯控制系统设计(完整资料)_第1页
基于单片机的交通灯控制系统设计(完整资料)_第2页
基于单片机的交通灯控制系统设计(完整资料)_第3页
基于单片机的交通灯控制系统设计(完整资料)_第4页
基于单片机的交通灯控制系统设计(完整资料)_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的交通灯控制系统设计(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)

基于单片机的交通灯控制系统设计(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)摘要:随着科技的飞速发展,越来越多的控制功能强大的芯片出现在我们生活中,但8051系列单片机,因为其的廉价几成本,在我们生活中依然处于十分重要的地位。在实时检测和自动控制的单片机应用系统中,单片机是作为一个核心部件来使用,但是仅单片机方面知识是不够的,还需要根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善.

交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。作为交通控制的重要组成部份单片机。因此,本人选择制作交通灯作为课题加以设计并实现。

交通管制应当以人性化、智能化为目的,做出相应的改善.以此为出发点,本系统采用的单片机控制的交通信号灯。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广阔的应用前景。关键词:交通灯,51单片机,数码管实习目的和意义1.学习51单片机的最小系统及硬件接口设计与应用

2.熟练掌握电路原理图绘制软件DPX的使用.

3.熟练单片机的程序设计与调试.4.自主设计出具有实际意义的能用于生活的电路系统。5.本次课程设计对以后的毕业设计甚至工作打下了动手自己设计的基础。实习要求1。

完成以8051系列单片机为核心处理器的模拟十字路口交通灯控制的硬件设计(在altiumdesigner下画出硬件原理图).布线,印制电路板,并焊接原件搭载硬件电路,做出实物。2.

完成交通灯控制系统的软件编程。

3。

软硬件综合调试,模拟实现对交通灯控制系统的控制。

4.

撰写实验报告:报告中给出硬件方案、软件流程图、软件关键代码实习内容设计题目:基于51单片机交通十字路口信号灯设计实现功能:具有红、绿、黄三种颜色彩灯,并有一个数码管进行倒计时显示倒计时时间为三十秒。还应具有按键控制特殊情况下十字路口不需要红绿灯的显示(车流量很少的地段深夜可以不设红绿灯)。系统实现电路设计:51单片机介绍:

本实验使用的51单片机为STC89C52

STC89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和128

bytes的随机存取数据存储器(RAM).

STC89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口。单片机外部引脚图如下:

管脚说明:VCC:供电电压.

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位.在FIASH编程时,P0

口作为原码输入口,当FIASH执行

校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故.在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流.这是由于内部上拉的缘故.P2口当用于外部程序存储器或16位地址外部数据存储器执行

存取时,P2口输出地址的高八位。在给出地址“1”时,它运用

内部上拉优势,当对外部八位地址数据存储器执行

读写时,P2口输出其特殊功能寄存器的内容.P2口在FLASH编程和校验时接收高八位地址信号和控制信号.

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1"后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故.

P3口也可作为stc89C52的一些特殊功能口,如下所示:

P3。0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

/INT0(外部中断0)

P3.3

/INT1(外部中断1)

P3.4

T0(记时器0外部输入)

P3。5

T1(记时器1外部输入)

P3.6

/WR(外部数据存储器写选通)

P3.7

/RD(外部数据存储器读选通)

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节.在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要留心的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,

ALE只有在执行MOVX,MOVC指令是ALE才起作用.另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号.在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA/VPP:EA保持低电平时,则在此期间外部程序存储器(0000H—FFFFH),不管能不能有内部程序存储器。留心加密方式1时,/EA将内部锁定为RESET;当/EA端保持高八段共阳极数码管:顾名思义,八段二位共阳极数码管是由8x2个二极管组成的,全部点亮时可以显示为8.8。,第一个8。的八个数码管的阳极是接在一起的,第二个也是如此,他们的共阳极分别为引脚8、7。写程序的时候我们只需要8、7引脚接电源,控制其他八个引脚的信号就可以得到我们想要的数字。元件清单:器件数量STC89C52111.0592MHZ晶振1瓷片电容30pf2八段2位共阳极数码管1自锁/轻触开关1/2电阻1k/10k7/1发光二极管红/绿/黄/3/4/3电解电容10uF2电路设计:单片机最小系统应包含复位电路、外部时钟电路,即单片机能工作的必要条件。设计电路图如下:数码管最小系统Led彩灯电源电路软件流程图:软件设计是红灯亮三十秒,绿灯亮27秒,黄灯亮3秒。组成循环如下表:1-27秒南北绿灯亮,东西方向红灯亮,数码管从30倒数到328-30秒南北黄灯亮,东西方向红灯亮,数码管从3倒数到131—57秒南北红灯亮,东西方向绿灯亮,数码管从30倒数到358—60秒南北黄灯亮,东西方向红灯亮,数码管从3倒数到1程序从1-4往复循环。程序流程图如下:开始开始程序初始化程序初始化time=60判断time的值判断time的值If:33<time<=60If:33<time<=60If:3<time1<=30If:0<time1<=3If:30<time1<=33YYYYYYYY南北红灯亮东西黄南北红灯亮东西黄灯亮Time-1南北红灯亮东西绿灯亮Time-1南北黄灯亮东西红灯亮Time-1南北绿灯亮东西红灯亮time-1If:time=0If:time=0程序调试:调试窗口全速运行调试,观察单片机IO口信号变化,即可模拟观察程序是否正确,哪里出错.编译通过,程序实现功能并把程序下载到单片机中装好,进行调试。实物图:实习总结:经过三个星期的时间,从不会到会,从没思路到想法无限多。终于还是把这个设计给弄出来了。刚开始不知道从何入手,以前都是学一些书本上的知识,还不会灵活应用,而且也没做过什么具体的设计。后来开始动手去做,大量的从网上摄取知识,去图书馆查找资料,复习编程,复习单片机原理。等等.一个小小的电路需要太多的知识,学以致用这个词在这次设计上有了更深刻的体会。通过设计我对原来学过的知识有了更深的理解,原来想着在大学里学不到很多东西,直到做完实习,才知道是自己不会联系实际应用!当设计接近尾声的时候回顾设计的整个流程,才发现有好多东西都需要更深一步的学习。

在调试的过程中遇到了很多问题,有时候是硬件上的错误自己却认为是软件的错误,有时候软件错又认为是硬件出错了。总之我觉得学到知识最多的地方不是去查资料的时候,而是在调试过程中学到了很多东西,焊工技术、编程思想、设计电路铺板等等都会影响整个电路的工作情况。而且到最后的时候发现自己设计的电路上面也有很大的不足,比如直接用P1口接数码管的阳极,由于单片机IO口输出电流都比较小,所以导致数码管的亮度不是很亮,所以在共阳极数码管的阳极与IO口相连是应加三极管或者锁存器提供更大的电流。总之这次设计让我学会了很多东西,最主要的是学会了去查询资料,筛选资料,并大大培养了我的动手能力.参考文献[1]梅丽凤:单片机原理与技术接口第三版,清华大学出版社[2]谭浩强:C语言程序设计第四版,清华大学出版社[3]龙脉工作室:单片机C语言入门,人民邮电出版社[4]杨素行:模拟电子技术基础简明教程第三版,高等教育出版社[4]余孟尝:数字电子技术基础简明教程第三版,高等教育出版社交通灯程序:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitlight_R1=P2^0;sbitlight_G1=P2^1;sbitlight_Y1=P2^2;sbitlight_R2=P2^3;sbitlight_G2=P2^4;sbitlight_Y2=P2^5;sbitD1=P1^0;//十位段选sbitD2=P1^1;//个位段选/******共阳极数码管编码对应0~9~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f************************/ucharcodetab[10]={ﻩ~0x3f,~0x06,~0x5b,~0x4f,~0x66, ~0x6d,~0x7d,~0x07,~0x7f,~0x6f ﻩ};ucharT,shi,ge,s,k,kk;ﻩvoidmain(void){ﻩuchartime1=60;ﻩT=0; k=0;//外部中断0控制变量 kk=0;//外部中断1控制变量ﻩTMOD=0x01;//开定时器中断ﻩTH0=(65536-50000)/256; TL0=(65536-50000)%256; //定时器50ms中断一次ﻩEA=1;ﻩ//开总中断ﻩET0=1; TR0=1; IT0=1; //外部中断0选择下降沿触发 EX0=1;ﻩ//开外部中断0ﻩIT1=1;ﻩ//外部中断1选择下降沿触发ﻩEX1=1;ﻩshi=3; ge=0; while(1) {ﻩﻩif(k==1)//判断K1是否按下 { D1=0; D2=0;ﻩﻩlight_G1=1;ﻩ light_G2=1;ﻩﻩlight_R1=1; light_R2=1; ﻩlight_Y1=0;ﻩﻩlight_Y2=0; ﻩﻩwhile(k) { ﻩ ﻩif(kk==1)//判断K2是否按下 ﻩﻩﻩ{ﻩ ﻩtime1=60;ﻩﻩ light_Y1=1;ﻩﻩﻩ light_Y2=1;ﻩ ﻩkk=0; ﻩ k=0; ﻩﻩ}ﻩ } } ﻩif(time1==60)//初始状态 ﻩ{ﻩ ﻩlight_G1=0;ﻩﻩlight_R2=0;ﻩﻩlight_Y2=1; ﻩlight_R1=1;ﻩﻩ}ﻩﻩD1=1; D2=0; ﻩP0=tab[shi];ﻩﻩs=50;ﻩﻩwhile(s--);ﻩﻩP0=0xff;ﻩﻩD1=0;ﻩ D2=1; ﻩP0=tab[ge];ﻩ s=50; ﻩwhile(s--); P0=0xff;ﻩﻩﻩD2=0; if(T==20)ﻩ{ﻩﻩﻩT=0;ﻩﻩtime1--;ﻩﻩif(time1>30)ﻩ { ﻩshi=(time1—30)/10;ﻩﻩge=(time1-30)%10; ﻩ} ﻩelseﻩﻩ{ ﻩshi=time1/10;ﻩ ge=time1%10; }ﻩ if((time1-30)==3) ﻩ{ ﻩlight_G1=1;ﻩ light_Y1=0; light_R2=0; } ﻩelseif(time1==30)//转东西方向 ﻩ{ﻩ light_Y1=1; ﻩlight_R1=0; ﻩlight_R2=1;ﻩ light_G2=0;ﻩﻩ} elseif(time1==3)ﻩﻩ{ﻩ light_G2=1;ﻩ light_Y2=0;ﻩﻩlight_R1=0; ﻩ} elseif(time1==0) { time1=60;ﻩ shi=3;ﻩ ge=0; ﻩ}ﻩ }ﻩ}}voidtimer0()interrupt1//定时器中断{ TH0=(65536—50000)/256;ﻩTL0=(65536-50000)%256;ﻩT++;}voidinterrupt_0()interrupt0{k=1;}voidinterrupt_1()interrupt2{kk=1;}整体电路原理图:(实际设计电路时应当不需要R11与R12(数码管太暗))布线图:长沙航空职业技术学院毕业设计(论文)题目:基于单片机的十字路口交通灯控制系统设计学生姓名系别航空电子电气工程系专业应用电子技术专业学号指导教师职称目录TOC\o"1-3"\h\z\u摘要PAGEREF_Toc326085479\h2HYPERLINK\l"_Toc326085480”前言PAGEREF_Toc326085480\h4第一章绪论PAGEREF_Toc326085481\h51。1背景PAGEREF_Toc326085482\h5HYPERLINK\l”_Toc326085483"1。2设计的目的及意义PAGEREF_Toc326085483\h5HYPERLINK\l"_Toc326085484"1.3交通灯控制系统设计的任务与要求PAGEREF_Toc326085484\h51.4设计实现的主要功能PAGEREF_Toc326085485\h6HYPERLINK\l”_Toc326085486”第二章交通灯的总体方案设计与论证PAGEREF_Toc326085486\h72.1显示界面方案PAGEREF_Toc326085487\h72。2输入方案PAGEREF_Toc326085488\h7第三章交通灯原理分析PAGEREF_Toc326085489\h8HYPERLINK=>STATE<=ST0;WHEN"01"=>STATE〈=ST1;WHEN"10"=〉STATE〈=ST0;WHEN"11"=>STATE<=ST1;WHENOTHERS=>NULL;ENDCASE;ELSESTATE<=ST0;---若计数未满则为原来状态ENDIF;WHENST1=>———主黄支红若计数满5s则根据主支通道的通车情况决定转入下一个状态IF(CNT=YELLOWA_CNT)THENCASEPASS_STATE_INISWHEN”00"=〉STATE〈=ST2;WHEN"01”=>STATE〈=ST2;WHEN"10”=>STATE<=ST2;WHEN”11”=>STATE〈=ST2;WHENOTHERS=>NULL;ENDCASE;ELSESTATE〈=ST1;———若计数未满则为原来状态ENDIF;WHENST2=>-—-支绿主红若计数满25s则根据主支通道的通车情况决定转入下一个状态IF(CNT=GREENB_CNT)THENCASEPASS_STATE_INISWHEN"00"=〉STATE<=ST3;WHEN"01"=>STATE<=ST2;WHEN"10"=>STATE〈=ST3;WHEN”11”=〉STATE<=ST3;WHENOTHERS=>NULL;ENDCASE;ELSESTATE<=ST2;—-—若计数未满则为原来状态ENDIF;WHENST3=>-—-支黄主红若计数满5s则根据主支通道的通车情况决定转入下一个状态IF(CNT=YELLOWA_CNT)THENCASEPASS_STATE_INISWHEN"00”=>STATE<=ST0;WHEN"01”=〉STATE〈=ST0;WHEN"10"=>STATE<=ST0;WHEN”11"=>STATE<=ST0;WHENOTHERS=>NULL;ENDCASE;ELSESTATE〈=ST3;若计数未满则为原来状态ENDIF;ENDCASE;ENDIF;CNTOUT<=CNT;ENDPROCESS;PROCESS(STATE)BEGINCASESTATEISWHENST0=>—--状态0时主绿支红A_LIGHT<="010";B_LIGHT<=”100";CNT_EN<='1';STATEOUT<=”00";--—将当前状态传递给数码管显示模块,以供后续使用IF(CNT=GREENA_CNT)THENCNT_EN〈='0’;ENDIF;WHENST1=>-——状态1时主黄支红A_LIGHT〈="001”;B_LIGHT<=”100”;CNT_EN<='1';STATEOUT<=”01”;-—-将当前状态传递给数码管显示模块,以供后续使用IF(CNT=YELLOWA_CNT)THENCNT_EN<='0';ENDIF;WHENST2=>———状态2时支绿主红A_LIGHT<=”100";B_LIGHT<="010";CNT_EN<=’1';STATEOUT<="10";—--将当前状态传递给数码管显示模块,以供后续使用IF(CNT=GREENB_CNT)THENCNT_EN<='0';ENDIF;WHENST3=>—-—状态3时支黄主红A_LIGHT<="100”;B_LIGHT〈="001";CNT_EN<='1';STATEOUT〈="11”;-—-将当前状态传递给数码管显示模块,以供后续使用IF(CNT=YELLOWB_CNT)THENCNT_EN〈='0’;ENDIF;ENDCASE;ENDPROCESS;ENDbehav;6.3数码管显示倒计时源程序LIBRARYIEEE;USEIEEE。STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDISPLAYISPORT(CLK2:INSTD_LOGIC;时钟输入CNTIN:INSTD_LOGIC_VECTOR(5DOWNTO0);———已计数输入,来自状态控制模块STATEIN:INSTD_LOGIC_VECTOR(1DOWNTO0);———状态输入,来自状态控制模块LED7SOUT:OUTSTD_LOGIC_VECTOR(6DOWNTO0);--—数码管段选信号输出SELOUT:OUTSTD_LOGIC_VECTOR(2DOWNTO0)---数码管位选信号输出);ENDENTITYDISPLAY;ARCHITECTUREbehavOFDISPLAYISBEGINPROCESS(CLK2)VARIABLEBITSEL:STD_LOGIC_VECTOR(2DOWNTO0);BEGIN—-———--—-—-———-——-————-————--位选信号循环模块--————-————--—--————---—-———----—-IFCLK2’EVENTANDCLK2='0'THENCASEBITSELISWHEN”000"=>BITSEL:="001";SELOUT〈=”001”;WHEN”001”=〉BITSEL:="010";SELOUT〈="010";WHEN"010"=〉BITSEL:="011”;SELOUT<=”011";WHEN"011"=>BITSEL:="000";SELOUT<="000”;WHENOTHERS=〉NULL;ENDCASE;ENDIF;————-—---—--—-----——-----动态显示模块—---------—--—-—--——--—-------—-------—-—--CASESTATEINISWHEN"00”=>—--主绿支红状态OKCASEBITSELISWHEN"000"=〉---主绿支红状态点亮支干道十位数字OKCASECNTINISWHEN”000001"=〉LED7SOUT<=”1101101";--—0150WHEN”000010"=>LED7SOUT<=”1100110”;—-—0249WHEN”000011”=〉LED7SOUT<="1100110";WHEN"000100"=〉LED7SOUT<="1100110”;WHEN"000101”=>LED7SOUT〈=”1100110”;WHEN"000110”=>LED7SOUT<=”1100110";—-—0645WHEN"000111"=>LED7SOUT<="1100110";WHEN”001000"=>LED7SOUT<="1100110”;WHEN"001001”=〉LED7SOUT〈=”1100110";WHEN"001010"=>LED7SOUT<="1100110”;WHEN"001011”=>LED7SOUT〈=”1100110";---1140WHEN”001100”=>LED7SOUT<="1001111";WHEN”001101"=>LED7SOUT<="1001111";WHEN”001110"=>LED7SOUT<=”1001111";WHEN"001111”=>LED7SOUT<=”1001111";WHEN"010000”=>LED7SOUT<="1001111";--—1635WHEN"010001"=>LED7SOUT<="1001111";WHEN"010010"=>LED7SOUT<=”1001111";WHEN"010011"=>LED7SOUT<=”1001111”;WHEN”010100"=>LED7SOUT〈="1001111";WHEN"010101"=〉LED7SOUT<="1001111”;-—-2130WHEN"010110"=>LED7SOUT<=”1011011";WHEN"010111"=>LED7SOUT<="1011011”;WHEN”011000"=>LED7SO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论