找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2120|回复: 4
打印 上一主题 下一主题
收起左侧

求 将红外的值送到lcd1602里面的程序

[复制链接]
跳转到指定楼层
楼主
ID:268289 发表于 2017-12-28 21:50 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
红外通信模块与1602显示模块,显示红外遥控器的按键内容。0-9就显示0-9  字符就显示字符
   我现在弄好了大部分程序  可是不知道主程序怎么写    不知道  怎么将1602和红外遥控联系起来



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:164602 发表于 2017-12-29 09:22 | 只看该作者
本帖最后由 HC6800-ES-V2.0 于 2017-12-29 10:55 编辑

我很久以前才学习红外遥控时,编的程序,可能不是最好的,不过,正好对上你要的功能。
此程序对应硬件如图所示:






/***************************************************************************
    程序功能:
        1、运行程序,按遥控器按键,在数码管上显示相应的控制码(以16进制显示);
        2、对特别的几个键,有相应的现象出现:
        (1)电源键,使继电器工作或断开;
        (2)静音键,使蜂鸣器响或不响;
        (3)快进键让LED灯向右出现一次走马灯现象;
        (4)快退键让LED灯向左出现一次走马灯现象;
        (5)按0~9,数码管显示所按的键号;
        (6)按其它键,不会改变已经按的数字键的显示,表示看电视台开关电源或静音、快进快退,都不会改变台号。
        (7)其它键没想好怎么以现有板产生相应功能,所以按下后,没有特别现象,只有显示其控制码。
******************************************************************************/
#include "reg51.h"
#define LED8 P2//LED灯
sbit hwx=P3^3;//红外接收数据引脚
sbit SMG_q = P1^0;        //数码管千位
sbit SMG_b = P1^1;        //数码管百位
sbit SMG_s = P1^2;        //数码管十位
sbit SMG_g = P1^3;        //数码管个位
sbit JDQ=P1^4;//继电器
sbit Beep =  P1^5 ;//蜂鸣器

code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
                                                        0x88,0x8c,0xc6,0xa1,0x86,0x8e};        //共阳数码管段值表
unsigned char ly_disdate[4]={0,0,0,0};
unsigned char ly_lhj[4],i;
bit ly_flag=1;
void display();
void delay(void);
void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(c;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}
void main(void)
{
        EA=1;
        EX1=1;
        IT1=1;
        TMOD=0X10;
        JDQ=1;
        ly_flag=0;
        while(1)
{        
                if(ly_flag)
{                ly_flag=0;
                        if ((ly_lhj[2]==0x45))
                        {
                                JDQ=~JDQ;
                        }
                        if ((ly_lhj[2]==0x47))
                        {
                                Beep=~Beep;
                        }
                        if ((ly_lhj[2]==0x40))
                        {
                                LED8=0xfe;
                                for(i=0;i<8;i++)
                                {                                         
                                        Delay10ms(10);
                                        LED8=LED8<<1;
                                }
                                LED8=0xff;
                        }
                        if ((ly_lhj[2]==0x43))
                        {
                                LED8=0x7f;
                                for(i=0;i<8;i++)
                                {                                         
                                        Delay10ms(10);
                                        LED8=LED8>>1;
                                }
                                LED8=0xff;
                        }
                        if ((ly_lhj[2]==0x16))
                        {
                                ly_disdate[0]=0;                        
                        }
                        if ((ly_lhj[2]==0x0c))
                        {
                                ly_disdate[0]=1;                        
                        }                        
                        if ((ly_lhj[2]==0x18))
                        {
                                ly_disdate[0]=2;                        
                        }                        
                        if ((ly_lhj[2]==0x5e))
                        {
                                ly_disdate[0]=3;                        
                        }                        
                        if ((ly_lhj[2]==0x08))
                        {
                                ly_disdate[0]=4;                        
                        }                        
                        if ((ly_lhj[2]==0x1c))
                        {
                                ly_disdate[0]=5;                        
                        }                        
                        if ((ly_lhj[2]==0x5a))
                        {
                                ly_disdate[0]=6;                        
                        }                        
                        if ((ly_lhj[2]==0x42))
                        {
                                ly_disdate[0]=7;                        
                        }                        
                        if ((ly_lhj[2]==0x52))
                        {
                                ly_disdate[0]=8;                        
                        }                        
                        if ((ly_lhj[2]==0x4a))
                        {
                                ly_disdate[0]=9;                        
                        }                        
                        ly_disdate[2]=ly_lhj[2]/16;
                        ly_disdate[3]=ly_lhj[2]%16;
                }
                display();
        }               
}

void hongwai(void)   interrupt 2
{
        unsigned char i,ia;
        TL1=0;
        TH1=0;
        TR1=1;
        while(!hwx);
        TR1=0;        
        if(TH1<30||TH1>40)
                return;

        TH1=0;
        TR1=1;
        while(hwx)
        {
                delay();
                if(TH1>22)
                        return;               
        }
        TR1=0;
        if(TH1<12)        
                return;

        for(i=0;i<4;i++)
        {
                for(ia=0;ia<8;ia++)
                {                                
                        while(!hwx);
                        
                        TH1=0;
                        TR1=1;        
                        while(hwx)
                        {
                                delay();
                                if(TH1>15)               
                                        return;               
                        }
                        TR1=0;
                        ly_lhj>>=1;        
                        if(TH1>4)               
                                ly_lhj|=0x80;
                }
        }
        ly_flag=1;
        TF1=0;
}

void display()
{
        SMG_q=0;
        P0=table[ly_disdate[0]];        
        delay();                        
        P0=0XFF;               
        SMG_q=1;

        SMG_s=0;
        P0=table[ly_disdate[2]];        
        delay();                        
        P0=0XFF;                        
        SMG_s=1;               

        SMG_g=0;               
        P0=table[ly_disdate[3]];        
        delay();                        
        P0=0XFF;                        
        SMG_g=1;               
}

void delay(void)
{               
        unsigned char i=10;
        while(i--);
}
因为当时还没有学习1602,所以是用数码管显示的,你把数码管显示的程序,换上1602的显示程序就可以了。


回复

使用道具 举报

板凳
ID:78322 发表于 2017-12-29 11:23 | 只看该作者
一个项目的架构,所有模块事件都可以抽象一个函数出来放在MAIN函数里面运行,模块间的联系就是一个参数的改变与调用及判断。
回复

使用道具 举报

地板
ID:268289 发表于 2017-12-30 12:32 来自手机 | 只看该作者
立里 发表于 2017-12-29 11:23
一个项目的架构,所有模块事件都可以抽象一个函数出来放在MAIN函数里面运行,模块间的联系就是一个参数的改 ...

感谢   万分感谢
回复

使用道具 举报

5#
ID:268289 发表于 2017-12-30 12:35 来自手机 | 只看该作者
HC6800-ES-V2.0 发表于 2017-12-29 09:22
我很久以前才学习红外遥控时,编的程序,可能不是最好的,不过,正好对上你要的功能。
此程序对应硬件如图 ...

感谢  很感谢    已经很厉害了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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