热搜关键词: 数字信号处理RTOSC语言Linux射频电路

doc

基于单片机的红外门进控制系统设计与制作(含源程序和原理图)

  • 1星
  • 2013-09-20
  • 91.5KB
  • 需要2积分
  • 0次下载
标签: 红外

红外

汽车电子

红外

基于单片机的红外门进控制系统设计与制作:我们所做的创新实验项目“基于单片机的红外门控系统”已基本完成,现将其工作原理简要说明。该系统主要分为两大部分:一是红外传感器部分。二是单片机计数显示控制部分。基本电路图如下:其中红外传感器部分我们采用红外对管实现,红外对管平行放置,平常处于接收状态,经比较器输出低电平,当有人经过时,红外线被挡住,接收管接收不到红外线,经比较器输出高电平。这样,当有人经过时便会产生一个电平的跳变。单片机控制部分主要是通过外部两个中断判断是否有人经过,如果有人经过,由于电平跳变的产生,进入中断服务程序,这里我们采用了两对红外传感器接到两个外部中断口,中断0作为入口,实现加1操作,中断1作为出口,实现减1操作。另外,我们通过P0口控制室内灯的亮暗,当寄存器计数值为0时,熄灯,不为0时,灯亮。显示部分,采用两位数码管动态显示,如有必要,可以很方便的扩展为四位计数。精益求精!在实验过程中,我们走了非常多的弯路,做出来的东西根本不是自己想要的,我们本想做成室内只有一个门的进出计数,原理已清楚,即在门的两边放置两对红外对管,进出时,挡住两对对管的顺序不同,因此,可判断是进入还是出去,从而实现加减计数,编程时,可分别在两个中断服务程序的入口置标志位,根据标志位判断进出,详细内容在程序部分。理论如此,但在实际过程中,还是发现实现不了上述功能,我们初步判定认为是程序掌握得不够好,相信随着自己对单片机了解的深入,应该会做出更好的  (因为我们是临时学的单片机),程序的具体内容如下:$MOD52        ORG      0000H                  LJMP    MAIN                  ORG      0003H                  LJMP    0100H                  ORG      0013H                  LJMP    0150H                  ORG      0050HMAIN:        CLR      A                  MOV      30H  ,  A                      ;初始化缓存区                  MOV      31H  ,  A                  MOV      32H  ,  A                  MOV      33H  ,  A                  MOV      R6    ,  A                  MOV      R7    ,  A    SETB    EA    SETB    EX0    SETB    EX1    SETB    IT0    SETB    IT1    SETB    PX1NEXT1:      ACALL  HEXTOBCDD                ;调用数制转换子程序                  ACALL  DISPLAY                    ;调用显示子程序                  LJMP    NEXT1                  ORG      0100H    ;中断0服务程序  LCALL    DELY  mov  70h,#2  djnz  70h,next  JBC    F0,NEXT                  SETB  F0                CLR  P0.0  LCALL    DELY0  SETB      P0.0                                    MOV      A  ,  R7      ADD      A  ,  #1      MOV      R7,  A      MOV      A  ,  R6                  ADDC    A  ,  #0    MOV      R6  ,  A    CJNE    R6  ,  #07H  ,  NEXT    CLR      A    MOV      R6  ,  A    MOV      R7  ,  ANEXT:    RETI    ORG      0150H        ;中断1服务程序  LCALL    DELY  mov  70h,#2  djnz  70h,next2  JBC    F0,NEXT2  SETB    F0  CLR  P0.0  LCALL    DELY0  SETB      P0.0        CLR  C                                          MOV      A  ,  R7      SUBB      A  ,  #1    MOV      R7,  A    MOV      A  ,  R6      SUBB    A  ,  #0    MOV      R6  ,  A    CJNE    R6  ,  #07H  ,  NEXT2    CLR      A    MOV      R6  ,  A    MOV      R7  ,  ANEXT2:    RETI    ORG      0200HHEXTOBCDD:MOV    A  ,  R6                              ;由十六进制转化为十进制                  PUSH    ACC                  MOV      A  ,  R7                  PUSH    ACC    MOV      A  ,  R2                  PUSH    ACC    CLR      A                  MOV      R3  ,  A    MOV      R4  ,  A    MOV      R5  ,  A    MOV      R2  ,  #10HHB3:          MOV      A    ,  R7                            ;将十六进制中最高位移入进位位中                  RLC      A    MOV      R7  ,  A    MOV      A    ,  R6    RLC      A    MOV      R6  ,  A    MOV      A    ,  R5                            ;每位数加上本身相当于将这个数乘以2    ADDC    A    ,  R5    DA        A    MOV      R5  ,  A    MOV      A    ,  R4    ADDC    A    ,  R4    DA        A                                      ;十进制调整    MOV      R4  ,  A    MOV      A    ,  R3    ADDC    A    ,  R3    DJNZ    R2  ,  HB3    POP      ACC      MOV      R2  ,  A    POP      ACC      MOV      R7  ,  A    POP      ACC    MOV      R6  ,  A    RET    ORG      0250HDISPLAY:  MOV      R0  ,  #30H                  MOV      A    ,  R5    ANL      A    ,  #0FH    MOV      @R0  ,  A    MOV      A    ,  R5    SWAP    A    ANL      A    ,  #0FH    INC      R0    MOV      @R0  ,  A    MOV      A    ,  R4    ANL      A  ,  #0FH    INC      R0    MOV      @R0  ,  A    MOV      A      ,  R4    SWAP    A    ANL      A    ,  #0FH    INC      R0    MOV      @R0  ,  A    MOV      R0  ,  #30H    MOV      R2  ,  #11111110BAGAIN:      MOV      A    ,  R2                  MOV      P2  ,  A                  MOV      A    ,  @R0    MOV      DPTR  ,  #TAB    MOVC    A    ,  @A+DPTR    MOV      P1  ,  A    ACALL  DELAY    INC      R0    MOV      A    ,  R2    RL        A    MOV      R2  ,  A    JB        ACC.4    ,  AGAIN    RETTAB:          DB        03FH  ,  06H  ,  5BH  ,  4FH  ,  66H  ,  6DH  ,  7DH  ,  07H  ,  7FH  ,  6FH      ;七段码表DELY:        MOV      R1,#80D1:                MOV        R2,#100                          DJNZ      R2,$  DJNZ        R1,D1  RET  DELAY:      MOV      TMOD  ,  #01H                      ;延时子程序                  MOV      TL0    ,  #0FEH                  MOV      TH0    ,  #0FEH    SETB    TR0WAIT:        JNB      TF0    ,  WAIT                  CLR      TF0    CLR      TR0    RETDELY0:      MOV    R1,    #200D3:    MOV    R2,#250                    DJNZ    R2,$    DJNZ    R1,D3        RET                    END              该系统实际应用广泛。可用在生产线上产品数量统计、公交车智能计数问候(需添加语音芯片)、超市内人数统计等公共场合。另外,添加串口通信部分便可实现与PC数据交换的功能。      由于,实验简化了,剩下不少零件和资金,所以我们又做了两项其他的实验。

展开预览

猜您喜欢

评论

登录/注册

积分规则

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved
×