找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1492|回复: 1
收起左侧

stm32红外发送程序

[复制链接]
ID:796450 发表于 2020-7-14 18:53 | 显示全部楼层 |阅读模式

  1. #include "ir.h"
  2. #include "pwm.h"
  3. #include "delay.h"



  4. void output_38k(int delay)
  5. {
  6.         pwm_set_enable(1);
  7.         delay_us(delay + PWM_ON_DELAY);
  8. }
  9. void output_38k_off(int delay)
  10. {
  11.         pwm_set_enable(0);
  12.         delay_us(delay - PWM_OFF_DELAY);
  13. }

  14. void send_bit(int bit)
  15. {
  16.         if (bit == 1) {
  17.                 output_38k(NEC_BIT_MARK);
  18.                 output_38k_off(NEC_ONE_SPACE);
  19.         } else if (bit == 0) {
  20.                 output_38k(NEC_BIT_MARK);
  21.                 output_38k_off(NEC_ZERO_SPACE);
  22.         } else {
  23.                 //printf("critical error!\n");
  24.         }
  25. }

  26. void send_byte(unsigned char byte)
  27. {
  28.         int  i = 0;

  29.         for (i = 7; i >= 0; i--)
  30.                 send_bit(((byte & BIT(i)) >> i));
  31.                
  32. }

  33. void send_ir_data(unsigned char* data, int len)
  34. {
  35.         int i  = 0;
  36.        
  37.         output_38k(NEC_HDR_MARK);
  38.         output_38k_off(NEC_HDR_MARK);

  39.         for (i = 0; i < len; i++)
  40.                 send_byte(data[i]);

  41.         send_bit(1);
  42.         delay_us(NEC_HDR_MARK- PWM_OFF_DELAY);

  43. }


  44. #if 0

  45. /* 0xb2,0x4d,0x9f,0xe0,0xd8,0xaf */
  46. unsigned int rawCodes_ac_open[] = {4397,4368,561,1578,560,537,557,1581,584,1582,584,486,558,537,584,1554,
  47.         560,538,558,510,558,1607,557,513,585,511,556,1585,581,1583,583,486,557,1609,556,513,558,538,557,512,558,
  48.         1607,558,1583,557,1608,558,1608,557,1580,559,1606,559,1581,556,1609,557,512,559,537,558,512,557,539,557,
  49.         512,558,1607,558,1582,558,537,584,1555,558,1607,556,514,559,537,556,513,558,537,556,514,558,1606,559,511,
  50.         583,513,558,1582,557,1608,558,1580,585,5154,4419,4347,584,1555,558,539,557,1581,584,1581,571,501,577,516,
  51.         571,1568,557,541,581,487,557,1608,557,513,558,538,557,1582,583,1582,584,487,557,1608,557,511,611,486,558,
  52.         510,558,1607,557,1609,556,1583,583,1582,583,1555,558,1607,558,1607,559,1582,557,537,585,486,558,510,558,
  53.         540,558,509,557,1608,558,1608,557,512,559,1606,559,1581,558,537,581,490,558,510,587,511,557,511,559,1606,
  54.         559,510,569,527,558,1582,560,1604,561,1605,561};


  55. void send_raw(int *code, int size)
  56. {

  57.         int i = 0;


  58.         for (i = 0; i < size; i++) {
  59.                 if (i%2 == 0) {
  60.                         output_38k(code[i]);
  61.                 } else {
  62.                         output_38k_off(code[i]);
  63.                        
  64.                 }
  65.         }
  66. }

  67. #endif

复制代码


stm32_ir_send.7z

161.2 KB, 下载次数: 21, 下载积分: 黑币 -5

ir发送端

回复

使用道具 举报

ID:1 发表于 2020-7-20 03:27 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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