原理
在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的开、关。
电路图如下
效果
程序
#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; } } }