找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4065|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机红外通信教学ppt课件及keil源程序

[复制链接]
跳转到指定楼层
楼主
压缩包里有红外的教学课件
我自己写的红外实现程序
用到串口通信、定时器、以及LCD1602的相关程序
包含lcd1602.h、lcd1602.c、delay.h、delay.c、ir.c

红外线:在光谱中,波长在0.76至400微米的一段,我们称为红外线。
所有高于绝对零度(-273.15℃)的物质都可以 产生红外线。
红外线是不可见光线。

红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。他一般由红外发射和接收系统两部分组成。
今天我们就以红外遥控为代表,具体讲一讲红外通信的具体过程。

红外线遥控是目前使用最广泛的一种通信和遥控手段。

红外线遥控装置的优点:
  体积小、功耗低、功能强、成本低。

应用场合:
  在家用电器中,彩电、录像机, 录音机、音响设备、空凋机以及玩具等产品中应用非常广泛。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。

红外发光管:
     红外发光二极管通常使用砷化镓(GaAs)、砷铝化镓 (GaAlAs)等材料,采用全透明或浅蓝色、黑色的树脂封装。 通电后会产生的光波波长为940nm左右的红外线。

红外一体化接收头:其内部含有高频的滤波电路,专门用来滤除红外线合成信号的载波信号(38KH),并送出接收到的信号。当红外线合成信号进入红外接收头,在其输出端便可以得到原先红外发射器发出的数字编码。


常用的红外遥控系统一般分发射和接收两个部分。
应用编/解码专用集成电路芯片来进行控制操作,如下图所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。



   1、更好的减少周边环境对红外信号的干扰。 因为经过调制后,我们
      在接收时,可以选择性的接收。比如现在发送的是38KHZ的红外
      信号,那我接收时只接收38KHZ的信号,其它频率的一概不收。
   
   2、另外经过载波的二次调制还可以提高发射效率,达到降低电源功
      耗的目的。

1 、引导码:  相当于一把钥匙,单片机只有检测到了引导码出现了才
       确认接收后面的数据 ,保证数据接收的正确性.

2 、客户码: 用来区分各红外遥控设备,使之不会互相干扰.

3 、操作码: 用户实际须要的编码,按下不同的键产生不同
       的操作码,待接收端接收到后根据其进行不同的操作.

4 、操作反码: 为操作码的反码,目的是接收端接收到所有数
       据之后,将其取反与操作码比较,不相等则表示在传输过程中
       编码发生子变化,视为此次接收的数据无效,可提高接收数据
       的准确性.


单片机源程序如下:
  1. #include "delay.h"
  2. #include "lcd1602.h"
  3. #include <reg51.h>

  4. sbit IR = P3 ^ 2;

  5. unsigned char IR_Time;
  6. unsigned char IR_Rcv_OK;
  7. unsigned char IR_Pro_OK;
  8. unsigned char IR_Code[4];
  9. unsigned char IR_Data[33];
  10. unsigned char TempData[16];
  11. unsigned char LCD[16] = "0123456789ABCDEF";

  12. void Timer_Init(void)
  13. {
  14.     TMOD = 0x22;
  15.     TH0 = 0;
  16.     TL0 = 0;
  17.     ET0 = 1;
  18.     TR0 = 1;
  19. }

  20. void EX0_Init(void)
  21. {
  22.     IT0 = 1;
  23.     EX0 = 1;
  24.     EA = 1;
  25. }

  26. void Timer0_ISR(void) interrupt 1
  27. {
  28.     IR_Time++;
  29. }

  30. void EX0_ISR(void) interrupt 0
  31. {
  32.     static bit startflag;
  33.     static unsigned char BitCnt;
  34.     if (startflag)
  35.     {
  36.         if ((IR_Time < 60) & (IR_Time > 40))
  37.         {
  38.             BitCnt = 0;
  39.         }
  40.         IR_Data[BitCnt] = IR_Time;
  41.         IR_Time = 0;
  42.         BitCnt++;
  43.         if (BitCnt == 33)
  44.         {
  45.             IR_Rcv_OK = 1;
  46.             BitCnt = 0;
  47.             startflag = 0;
  48.         }
  49.     }
  50.     else
  51.     {
  52.         IR_Time = 0;
  53.         startflag = 1;
  54.         IR_Rcv_OK = 0;
  55.     }
  56. }

  57. void IR_Pro(void)
  58. {
  59.     unsigned char i, j, k;
  60.     unsigned char val;
  61.     k = 1;
  62.     for (i = 0; i < 4; i++)
  63.     {
  64.         for (j = 1; j <= 8; j++)
  65.         {
  66.             if (IR_Data[k] > 7)
  67.             {
  68.                 val |= 0x80;
  69.             }
  70.             if (j < 8)
  71.             {
  72.                 val >>= 1;
  73.             }
  74.             k++;
  75.         }
  76.         IR_Code[i] = val;
  77.         val = 0;
  78.     }
  79.     IR_Pro_OK = 1;
  80. }

  81. void button(void)
  82. {
  83. }
  84. void IR_Work()
  85. {
  86.     switch (IR_Code[2])
  87.     {
  88.     case 0x45:
  89.         button();
  90.         break;
  91.     default:
  92.         break;
  93.     }
  94. }

  95. void IR_Disp()
  96. {
  97.     TempData[0] = LCD[IR_Code[0] / 16];
  98.     TempData[1] = LCD[IR_Code[0] % 16];
  99.     TempData[2] = '-';
  100.     TempData[3] = LCD[IR_Code[1] / 16];
  101.     TempData[4] = LCD[IR_Code[1] % 16];
  102.     TempData[5] = '-';
  103.     TempData[6] = LCD[IR_Code[2] / 16];
  104.     TempData[7] = LCD[IR_Code[2] % 16];
  105.     TempData[8] = '-';
  106.     TempData[9] = LCD[IR_Code[3] / 16];
  107.     TempData[10] = LCD[IR_Code[3] % 16];

  108.     LCD_Write_String(5, 1, TempData);
  109. }
  110. void main(void)
  111. {
  112.     Timer_Init();
  113.     EX0_Init();
  114. ……………………

  115. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
51.rar (1.35 MB, 下载次数: 52)








分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:404210 发表于 2018-11-18 18:04 | 只看该作者
最近在搞红外发射,想下载,没有积分
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表