基于单片机的交通信号灯Word格式.docx

上传人:b****1 文档编号:4317014 上传时间:2023-05-03 格式:DOCX 页数:20 大小:484.07KB
下载 相关 举报
基于单片机的交通信号灯Word格式.docx_第1页
第1页 / 共20页
基于单片机的交通信号灯Word格式.docx_第2页
第2页 / 共20页
基于单片机的交通信号灯Word格式.docx_第3页
第3页 / 共20页
基于单片机的交通信号灯Word格式.docx_第4页
第4页 / 共20页
基于单片机的交通信号灯Word格式.docx_第5页
第5页 / 共20页
基于单片机的交通信号灯Word格式.docx_第6页
第6页 / 共20页
基于单片机的交通信号灯Word格式.docx_第7页
第7页 / 共20页
基于单片机的交通信号灯Word格式.docx_第8页
第8页 / 共20页
基于单片机的交通信号灯Word格式.docx_第9页
第9页 / 共20页
基于单片机的交通信号灯Word格式.docx_第10页
第10页 / 共20页
基于单片机的交通信号灯Word格式.docx_第11页
第11页 / 共20页
基于单片机的交通信号灯Word格式.docx_第12页
第12页 / 共20页
基于单片机的交通信号灯Word格式.docx_第13页
第13页 / 共20页
基于单片机的交通信号灯Word格式.docx_第14页
第14页 / 共20页
基于单片机的交通信号灯Word格式.docx_第15页
第15页 / 共20页
基于单片机的交通信号灯Word格式.docx_第16页
第16页 / 共20页
基于单片机的交通信号灯Word格式.docx_第17页
第17页 / 共20页
基于单片机的交通信号灯Word格式.docx_第18页
第18页 / 共20页
基于单片机的交通信号灯Word格式.docx_第19页
第19页 / 共20页
基于单片机的交通信号灯Word格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的交通信号灯Word格式.docx

《基于单片机的交通信号灯Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通信号灯Word格式.docx(20页珍藏版)》请在冰点文库上搜索。

基于单片机的交通信号灯Word格式.docx

初始状态为状态0,东西方向绿灯通车,南北方向红灯。

经过过一段时间(25S)转换状态1,东西方向绿灯闪5S,转亮黄灯,南北方向仍然红灯。

再转换到状态2,南北方向绿灯通车,东西方向红灯。

过一段时间(25S)转换到状态3,南北方向绿灯闪5S,转亮黄等,东西方向仍然红灯。

最后循环至南北红灯,东西绿灯。

在这些状态下,有时钟倒数计时。

3.课程设计报告内容

3.1硬件介绍

交通灯控制器实例主要使用了89C51单片机的定时器/计数器,基础知识包括交通灯的变化规律、定时器/计数器的概念、定时器/计数器的相关寄存器、定时器/计数器的4种工作方式、以及定时器/计数器的编程。

定时器/计数器的4种工作方式下的逻辑结构如表1所示。

表1定时器工作方式

M1

M2

工作方式

方式0,为13位定时器/计数器

1

方式1,为16位定时器/计数器

方式2,为初值自动重装的8位定时器/计数器

方式3,仅T0有效,将T0分为两个8位定时器/计数器

定时器/计数器初值的计算:

本次实验中定时时间为5ms,定时器/计数器采用工作方式0。

T=(8192-5000)*Tcy;

Tcy=1us;

定时器T0初值设定:

TMOD=0x00;

//定时器0工作方式0

TH0=(8192-5000)/32;

//5ms定时

TL0=(8192-5000)%32;

IE=0x83;

//允许T0中断允许外部中断INT0

TR0=1;

IT0=0;

3.2外部中断

voidtfsg()interrupt0

{

P1=0x36;

//南北东西红灯亮

P2=0X0E;

//选通南北十位

P0=LEDSHOW[3];

//十位显示3

DelayMS(5);

P2=0X0D;

//选通南北个位

P0=LEDSHOW[0];

//个位显示0

DelayMS(5);

P2=0X0B;

//选通东西十位

P0=LEDSHOW[2];

十位显示2

P2=0X07;

//选通东西个位

P0=LEDSHOW[5];

//十位显示5

timer1=30;

timer2=25;

}

本段程序实现功能为当外部按钮按下时,南北东西同时亮红灯数码管南北显示30,东西显示25。

3.3流程图

3.3.1控制流程图

9

3.3.2程序流程图

3.4数码管显示

voidsmgdisplay()

{

A1=timer1/10;

//对A1取整数

A2=timer1%10;

//对A2取余数

A11=timer2/10;

//对A11取整数

A22=timer2%10;

//对A22取余数

P2=0X0E;

//选通南北的十位P2.0

P0=LEDSHOW[A1];

//查询表显示数字

//选通南北的个位P2.1

P0=LEDSHOW[A2];

//选通东西的十位P2.2

P0=LEDSHOW[A11];

//选通东西的个位P2.3

P0=LEDSHOW[A22];

3.5芯片端口分配及原理图

AT89C52芯片接线原理图,如图3.5.1所示

图3.5.1AT89C51接线原理图

AT89C52端口功能表,如表2所示:

表2芯片不同端口功能表

端口

功能

P1.0

东西红灯

P1.1

东西黄灯

P1.2

东西绿灯

P1.3

南北红灯

P1.4

南北黄灯

P1.5

南北绿灯

P2.0

南北十位

P2.1

南北个位

P2.2

东西十位

P2.3

东西个位

P3.2

按键中断

P0.0

数码管a

P0.1

数码管b

P0.2

数码管c

P0.3

数码管d

P0.4

数码管e

P0.5

数码管f

P0.6

数码管g

P0.7

小数点DP

交通灯硬件原理图,如图3.5.2所示。

图3.5.2交通灯实验硬件图

数码管工作原理图,如图3.5.3所示。

图3.5.3数码管原理图

4.电路图及仿真设计

4.1设计完成原理图如下

在电路连接完成后,将写好的程序放入单片机,运行如图4.1。

图4.1初始状态图

状态0南北红灯30S,东西绿灯持续时间为25s,如图4.2

图4.2状态0

状态1南北红灯30S,东西黄灯持续时间为5s,如图4.3

图4.3状态1

状态2南北绿灯25S,东西红灯持续时间为30s,如图4.4

图4.4状态2

状态3南北黄灯5S,东西红灯持续时间为30s,如图4.5

图4.5状态3

5.总结

回顾起此次单片机课程设计,我仍感慨颇多,学到了很多的东西。

同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。

在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。

一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。

对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西。

因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

6.程序源代码

#include<

reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

uintT_Count=0;

inttimer1=30;

uintl=1;

uintA1=0;

uintA2=0;

inttimer2=25;

uintA11=0;

uintA22=0;

sbitLED=P1^0;

intstat=1;

intLEDSHOW[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

voidDelayMS(uintx)

uchari;

while(x--)

{

for(i=0;

i<

120;

i++);

}

}

voidsmgdisplay()

A11=timer2/10;

P0=LEDSHOW[A2];

P0=LEDSHOW[A11];

P0=LEDSHOW[A22];

//主程序

voidmain()

//定时器0中断初始化代码

TH0=(8192-5000)/32;

TL0=(8192-5000)%32;

IE=0x83;

TR0=1;

IT0=0;

//开始循环

while

(1)

if(timer1==30&

&

timer2==25)

stat=0;

if(stat==0)

{

P1=0x33;

if(timer2>

=0&

timer2<

=5)

{if(l==1)

P1=0x37;

if(l==0)

P1=0x33;

}

smgdisplay();

if(timer2==0)

timer2=5;

stat=1;

if(stat==1)

P1=0x35;

if(timer1==0)

timer1=25;

timer2=30;

stat=2;

}

if(stat==2)

P1=0x1E;

=5&

=10)

if(l==1)

P1=0x3E;

P1=0x1E;

timer1=5;

stat=3;

if(stat==3)

P1=0x2E;

timer2=25;

stat=0;

}}

//T0中断函数

{

P0=LEDSHOW[3];

P0=LEDSHOW[0];

P0=LEDSHOW[2];

P0=LEDSHOW[5];

voidLED_Flash()interrupt1

if(++T_Count==100)//0.5s开关一次LED

{l=++l%2;

timer1--;

timer2--;

T_Count=0;

}}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2