单片机的红绿灯控制程序如何写啊

单片机的红绿灯控制程序如何写啊,第1张

//--------------------------------------------------

//名称:LED模拟交通灯

//作者:彭伟《单片机C语言程序设计实训100例-基于8051+PROTEUS仿真》

//--------------------------------------------------

//说明:东西向绿灯亮若干秒后,黄灯闪烁,闪烁5次后亮红灯

// 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁

// 闪烁5次后亮红灯,东西向绿灯亮,如此重复

//---------------------------------------------------

#include<reg51h>

#define uchar unsigned char

#define uint unsigned int

sbit RED_A=P0^0;//东西向指示灯

sbit YELLOW_A=P0^1;

sbit GREEN_A=P0^2;

sbit RED_B=P0^3;//南北向指示灯

sbit YELLOW_B=P0^4;

sbit GREEN_B=P0^5;

uchar Flash_count=0;Operation_type=1;//闪烁次数及 *** 作类型变量

//-----------------------------------------------------

//延时

//----------------------------------------------------

void DelayMS(uint x)

{

uchar i;

while(x--)for(i=0;i<120;i++)

}

//---------------------------------------------------

//交通灯切换子程序

//---------------------------------------------------

void Traffic_light()

{

switch(Operation_type)

{

case 1://东西向绿灯南北向红灯亮

RED_A=1;YELLOW_A=1;GREEN_A=0;

RED_B=0;YELLOW_B=1;GREEN_B=1;

DelayMS(2000);

Operation_type=2;

break;

case 2://东西向黄灯闪烁,绿灯关闭

DelayMS(300);

GREEN_A=1;

YELLOW_A=~YELLOW_A;

//闪烁5次

if (++Flash_count!=10) return;

Flash_count=0;

Operation_type=3;

break;

case 3://南北向绿灯东西向红灯亮

RED_A=0;YELLOW_A=1;GREEN_A=1;

RED_B=1;YELLOW_B=1;GREEN_B=0;

DelayMS(2000);

Operation_type=4;

break;

case 4://南北向黄灯闪烁,绿灯关闭

DelayMS(300);

GREEN_B=1;

YELLOW_B=~YELLOW_B;

//闪烁5次

if (++Flash_count!=10) return;

Flash_count=0;

Operation_type=1;

}

}

void main()

{

while(1) Traffic_light();

}

unsigned int Addr_i;

unsigned char i;

char x;

unsigned char Dx;

Add_i=0x1000;

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

{

x=(Add_i+i);

if(x>0)

{

Dx=0x20;

Dx=x;

}

else

{

if(x==0)

{

Dx=0x22;

Dx=x;

}

else

{

Dx=0x21;

Dx=x;

}

}

}

本程序来自《单片机C语言程序设计实训100例——基于8051+Proteus仿真》没用中断。

#include <reg52h>

#include <intrinsh>

#define uchar unsigned char

#define uint unsigned int

void main()

{

uchar T_Count = 0;

P0 = 0xfe;

P2 = 0xfe;

TMOD = 0x10;//定时器1方式1

TH1 = (65535-50000)/256;//定时50000us=50ms

TL1 = (65535-50000)%256;

TR1 = 1;//启动定时器1

while(1)

{

if(TF1== 1)//查询方式定时时间到后TF1=1

{

TF1 = 0;

TH1 = (65535-50000)/256;

TL1 = (65535-50000)%256;

if(++T_Count == 20)//50ms20=1000ms

{

P0 = _crol_(P0,1);

P2 = _crol_(P2,1);

T_Count = 0;

}

}

}

}

;单片机DS18B20温度计C语言程序

;标签:单片机 c语言 ds18b20 温度计 51 mcu

>

以上就是关于单片机的红绿灯控制程序如何写啊全部的内容,包括:单片机的红绿灯控制程序如何写啊、单片机89C51程序:有100个有符号数连续存放在外部RAM 1000H开始存放,编程统计其中正数、负数、0的个数、51单片机,定时器方式1的1s定时,怎么编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9326882.html

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

发表评论

登录后才能评论

评论列表(0条)

保存