好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单片机综合实验交通灯设计方案报告.doc

15页
  • 卖家[上传人]:cn****1
  • 文档编号:553047968
  • 上传时间:2023-09-08
  • 文档格式:DOC
  • 文档大小:102.04KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 51单片机综合试验交通灯设计汇报班 级: 学 生 姓 名:学 号:指 导 教 师: 一 试验题目交通灯控制系统设计二 试验目标1、 学会用8051单片机开发简单计算机控制系统;2、 学会用汇编语言和C语言开发系统软件;3、 学会8051单片机开发环境wave或Keil uVision3软件使用;4、 学会Proteus软件使用方法,会用Proteus单片机系统进行仿真;5、 学会Protel软件使用方法,会用Protel绘制电气原理图和印制板图;6、 熟悉七位数码管显示使用方法;7、 了解交通灯控制系统基础组成三 试验要求交通灯处于十字路口上它有红﹑黄﹑绿三种颜色灯组成红灯亮时道路上车辆停止运行;黄灯是一个过渡用信号灯,当它亮时,表示道路上红绿色信号灯立即进行转换下面拿东西南北四个方一直说明当东西方向许可行车(或左转)时候,南北方向就严禁行车,即此时东西方向绿灯亮红灯灭,而南北方向绿灯灭红灯亮反之当南北方向许可行车(或左转)时候,东西方向就严禁行车,即此时南北方向绿灯亮红灯灭,而东西方向绿灯灭红灯亮交通灯配置示意图图1所表示同时当有特殊情况发生时,能手动控制各个方向信号灯。

      设计任务就是将这一电路用单片机来实现具体控制数码管北西南绿直行数码管北黄灯缓红灯停绿左转东图1 十字路口交通灯配置示意图四 设计内容和原理为了在后面分析中便于说明,将南北方向许可直行命名为状态1,南北方向许可左转命名为状态2,南北方向行车到东西方向行车转换阶段命名为状态3,将东西方向许可直行命名为状态4,东西方向许可左转命名为状态5,东西方向行车到南北方向方向行车转换阶段命名为状态6假定直行绿灯点亮时间为25s,左转绿灯点亮时间为20s,黄灯点亮时间为5s,则对方红灯点亮时间为50秒黄灯每隔500ms亮一次,以后灭500ms(亮灭一次叫作闪烁一次),一共闪烁5次,连续5s各个状态之间变换情况以下:状态1 状态2 状态3 状态4 状态5 状态6 状态1具体显示周期以下:25s20s5s50s状态1状态2状态3状态4状态5状态6南北路口直行绿灯亮左转绿灯亮黄灯亮缓行红灯亮禁行东西路口红灯亮禁行直行绿灯亮左转绿灯亮黄灯亮缓行50s25s20s5s 图2交通信号灯点亮时间图设计电路中每个路口控制信号灯应有四个,即绿灯两个、黄灯、红灯各一个,同时需要七段数码管一个所以,本电路设计中应用到绿灯八个,黄灯四个,红灯四个,七段数码管两个(东西方向相同,南北方向相同,为节省空间可省略一对)。

      五 电路设计分析依据前面设计内容和原理分析,电路设计中应有控制模块(单片机电路)、显示模块(十六个信号灯和两个七段数码管)本电路设计,将发光二极管作为16个信号灯材料电源将采取5V直流电源东西两个方向绿灯是同时亮,为了简化电路能够让这两个灯接同一个引脚同理,东西方向黄灯、红灯也能够分别接同一个引脚南北方向同上这么我们能够用一个8位口控制16盏信号灯各信号灯均是共阴极接法,LED负极均接地,正极经过保护电阻接单片机P1口这么单片机引脚输出一个高电平时,对应信号灯就被点亮七段数码管经过8位排阻RESPACK-8连接单片机中应包含复位电路和晶振电路本设计中,采取上电复位形式,因为本系统应用机器周期为lms,所以晶振选择为12MHz,依据调试电容选择30pF.图3:复位电路图4:晶振电路六 硬件原理图七 程序步骤本程序程序步骤图图所表示设置闪烁次数延时500ms南北左转绿灯亮东西红灯亮延时25s延时20s黄灯灭南北直行绿灯亮东西红灯亮黄灯亮延时500ms设置闪烁次数黄灯亮延时500ms东西左转绿灯亮南北红灯亮延时25s延时20s东西直行绿灯亮南北红灯亮开始复位黄灯灭闪烁次数到?闪烁次数到?延时500msNNYY八 心得体会 这次系统试验历时30天时间,在这试验过程里我们巩固了从编程、软件使用到调试专业知识,逻辑思维和动手能力全部得到了很大提升。

      要处理关键问题就是程序设计和仿真,即使早期在设计和布局、编程时思绪比较清楚,不过到了细节处,也出了不少问题,而且极难被检验出来,如在定时器使用方面出了部分错误不过最终经过不停努力,还是写出来正确代码 经过这次系统试验,对以前学过知识进行了巩固,加深了了解,提升了应用能力,而且提升了我们发觉、分析、处理问题能力,同时提升了对专业认识及爱好,对于我们工科生来说,对以后就业很有帮助附录 程序代码:#define uchar unsigned char#define uint unsigned int#include /*****定义控制位**********************/sbit EW_LED2=P2^3; //东西数码管个位sbit EW_LED1=P2^2; //东西数码管十位sbit SN_LED2=P2^1; //南北数码管个位sbit SN_LED1=P2^0; //南北数码管十位_sbit SN_Yellow=P1^6;//南北黄灯sbit EW_Yellow=P1^2;//东西黄灯sbit EW_Red=P1^3;//东西红灯sbit SN_Red=P1^7;//南北红灯sbit Busy_Btton=P3^4;bit Flag_SN_Yellow; //南北黄灯标志位bit Flag_EW_Yellow;//东西黄灯标志位char Time_EW;//东西方向倒计时单元char Time_SN;//南北方向倒计时单元uchar EW=50,SN=25,EWL=20,SNL=20; //程序初始化赋值uchar EW1=50,SN1=25,EWL1=20,SNL1=20;//用于存放修改值变量1-9段选码uchar code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };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(200); EW_LED2=0; P0=table[h]; EW_LED1=1; Delay(200); EW_LED1=0; h=Time_SN/10; l=Time_SN%10; P0=table[l]; SN_LED2=1; Delay(200); SN_LED2=0; P0=table[h]; SN_LED1=1; Delay(200); SN_LED1=0; }/**********************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)//南北黄灯标志位 { Time_SN=Time_EW; { SN_Yellow=~SN_Yellow;} } if(Flag_EW_Yellow==1)//东西黄灯标志位 { Time_EW=Time_SN; { EW_Yellow=~EW_Yellow;} } count=0; } }void main(void){ IT0=1; //INT0负跳变触发 TMOD=0x01;//定时器工作于方法1 TH0=(65536-50000)/256;//定时器赋初值 TL0=(65536-50000)%256; EA=1; //开中止总许可 ET0=1;//开定时中止 EX0=1;//开外部INTO中止 TR0=1;//开启定时 while(1){ /*******状态1**********/ Flag_EW_Yellow=0; //EW关黄灯显示信号 Time_EW=EW; Time_SN=SN; while(Time_SN>0) {P1=S[0]; //SN通行,EW红灯 Display();} /*******状态2**********/ Flag_SN_Yellow=0; //SN关黄灯显示信号 Time_SN=SNL; while(Time_SN>0) {P1=S[2];//SN左拐绿灯亮,EW红灯 Display();} /*******状态3**********/ P1=0x00; while(Time_EW>0) {Flag_SN_Yellow=1; //SN开黄灯信号位 EW_Red=1; //SN黄灯亮,等候停止信号,EW红灯 //SN_LED1=EW_LED1; //SN_LED2=EW_LED2; Display(); } /***********赋值*。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.