找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3932|回复: 6
收起左侧

AVR单片机红外解码程序

[复制链接]
ID:393188 发表于 2018-9-3 22:40 | 显示全部楼层 |阅读模式
avr单片机源程序如下:
  1. //ICC-AVR application builder : 2018/1/11 10:02:04
  2. // Target : M16
  3. // Crystal: 8.0000Mhz

  4. #include <iom16v.h>
  5. #include <macros.h>
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. #define pind2 PIND&0x04
  9. uchar shujuma[2]={0,0},IrValue[4]={0,0,0,0};
  10. uchar Time;
  11. void delay_us(unsigned char nus)
  12. {
  13. unsigned char i;
  14. while(nus--)
  15. {for(i=12;i>0;i--);}
  16. }

  17. void xs(void)
  18. {
  19. uchar k[17]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71,0x91};
  20. uchar j[8]={0x7f,0xbf,0xdf,0xef,0xfe,0xfd,0xfb,0xf7};
  21. PORTB=0xff;
  22. PORTA=k[16];
  23. PORTB=j[2];
  24. delay_us(1);
  25. PORTB=0x00;
  26. PORTA=k[shujuma[1]];
  27. PORTB=j[1];
  28. delay_us(1);
  29. PORTB=0x00;
  30. PORTA=k[shujuma[0]];
  31. PORTB=j[0];
  32. }
  33. void main(void)
  34. {

  35. DDRA=0xff;
  36. DDRB=0xff;
  37. DDRD&=0xfb;
  38. GICR|=0x40;//开启INT0中断
  39. MCUCR|=0x02;
  40. MCUCR&=0xfe;//设为下降沿触发
  41. SEI();//开启总中断
  42. while(1)
  43. {
  44. shujuma[0]=IrValue[2]/16;
  45. shujuma[1]=IrValue[2]%16;
  46. xs();
  47. if(IrValue[2]==0x0c)
  48. {DDRC=0xff;PORTC=0xff;}
  49. else if(IrValue[2]==0x16)
  50. {DDRC=0xff;PORTC=0x00;}
  51. }
  52. }
  53. #pragma interrupt_handler INT0_zd:2
  54. void INT0_zd(void)
  55. {
  56. uchar j,k;
  57. int err;
  58. Time=0;
  59. if((pind2)==0)
  60. {
  61. err=1000;
  62. while(((pind2)==0)&&(err>0))
  63. {
  64. delay_us(1);
  65. err--;
  66. }
  67. if((pind2))
  68. {
  69. err=500;
  70. while(((pind2))&&(err>0))
  71. {
  72. delay_us(1);
  73. err--;
  74. }
  75. for(k=0;k<4;k++)
  76. {
  77. for(j=0;j<8;j++)
  78. {
  79. err=60;
  80. while(((pind2)==0)&&(err>0))
  81. {
  82. delay_us(1);
  83. err--;
  84. }
  85. err=500;
  86. while((pind2)&&(err>0))
  87. {
  88. delay_us(10);//0.1ms
  89. Time++;      
  90. err--;
  91. if(Time>30)
  92. return;
  93. }
  94. IrValue[k]>>=1;
  95. if(Time>=8)
  96. IrValue[k]|=0x80;
  97. Time=0;
  98. }
  99. }
  100. }
  101. if(IrValue[2]!=~IrValue[3])
  102. return;
  103. }
  104. }
复制代码

所有资料51hei提供下载:
红外线.rar (16.42 KB, 下载次数: 30)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1 发表于 2018-9-4 03:41 | 显示全部楼层
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

ID:393188 发表于 2018-9-4 08:43 | 显示全部楼层
admin 发表于 2018-9-4 03:41
补全原理图或者详细说明一下电路连接即可获得100+黑币

此程序主要是红外接收管接收红外遥控器的解码,将数据码显示在数码管并判断数据码控制PC口的电平。红外接收管的信号脚接的是外部中断PD2,利用信号触发外部中断进行解码。数码管的位选端口接的PB口,数据端口也就是字形码接的PA口。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:393335 发表于 2018-9-4 09:45 | 显示全部楼层
不错啊很棒啊
回复

使用道具 举报

ID:393670 发表于 2018-9-7 21:21 | 显示全部楼层

好资料呀,51黑论坛有你更精彩!!!
回复

使用道具 举报

ID:367803 发表于 2018-9-12 16:02 | 显示全部楼层
学习了
回复

使用道具 举报

ID:114509 发表于 2019-1-25 10:56 | 显示全部楼层
厉害  哈哈  
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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