单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc

上传人:b****2 文档编号:14177314 上传时间:2022-10-19 格式:DOC 页数:15 大小:3.28MB
下载 相关 举报
单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc_第1页
第1页 / 共15页
单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc_第2页
第2页 / 共15页
单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc_第3页
第3页 / 共15页
单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc_第4页
第4页 / 共15页
单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc

《单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc》由会员分享,可在线阅读,更多相关《单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc(15页珍藏版)》请在冰豆网上搜索。

单片机课程设计---十字路口的交通灯控制电路Word文件下载.doc

3)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法)。

4)当有突发事情发生时(如有救护车通过时),可通过按键将各个路口设置成红灯,只让救护车通过。

3.硬件设计

3.1设计思想

单片机

中断按键

复位电路

晶振电路

数码显示

LED显示

单片机选型:

AT89C52

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

AT89C52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路,8位微控制器8K字节在系统可编程FlashROM。

P0口:

P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入端用。

 在访问外部数据存储器或程序存储器时,P0口被分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。

对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。

在flash编程和校验时,P1口接收低8位地址字节。

P1端口引脚号第二功能:

 P1.0T2(定时器/计数器T2的外部计数输入),时钟输出

P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

P2口:

P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

  在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。

在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。

Flash编程或校验时,P2亦接收高位地址和一些控制信号。

  P3口:

P3口是一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。

此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。

P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。

  P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。

P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。

在flash编程和校验时,P3口也接收一些控制信号。

P3端口引脚第二功能:

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2INTO(外中断0)

P3.3INT1(外中断1)

P3.4TO(定时/计数器0)

P3.5T1(定时/计数器1)

P3.6WR(外部数据存储器写选通)

P3.7RD(外部数据存储器读选通)

RST——复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。

要注意的是:

每当访问外部数据存储器时将跳过一个ALE脉冲。

对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。

该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。

需注意的是:

如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。

FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

3.2系统原理图

3.3复位电路:

上电+按钮

图中,上电时,接通电源,电容器C相当于瞬间短路,+5V加到了RST/VPD端,该高电平使8051全机复位。

若运行过程中,需要程序从头执行,只需按动按钮开关,则直接把+5V加到了RST/VPD端,从而复位。

显然,该电路即可以上电复位,也可以手动复位,是常用复位电路之一。

3.4数码管显示:

7SEG-MPX2-CC

此处采用的数码管时共阴极数码管,G、F、E、D、C、B、A七个端口是输入端口,对其各位进行赋值,置位则亮,复位则灭,用此来显示出相应的数字;

1、2两端口用来控制高位和低位的选通显示,只要对端口置位,便可以选择该端口,并对其所代表的位进行赋值,显示。

3.5发光二极管显示

每个路口都采用了三个LED灯来显示,分别代表了红黄绿三种灯,来模拟路口交通灯的变换。

3.6键盘:

独立键盘+中断

采用开关来控制进入中断,可以在路口出现紧急情况时,拉动开关,来使得红绿灯发生相应的改变,已处理紧急情况下的车辆通行。

4.软件设计

4.1总体流程图调东西方向通行子程序

开始

中断初始化

调南北方向黄灯闪烁子程

调南北方向通行子程序

调东西方向黄灯闪烁子程

判断是否有开关中断?

中断处理

中断返回(到子程序处)

NO

YES

4.2紧急中断子程序流程图

断点入栈保护

状态参数设置

送状态字至端口

状态响应

断点返回

开始

4.3循环流程控制思路:

中断

东西绿灯

南北红灯

东西黄灯闪

南北红灯亮

东西红灯

南北绿灯

东西红灯亮

南北黄灯闪

4.4源程序

#include<

reg52.h>

intrins.h>

#defineuintunsignedint

#defineucharunsignedchar

uchartemp,aa,nn;

sbitrn=P2^0;

sbitnb=P2^1;

sbitgn=P2^2;

sbitrw=P2^3;

sbitdx=P2^4;

sbitgw=P2^5;

sbitshi=P3^6;

sbitge=P3^7;

/*对要使用的单片机各个口进行定义*/

bitflag=0;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

/*将数字0123456789的16进制数定义成数组用以显示*/

voiddelay(uintz);

voiddisp(uintn);

voidnb_flash(void);

voiddx_flash(void);

voidxint0();

voidtimer0();

voidLED_ON();

voidxint1();

voidLED_OFF();

voidnanbei();

voiddongxi();

/*将所使用的子函数定义*/

voidmain()

{

uintnum;

num=0;

aa=0;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

EX0=1;

IT0=0;

EX1=1;

IT1=1;

/*中断初始化*/

while

(1)

{

nanbei();

nb_flash();

dongxi();

dx_flash();

/*主函数中显示部分*/

}

}

voiddelay(uintz)/*延时子函数*/

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

voidtimer0()interrupt1/*定时器初始化*/

TH0=(65536-50000)/256

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

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1