38kHz 红外收发
diy梦想2012/12/14软件综合 IP:广东
一体化红外接收头
红外信号收发系统的典型电路,红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。
串口通信程序
//向pc串口发送数据
//pc端使用 超级终端 建立连接
//9600 8位数据 1位停止[/font][/align]
#include <iom16v.h>
#include <macros.h>
#include "uart0.h"
#define uint unsigned int
#define uchar unsigned char
uchar irr_b=0,s_s=0;
uchar wb=0,a=0,ds=0;
long da=0;
uchar d1,d2,d3,d4;
uchar ten_1,ten_2,ten_3,ten_4,i;

void ms(uint aa)
{
for(;aa>0;aa--);
}
[align=left][font=宋体]void write_cn(uchar *cn,uchar cn_nub)
{
uchar i;
for(i=0;i<(cn_nub);i++)
{
uart_tx(cn[i]); //[/font]发送数据i
PORTA=i;
ms(60000);
}
}
[/align]
//定时器T1初始化
void t1_init()
{
TCCR1B=0x00; //关闭定时器
TCNT1H=0x00; //定时器初值
TCNT1L=0x00;
TCCR1A=0x00; //普通模式
TCCR1B=0x05; //1024分频
}
#pragma interrupt_handler ext_int0_isr:2 //指定外部中断函数
//中断接收
void ext_int0_isr(void)
{
if(irr_b==0) //第一个中断
{
irr_b=1; //状态为:开始接收
TCNT1L=0x00; //定时器清零
}
else if(irr_b==1) //第二个以后的中断
{
a=TCNT1L; //读取定时器的值
//判断是引导,还是数据
if((170<a)&&(a<235)) //引导
{
wb=0; //数据计数清零
da=0; //数据清零
TCNT1L=0x00; //定时器清零
}
else if((8<a)&&(a<25)) //数据0
{
wb++;
da=(da<<1);
TCNT1L=0x00;
}
else if((25<a)&&(a<45)) //数据1
{
wb++;
da=(da<<1)+1;
TCNT1L=0x00;
}
}
if(wb==32) //数据长度够32位
{
irr_b=0; //状态为停止接收
wb=0; //数据计数清零
s_s=1; //打开显示许可
}
}
//与计算机通信的程序
//计算机端使用超级终端,建立一个连接,9600,8位,1个停止位
void main()
{
uchar i=0,rx_temp;
init_devices(); //串行口初始化
DDRA=0xff;
PORTA=0x00;
DDRB=0xff;
DDRD=0x00; //中断输入
PORTD=0xff; //内部上拉
t1_init(); //定时器t1初始化
MCUCR = 0x02; //下降沿中断
GICR = 0x40; //开外部中断int_0
TIMSK = 0x00;
SREG=0x80; //开全局中断
s_s=1; //开机进行一次显
ms(3000);

write_cn("
开始红外实验\r\n",14);
while(1){
ds=TCNT1L;
if(ds>250) //定时器超时,接收复位
{
TCNT1L=0;
irr_b=0;
da=0;
wb=0;
s_s=0;
}
if(s_s==1) //显示开关打开,开始显示
{
SREG=0x00; //关闭全局中断
//显示设备码
d1=da>>24;
write_cn(&d1,1);
d1=da>>16;
write_cn(&d1,1);
d1=da>>8;
write_cn(&d1,1);
d1=da;
write_cn(&d1,1);

DDRD=0x00; //中断输入
PORTD=0xff; //内部上拉
s_s=0; //关闭显示开关
SREG=0x80; //开全局中断
}
}
}
[/i][/td][/tr][/table]
来自:计算机科学 / 软件综合
0
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}