AT89C51单片机交通灯仿真图+代码

接上篇万年历,这篇博客也是记录我的实训内容,我们实训有万年历和交通灯。好了不说闲话,上正文。
不知道为何突然发现说原创审核不过,完全手写的,也不知道为何,哭

:在评论有附本人交通灯的图噢,不过我还是建议各位先自己画。噢还要注意图里芯片,双击.hex的路径,可能链接是带本人的,大家要自己编译换成自己的.hex文件路径
在这里插入图片描述

一、实验内容

模拟简单交通灯工作情况:
1、当单片机开始工作后,东西和南北各方向分别采用2个数码管显示倒计时间(倒计时时间可自行设定,这里我设的总共50s)。
状态1(前25s):初始状态为东西方向为绿灯、南北方向为红灯,红灯时间为25秒,绿灯时间20s-t(t是指蓝灯的时间,是自己设置的,比如我蓝灯如果设置的是10s那么绿灯的时间就是10s),绿灯之后为ts蓝灯结束后为5s的黄灯,总共25s时间,之后变为状态2。
南北:红25s
东西:绿20-ts——蓝ts——黄5s
状态2(后25s):南北方向为绿灯、东西方向为红灯,红灯时间为25s,绿灯还是20s-t,上文讲的同样,绿灯结束变蓝灯ts,蓝灯结束后为黄灯5s,总计25s,之后又重返状态1,以此循环
东西:红25s
南北:绿20-ts——蓝ts——黄5s
2、设置三个紧急按键,特殊情况时按下紧急按键人为设置亮灯时间,分别为南北禁行东西通行、东西禁行南北通行、全部禁行。

二、电路仿真图

这里用的是isis画,代码用keil4编译
在这里插入图片描述
注意:仿真图的链接链接:https://pan.baidu.com/s/1l8O4MM9R4IeCfm-HS3On0g?pwd=meoj
提取码:meoj

记得换仿真图AT89C51芯片中的.hex文件。
在这里插入图片描述
图中所用的器件(这里用的都是共阳LED,CA)

三、代码

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar shuzi[10]={
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //共阳无小数点
//P0控制LED灯是否亮
sbit ew_red=P0^0;        //东西红灯,低电平亮
sbit ew_yellow=P0^1;   
sbit ew_green=P0^2;
sbit sn_red=P0^3;
sbit sn_yellow=P0^4;
sbit sn_green=P0^5;
sbit ew_led=P0^6;
sbit sn_led=P0^7;
//p2口控制段码
sbit P2_0=P0^0;  
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7; 
//控制数码管位码
sbit P1_0=P1^0; //p1_0,p1_1控制东西灯位码
sbit P1_1=P1^1;
sbit P1_2=P1^2; //p1_2,p1_3控制南北灯位码
sbit P1_3=P1^3;
sbit P1_4=P1^4;	//p1_4,p1_5控制左转数码管位码
sbit P1_5=P1^5;
//按键
sbit left_add=P3^0;
sbit left_reduce=P3^1;
sbit P3_2=P3^2; //东西通行按键
sbit P3_3=P3^3; //南北通行按键
sbit P3_4=P3^4; //全部禁止按键
sbit sn_reduce=P3^5;  
sbit ew_reduce=P3^6;
//定义变量
int left;
int leftadd=0;
int leftreduce=0;
int ewadd=0;
int ewreduce=0;
int snadd=0;
int snreduce=0;
int s=0,n=0;

void time(void) interrupt 1 //中断,产生1s
{
   
     TH0=(65536-50000)/256;		//0.05s=50ms
	 TL0=(65536-50000)%256;
	 n++;
	 if(n==20)
	 {
   n=0;
	 s
评论 104
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值