一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5953|回复: 11

好像发现的这个也不错哦,红外显示波形……有兴趣的做一个?

[复制链接]
发表于 2011-5-29 14:48 | 显示全部楼层 |阅读模式
本帖最后由 laoshiyuan 于 2011-5-29 14:51 编辑

原网址:

http://proteus.5d6d.com/thread-14319-1-1.html

作品功能介绍:
             利用STC89C52单片机为控制芯片,有三种显示画面:
                 1. 具有32位的红外遥控码和红外波形
                 2. 具有16位的系统及系统反码及波形
                 3. 具有16位的操作及操作反码及波形
      利用按键可调节
         a. 调节波形的幅值(振幅)
         b. 调节波形的脉宽
         c. 调节波形在屏的上下位置
   我的一个做维修的朋友他在给别人配遥控器的时候,需要查看遥控器的系统码和操作码,本作品实现了检测32位遥控码并显示其波形!  在维修中使用很方便了!
在12864的屏上显示简洁,查看遥控码容易,简单!
本文来自:proteus仿真论坛(http://proteus.5d6d.com),详细出处参考:http://proteus.5d6d.com/thread-14319-1-1.html


有空做一个看看

10082812034aa9f10c2536362b.jpg 10082812035f50232255bf2494.jpg 10082812039ab92d727c24062e.jpg 10082812039ded0c6cd26b70d1.jpg 1008281203605d9349b5eea39e.jpg 10082812036547c3502022beae.jpg 100828120368724e41f64c5b2f.jpg

红外显示遥控器的编码,最近研究红外解码,有了这个,万能遥控器之类的,就容易理解了……

(*^__^*) 嘻嘻……
发表于 2011-5-29 15:01 | 显示全部楼层
沙发!!!!!!!!!!
回复

使用道具 举报

发表于 2011-5-29 15:35 | 显示全部楼层
不错,想用AVR做个,有没有源码?
回复

使用道具 举报

发表于 2011-5-29 17:02 | 显示全部楼层
能做解滚动码的吗?
回复

使用道具 举报

发表于 2011-5-29 18:12 | 显示全部楼层
相当不错!!
回复

使用道具 举报

 楼主| 发表于 2011-5-29 21:20 | 显示全部楼层
不错,想用AVR做个,有没有源码?
rgzdb 发表于 2011-5-29 15:35 https://www.yleee.com.cn/images/common/back.gif



  呵呵,原网页有用51做的,我传上来,希望你能用AVR改呢,我也有个AVR的学习板,但是还没入门……

(*^__^*) 嘻嘻……
程序.zip (46.89 KB, 下载次数: 405) 这个是程序,用的是51单片机
原理图.rar (11.21 KB, 下载次数: 414) 这个是原作者的原理图,用99SE画的,估计只是个示意图,因为原作者用洞洞板做的,所以原理图我看了下,有两个管脚都没连上,红外那里,好像要加个上拉电阻

哪天我有时间了,修改下再画个PCb试试……

呵呵
回复

使用道具 举报

 楼主| 发表于 2011-5-29 21:21 | 显示全部楼层
能做解滚动码的吗?
968201 发表于 2011-5-29 17:02 https://www.yleee.com.cn/images/common/back.gif



    6楼有原理图和源程序,你可以修改试试?
回复

使用道具 举报

发表于 2011-5-29 21:36 | 显示全部楼层
解码程序段不怎么好,上一个我做的,希望能起到抛砖引玉的作用,多多交流……


#include<regx52.h>
#include<_1602.h>
#define uchar unsigned char
#define uint unsigned int

#define M110592
#ifdef M110592
        #define guide_h         48
        #define high_h          8
        #define low_h                4
        #define mask                0xfc
#else
        #define guide_h         105
        #define high_h          17
        #define low_h                8
        #define mask                0xf8
#endif


bit guide_flag=0;
uchar code aa[]="0123456789ABCDEF";
uchar xxh,nums,r_data,rf_ram[4], temp ,numss=0;
void delay(uchar mm)
{
         while(mm--);
}
void test(uchar num)
{
         wdat(aa[num /16]);
         wdat(aa[num%16]);
}
void main(void)
{
        SP=125;
        TMOD = 0x12;          //TMOD:        GATE C/T  M1   M0  GATE  C/T  M1   M0
        TH1=0;
        TL1=0;
        TR1=0;                        //TCON: TF1  TR1  TF0  TR0 IE1   IT1  IE0  IT0
        ET1=1;
wcmd(0x38);          //16*2显示,5*7点阵,8位数据
wcmd(0x0c);          //显示开,关光标
wcmd(0x06);          //移动光标
wcmd(0x01);          //清除LCD的显示内容
        EX0=1;                        //IE :        EA   -   ET2  ES  ET1   EX1  ET0  EX0
        IT0 = 1;
        EA=1;                        //        IE=0x89;

        while(1)
        {
        position(0);
test(numss);                
wdat('*');
test(rf_ram[0]);
wdat(' ');
test(rf_ram[1]);
wdat(' ');
test(rf_ram[2]);
wdat(' ');
test(rf_ram[3]);
        }
}
void decode(void) interrupt 0
{
        xxh=TH1;
        TH1=0;
        TR1=1;       
        IE0=0;
        if(guide_flag==0)
        {
                 if((xxh & mask)==(guide_h & mask))//引导码
                {
                         guide_flag=1;
                        nums=0;
                        r_data=0;
                }
        }
        else
        {
                 nums += 1;
                 if((xxh & mask)==(high_h & mask))
                {
                        r_data >>= 1;
                        r_data |= 0x80;
                }
                else if((xxh & mask)==(low_h & mask))
                        r_data >>= 1;
                else
                {
                        nums=0;
                        guide_flag=0;
                        r_data=0;
                        TH1=0;
                }
                if((nums % 8 )==0)
                {
                         temp=nums / 8 - 1;
                        rf_ram[temp]=r_data;
                        r_data=0;
                        if(temp==3)
                        {
                        //************************
                        //防干扰,关闭外部中断0以跳过一段时间
                        //从eeprom读取用户码和键值码 以消耗时间
TR1=0;TH1=0;                       
numss++;                               
                                guide_flag=0;
                                nums=0;
//                                if(rf_ram[2]==(~rf_ram[3]))//数据码与反码是否匹配
//                                        r_decode_data=rf_ram[2];
                        }
                }
        }
        IE0=0;
}
void timer1(void) interrupt 3
{
           TR1=0;
        TH1=0;
        TL1=0;
        IE0=0;
}
回复

使用道具 举报

 楼主| 发表于 2011-5-29 21:44 | 显示全部楼层
本帖最后由 laoshiyuan 于 2011-5-29 21:47 编辑
解码程序段不怎么好,上一个我做的,希望能起到抛砖引玉的作用,多多交流……


#include
#include
#d ...
younge 发表于 2011-5-29 21:36 https://www.yleee.com.cn/images/common/back.gif



    顶楼上的,有空我再试试,最近在研究,还在停留在看原理阶段,直接山寨的话……就不好了……

原作者好像用的无字库的12864?

刚好手头有一块……

回复

使用道具 举报

发表于 2011-5-30 15:55 | 显示全部楼层
不错,不过不同厂家的编码规则好像不大相同?
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-10-1 04:00 , Processed in 0.054440 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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