找回密码
 注册
关于网站域名变更的通知
查看: 1100|回复: 1
打印 上一主题 下一主题

红外线遥控Proteus仿真电路(发射 接收程序)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-10 13:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
红外线遥控Proteus仿真电路(发射 接收程序)
1 {3 X! |# q0 I7 V# z4 s
8 B# V1 m* N$ b' V$ a
5 G' O  {; Q" J2 h2 N1 V4 ^4 U
9 D6 N/ \: q% n/ F) c" u, N

3 u. Q( p5 i, M& d
7 C* i, i/ N2 m
( I( a) k4 C7 Z' Y! D
红外线遥控Proteus仿真电路(发射 接收程序)  |# A, O# B; o' |
红外发射编码程序2 I6 G+ O9 g1 r  z! b
红外发射解码程序' d  a- X0 _" p- ~
proteus的红外遥控的仿真原理图
; ?9 m) _$ d1 L+ W- o
1 Y$ E. G$ h2 @0 ?

7 X5 p: U  `. n& O6 ^2 x+ l
& m9 S7 o. K6 D; t9 w5 E3 p) M
格力空调遥控器(YB0F2)解码       ; S- c4 n  O. E
    CUP:STC89C52RC     晶振:11.0569MHz
# p" O7 h! P: ]1 y2 C# n7 Y* b4 m7 r    直接由串口输出      波特率:57600
+ d9 j! s) r$ K: `8 n& K************************************   说 明 **********************************************: z: y4 B1 U* `4 N4 u$ D
解码方式:+ Q+ I- d* L1 N
以一个9ms的低电平和4.5ms的高电平为引导码,后跟35位二进制代码 接着0.565ms低电平和20MS高电平跟32位二进制代码
* j8 C5 ^$ H' O4 E9 n, V前4个字节每个字节为8位,中间1个字节只有3位,接着为20MS高电平,跟后4个字节每个字节为8位
, ~' O( H' g: k" A' n- l    以低电平为0.565ms、高电平为0.56ms、 周期为1.125ms的组合表示"0";
( c. H, t( U5 B! ?8 F! h" k7 G    以低电平为0.565ms、高电平为1.685ms、周期为2.25ms的组合表示"1"。; $ S2 I: b# v: H: l# e" m
注意:经过红外接收头解调后单片机接收到的高低电平是和遥控器发射时是相反的一个过程; I# K. e! x& C1 x& V  S
* 兼容 1T-12T单片机中断方式红外接收数据,并通过串口发送
8 ?9 T; [3 B( H8 P2 H2 z程序编辑: lbq691477940         22/07/2011. A1 S" u, `/ z# }* b$ \
/*******************************************************************************************/
8 C# ^" y3 ]7 ^+ H' R6 i; _/*******************************************************************************************/
/ D; k. r- m" c#include <reg52.h>  
+ n& V" }: Y+ z: |( V" etypedef unsigned char uint8;# y) ~! O6 o/ W. E9 r
sbit Ir_Pin = P3^2;) ~2 n* E# y% v' V% Y" y3 y
uint8 Ir_Buf[9]; //用于保存解码结果4 g$ ^8 N/ o5 b( E3 z! f
/*******************************************************************************************
$ A+ H" s3 R4 P, s* 外部中断0初始化
& h2 V4 J+ y- G* N/*******************************************************************************************/
# E' }. p0 e' Evoid int1_init(void)! q' U' I' T# U, g
{
( V: `( N7 M0 h" E, cIT0 = 1; //下降沿有效7 t& |7 i" V. B' `; ^( g
EX0 = 1;
/ V1 a- j6 C8 ^8 r' ZEA = 1;
( i' F3 E+ O5 ?/ A' G& E/ b  x}
: [0 N6 L2 b+ m, l/*******************************************************************************************2 H; U2 q: t9 }9 k$ C7 Z5 i
* UART初始化1 l2 N5 e* e; }
9 D, A: J2 }4 j* 波特率:9600   波特率:57600
1 M; X- J2 u, [( D5 w/*******************************************************************************************/
  G7 t& `, K4 V, u. avoid uart_init(void)8 a$ G6 K  G, a6 M# W) z+ P' R- k
{
0 J* s  @; ]2 n5 f# M: C    TMOD = 0x21; . q' t- w$ b/ \5 F: t$ F' e
    /* SCON = 0x50;
" E6 `+ \/ T/ ~# {/ r    TH1 = 0xFD;   //9600bps @ 11.0592MHz
+ H9 q$ p! P4 ~    TL1 = 0xFD;" [9 H9 P" }1 O, M  e- G6 g" T  I
    TR1 = 1; ' o- X) C+ c/ t* k  _4 U
SCON = 0x50;
' l3 L& t2 R: w- tPCON |= 0x80;
* F+ K8 y. L! a$ b* ?8 k- l! [4 ZTH1 = 0xff;     //57600bps @ 11.0592MHz;8 Z+ K$ {8 O7 `0 r5 g; K$ e0 W
TL1 = 0xff;
. D0 f; M2 G. a. qTR1 = 1;( v0 N8 a) {2 d
}
) @# S, K' B  ]' _: B4 O: B4 ~3 s/******************************   延时21ms子程序   ************************************2 c' Z* v7 ~9 A* p% L3 w
void delay21ms(void)   ; S3 e0 e% p& `( L! r, p. j
{
$ L  `; t$ E/ a3 T- o' V    uint8 a,b;
, U3 o# k; m/ C! R% f: `0 a    for(b=150;b>0;b--)
/ s! M7 p3 z9 p& n  [  ?        for(a=63;a>0;a--);, Q/ Z" P+ @' |2 R/ @
}6 y1 [, B+ q: f/ Q
/*******************************************************************************************/' ~! R4 n( G/ {) F5 s! d
/*******************************************************************************************- X' l: N4 ?: g/ h$ i7 S% c
* UART发送一字节
$ i6 H" z: D) ~' h0 s- O/*******************************************************************************************/
9 q9 R7 q0 q3 V# z, ?! u+ s8 r- X( d3 Ivoid UART_Send_Byte(uint8 dat)( s6 O6 U" H$ f! w# }
{) o) t, v4 v# C; X/ {* M/ _
SBUF = dat;4 k5 b& m3 S( e1 V  t  m
while (TI == 0);+ z0 I+ E4 ?% ~9 R# ?5 F
TI = 0;5 Q2 h$ r3 T; J+ M" R
}
6 j9 q& }! n  |/ l+ t/*******************************************************************************************" ~4 p$ m. \7 c: g' P0 j
* 获取低电平时间/
3 t! G; e. Q) l/*******************************************************************************************/
6 h6 x5 [+ [6 n$ E) Runsigned int Ir_Get_Low() $ R! i0 A4 H1 e5 |2 w4 `
{. b* X& `4 t- M' z! j; F4 k( J2 r
TL0 = 0;
9 D  v+ D$ J& M) C# Q6 k* yTH0 = 0;3 @# H9 F  d8 r) H, g6 H
TR0 = 1;0 S& u8 {- g0 [. d: E* Q$ Q" g
while (!Ir_Pin && (TH0 & 0x80)==0);//一直计到Ir_Pin不等0与计到大于1.085*32768=35553.28us9 W' Q6 u9 u$ `# K6 c
TR0 = 0;         
6 O+ W; E) D4 W' Q/ F+ |return (TH0 * 256 + TL0); //返回T1 高八位和低八位计数值
) ^2 j% f: Q/ y4 a1 o9 Z}
: ]/ a, ^2 R* ^/*******************************************************************************************
. B4 R& s$ i& q2 f* 获取高电平时间
: ^' p! ~- b0 A2 O# x( V% r- E6 i6 q. h/*******************************************************************************************/
% L; \5 g# O" u" nunsigned int Ir_Get_High()
1 k/ y; o3 a, ^2 ?- s) _# s{* [; Z! G  n0 `$ ~
TL0 = 0;# r5 v0 z; R; }3 [+ x) W7 p/ ?8 a
TH0 = 0;
0 s8 N9 P- ^- _3 R# ETR0 = 1;
  ~( D' y- ^7 @& T/ J( [& W- ]! G2 I. ^# V! V
8 |8 y: Q. f3 F1 D+ E5 N6 d
4 k/ a' L4 b+ H% C6 _+ L$ w- M
( M* ], e, e8 F" `. u
1 H1 S8 d! v% ^  B( ]- R! K

0 b( l' h9 m3 u) `: ?; Q' q( F…………限于本文篇幅 余下代码请从论坛下载附件…………0 n' Y9 g' R6 g  T
$ p: f! f; n( ^9 T' m. A

# [4 U- K$ \; g1 X2 [+ I下载:' j9 A+ y' O7 z8 v: Q
游客,如果您要查看本帖隐藏内容请回复

( o$ r; _& P( i$ y1 F. i
  S. z' `# {" y, v$ L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-10 04:40 , Processed in 0.093750 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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