基于51单片机的c语言程序关于设计一种楼道照明灯光随着感应光线逐渐变暗灯光逐渐变亮最终达到天全黑灯光最亮天全亮灯光全灭的效果
#include <reg51.h> // 包含51单片机头文件
sbit led = P1^0; // 定义控制LED灯的引脚
void delay(unsigned int i); // 延时函数
void main() { unsigned int light; // 定义感应光线强度变量 while(1) { light = ADC_Read(0); // 读取光感模拟量 if(light < 100) // 如果感应光线强度小于100,即天全黑 { led = 1; // 灯光最亮 } else if(light > 800) // 如果感应光线强度大于800,即天全亮 { led = 0; // 灯光全灭 } else // 如果感应光线强度在100和800之间 { led = 1; // 灯光逐渐变亮 delay((800 - light) / 10); // 延时,实现灯光逐渐变亮的效果 } } }
void delay(unsigned int i) { unsigned int j, k; for(j = 0; j < i; j++) { for(k = 0; k < 120; k++); } }
unsigned int ADC_Read(unsigned char channel) { unsigned int value; ADC_CONTR = ADC_POWER | ADC_START | ADC_SPEEDH | channel; nop(); // 等待AD转换完成 nop(); nop(); nop(); nop(); value = ADC_RES; value <<= 2; value |= ADC_RESL & 0x03; return value; // 返回AD转换结果 }
原文地址: https://www.cveoy.top/t/topic/bt7U 著作权归作者所有。请勿转载和采集!