1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
單片機控制的紅外流水燈源程序
[打印本頁]
作者:
tianlanse
時間:
2018-6-25 16:14
標題:
單片機控制的紅外流水燈源程序
52紅外流水燈
034039hr2f121ox222or1q.png
(23.31 KB, 下載次數: 30)
下載附件
2018-6-25 16:14 上傳
/*NEC協議紅外通信
單片機解碼后通過串口以9600的比特率發送出去
*/
#include <reg52.h>
/*====================================
自定義類型名
====================================*/
typedef unsigned char INT8U;
typedef unsigned char uchar;
typedef unsigned int INT16U;
typedef unsigned int uint;
/*====================================
硬件接口位聲明
====================================*/
sbit IR = P3^2; //定義紅外脈沖數據接口 外部中斷O輸入口
uchar IRtime;//儲存檢測紅外高低電平持續時間
uchar IRcord[4];//儲存解碼后的4個字節數據
uchar IRdata[33];//包含起始碼在內的33位數據
bit IRpro_ok;//解碼后4個字節數據接收完成標志位
bit IRok;//33位數據接收完成標志
//初始化定時器0,外部中斷0
void init()
{
TMOD|=0x02;//設置定時器0工作模式2,8位自動重裝
TL0=TH0=0;//初始化定時器0寄存器,定時器0溢出一次時間為256個機器周期
EA=1;//開總中斷
ET0=1;//開定時器0中斷
TR0=1;//啟動定時器0
IT0=1;//設置外部中斷0跳變沿觸發方式
EX0=1;//開外部中斷0中斷
}
//定時器0中斷,每中斷一次需要256*1.085us = 277.76us
void time0() interrupt 1
{
IRtime++; //277.76us
}
//外部中斷0 存入33次脈寬
void int0() interrupt 0
{
static uchar i;//靜態變量用于存入33次數據計數
static bit startflag;//開始儲存脈寬標志位
if(startflag)
{
/*判斷引導碼,如果是引導碼則從起始碼開始存*/
if((IRtime<53)&&(IRtime>=32)) i=0;
IRdata[i]=IRtime; //以TO溢出的次數來計算脈寬把這個時間存放在數組中
IRtime=0; //計數清零
i++;//計數脈寬存入次數自加
if(i==33) //i等于33那么就表示已經存入了33次脈寬
{
IRok=1; //脈寬檢查完成
i=0; //把脈寬計數清零準備下次存入
}
}
else
{
IRtime=0;//定時器0計數清零
startflag=1;//開始處理標志位置1
}
}
void IRcordpro()
{
uchar i;//i是用于計數處理4個字節
uchar j;//j用于計數處理1個字節的8位數據
uchar k;//k用于計數處理33次脈寬
k = 1;//從第一位脈寬開始處理,丟掉起始碼
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
//如果脈寬大于數據0標準的1125us那么就判定為數據1
if(IRdata[k]>5) IRcord[i]|=0x80;//寫1
//只能右移7次,如果右移8次則會把第一位數據移出去
if(j<7) IRcord[i]>>=1;
k++; //處理下一次脈寬
}
}
IRpro_ok=1;//解碼完成
}
void main()
{
init(); //初始化
while(1)
{
if(IRok)//判斷33次脈寬是否提取完成
{
IRcordpro();//根據脈寬解碼出4個字節的數據
IRok=0;//清零脈寬檢查完成標志位等待下一次脈寬檢查
if(IRpro_ok)//判斷解碼完成,4個字節數據
{
if(IRcord[2] == 0x45)
P1 = 0xfe; //數據碼,低電平,開鎖
else
P1 = 0x01; //數據反碼,高電平
IRpro_ok=0;//清零解碼標志位
}
}
}
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1