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

2006-11-28 15:54 4804 9 19 分类: MCU/ 嵌入式

    经过几天的努力,终于将程序编好了。该系统以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---关定时


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



 

文章评论10条评论)

登录后参与讨论

用户45839 2007-1-3 23:06

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

用户1316816 2007-1-3 19:12

汇编有点忘了,不好意思

用户1316816 2007-1-3 19:06

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

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

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

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

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

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

用户1316816 2007-1-3 19:06

开始

置所有的行为低电平

读取列状态

列中有低电平吗

延时20MS

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

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

有一列键按下

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

读取列值

是最后一行吗

判别哪一行列按下

存列号

调键值译码程序

       RET

RET

用户45839 2007-1-2 17:53

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

如下:

;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
这程序的键码计算不是很明,可否请高手分析下,谢!

用户119052 2006-12-26 23:04

如何阅读全文啊?

用户730605 2006-12-3 19:38

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

用户1316816 2006-11-30 13:09

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

用户47778 2006-11-30 08:30

程序可否共享啊?

用户100521 2006-11-28 18:19

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

相关推荐阅读
用户1316816 2008-10-19 23:58
写下心情,一段平凡的日子
      2008,不平常的一年,这一年我毕业了,从自己的梦想走入了社会,也许刚入社会,总要有一段适应的过程,从实习到工作,离开学校也快半年了,时间总是过得这么快,有时又觉得又是那么的慢.曾经的梦想...
用户1316816 2008-08-28 20:27
我的毕业设计--存储示波器
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />整个系统采用FPGA Cyclone 2C5芯片,在内嵌...
用户1316816 2008-03-15 12:12
基于FPGA的密码锁
采用4X4键盘电路,和一个四位动显示电路.来完成基本的控制功能 .1.4X4 键盘扫描电路的设计电路中分为键盘去抖电路和键盘译码电路。弹跳消除电路所使用的频率必须比其它电路的工作频率高,扫描电路的工作...
用户1316816 2008-03-13 18:43
简易电压源
/*****************************************************This program was produced by theCodeWizardAVR ...
用户1316816 2008-03-13 18:41
基于1302的万年历
这个是1302程序,液晶用12864来显示...
用户1316816 2008-03-13 18:38
模拟SPI接口程序
//***********************************************************//功能      : 由AVR作为主机,向FPGA发送数据,采用模拟SPI接...
我要评论
10
9
关闭 站长推荐上一条 /2 下一条