#include <regX52.h>
#define c(x) (x*110592/120000)
sbit Ir_Pin=P3^2;
sbit beep=P3^6;
#define INBUF_LEN 4 //数据长度
unsigned char inbuf1[INBUF_LEN]={'0','0','0','0'};//发送缓冲区
unsigned char inbuf2[50];//接收缓冲区
unsigned char count3;
void init_serialcomm( void )
{
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
T2CON=0x30;
TH2=0x00;
TL2=0x00;
RCAP2H=0xFF;
RCAP2L=0xDC;
TR2=1;
}
//向串口发送一个字符
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0 );
TI= 0 ;
}
//向串口发送一个字符串,strlen 为该字符串长度
void send_string_com( unsigned char *str, unsigned int strlen)
{
unsigned int k= 0 ;
do
{
send_char_com(*(str + k));
k++;
} while (k < strlen);
}
//串口接收中断函数
void serial () interrupt 4 using 3
{
if (RI) //RI==开始接收
{
unsigned char ch;
RI = 0 ; //软件RI=0
ch=SBUF;
if (ch> 1 )
{
count3= 0 ;
inbuf2[count3]=ch;
}
else
{
count3++;
inbuf2[count3]=ch;
}
}
}
unsigned char code Led_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,
0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共阳极数码显示码0-F.
unsigned char code Led_Sel[]={0xef,0xdf,0xbf,0x7f};
unsigned char dis_8[17]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','-'};
unsigned char Led_Buf[4]; //显示缓冲区
char Led_Index; //位选
unsigned char Ir_Buf[4]; //用于保存解码结果
void delay_50ms(unsigned int t)
{
unsigned int j;
for(;t>0;t--)
for(j=6245;j>0;j--)
{;}
}
//==============================================================
//数码管扫描
timer0() interrupt 1 using 1
{
TL0=65536-1000;
TH0=(65536-1000)/256; //定时器0设定约1000us中断一次,用于数码管扫描
//P0=0xff;
P2=Led_Sel[Led_Index]; //位选
P0=Led_Tab[Led_Buf[Led_Index]]; //段选
if(++Led_Index>3) Led_Index=0; //四个扫描完了,到第一个数码管
}
//==============================================================
unsigned int Ir_Get_Low()
{
TL1=0;
TH1=0;
TR1=1;
while(!Ir_Pin && (TH1&0x80)==0);
TR1=0;
return TH1*256+TL1;
}
//=============================================================
unsigned int Ir_Get_High()
{
TL1=0;
TH1=0;
TR1=1;
while(Ir_Pin && (TH1&0x80)==0);
TR1=0;
return TH1*256+TL1;
}
//==============================================================
main()
{
unsigned int temp;
char i,j;
Led_Index=1;
init_serialcomm(); //初始化串口
TMOD=0x11;
TL0=65536-1000;
TH0=(65536-1000)/256; //定时器0设定约1000us中断一次,用于数码管扫描
EA=1;
ET0=1;
TR0=1;
Led_Buf[0]=0;
Led_Buf[1]=0;
Led_Buf[2]=0;
Led_Buf[3]=0; //显示区设成0
do{
restart:
while(Ir_Pin);
temp=Ir_Get_Low();
if(temp<c(8500) || temp>c(9500)) continue;//引导脉冲低电平9000
temp=Ir_Get_High();
if(temp<c(4000) || temp>c(5000)) continue;//引导脉冲高电平4500
for(i=0;i<4;i++) //4个字节
for(j=0;j<8;j++) //每个字节8位
{
temp=Ir_Get_Low();
if(temp<c(200) || temp>c(800)) goto restart;
temp=Ir_Get_High();
if(temp<c(200) || temp>c(2000)) goto restart;
Ir_Buf[i]>>=1;
if(temp>c(1120)) Ir_Buf[i]|=0x80;
}
Led_Buf[0]=(Ir_Buf[2]/16)&0xf;
Led_Buf[1]=Ir_Buf[2]&0xf;
Led_Buf[2]=(Ir_Buf[3]/16)&0xf; //显示结果
Led_Buf[3]=Ir_Buf[3]&0xf;
inbuf1[0]=dis_8[Led_Buf[0]];
inbuf1[1]=dis_8[Led_Buf[1]];
inbuf1[2]=0x0d;
inbuf1[3]=0x0a;
send_string_com(inbuf1,INBUF_LEN);
beep=0;
delay_50ms(2);
beep=1;
}
while(1);
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
393-本站原创 VB遥控播放器红外遥控解码单片机C语言源码.zip项目程序C语言源码下载393-本站原创 VB遥控播放器红外遥控解码单片机C语言源码.zip项目程序C语言源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计参考 3.适合单片机公司开发项目参考
资源推荐
资源详情
资源评论
收起资源包目录
393-本站原创 VB遥控播放器红外遥控解码单片机C语言源码.zip (38个子文件)
393-本站原创 VB遥控播放器红外遥控解码
s51yaokong.Opt 981B
s51yaokong_Opt.Bak 968B
s51yk.OBJ 11KB
s51yaokong.lnp 47B
s51yk.c 4KB
s51yaokong.plg 385B
s51yaokong_Uv2.Bak 2KB
s51yaokong 10KB
s51yaokong.Uv2 2KB
s51yaokong.M51 12KB
s51yk.LST 7KB
s51yaokong.hex 3KB
VB遥控音乐播放器上位机程序
RICHMCU IR PLAYER.exe 76KB
scrrnchs.dll 20KB
安装程序
VB遥控播放器安装程序.exe 7.91MB
OLEPRO32.DLL 160KB
Form1.frm 21KB
VB6STKIT.DLL 100KB
OLEAUT32.DLL 584KB
HIFANSBROWSER.vbw 102B
MSVCRT.DLL 272KB
hifans.ini 183B
MSSCCPRJ.SCC 198B
Form2.frm 14KB
stdole2.tlb 18KB
Form1.frx 2KB
MSCOMCHS.DLL 13KB
COMCAT.DLL 22KB
scrrun.dll 148KB
rmoc3260.dll 172KB
MSCOMM32.OCX 101KB
rmoc3260.oca 48KB
HIFANSBROWSER.uzy 68KB
MSVBVM60.DLL 1.32MB
HIFANSBROWSER.vbp 1KB
Form2.frx 932B
ASYCFILT.DLL 144KB
VB6CHS.DLL 100KB
共 38 条
- 1
资源评论
yxkfw
- 粉丝: 76
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功