模拟高速路灯

利用按键代替雾气可见度
led闪烁速度代表雾灯闪烁速度

#include "reg52.h"  //定义一些寄存器的头文件

typedef unsigned int u16;     //重定义无符号整型变量为u16;即用u16代替无符号整形
typedef unsigned char u8;     //重定义无符号字符型变量为u8;即用u8代替无符号字符型

sbit redled=P2^0;             //定义红色led管脚
sbit yellowled=P2^1;            //定义黄色led管脚
sbit k1=P3^0;    
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;                   //定义四个按键的管脚

u16 m;                        //用来存放数据变量作为标识符,通过循环的次数决定闪烁的速度

/*

*延时函数

*/
void delay(u16 i)
{
while(i--);
}

/*
*函数名称:按键检测函数
*函数作用:检测按键是否按下,并对每个按键按下之后需要做的事进行定义
*/
void keypros()
{
  if(k1==0)
	{
	   delay(1000);
		   if(k1==0)
			 m=0;                //k1按下m=0;即没有雾气状态,led全灭
	while(!k1);
	}
	
	if(k2==0)
	{
	   delay(1000);
		   if(k2==0)
			 m=50;               //k2按下m=50;即可见度50米,快速闪烁
	while(!k2);
	}
	
	if(k3==0)
	{
	   delay(1000);
		   if(k3==0)
			 m=100;             //k3按下m=100;即可见度100米,中速闪烁
	while(!k3);
	}
	
	if(k4==0)
	{
	   delay(1000);
		   if(k4==0)
			 m=250;            //k4按下m=100;即可见度150米,慢速闪烁
	while(!k4);
	}

}

void main()
{  u16 i=0,a=0;    //标识符用来标记循环次数与m进行比较
   while(1)
	 {a++;              
		if(a==100)     //每次循环对a进行加1,当a=100时 i=1;即每循环100次a=1;
		{ a=0;
		  i++;
		}
		
	keypros();    //调用按键函数
		
	if(m!=0)       //m不为0时比较循环次数和m的值
	{
	   if(i<m)
	    {  redled=0;
	       yellowled=1;
			}
	   if((i<(2*m))&&(i>=m))
	    {redled=1;
	     yellowled=0;
	    }
	   if(i>(2*m))
		   i=0;
}
		else                 //m=0的情况下led全灭
		{	redled=1;
		yellowled=1;
		}

}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Zigbee光敏传感器模拟路灯代码是一种基于Zigbee通信协议的光敏传感器与路灯控制器之间的通信代码。通过该代码,可以实现光敏传感器检测到环境光强度变化后,向路灯控制器发送信号,控制路灯的开关状态。 以下是一个简单的Zigbee光敏传感器模拟路灯代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <stdbool.h> // 定义光敏传感器引脚 #define LIGHT_SENSOR_PIN 1 // 定义路灯控制引脚 #define LIGHT_CONTROL_PIN 2 // Zigbee通信函数 void zigbeeSend(int data) { // 发送数据给路灯控制器 // ... } // 光敏传感器检测函数 bool isLightDetected() { // 检测光敏传感器是否检测到光线 // 返回true表示检测到光线,返回false表示未检测到光线 // ... } // 路灯控制函数 void controlLight(bool isOn) { // 控制路灯的开关状态 if (isOn) { // 打开路灯 // ... } else { // 关闭路灯 // ... } } int main() { while (true) { // 检测光敏传感器是否检测到光线 bool isLight = isLightDetected(); // 控制路灯的开关状态 controlLight(isLight); // 发送数据给路灯控制器 zigbeeSend(isLight ? 1 : 0); // 延时一段时间后再次检测 // ... } return 0; } ``` 以上是一个简单的Zigbee光敏传感器模拟路灯代码示例,其中通过光敏传感器检测环境光强度变化,并根据检测结果控制路灯的开关状态。同时,通过Zigbee通信函数将检测结果发送给路灯控制器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老尚嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值