单片机模拟交通灯综合实训

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C51单片机模拟交通灯综合实训

背景:设计模拟交通灯,东南西北各有红绿黄3只led灯。工作状态:初始化全部灯亮,并闪烁三次;东西绿灯亮20s(南北红灯亮),黄灯亮并闪烁3次(每次0.5s),然后红灯亮,切换到南北绿灯亮,时间与点亮规律同东西方向,循环重复上述过程。

任务:

1设计流程说明。。

2系统框图设计。

3硬件电路设计。

4 软件设计及调试。

P1、简要说明设计流程及各环节的工作内容和目的。

1、确定任务:对任务进行分析,确定功能、性能要求,制定总体方案

2、总体设计:系统功能分配,确定软件硬件功能关系,拟定调试方案

3、硬件设计:绘制硬件原理图,绘制印制板图,配置元器件,硬件功能分配

4、软件设计:确定算法与数据结构,程序模块划分,绘制程序流程图,程序编写与仿真调试

5、系统调试:包括硬件调试和软件调试

P2、根据系统需求,设计并画出系统功能模块框图,说明产品总体工作原理和各模块的功能。

交通灯模块工作原理是通过单片机控制实现灯的亮灭

功能是实现东西南北的红、黄、绿灯的亮灭情况

数码管模块工作原理是从单片机I/O口接出,实现数字显示

功能是实现计时20S倒数和3秒倒数

P3、根据系统框图,设计单片机应用系统和接口驱动电路图,标注电路中元器件型号和参数。

电路图用到得元器件如下表

设计单片机应用系统和接口驱动电路图

P4、编写软件代码,仿真、下载运行验证,实现要求的功能

1.软件代码

#include

unsigned char second=20, time0 =100 ,time1=50,county=6;

unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char con[]={0xfd,0xfe};

sbit NB_G=P1^0;

sbit NB_Y=P1^1;

sbit NB_R=P1^2;

sbit DX_G=P1^3;

sbit DX_Y=P1^4;

sbit DX_R=P1^5;

bit DXT=1;

unsigned int i,j;

void showtime();

main()

{

for(j=6;j>=1;j--)

{

P0=~P0;

for(i=50000;i>0;i--);

}

P0=0xFF;

for(i=50000;i>0;i--);

NB_R=0;DX_G=0;

showtime();

TMOD=0X11;

TL0=-10000;TH0=-10000>>8; TL1=-10000;TH1=-10000>>8;

EA=1;ET0=1;ET1=1;

TR0=1;

while(1);

}

void isr_time0() interrupt 1

{ showtime();

TL0=-10000;TH0=-10000>>8; time0--; showtime(); if (time0==0)

{

time0=100;

second--;

if (second==0)

{

TR0=0; TR1=1;

second=3;

showtime();

if (DXT)

{ DX_G=1;DX_Y=0; }

else { NB_G=1;NB_Y=0; } }

}

}

void isr_time1()interrupt 3

{

TL1=-10000;

TH1=-10000>>8;

time1--;

showtime();

if(time1==0)

{

time1=50;

if (county%2!= 0)

{second--;

}

county--;

if(county)

{

if(DXT) DX_Y=~DX_Y;

else NB_Y=~NB_Y; }

else

{

county=6;

if (DXT)

{ DX_Y=1;DX_R=0; NB_R=1;NB_G=0;} else

{

DX_R=1 ;DX_G=0; NB_Y=1;NB_R=0;

}

TR1=0;TR0=1;

DXT=~DXT;

second=20;

showtime();

}

}

}

void showtime()

{

unsigned int i,j;

unsigned char time[2];

time[0]=second/10;

time[1]=second%10;

P2=con[0];

P0=seg[time[0]];

for(j=100;j>0;j--);

P2=con[1];

P0=seg[time[1]];

}

2.仿真电路如图所示

相关文档
最新文档