超市人流量统计
- 格式:doc
- 大小:283.00 KB
- 文档页数:12
无线接收显示的超市人流量统计系统
设计目的:
统计一天当中某个超市的人流量,以及能准确的显示出在每一时刻超市里的现有人数。
基本思路:
两对相同的红外线发射接收装置分别放置在超市的进口(A)和出口(B),分别统计进出的人数。
红外线发射装置发出光线被接收装置接收,接收装置输出高低电平,输出信号脉冲,然后利用单片机的计数器对输入的脉冲进行计数。
1.红外线发射装置与接收装置对立放置相距1米,接收管必须和发射管水平对称。无人时,红外线照射接受管,接收管电阻很小,当有人从之间经过时,接收管没有红外线的照射,电阻变小,给无线发射装置一个“0”的数据,当无线接收装置接收到数据“0”后,将这个数据传给到单片机的外部中断0(12脚)和外部中断1(13脚),中断程序使数据加1和减1,用LCD1602两行分别显示“zaixian:人数”和“zongshu:人数”
2.将A传感器放置在超市的入口处,B传感器放置在超市的出口处,显示装置可以拿在手上。这样进去一个人则计数一个,出来一个人则减去一个,这样便可以测出当天的总人流量和当前超市的人数,并用液晶显示屏显示实时的数据。
电路图及PCB图:
下图为A、B装置,分别放置在超市入口和出口
下图为显示装置
程序(汇编):
X EQU 00H ;LCD 地址变量
RS EQU P1.0
RW EQU P1.1
EN EQU P1.2
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0
ORG 0013H
LJMP INT1
ORG 0030H
MAIN: MOV P2,#0FFH
MOV R0,#40H
MOV R2,#16
L1: MOV @R0,#00H
INC R0
DJNZ R2,L1
CLR EN
LCALL INIT_LCD ;初始化LCD
MOV R5,#10
LCALL DELAY
MOV DPTR,#ZAIXIAN ;指针指到显示消息1
MOV A,#1 ;显示在第一行
LCALL LCD_PRINT
MOV DPTR,#ZONGSHU ;指针指到显示消息2
MOV A,#2 ;显示在第二行
LCALL LCD_PRINT
LCALL DELAY1000
MOV SP,#60H
SETB IT0
SETB IT1
MOV IP,#05H
MOV IE,#85H
LCALL SHU
SJMP $
SHU: LCALL CONV1
LCALL CONV2
RET
;--------------------------------------------------------- ENABLE: ;写指令
CLR RS ;RS=L,RW=L,E=高脉冲
CLR RW ;D0-D7=指令码
SETB EN
LCALL DELAY1
CLR EN
RET
;-------------------------------------------------------
CLR_LINE: ;清除该行LCD 的字符
MOV R0,#16
CL1: MOV A,#' '
LCALL WDATA
DJNZ R0,CL1
RET
;-------------------------------------------------------
DE: MOV R7,#250 ;延时500微秒
DJNZ R7,$
RET
;-------------------------------------------------------
EN1:
CLR RW
SETB EN ;短脉冲产生启用信号
LCALL DE
CLR EN
LCALL DE
RET
;----------------------------------------------------- WCOM: ;以8位控制方式将命令写至LCD MOV P0,A ;写入命令
LCALL ENABLE
RET
;----------------------------------------------------- WDATA: ;以8位控制方式将数据写至LCD MOV P0,A ;写入数据
SETB RS ;设置写入数据
LCALL EN1
RET
;-----------------------------------------------------
;第一行行显示数
;-----------------------------------------------------
LCDP1: ;在LCD的第一行显示数字
ADD A,#30H
PUSH ACC
INC X
MOV A,X ;设置显示地址
ADD A,#80H ;设置LCD的第二行地址
CALL WCOM ;写入命令
POP ACC ;由堆栈取出A
LCALL WDATA ;写入数据
RET
;-----------------------------------------------------
;第二行显示数
;-----------------------------------------------------
LCDP2: ;在LCD的第二行显示字符
ADD A,#30H
PUSH ACC
INC X
MOV A,X ;设置显示地址
ADD A,#0C0H ;设置LCD的第二行地址
CALL WCOM ;写入命令
POP ACC ;由堆栈取出A
LCALL WDATA ;写入数据
RET
;---------------------------------------------------- DELAY: ;延时10MS
MOV R6,#50
D1: MOV R7,#100