超毅电子
超毅电子
超毅电子 资讯热线: 4008-800-932
当前位置:首页 » 资讯中心 » 解决方案 » 红外光电开关在人流量记录中的应用

红外光电开关在人流量记录中的应用

目录:解决方案星级:3星级人气:-发表时间:2013-05-02 11:28:00
RSS订阅 文章出处:反射式光电开关网责任编辑:光电开关作者:Alex

 

射板反射式光电开关集发射和接收于一体,使用和安装非常方便。采用继电器输出,有多种工作电压,能调节灵敏度,精心设计的光路经过透镜聚焦配合特制的反射板反射,可以达到4米的检测距离。利用这个特性可以做成电脑人次记录器。光电开关产生的是开关信号,需要加工,才能让计算机接收。办法是采用简单的单片机电路接收开关信号,通过串口传 送到计算机,计算机使用专用的软件进行记录。这样的人次记录器制作较为简单,费用较低。

 

一、具体实现

1.单片机电路及软件的设计

  芯片可以采用AT89C51,它属于51单片机,有一个全双工的串行通信口,所以单片机和电脑之间可以方便地进行串口 通信。进行串行通信时要满足一定的条件,比如电脑的串口是 RS232电平的,而单片机的串口是TTL电平的,两者之间必须 有一个电平转换电路,可以采用专用芯片MAX232进行转换,用三线制连接串口,和电脑的9针串口只连接其中的3根线:2脚的RXD、第3脚的TXD、第5脚的GND。这是最简单 的连接方法。电路如图1所示,MAX232的第10脚和单片机的】1脚连接,第9脚和单片机的】0脚连接,第15脚和单片机的20脚连接。芯片的VCC电压为5V,可从计算机的USB口获得。

单片机电路

单片机写人程序如下:

ORG 0000H

MOV SCN,#50H;设置成串口 1方式 MOV TMOD, #20H ;波特率发生器T1工作在模式2 MOV PCON, #80H ;波特率翻倍为 2400x2 =4800BPS MOV TH1,#0F3H

;预置初值(按照波特率2400BPS预置初值)

MOV TL1, #0F3H

;预置初值(按照波特率2400BPS预置初值)

SETB TR1 ;启动定时器T1;以上完成通讯初始化设置 WRIT: JB P1. 0, $

;判断光电开关有无闭合,如果没有闭合就等待 ACALL DELAY10 ;延时10毫秒消触点抖动 JB P1.0, WRIT ;去除干扰信号 JNB P1.0,$ ;等待按键松开 MOV A, #02FH;16进制数2F发送到串口去 MOV SBUF,A ;2卩通过串口发送出去AJMP WRIT DELAY10: MOV R4, #20 ; 10毫秒延时子程序 D2: MOV R5, #248 DJNZ R5, $

DJNZ R4, D2

RET

END

上面程序经汇编以后获得写人编程器烧写文件,文件的二进制代码如下:  

 

 

二、软件设计

  在VB中,新建一个工程,添加一个新窗口Forml,添加 部件 Microsoft Comm Control 6. 0,在窗 中增加一个 MSComm 控件MSComml,用于接收串[1数据。引用Microsoft ActiveX Data Objects 2. 6 Library,数据库的访问=一个文本框用于显示人次,如图2所示。

 

acces数据库

 

 

Access中新建一个数据庠data, mdb,创建表tablel,设置字段日期(文本,10)、人次(数字,长整梨).存放每天的进 出人次。对于多出入口进行人次记录,后台可以使用SQLServ- ei•数据库,增加一个地点字段作为出人口的识别。实现的核心 代码如下:

Dim ConnStr As String

Dim Conn AsADODB. Connection

Private Sub Formoad ()

Dim Recordset 1 AsADODB. Recordset ConnStr = " Provider = Microsoft. Jet. OLEDB. 4. 0; Jet OLEDB: Data Source = + App. Path + "\VPN. mdb; Persist Security Info = False"

Call ConnAccess(App. Path + "\data. mdb")'打开数据库

'初始化人次

Set Recordset 1 = Conn. Execute( M select * from table 1 where 日期+ Format(Now(), "YYYYMMDD +"一)

If Not Recordset 1. EOF Then .找到

Textl, Text = LTrim (Str(Recordset 1. Fields("人次"))

Else

Textl, Text = "0"

End If

If MSComml. PortOpenThen MSComml. PortOpen = False MSComml. Comm Port = 1 '设置打开 C0M1 If MSComml. PortOpen = False Then MSComml, Settings = "4800, n, 8,1"

'9600波特率,无校验,8位数据位,1位停止位 MSComml, PortOpen =True '打开串口 End If

MSComml. RThreshold = 1 '必须设置成1,不然不能触发 OnComm

Label2, Caption =,日期:"+ Format(Now( )f "YYYY MM DD,

End Sub

Function ConnAccess (Database As String) As Boolean

'连接数据库

On ErrorGoTo Conn Error

Set Conn = NewADOD.Connection

Conn. Provider = "Microsoft. Jet, OLEDB. 4. CT

Conn. Open Database,"

Exit Function

ConnError:

MsgBoxError + % 将关闭窗口! ' , 〃出错〃

End

End Function

Private Sub MSComml OnComm ()

Dimav()AsByte '从接收缓冲区读取数据 Dim tAs Integer

Dim Recordset 1 AsADODB. Recordset

With MSComml

Select Case. CommEvent

Case comEvReceive

i = MSComml. InBufferCount

av = . Input

ifav(0) =&H2FThen

Set Recordset 1 = Conn. Execute! " select - from table 1 where 日期+ Format!Now(), "YYYYMMDD") + )

If Not Recordset 1. EOF Then •找到 Textl. Text = LTrim (Str (Recordset 1 Fields (w 人次’)+ 1)) Set Recordset 1 = Conn. Execute("update tablet set 人次 =人次 +1 where 日期=y" + Format!Now( ), " YYYYM- MDD + …)

Else

Textl. Text = "1

Set Recordset 1 = Conn. Execute ("insert into table 1 (日期, 人次)values (+ Format (Now (), "YYYYMMDD] + ”, 1)")

End If End If Case Else End Select End With End Sub

三、结语

Windows环境下,利用单片机与计算机串口通信的功 能,使用编程简洁、面向对象的可视化编程语言VisualBasic, 在反射板反射式光电开关的控制下,实现进出人次量的记录。本单片机程序在51单片机编程器上烧写成功并通过调试,记 录程序在Windows 98Visual Basic 6. 0下调试通过。该人次记录器通过张家港市图书馆使用,效果很好。

 

 

 

正在加载...

关于“光电开关 反射式光电开关 ”的相关资讯

我要评论:
内  容:
验证码: (内容最多500个汉字,1000个字符) 看不清?!
 
 
请注意:
 

1.尊重网上道德,遵守中华人民共和国的各项有关法律法规,不发表攻击性言论。

2.承担一切因您的行为而直接或间接导致的民事或刑事法律责任。

3.新闻留言板管理人员有权保留或删除其管辖留言中的任意内容。