keil5实现灯的亮度随环境亮度变化的代码
时间: 2023-10-18 11:04:15 浏览: 169
实现光源亮度调控代码
以下是使用Keil5实现灯的亮度随环境亮度变化的C语言代码示例:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P1^0; //LED灯控制管脚
void delay(uint x) //延时函数
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
uchar get_light() //获取环境亮度函数
{
uchar light;
ADC_CONTR=0x90; //设置ADC模式和通道
delay(1); //短暂延时
ADC_CONTR|=0x40;//启动ADC转换
while(!(ADC_CONTR&0x20)); //等待转换完成
light=ADC_RES; //获取ADC结果
ADC_RES=0; //清零ADC结果
return light; //返回环境亮度
}
void main(void)
{
uchar light;
while(1)
{
light=get_light(); //获取环境亮度
if(light>200) //环境亮度大于200
{
LED=0; //LED灯关闭
delay(100); //短暂延时
}
else if(light<150) //环境亮度小于150
{
LED=1; //LED灯全亮
delay(100); //短暂延时
}
else //环境亮度在150至200之间
{
LED=0; //LED灯关闭
delay(100); //短暂延时
LED=1; //LED灯全亮
delay(100); //短暂延时
}
}
}
```
该代码将环境亮度传感器的输出管脚连接到P3口的第0位,LED灯的控制管脚连接到P1口的第0位。在程序运行时,通过ADC模块获取环境亮度,并根据环境亮度控制LED灯的亮度。当环境亮度大于200时,LED灯关闭;当环境亮度小于150时,LED灯全亮;当环境亮度在150至200之间时,LED灯先关闭再全亮。在控制LED灯亮灭时,通过短暂延时控制亮度变化的平滑过渡。
阅读全文