?? 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 + -