原理

在STC12C5A60S2单片机的P1口有8个10bit的ADC(模-数转换器),对于外部的模拟信号的电压可以转换为1024个等级(0~1023),参考点为VCC电压,

例如 VCC电压为5.00V,那么每一个等级为:5/1024≈0.00488V,也就是说外部输入的电压每增大0.00488V 转换后的结果就增大1。

例如 外部输入2.5V,转换的结果为:2.5/(5/1024)≈512,也就是单片机读取到ADC转换值为512时,就可以认为外面的电压为2.5V了。

光敏电阻是一种对光敏感的电阻,当增强光照,它的电阻减小,反之增大,变化范围在5KΩ~2MΩ左右。

电路中在P1.0口为模拟信号输入,光敏电阻和电位器的串联分压,调节电位器可以调节光敏电阻的灵敏度,在程序中设置一个阀值,判断ADC的值与阀值大小来控制LED的开、关。

电路图如下



1572188637348375.png

效果


1572188571145950.jpg

程序

#include<STC12C5A60S2.H>
#include"ADC10BIT.h"
sbit LED=P0^0;
main()
{
    unsigned int adc;
    Read_init(0);
    while(1)
    {
        adc=ADC_Read();
        if(adc<600)
        {
            LED=0;
        }
        else
        {
            LED=1;
        }
    }
}