📄 lig_measure.c
字号:
//====================================================================================
//文 件 名: Lig_Measure.c
//功能描述: 光线测量驱动程序
//维护记录: 2006年6月27 by hongyan.Feng
//====================================================================================
#include "SPCE061A.h"
unsigned int LADData,LCounter; //LADData用来累加10次测量数据
//====================================================================================
//语法格式: void Light_Init(void)
//功能描述: 光线测量初始化
//入口参数: 无
//出口参数: 无
//维护记录: 2006年6月27 by hongyan.Feng
//====================================================================================
void Light_Init(void)
{
*P_IOA_Dir &= 0xfffd; //初始化IOA1(LINE2)为悬浮输入口
*P_IOA_Attrib |= 0x0002;
*P_IOA_Data &= 0xfffd;
}
//====================================================================================
//语法格式: unsigned int MeasureTemp(void)
//功能描述: 光线测量,测量得到的电压数据存放在iLM中,并根据iLM判断光线太强\太弱还是柔和
// 每1ms取一次AD转换数据,共取10次是为了在100Hz的自然光的一个周期中都能取到数据
//入口参数: 无
//出口参数: 0:光线柔和
// 1:光线太暗
// 2:光线太强
//维护记录: 2006年6月27 by hongyan.Feng
//====================================================================================
unsigned int Light_Measure(void)
{
unsigned int Flag; //定义一个测量标志
float iLM; //iLM用来存放转换后的电压数据.
Light_Init(); //光线测量端口初始化
LADData = 0; //初始化为0
LCounter = 0;
iLM = 0.0000; //初始化为0
Flag = 1; //初始化为测量状态
*P_INT_Ctrl = 0x0010; //允许IRQ4_1KHz中断
__asm("int irq"); //开中断
while(Flag) //测量
{
if(LCounter==10) //测量10次
{
__asm("int off");
LADData = LADData/10; //取10次测量数据的平均值
iLM = LADData*3.3/0x3ff; //计算电压值iLM = LADData*3.3/0x03ff;
LCounter = 0; //计数器清零
LADData = 0; //变量清零
Flag = 0; //标志位清0
}
*P_Watchdog_Clear = 0x0001; //清看门狗
}
if((iLM!=0)&&(iLM<2.46))
{
if(iLM>1.4760) //光敏电阻为>15K,太暗:2.46*15/(15+10)计算两个临界电压点,TL431实测得到的稳压值为2.46V
{
*P_Watchdog_Clear = 0x0001; //清看门狗
return 1;
}
else if(iLM<0.4100) //光敏电阻为<2K,光线太刺眼:2.46*2/(2+10).2K大约对应500lm,75lm到500lm之间为工作学习比较合适的光线
{
*P_Watchdog_Clear = 0x0001; //清看门狗
return 2;
}
else
{
*P_Watchdog_Clear = 0x0001; //清看门狗
return 0; //光敏电阻为2K<R<15K,光线柔和
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -