基于基于MCS-51的交通灯程序设计(的交通灯程序设计(c语言控制直行左转)语言控制直行左转)
本文为基于MCS-51的交通灯程序设计(c语言控制直行左转),希望对你的学习有所帮助。
一、说明:本程序与之前例程不同,采用c语言完成,实现四个方向的直走和左转车辆控制,采用51定时器精确计时
二、原理图:
三、基本设计思想:
1、硬件部分。七段数码管显示时间,采用共阳数码管,与P0口连接。根据51单片机的特性,P0口作为输出时,若要输出1,
则必须外接上拉电阻。东西方向有直行红黄绿灯,左转红黄绿灯,共6个接口,分别接在P1.0~P1.5,显示时间的2位数码管位
选开关接P1.6,P1.7。南北方向有直行红黄绿灯,左转红黄绿灯,共6个接口,分别接在P2.0~P2.5,显示时间的2位数码管位
选开关接P2.6,P2.7。
2、软件部分。直行绿灯亮27s,数码管从30s倒计时,接着直行黄灯亮3秒,数码管闪烁倒计时3s。左转方向绿灯亮17s,数
码管从20s倒计时,接着左转黄灯亮3s,数码管闪烁倒计时3s。开机东西直行绿灯27s,直行黄灯3s,左转绿灯17s,左转黄
灯3s,此时南北方向一直红灯,倒计时50s。接着南北直行绿灯27s,直行黄灯3s,左转绿灯17s,左转黄灯3s,此时东西方
向一直红灯,倒计时50s。
四、源代码:
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define OFF 0 //定义灯泡开关
#define ON 1
sbit ew_zx_red = P1^0; //东西直行红黄绿
sbit ew_zx_yellow = P1^1;
sbit ew_zx_green = P1^2;
sbit ew_zz_red = P1^3; //东西左转红黄绿
sbit ew_zz_yellow = P1^4;
sbit ew_zz_green = P1^5;
sbit sn_zx_red = P2^0; //南北直行红黄绿
sbit sn_zx_yellow = P2^1;
sbit sn_zx_green = P2^2;
sbit sn_zz_red = P2^3; //南北左转红黄绿
sbit sn_zz_yellow = P2^4;
sbit sn_zz_green = P2^5;
sbit seg_1 = P1^6; //东西数码管位选开关
sbit seg_2 = P1^7;
sbit seg_3 = P2^6; //南北数码管位选开关
sbit seg_4 = P2^7;
int time = 0; //计时器
int count = 0;