2024-09-01
售卖作品
00

自动模式下,根据环境光强来调节PWM占空比,让小灯亮度改变。

手动模式下,可以自己设置红灯暖光灯的PWM占空比,使得暖色调改变。

手动模式下,可以自己设置黄灯冷光灯的PWM占空比,使得冷色调改变。

任意模式下,都可以修改为倒计时模式,倒计时结束后,两小灯都关闭。

设置倒计时后,倒计时结束那么PWM占空比为0,小灯都关闭。

自动模式:

在这里插入图片描述

倒计时结束:

在这里插入图片描述

程序逻辑:

在这里插入图片描述

读取ADC0832光敏电阻:

在这里插入图片描述

c
/************端口定义********************/ sbit CS = P1 ^ 0; /* ADC0832片选 */ sbit CLK = P1 ^ 1; /* ADC0832时钟 */ sbit DIO = P1 ^ 2; /* ADC0832输入输出 */ /*****************************************/ /********ADC0832的A/D转换程序************************/ unsigned char Get_AD_Result( unsigned char ch ) { unsigned char i, dat1 = 0, dat2 = 0; CS = 0; _nop_(); _nop_(); /* 片选使能,低电平有效 */ CLK = 0; _nop_(); _nop_(); /* 芯片时钟输入 */ DIO = 1; _nop_(); _nop_(); CLK = 1; _nop_(); _nop_(); /* * 第1个下降沿之前,设DI=1/0 * 择单端/差分(SGL/DIF)模式中的单端输入模式 */ CLK = 0; DIO = 1; _nop_(); _nop_(); CLK = 1; _nop_(); _nop_(); /* 第2个下降沿之前,设置DI=0/1,选择CHO/CH1 */ CLK = 0; if ( ch == 0 ) DIO = 0; /* 通道0 内部电压测试 */ else DIO = 1; /* 通道1 */ _nop_(); _nop_(); CLK = 1; _nop_(); _nop_(); /* 第3个下降沿之前,设置DI=1 */ CLK = 0; DIO = 1; _nop_(); _nop_(); /* 第4-11个下降沿读数据(MSB->LSB) */ for ( i = 0; i < 8; i++ ) { CLK = 1; _nop_(); _nop_(); CLK = 0; _nop_(); _nop_(); dat1 = dat1 << 1 | DIO; } /* 第11-18个下降沿读数据(LSB->MSB) */ for ( i = 0; i < 8; i++ ) { CLK = 1; _nop_(); _nop_(); CLK = 0; _nop_(); _nop_(); dat2 = dat2 << ( (unsigned char) (DIO) << i); } CS = 1; /* 取消片选一个周期结束 */ /* 如果MSB->LSB和LSB->MSB读取的结果相同,则返回读取的结果,否则返回0 */ return(dat1); /* return (dat1 == dat2) ? dat1:0;//取消校验 */ }

代码

css
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!