收藏 分销(赏)

单片机红绿灯专业课程设计.doc

上传人:二*** 文档编号:4572260 上传时间:2024-09-30 格式:DOC 页数:13 大小:248.54KB 下载积分:5 金币
下载 相关 举报
单片机红绿灯专业课程设计.doc_第1页
第1页 / 共13页
本文档共13页,全文阅读请下载到手机保存,查看更方便
资源描述
1 电源提供方案  为使模块稳定工作,须有可靠电源。所以考虑了两种电源方案: 方案一:采取独立稳压电源。此方案优点是稳定可靠,且有多种成熟 电路可供选择;缺点是各模块全部采取独立电源,会使系统复杂,且可能影响电路电平。  方案二:采取单片机控制模块提供电源。改方案优点是系统简明扼要,节省成本;缺点是输出功率不高。 总而言之,选择方案二。  2 显示界面方案  该系统要求完成倒计时功效。基于上述原因,我考虑了二种方案:  方案一:采取数码管显示。这种方案只显示有限符号和数码字符,简单,方便。 方案二:采取点阵式LED 显示。这种方案即使功效强大,并可方便显示多种英文字符,汉字,图形等,但实现复杂,成本较高。  总而言之,选择方案一。 3 输入方案:  设计要求系统能调整灯亮时间,并可处理紧急情况,我研究了两种方案: 方案一:采取8155扩展I/O 口及键盘,显示等。  该方案优点是:使用灵活可编程,而且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。  方案二: 直接在I/O口线上接上按键开关。  因为该系统对于交通灯及数码管控制,只用单片机本身I/O 口就可实现,且本身计数器及RAM已经够用。  总而言之,选择方案二。   3.1单片机交通控制系统通行方案设计  设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,连续一定时间,经过短暂过渡时间,将通行禁行方向对换。其具体状态以下图所表示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始,即图2.1所表示:    图1 交通状态  本系统采取MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器。 实现以下功效:  Ø 初始东西绿灯亮,南北红灯亮,东西路口车通行,时隔24s,黄灯闪烁6次。以后,南北绿灯亮,东西红灯亮,方向开始通车,时隔24s,南北黄灯闪烁6次,然后又切换成东西方向通车,如此反复。  Ø 当发生交通意外(中止产生)时,全部亮红灯,进行交通事故处理。当事故处理完成(再次按中止键),重新按上述方法工作。  Ø 当南北路口流量大时,能够增加南北路口亮绿灯时间,当东西路口流量大时,能够增加东西路口亮绿灯时间,结束后调回正常状态。 下面我们能够用图表表示灯状态和行止状态关系以下 东西南北四个路口全部有红绿黄3灯和数码显示管2个,在任一个路口,遇红灯严禁通行,转绿灯许可通行,以后黄灯亮警告行止状态将变换。状态及红绿灯状态如表1所表示。说明:0表示灭,1表示亮。 3.3单片机智能交通灯控制系统基础组成及原理  单片机设计智能交通灯控制系统,可用单片机直接控制交通信号灯状态改变,实现倒计时、紧急情况处理和时间调整等功效。 据此,本设计系统以单片机为控制关键,连接成最小系统,由按键设置模块产生输入,信号灯状态模块、LED倒计时模块接收输出。系统总体框图如上所表示。  单片机上电后,系统进入正常工作状态,实施交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。在此过程中随时经过键盘调用急停按键和时间调整中止。  交通灯系统硬件设计 此设计采取是AT89C51单片机为内部控制芯片,外部接有按键中止电路和复位电路以外,还有4个两位数码管,用以倒计时和4个路口灯,共12个LED灯。         四川信息职业技术学院毕业设计说明书(论文)      第    页      5   第二章 交通灯系统硬件设计  此设计采取是AT89C51单片机为内部控制芯片,外部接有按键中止电路和复位电路以外,还有4个两位数码管,用以倒计时和4个路口灯,共12个LED灯。  2.1 系统框架图  电路板一块,AT89S51单片机一片,八段LED数码管四个。发光二极管12个(4个绿,4个红,4个黄),8个电阻,2个电容,1个晶振,1个电解电容,1个按键开关。(系统结构框图:图2.1) 2.3.1 MSC-51芯片介绍  MCS-51单片机内部结构  8051是MCS-51系列单片机经典产品,我们以这一代表性机型进行系统讲解。  8051单片机包含中央处理器、程序存放器(ROM)、数据存放器(RAM)、定时/计数器、并行接口、串行接口和中止系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:  ·中央处理器:  中央处理器(CPU)是整个单片机关键部件,是8位数据宽度处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调工作,完成运算和控制输入输出功效等操作。  ·数据存放器(RAM)  8051内部有128个8位用户数据存放单元和128个专用寄存器单元,它们是统一编址,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用RAM只有128个,可存放读写数据,运算中间结果或用户定义字型表。 2.3.2 LED显示数码管  八段LED显示器由八个发光二极管组成。其中7个长条形发光管排列成“日”字形,另一个圆点形放光管在显示器右下角作为显示小数点用,它能显示多种数字及部分英文字母。LED显示器有两种不一样形式:一个是8个发光二极管阳极全部连在一起,称为共阳极LED显示器图2-2所表示;另一个是8个发光二极管阴极全部连在一起,称为共阴极LED显示器 3.3 晶体振荡器  石英晶体振荡器特点是振荡频率正确、电路结构简单、频率易调整,作用是为系统提供基础时钟信号。我们在晶体某一方向加一电场,从而在和此垂直方向产生机械振动,有了机械振动,就会在对应垂直面上产生电场,从而使机械振动和电场互为因果,这种循环过程一直连续到晶体机械强度限制时,才达成最终稳定,这种压电谐振频率即为晶体振荡器固有频率。 附录 原程序代码   #include<reg51.h>  #define uint unsigned int//宏定义  #define uchar unsigned char//宏定义  uchar aa,cc,NBshi,NBge,DXshi,DXge,NBtemp,DXtemp;//定义变量  sbit NBR=P3^0;//南北红灯  sbit NBY=P3^1;//南北黄灯  sbit NBG=P3^4;//南北绿灯  sbit DXY=P3^5;//东西黄灯  sbit DXG=P3^6;//东西绿灯  sbit DXR=P3^7;//东西红灯   uchar code table[]={    0x3f,0x06,0x5b,0x4f,    0x66,0x6d,0x7d,0x07,    0x7f,0x6f}; //数字代码从0-9 //数字代码从0-9  void init();//初始化子程序申明  void displayNB(uchar NBshi,uchar NBge);//显示子程序申明 void delay(uint z);//延时子程序申明  void fenjieNB();//南北数码管显示数字分解函数 void fenjieDX();//东西数码管显示数字分解函数   void main()  void init();//初始化子程序申明  void displayNB(uchar NBshi,uchar NBge);//显示子程序申明  void delay(uint z);//延时子程序申明  void fenjieNB();//南北数码管显示数字分解函数  void fenjieDX();//东西数码管显示数字分解函数 void main() {     init();//初始化子程序  while(1)  {     if(cc==82)//循环一次结束    {     cc=0;//从新进行下一次循环  }    }    void delay(uint z)//带参数延时函数 void delay(uint z)//带参数延时函数  {  uchar x,y;//定义两个变量  for(x=z;x>0;x--)//循环延时    for(y=110;y>0;y--);//循环延时    }   void init()//初始化子程序 {   EA=1;//开总中止   ET0=1;//许可定时器0中止  EX0=1;//许可外部中止0中止  TR0=1;//开启定时器0   TMOD=0x01;//设置定时器0工作方法1  TH0=(65536-50000)/256;//给定时器高8为赋初值 TL0=(65536-50000)%256;//给定时器低8为赋初值  }   void fenjieNB()//南北数码管显示数字分解函数  {  NBshi=NBtemp/10;//将要显示时间十位赋给变量   NBge=NBtemp%10;//将要显示时间个位赋给变量    NBtemp--;  }        void fenjieDX()//东西数码管显示数字分解函数 {  DXshi=DXtemp/10;  DXge=DXtemp%10;   DXtemp--;  }   void displayNB(uchar NBshi,uchar NBge)//带参数数码管显示函数  {       //显示南北十位   P2=0xfe;    P0=table[NBshi];      delay(5);    //显示南北个位    P2=0xfd; P0=table[NBge];     delay(15); } void displayDX(uchar DXshi,uchar DXge) {     //东西十位    P2=0xfb;   P1=table[DXshi];      delay(5);    //东西个位    P2=0xf7;    P1=table[DXge];      delay(5); } void timer0() interrupt 1//定时器0中止函数  {     TH0=(65536-50000)/256;//重装计数初值   TL0=(65536-50000)%256;//重装计数初值   aa++;   if(aa==20)//判定定时1分钟是否到    {      aa=0;//计数次数清0     if(cc==0)//南北亮红灯40秒,东西亮黄灯5秒     {       DXY=0;//东西黄灯亮      DXG=1;//东西绿灯不亮 DXR=1;//东西红灯不亮 NBY=1;//南北黄灯不亮      NBG=1;//南北绿灯不亮     NBR=0;//南北红灯亮      DXtemp=5;//东西黄灯亮5秒      NBtemp=40;//南北红灯亮40秒     }    else if(cc==6)//南北继续亮红灯40秒,东西亮绿灯34秒      {     DXY=1;//东西黄灯不亮       DXG=0;//东西绿灯亮       DXR=1;//东西红灯不亮       NBY=1;//南北黄灯不亮       NBG=1;//南北绿灯不亮 NBR=0;//南北红灯亮  DXtemp=34;//东西绿灯亮34秒        }     else if(cc==41)//南北亮黄灯5秒,东西亮红灯40秒      {       DXY=1;//东西黄灯不亮       DXG=1;//东西绿灯不亮       DXR=0;//东西红灯亮       NBY=0;//南北黄灯亮       NBG=1;//南北绿灯不亮 NBR=1;//南北红灯不亮       NBtemp=5;//南北黄灯亮5秒   DXtemp=40;//东西红灯亮40秒 }    else if(cc==47)//南北亮绿灯34秒,东西继续亮红灯40秒     {      DXY=1;//东西黄灯不亮     DXG=1;//东西绿灯不亮       DXR=0;//东西红灯亮       NBY=1;//南北黄灯不亮       NBG=0;//南北绿灯亮      NBR=1;//南北红灯不亮   NBtemp=34;//南北绿灯亮34秒       DXtemp=34;//东西红灯亮40秒       }    fenjieNB();//调用南北分解函数     fenjieDX();//调用东西分解函数  cc++;//判定亮灯变量自加1 }   displayNB(NBshi,NBge);//调用NB红灯40秒显示程序   displayDX(DXshi,DXge);//调用DX黄灯5秒显示程序   }   void JJZD() interrupt 0 //紧急中止程序,南北东西全部亮红灯  { DXY=1;//东西黄灯不亮    DXG=1;//东西绿灯不亮 DXR=0;//东西红灯亮   NBY=1;//南北黄灯不亮   NBG=1;//南北绿灯不亮   NBR=0;//南北红灯亮   displayNB(0,0);//南北数码管全部显示0     displayDX(0,0);//东西数码管全部显示0    cc=0;//重最开始显示 }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服