红外对管的简单应用.doc
文本预览下载声明
红外对管的简单应用
作者:羊村村长(qq:332416820)
关键词:红外线、单片机、1T、AD模数转换、红外对管、1602
元件清单:STC12C5A60S2、12MHz晶振、30p电容(2个)、103可调电阻、1602液晶、红外对管、电阻(220,47k各一个)
电路图:
说明:1、红外发射管工作电流一般为100ma左右,使用中长时间超过额定电流工作会造成期间损坏,此电路中限流电阻为220欧,则工作电流5/220为22ma左右;
2、此电路实际测试中,感应距离15cm左右(从液晶上能看到电压变化),此距离为单程距离,从照片中可以看到;
3、如果要增加感应距离,方法有三个:一个是加大发射电流(减小限流电阻),二是用单片机定时进行脉冲发射,改变占空比,三是接收电流加三极管放大,提高接收电路灵敏度;
4、此电路所用STC12C5A60S2为1Tcpu,具有P1口内部adc功能,传统51需改时延,并自己增加ADC模块。
5、特别提醒,红外接收管正极应该接地。
实验场景:
下面图一红圈标示的就是红外对管连接
图一 万能板实验图 图二 上面用东西遮挡引起电压变化
源程序清单:
/*---------------------------------------------------------------------------------------------------------------*/
/* 12Mhz晶振测试,100%通过 */
/*---------------------------------------------------------------------------------------------------------------*/
#includereg51.h
#include intrins.h
#define uchar unsigned char
#define uint unsigned int
uchar Vo; //A/D转换后换算的电压值
/*Declare SFR associated with the ADC */
sfr ADC_CONTR = 0xBC; //ADC control register
sfr ADC_RES = 0xBD; //ADC high 8-bit result register
sfr ADC_RESL = 0xBE;
//sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register
sfr P1ASF = 0x9D; //P1 secondary function control register
/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80 //ADC power control bit
#define ADC_FLAG 0x10 //ADC complete flag 模数转换结束标志位
#define ADC_START 0x08 //ADC start control bit 模数转换启动控制位
//转换速度控制位SPEED0和SPEED1,共四种状态,对应四种转换速度
#define ADC_SPEEDLL 0x00 //540 clocks
#define ADC_SPEEDL 0x20 //360 clocks
#define ADC_SPEEDH 0x40 //180 clocks
#define ADC_SPEEDHH 0x60 //90 clocks
uchar tCount;
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2;
void DelayMS(uint ms)
{
uint i;
while(ms--)
{
for(i=0;i120;i++);
}
}
/*----------------------------
Software delay function
--------------
显示全部