EDN首页   博客首页

日志档案

发表于 2006-11-28 15:54:09

12

标签: 红外遥控  单片机  

基于单片机的四路红外遥控系统

    经过几天的努力,终于将程序编好了。该系统以51单片机为核芯,通过遥控器(芯片DT9122)对系统进行控制,可以对四路继电器进行控制其开关,并可以设置定时时间,用数码管进行显示。

   本系统可以对各家电进行控制,例如经过改装可以将电风扇改装成智能遥控加定时风扇。。。。

//功能描述:当按下相应的键时控制相应的继电器开断,可以启动24小时定时功能,并以
                        数码管动态显示,倒计时的方式显示,同时可以关闭定时功能,
//接法P1.0--P1.3接继电器
//P3。7接蜂鸣器
//P0口为显示的段码输入口
//P2口为位选端
//K1---1开  0---1关,K2--2开,1---2关,K3--3开,2--3关,K4--4开,3---4关
//K5---调用显示定时间   UP---分调整  +----时调整
//K6----启动定时   R---关定时

电路图实物图将在近期内成。。

 

系统分类: 单片机   |   用户分类: 单片机学习   |   来源: 无分类   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1461)    回复(11)  

投一票您将和博主都有获奖机会!

最新评论

  • lin

    2007-1-3 23:06:12

    谢谢大侠的答复!努力学习!

  • lin

    2007-1-2 17:53:38

    我是一初学者,现有一键盘扫描程序有疑惑,可以请教一下吗?

    如下:

    ;file name:EX4-6.ASM for  7 segment display & keyboard
    ;******************************************************
    PORT1   REG     P1
    PORT2   REG     P2
            ORG     0H
    START:  JMP     MAIN
            ORG     30H
    MAIN:   MOV     SP,#5FH
            MOV     PORT2,#0FFH
    LOOP:   MOV     R0,#4
            MOV     R1,#11101111B
            MOV     R2,#11111111B
    NLINE:  MOV     A,R1
            MOV     PORT1,A
            MOV     A,PORT1
            ORL     A,#0F0H
            CJNE    A,#0FFH,KEYIN
            MOV     A,R1
            RL      A
            MOV     R1,A
            DJNZ    R0,NLINE
            JMP     LOOP
    KEYIN:  MOV     R2,A
            CALL    DELAY1
    NOPEN:  MOV     A,PORT1
            ORL     A,#0F0H
            CJNE    A,#0FFH,NOPEN
            CALL    DELAY1
            CALL    TRANF
            CALL    CHANG
            MOV     PORT2,A
            JMP     LOOP
    DELAY1: MOV     R7,#30
            MOV     R6,#0
    $1:     DJNZ    R6,$
            DJNZ    R7,$1
            RET
    TRANF:  MOV      B,#0
            MOV     A,R1
    C1:     RRC     A
            JNC     C2
            INC     B
            INC     B
            INC     B
            INC     B
            JMP     C1
    C2:     MOV     A,R2
            RR      A
            RR      A
            RR      A
            RR      A
    C3:     RRC     A
            JNC     C4
            INC     B
            JMP     C3
    C4:     MOV     A,B
            RET
    CHANG:  INC     A
            MOVC    A,@A+PC
            RET
            DB      0C0H,0F9H,0A4H,0B0H
            DB      99H,92H,82H,83H
            DB      80H,90H,88H,83H
            DB      0C6H,0A1H,86H,8EH
            END
    这程序的键码计算不是很明,可否请高手分析下,谢!

  • jianglongjian

    2007-1-3 19:06:26

    开始

    置所有的行为低电平

    读取列状态

    列中有低电平吗

    延时20MS

    置行计数器00H,列计数器00H,置行输出扫描初始值为0FEH

    输出行的扫描字,置某一行为低

    有一列键按下

    将行计数加1,行扫描字左移一位

    读取列值

    是最后一行吗

    判别哪一行列按下

    存列号

    调键值译码程序

           RET

    RET

  • jianglongjian

    2007-1-3 19:06:39

    程序工作流程图如下图所示:

    (1)判别键盘中是否有键按下。

    (2)如果有键按下,判别是哪一个键按下——即按键识别。确定被按键的位置(即获得按键的特征值——行、列的编码),称为读键值。

    (3)判别是否同时有两个或两个以上的按键按下。如果同时有两个或两个以上的按键按下,就会产生同时按键的问题。如何发现这种现象并且避免产生错误的读键值呢?解决的方法有:①双键锁定法,在所有键操作中,只承认闭合的第一个按键,对其他键均不识别,直到所有键释放后,才读入下一个键值;②按键轮回法,当前面所识别的键被释放以后,才可以对其他闭合的键识别。

    (4)键值译码。每个按键都有一定的功能定义,将读取的键值解释为定义键的功能过程称为键值译码。

    (5)去除按键抖动。读取的键值理应是一个稳定的读数。而实际上,按键从最初接通到稳定接通要经过数毫秒的抖动(弹跳时间),按键释放时也同样存在抖动的问题。抖动会引起一次按键多次读数。

  • jianglongjian

    2007-1-3 19:12:56

    汇编有点忘了,不好意思

  • MM

    2006-12-3 19:38:02

    像你学习...................

  • cocappjj

    2006-11-28 17:08:35

    占个沙发,好文!

  • huangmao

    2006-11-28 18:19:59

    同学,好好努力,成功会属于你的……

  • jianglongjian

    2006-11-30 13:09:58

        好吧,那就上传与大家共享了!!

  • shirine

    2006-11-30 8:30:36

    程序可否共享啊?

  • xiao tian

    2007-11-12 10:44:21

        你学的不错呀,我现在要课程设计了,但是我很担忧呀,因为我不会呀。呀!学的太烂了。女生学电真的太吃力了。哎!