迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1994|回复: 4

【开源】学习+记忆功能+触摸屏显示与操作的多功能红外遥控

[复制链接]

4

主题

4

回帖

436

积分

中级会员

Rank: 3Rank: 3

积分
436
发表于 2020-9-22 23:41:56 | 显示全部楼层 |阅读模式
    近来闲来无事,便做了一个红外遥控器方案,由于手头没有屏,所以屏幕这块只做了原理说明。如果有感兴趣的,可以私聊。
这是系统框架图,整个系统主要分为两部分:红外接收与处理功能区和T5L显示功能区,
我的硬件测试电路主要有红外接收头HS003B,红外发射头,以及一个8051单片机最小系统,单片机系统的程序进行了包装,通过引出的串口自动传递红外键码,通过红外接收/发送头实现遥控功能。


如图,为MCU读取到的美的空调遥控器的键码值。

理论上来说,不仅是空调,几乎所有的红外格式设备都可以进行控制(不敢说绝对,毕竟我没有全部的设备进行测试),如电视机、风扇等,只要用遥控器读取键码即可,它支持的红外编码芯片如upd6121,6122,tc9012,pt2221等。
红外接收与处理功能区主要有红外接收头如HS0038B和红外发射头、MCU,MCU通过定时器对红外键码进行处理,之后通过串口将键码接收/上传到T5L液晶屏



T5L显示主要有遥控+新增遥控器,即用户通过红外接收头将接收到的键码在屏幕上进行读取并写入到对应的按键上,利用T5L的NOR FLASH实现记忆功能。

如上图,是我做的一个空调遥控器的遥控页面+遥控器新增页面效果图(手头没有屏,所以只有原理)
T5L屏C51代码实现(由于本人手头无T5L屏,故只做原理说明):
屏代码包括串口接收与发送,nor flash的读写操作,页面显示操作
1.    串口接收与发送
voidUART2_Init(void)
{
    ADCON=0x80;
    SCON0=0x50;
    SREL0H=0x03;        //FCLK/64*(1024-SREL1)
    SREL0L=0xE4;
    ES0=1;
    EA=1;
}

voidUART2_Sendbyte(u8 dat)
{      
     while(uart2_busy==1);      
     uart2_busy=1;
     SBUF0 = dat;        
}



voidUART2_SendStr(u8 *pstr,u16 strlen)
{
    if((NULL == pstr)||(0 == strlen))
    {
        return;
    }
    while(strlen--)
    {
        UART2_Sendbyte(*pstr);
        pstr++;
    }  
}


voidUART2_ISR_PC(void)    interrupt 4
{
    u8 res=0;
    EA=0;
    if(RI0==1)
    {
        res=SBUF0;
        Uart2_Rx[uart2_rx_count]=res;
        uart2_rx_count++;
        RI0=0;      
    }
    if(TI0==1)
    {
        TI0=0;
        uart2_busy=0;
    }
    EA=1;
}
2.    nor flash的读写处理
为便于整个系统的逻辑性,对Nor Flash的处理思路参考文章http://inforum.dwin.com.cn:20080/forum.p ... =1438&fromuid=12197

//读写T5L片内256KW Flash,mod=0x5A 为读取,mod=0xA5为写入
//addr=DGUS变量地址,必须是偶数;addr_flash=flash读取地址,必须是偶数;len=读取字长度,必须是偶数。
void T5L_Flash(u8 mod,u16 addr,longaddr_flash,u32 len)
{      
       ADR_H=0x00;
   ADR_M=0x00;
   ADR_L=0x04;
   ADR_INC=0x01;
   RAMMODE=0x8F;        
       while(APP_ACK==0);
       DATA3=mod;
       DATA2=(u8)(addr_flash>>16);
       DATA1=(u8)(addr_flash>>8);
       DATA0=(u8)(addr_flash&0xFE);
       APP_EN=1;   
       DATA3=(u8)(addr>>8);
       DATA2=(u8)(addr&0xFE);
       DATA1=(u8)(len>>8);
       DATA0=(u8)(len&0xFE);
       APP_EN=1;
       RAMMODE=0x00;
       wait_ok(0x0004);
}      
帖子附上nor flash的读写函数
/

(如有机会,再附上新的内容,欢迎大家进行点评)







本帖子中包含更多资源

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

x
回复

使用道具 举报

12

主题

161

回帖

962

积分

高级会员

Rank: 4

积分
962
QQ
发表于 2020-9-24 10:27:58 | 显示全部楼层
有硬件原理图?
回复

使用道具 举报

4

主题

4

回帖

436

积分

中级会员

Rank: 3Rank: 3

积分
436
 楼主| 发表于 2020-9-27 08:32:03 | 显示全部楼层

暂时没有,其实很简单的,51单片机接一个红外接收头和发射头,就可以了
回复

使用道具 举报

12

主题

161

回帖

962

积分

高级会员

Rank: 4

积分
962
QQ
发表于 2020-9-27 14:12:15 | 显示全部楼层
湘江旧迹秋心 发表于 2020-9-27 08:32
暂时没有,其实很简单的,51单片机接一个红外接收头和发射头,就可以了

是的,原理非常简单的
回复

使用道具 举报

4

主题

4

回帖

436

积分

中级会员

Rank: 3Rank: 3

积分
436
 楼主| 发表于 2020-11-7 22:24:39 | 显示全部楼层
lihui163 发表于 2020-9-27 14:12
是的,原理非常简单的

这是原理图,可以做参考。

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-21 23:13 , Processed in 0.092009 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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