超毅電子
超毅電子
超毅電子 資訊熱線: 4008-800-932
當前位置:首頁 » 資訊中心 » 解決方案 » 紅外光電開關在人流量記錄中的應用

紅外光電開關在人流量記錄中的應用

目錄:解決方案星級:3星級人氣:-發(fā)表時間:2013-05-02 11:28:00
RSS訂閱 文章出處:反射式光電開關網(wǎng)責任編輯:光電開關作者:Alex

 

射板反射式光電開關集發(fā)射和接收于一體,使用和安裝非常方便。采用繼電器輸出,有多種工作電壓,能調(diào)節(jié)靈敏度,精心設計的光路經(jīng)過透鏡聚焦配合特制的反射板反射,可以達到4米的檢測距離。利用這個特性可以做成電腦人次記錄器。光電開關產(chǎn)生的是開關信號,需要加工,才能讓計算機接收。辦法是采用簡單的單片機電路接收開關信號,通過串口傳 送到計算機,計算機使用專用的軟件進行記錄。這樣的人次記錄器制作較為簡單,費用較低。

 

一、具體實現(xiàn)

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 ;波特率發(fā)生器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進制數(shù)2F發(fā)送到串口去 MOV SBUF,A ;2卩通過串口發(fā)送出去AJMP WRIT DELAY10: MOV R4, #20 ; 10毫秒延時子程序 D2: MOV R5, #248 DJNZ R5, $

DJNZ R4, D2

RET

END

上面程序經(jīng)匯編以后獲得寫人編程器燒寫文件,文件的二進制代碼如下:  

 

 

二、軟件設計

  在VB中,新建一個工程,添加一個新窗口Forml,添加 部件 Microsoft Comm Control 6. 0,在窗 中增加一個 MSComm 控件MSComml,用于接收串[1數(shù)據(jù)。引用Microsoft ActiveX Data Objects 2. 6 Library,數(shù)據(jù)庫的訪問=一個文本框用于顯示人次,如圖2所示。

 

acces數(shù)據(jù)庫

 

 

Access中新建一個數(shù)據(jù)庠data, mdb,創(chuàng)建表tablel,設置字段日期(文本,10)、人次(數(shù)字,長整梨).存放每天的進 出人次。對于多出入口進行人次記錄,后臺可以使用SQLServ- ei•數(shù)據(jù)庫,增加一個地點字段作為出人口的識別。實現(xiàn)的核心 代碼如下:

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")'打開數(shù)據(jù)庫

'初始化人次

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位數(shù)據(jù)位,1位停止位 MSComml, PortOpen =True '打開串口 End If

MSComml. RThreshold = 1 '必須設置成1,不然不能觸發(fā) OnComm

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

End Sub

Function ConnAccess (Database As String) As Boolean

'連接數(shù)據(jù)庫

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 '從接收緩沖區(qū)讀取數(shù)據(jù) 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環(huán)境下,利用單片機與計算機串口通信的功 能,使用編程簡潔、面向對象的可視化編程語言VisualBasic, 在反射板反射式光電開關的控制下,實現(xiàn)進出人次量的記錄。本單片機程序在51單片機編程器上燒寫成功并通過調(diào)試,記 錄程序在Windows 98、Visual Basic 6. 0下調(diào)試通過。該人次記錄器通過張家港市圖書館使用,效果很好。

 

 

 

正在加載...

關于“光電開關 反射式光電開關 ”的相關資訊

我要評論:
內(nèi)  容:
驗證碼: (內(nèi)容最多500個漢字,1000個字符) 看不清?!
 
 
請注意:
 

1.尊重網(wǎng)上道德,遵守中華人民共和國的各項有關法律法規(guī),不發(fā)表攻擊性言論。

2.承擔一切因您的行為而直接或間接導致的民事或刑事法律責任。

3.新聞留言板管理人員有權保留或刪除其管轄留言中的任意內(nèi)容。