红外遥控收发仿真电路如下,但是程序目前还没有开始写 求大神给个思路
接收端的单片机程序源码:
- //-----------------------------------------------------------------
- // 名称: 红外遥控器接收程序
- //-----------------------------------------------------------------
- // 说明: 程序运行时,根据SONY红外协议接收数据并解码,然后将12位编码
- // 以16进制数显示LCD上.
- //
- //-----------------------------------------------------------------
- #include <reg51.h>
- #include <string.h>
- #include <intrins.h>
- #include <stdio.h>
- #define INT8U unsigned char
- #define INT16U unsigned int
- INT8U Disp_Buffer[17]; //显示缓冲
- sbit Read_IR = P3^2; //读取红外输入信号
- //接收到的12位红外编码及上次接收的编码
- volatile INT16U IR_D12 = 0x000, Old_IR_D12 = 0x000;
- volatile INT16U IR_us = 0; //红外载波时长
- extern delay_ms(INT16U x);
- extern void Initialize_LCD();
- extern void LCD_ShowString(INT8U,INT8U,INT8U *);
- //-----------------------------------------------------------------
- // 主程序
- //-----------------------------------------------------------------
- void main()
- {
- }
- //-----------------------------------------------------------------
- // INT0中断函数 (通过实测,以70,140为两个时长的上限)
- //-----------------------------------------------------------------
- void IR_INT_ISR() interrupt 0
- {
- }
复制代码
发送端:
- //-----------------------------------------------------------------
- // 名称: 红外遥控仿真发射器
- //-----------------------------------------------------------------
- // 说明: 本例运行时,按键键值以40KHz红外线载波发射出去,所模拟的载波
- // 数据格式符合索尼红外遥控编码格式(SIRC).
- //
- //-----------------------------------------------------------------
- #define INT8U unsigned char
- #define INT16U unsigned int
- #define INT32U unsigned long
- #include <reg51.h>
- #include <intrins.h>
- #include <stdio.h>
- sbit IRLED = P3^2; //红外发射管定义
- sbit BEEP = P3^7; //蜂鸣器定义
- #define KEY_IN P1 //按键输入端口定义
- //8组红外编码(每组12位,用3位16进制数表示)
- INT16U IR_Codes[] = {0x509,0x334,0x556,0x778,0x9AA,0xFCC,0xDEE,0xAAC};
- #define delay12us() { _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();\
- _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
- //-----------------------------------------------------------------
- // 延时函数(us)
- //-----------------------------------------------------------------
- void delay_us(INT8U x) { while (--x);}
- //-----------------------------------------------------------------
- // 延时函数(ms)
- //-----------------------------------------------------------------
- void delay_ms(INT16U x) { INT8U t; while(x--) for(t = 0; t < 120; t++);}
- //-----------------------------------------------------------------
- // 输出提示音
- //-----------------------------------------------------------------
- void Sounder()
- {
- INT8U i;for( i = 0; i < 200; i++) { BEEP = ~BEEP; delay_us(240);}
- }
- //-----------------------------------------------------------------
- // 发送N倍的600us载波(1/40K/2=12us)
- //-----------------------------------------------------------------
- void Emit_IR_Carrier_Nx600us(INT8U N)
- {
- }
- //-----------------------------------------------------------------
- // 发送12位数据
- //-----------------------------------------------------------------
- void Emit_D12(INT16U D12)
- {
- }
- //-----------------------------------------------------------------
- // 主程序
- //-----------------------------------------------------------------
- void main()
- {
- }
复制代码
残缺程序与电路图,求大神帮助,给个编写程序的思路:
15 红外遥控收发仿真.rar
(32.12 KB, 下载次数: 457)
|