- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于单片机模拟红外编解码的设计
开放实验报告
课 题 名 称 基于单片机的红外解码器的设计
学 生 姓 名
系、年级专业 信息工程系、11、12级电子信息工程
指 导 教 师 江世明
2014年 5 月20日
基于单片机的红外解码器的设计
实验目的
1、了解红外编码原理,模拟红外发射信号;
2、用程序实现红外编码的解码;
实验内容
设计基于单片机的红外解码器,实现红外遥控信号智能解码,要求制作出实物,实现解码功能。
电路设计
1、红外编码原理
在实际应用中红外编码将二进制码调制到38MHz的载波频率上,通过在空中传播,由红外接收头接收之后,由内部的解调电路进行解调, 解调出来的就是我们发送的那些二进制码。红外编码方式根据日本NEC协议编码。每次发送四个字节:用户码,用户反码,数据码,数据反码。
数据 0和 1的区别通常体现在高低电平的时间长短上。一次按键首先发送9ms的低电平和4.5ms的高电平的引导码。
实际生活中,用遥控器发出的信号与上面的信号是相反的,经过红外线接收头解码以后就和上图一样了,值得大家注意的是发射模块的芯片不同,引导区的时间和数据都有所不同,但解决的方法都是一样的。
引导码后就是用户码。但是怎么来区分0和1呢? 前面我们提到了PWM(脉宽调制)。根据脉冲的宽度来区别0和1.0.56ms低电平之后接0.56ms高电平为0,接1.12ms高电平为1.
2、红外解码方法
在实际生活中红外解码一般由红外接收头接收并解码。解码时先跳过9ms高电平和4.5ms的低电平,然后跳过0.56ms的低电平,最后通过循环等待搞电平的结束并计时。通过判断高电平时间的长短来区分0(0.56ms)和1(1.12ms)。最后判断接收到的四个字节(用户码,用户反码,数据码,数据反码)中数据码和取反后的数据反码相不相等。
3、红外编解码电路
程序设计
见附录
系统仿真
仿真分析:
仿真照片如上图,当从4*4键盘按下K5时,单片机U1的数码管显示5,同时P3.0发送出如下图所示的脉冲。
上图包含了9ms高电平和4.5ms低电平的引导码和4字节(32位)的信息码,包括用户码,用户反码,数据码,数据反码。
六、结论
通过本次试验用软件模拟了红外发送编码与接收解码的过程。基本上可以脱离硬件实现红外的发送与接收。 但是本实验还是存在一些问题,发送信号没有用38Khz的载波频率载波和实际的发送信号应该与本实验相反。所以做实物时应该考虑这些问题。
附录:
发送程序:
#includereg51.h
#define uchar unsigned char
#define uint unsigned int
uchar IR[4]; //全局变量 存放发送数据
sbit IRIN=P3^4;// 发送脚
sbit BEEP = P3^0;// 蜂鸣器
void SendData();
void Delay(uint x);
void Delay_112();
void Delay_56();
void Delay_50();
void Key_scan();
void Beep();
uchar DM[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
void main()
{
uchar t=16;
IR[2]=16;
while(1)
{
Key_scan();
P0 = DM[IR[2]];
if(t!=IR[2]) //保证每次只发送一个数据 缺点:每个键不能重复发送
{
t=IR[2]; //保护IR[2]的值
Beep();
您可能关注的文档
最近下载
- 建筑工程图集 19DX101-1:建筑电气常用数据.pdf VIP
- 六年级上册语文一课一练-11故宫博物院含答案.pdf VIP
- 小学体育水平一《爬越一定高度的高障碍物》教学设计.doc VIP
- 迈迪工具箱-齿轮设计教程(详细).pptx
- 2025-2026学年湘美版四年级上册书法全册教学教案(教学设计).pdf VIP
- 第二章 课程与教学研究的历史发展.ppt VIP
- 2024年3月青少年机器人技术等级考试理论综合试卷二级真题及答案.docx VIP
- 2024浙江杭州市能源集团有限公司招聘6人笔试参考题库附带答案详解.pdf
- 《传统木工工具》精美课件.pptx VIP
- 面粉厂事故应急救援预案.docx VIP
文档评论(0)