用51单片机制作红绿灯,要求按键能控制整个电路的启动和停止,用汇编语言怎么编写程序

用51单片机制作红绿灯,要求按键能控制整个电路的启动和停止,用汇编语言怎么编写程序,第1张

交通路口红绿灯自动控制器电路图 如图所示为交通路口红绿灯自动控制电路。该控制器主要由四块555(IC2~IC5)和一些阻容元件组成的四级单稳态延时电路首尾相连而成。输入的8V电压经78M05稳压后为555提供VDD=+5V的电源电压。 当刚接通电源时,触发脉冲经IC1(CD4011)门电路和R1、C1延时,再经C2、R22微分后加到IC2②脚,触发IC2输出高电平,进入暂稳态,其暂稳态定时时间长短取决于K1的位置,延时td=11RC6,设定时间分别为60秒、45秒、30秒。暂稳态结束时,IC2③脚为低电平,其经C3、R23微分后,下降沿又触发IC3,形成第二级单稳态延时。如此依次触发定时,完成绿色灯亮-**灯亮(8秒、10秒、12秒)-红色灯亮(60秒、45秒、30秒)的循环周期。 本控制器通过四级电路首尾相接,依次延时触发,使交通灯依次出现绿-黄-红(色)信号,指挥行人和车辆在十字路I=1有秩序地通行(绿)-提醒注意(黄)-禁止通行(红)。 看看这个有用吗?

主函数部分:

void main(void)

{

InitTimer1() ;

Time=30;

P1=0xFF;

Flag=0;

while(1)

{

if(Time==0)

{

if(Flag) Time=20;

else Time=30;

Flag=~Flag;

}

if(Time>3 && (!Flag))

{

EastR=OFF; EastG=ON;

WestR=OFF; WestG=ON;

SouthR=ON; SouthG=OFF;

NorthR=ON; NorthG=OFF;

display(Time,1);

}

else if(Time>3 && Flag)

{

EastR=ON; EastG=OFF;

WestR=ON; WestG=OFF;

SouthR=OFF; SouthG=ON;

NorthR=OFF; NorthG=ON;

display(Time,0);

}

}

}

其他已发到邮箱啦

#include <reg51h>

#define uint unsigned int

#define uchar unsigned char

#define BLKN 2 //列锁存器数

sbit G = P1^7; //P17为显示允许控制信号端口

sbit RCLK = P2^0; //P20为输出锁存器时钟信号端

sbit SCLR = P2^1; //P21为移位寄存器清○端

void delay(uint); //延时函数

uchar data display[32]; //显示缓存

uchar code BMP[][32]={{16,0,16,0,37,248,36,64,120,64,8,64,16,64,32,64,124,64,0,64,0,64,12,64,112,64,3,252,0,0,0,0},

{16,0,19,240,32,16,41,240,120,16,19,252,32,64,122,72,1,80,0,224,25,80,102,76,0,64,1,192,0,0,0,0},

{4,64,4,64,63,248,4,64,127,252,1,0,31,240,17,16,31,240,17,16,31,240,8,32,16,16,32,8,0,0,0,0}}; //字模表'红‘’绿‘‘黄’

void main()

{

register uchar i,j;

SCON=0x00; //串口工作模式0:移位寄存器方式

TMOD=0x01; //定时器T0工作方式1:16位方式

P1=0x3f; //P1端口初值:允许接收、锁存、显示

TR0=1; //启动定时器T0

ET0=1; //允许定时器T0中断

EA=1; //开启总中断;

while(1)

{

delay(2000);

for(j=0;j<3;j++)

{

for(i=0;i<32;i++)

{

display[i]=~BMP[j][i];

if (i%2) delay(100);

}

delay(10000);

}

}

}

void delay(uint x)

{

register uchar i,j;

for (i=x;i>0;i--)

for (j=120;j>0;j--);

}

void leddisplay(void) interrupt 1 using 1

{

register uchar i, j=BLKN;

TH0 =(65536-100)/256; //设定显示屏刷新率每秒60帧

TL0 =(65536-100)%256;

i = P1; //读取当前显示的行号

i = ++i & 0x0f; //行号加1,屏蔽高4位

while(j)

{

j--;

SBUF = display[iBLKN + j]; //送显示数据

while (!TI);

TI = 0;

} //完成一行数据的发送

G = 1; //消隐(关闭显示)

P1 &= 0xf0; //行号端口清○

RCLK = 1; //显示数据打入输出锁存器

P1 |= i; //写入行号

RCLK = 0; //锁存显示数据

G = 0; //打开显示

}

以上就是关于用51单片机制作红绿灯,要求按键能控制整个电路的启动和停止,用汇编语言怎么编写程序全部的内容,包括:用51单片机制作红绿灯,要求按键能控制整个电路的启动和停止,用汇编语言怎么编写程序、关于51单片机的红绿灯实验的C语言程序,注意是要C语言程序。、单片机C语言红绿灯程序,要求:数码管显示时间倒计时、16*16LED点阵显示模块显示红绿黄灯、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9492173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存