基于51单片机的交通灯控制系统设计文档格式.doc

上传人:聆听****声音 文档编号:3648323 上传时间:2023-05-02 格式:DOC 页数:14 大小:1.02MB
下载 相关 举报
基于51单片机的交通灯控制系统设计文档格式.doc_第1页
第1页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第2页
第2页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第3页
第3页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第4页
第4页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第5页
第5页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第6页
第6页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第7页
第7页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第8页
第8页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第9页
第9页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第10页
第10页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第11页
第11页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第12页
第12页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第13页
第13页 / 共14页
基于51单片机的交通灯控制系统设计文档格式.doc_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的交通灯控制系统设计文档格式.doc

《基于51单片机的交通灯控制系统设计文档格式.doc》由会员分享,可在线阅读,更多相关《基于51单片机的交通灯控制系统设计文档格式.doc(14页珍藏版)》请在冰点文库上搜索。

基于51单片机的交通灯控制系统设计文档格式.doc

2.实现功能:

具有红、绿、黄三种颜色彩灯,并有一个数码管进行倒计时显示倒计时时间为三十秒。

还应具有按键控制特殊情况下十字路口不需要红绿灯的显示(车流量很少的地段深夜可以不设红绿灯)。

五、系统实现

1.电路设计:

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引脚接电源,控制其他八个引脚的信号就可以得到我们想要的数字。

2.元件清单:

器件

数量

STC89C52

1

11.0592MHZ晶振

瓷片电容30pf

2

八段2位共阳极数码管

自锁/轻触开关

1/2

电阻1k/10k

7/1

发光二极管红/绿/黄/

3/4/3

电解电容10uF

3.电路设计:

单片机最小系统应包含复位电路、外部时钟电路,即单片机能工作的必要条件。

设计电路图如下:

数码管

最小系统

Led彩灯

电源电路

4.软件流程图:

软件设计是红灯亮三十秒,绿灯亮27秒,黄灯亮3秒。

组成循环如下表:

1.1-27秒南北绿灯亮,东西方向红灯亮,数码管从30倒数到3

2.28-30秒南北黄灯亮,东西方向红灯亮,数码管从3倒数到1

3.31-57秒南北红灯亮,东西方向绿灯亮,数码管从30倒数到3

4.58-60秒南北黄灯亮,东西方向红灯亮,数码管从3倒数到1

程序从1-4往复循环。

程序流程图如下:

开始

程序初始化

time=60

判断time的值

If:

33<

time<

=60

3<

time1<

=30

0<

=3

30<

=33

Y

南北红灯亮

东西黄灯亮

Time-1

东西绿灯亮

南北黄灯亮

东西红灯亮

南北绿灯亮

time-1

time=0

5.程序调试:

调试窗口

全速运行调试,观察单片机IO口信号变化,即可模拟观察程序是否正确,哪里出错。

编译通过,程序实现功能并把程序下载到单片机中装好,进行调试。

实物图:

六、实习总结:

经过三个星期的时间,从不会到会,从没思路到想法无限多。

终于还是把这个设计给弄出来了。

刚开始不知道从何入手,以前都是学一些书本上的知识,还不会灵活应用,而且也没做过什么具体的设计。

后来开始动手去做,大量的从网上摄取知识,去图书馆查找资料,复习编程,复习单片机原理。

等等。

一个小小的电路需要太多的知识,学以致用这个词在这次设计上有了更深刻的体会。

通过设计我对原来学过的知识有了更深的理解,原来想着在大学里学不到很多东西,直到做完实习,才知道是自己不会联系实际应用!

当设计接近尾声的时候回顾设计的整个流程,才发现有好多东西都需要更深一步的学习。

在调试的过程中遇到了很多问题,有时候是硬件上的错误自己却认为是软件的错误,有时候软件错又认为是硬件出错了。

总之我觉得学到知识最多的地方不是去查资料的时候,而是在调试过程中学到了很多东西,焊工技术、编程思想、设计电路铺板等等都会影响整个电路的工作情况。

而且到最后的时候发现自己设计的电路上面也有很大的不足,比如直接用P1口接数码管的阳极,由于单片机IO口输出电流都比较小,所以导致数码管的亮度不是很亮,所以在共阳极数码管的阳极与IO口相连是应加三极管或者锁存器提供更大的电流。

总之这次设计让我学会了很多东西,最主要的是学会了去查询资料,筛选资料,并大大培养了我的动手能力。

七、参考文献

[1]梅丽凤:

单片机原理与技术接口第三版,清华大学出版社

[2]谭浩强:

C语言程序设计第四版,清华大学出版社

[3]龙脉工作室:

单片机C语言入门,人民邮电出版社

[4]杨素行:

模拟电子技术基础简明教程第三版,高等教育出版社

[4]余孟尝:

数字电子技术基础简明教程第三版,高等教育出版社

交通灯程序:

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitlight_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;

D1=1;

P0=tab[shi];

s=50;

while(s--);

P0=0xff;

D2=1;

P0=tab[ge];

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)

elseif(time1==30)//转东西方向

light_Y1=1;

light_R1=0;

light_G2=0;

elseif(time1==3)

elseif(time1==0)

time1=60;

shi=3;

ge=0;

}

}

}

voidtimer0()interrupt1//定时器中断

{

T++;

}

voidinterrupt_0()interrupt0

k=1;

}

voidinterrupt_1()interrupt2

kk=1;

整体电路原理图:

(实际设计电路时应当不需要R11与R12(数码管太暗))

布线图:

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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