一、 设计任务
本实验目的是通过使用AT89s52系列芯片制作一个交通灯设计电路,实现南北东西交通运行的,与红绿灯秒计时功能、数码管显示功能等。
二、 性能指标要求
1、各方向的红、绿色信号灯能按照设定规则运行;
2、绿灯亮之前,黄灯闪烁5次;
3、红灯和绿灯倒计时间能够正确显示;
4、两干道的车辆不会会车冲突。
5、可以扩展其他功能(如按键设置时间,按键模拟警车)
三 设计思路及设计框图
1.设计思路
先在万用板上装置一个最小系统,在将独立数码管焊接在排针上, 12M石英晶振给芯片提供脉冲,程序可实现加1、2、3、4、5等功能,红绿灯显示时间可以修改,有紧急开关。再使用KeiluVision5来进行编译,再将生成的hex文件通过下载串口导入芯片中。然后根据按键功能查看是否实现功能。
4个按键实现对应功能。定义的P2^2是模式的切换,有两种模式,P2^3是时间加,P2^4是时间减,P2^5是紧急开关,其次,还要把复位用一个按键控制。
总体设计框图:
部分程序:
#include"REG52.H"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
uchar Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uchar nt=60,wt=60,sz=0,t,ds=60,seg=60;
bit ms=0;
sbit k = P2^0; //进入时间设置
sbit g = P2^1; //结束设置
sbit a = P2^2; //加时间
sbit s = P2^3; //减时间
// 东西南北 两干道
sbit NSR = P1^0; //南 红灯
sbit NSG = P1^2; //南 绿灯
sbit NSY = P1^1; //南 黄灯
sbit WER = P1^3; //东 红灯
sbit WEG = P1^4; //东 绿灯
sbit WEY = P1^5; //东 黄灯
//声明
void delay(uint t);
void display();
void Init_Timer0(void);
void NST();
void WET();
void keycan();
void main()
{
Init_Timer0(); //定时器初始化
while(1)
{
if(sz==0||sz==3) //设置键
{
if(sz==3)
{nt=10;wt=10;}
if(ms==0)
{NST();}
if(ms==1)
{WET();}
}
if(sz==1)
{seg=nt;}
if(sz==2)
{seg=wt;}
keycan();
display();
}
}
void delay(uint t)//延时函数
{
uchar x,y;
for(x=0;x<t;x++)
for(y=0;y<200;y++);
}
参考电路:
资料内容:
需要全部资料可从我的资源里下载。
需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。
纷传点击用微信打开即可,过程有点繁琐请见谅。