張奇
摘要:近年來單片機的應用正在不斷發(fā)展,同時也帶動了傳統(tǒng)控制檢測不斷進度。反應測試儀就是其中之一,它能夠定量的測試人的反映速度。每個人的中樞神經(jīng)系統(tǒng)對外界刺激是不同的,所以每個人對不同事物的反應時間是有差異的,利用這種儀器,可以在人才的選拔中起到積極的作用。例如在選擇體育運動員,雜技等對機敏素質(zhì)要求高的學員時, 反應測試儀可以提供科學的數(shù)據(jù)作為參考,其潛在實用價值較大。該文以單片機技術為核心,以硬件為基礎,軟硬件相結(jié)合,設計介紹了一種簡單反應測試儀的設計。
關鍵詞:單片機;反應測試儀;8255A、8279、8253芯片
中圖分類號:TP313 文獻標識碼:A 文章編號:1009-3044(2015)11-0235-03
Design and Implementation of Test Instrument Based on Single Chip Microcomputer
ZHANG Qi
(Department of Computer Science and Technology, Hefei University, Hefei 230601, China)
Abstract: The application of SCM is the continuous development in recent years, but also led to the continuous progress of traditional control detection. Reaction tester is one of them, it can test the quantitative response speed. The central nervous system to the outside stimulation of each person is different, so each reaction time on different things are different, the use of this instrument, can play a positive role in the selection of personnel. For example, in the selection of athletes, acrobatics and other high demands on the quality of smart students, reaction tester can provide scientific data for reference, its potential practical value. In this paper, In this paper, based on single chip microcomputer as the core, take the hardware as the foundation, combining software and hardware design, introduces the design of a simple reaction tester.
Key words: single chip microcomputer; reaction tester, 8279; 8255A, 8253 chip
1 功能分析及解決方案
1.1功能需求分析
本設計實現(xiàn)能測試一個人的反應時間的儀器。為了能夠測試人的反應時間,需要一個啟動信號,即用戶可以分辨的啟動信號,并通過該啟動信號反饋給系統(tǒng),從而得到該用戶的反應時間。給予用戶的刺激信號可是多種多樣,比如光信號、電信號、聲波信號、氣味等不同的信號。在控制端口,系統(tǒng)發(fā)出刺激信號反饋給用戶,用戶通過眼、耳、鼻等感覺器官得到刺激信號并迅速反饋給系統(tǒng)。系統(tǒng)接收端的接受反饋信號可以是光信號、電信號等不同的信號。通過不同芯片的工作將其信號轉(zhuǎn)換為數(shù)字信號即可。
通過檢索大量資料、以及訪談調(diào)查發(fā)現(xiàn),實際生活中的反應測試儀應該盡量簡單可用,為了簡化反應測試儀的難度,本設計只考慮光信號作為刺激信號,電信號作為回饋信號的反應測試儀。即當系統(tǒng)有光信號產(chǎn)生時,系統(tǒng)開始工作,當?shù)玫接脩舻碾娦盘柣仞仌r,測試停止并得到該用戶的反應時間。為了能夠更好的回饋給用戶,可以使用聲音信號作為傳送結(jié)果的載體,也可以通過視覺信號作為傳送結(jié)果的載體,為了簡化復雜度,筆者選擇了LED數(shù)碼管作為反應時間回饋的載體。
1.2解決問題方法及思路
1)硬件部分
針對需求中的分析,作如下解決:①用LED數(shù)碼管作為刺激信號;②用按鍵的高低電平信號作為用戶的回饋信號;③計時我們采用可編程定時器/計數(shù)器8253,8253通道1作為基準信號發(fā)生器,產(chǎn)生0 .01ms的方波信號作為通道0的時鐘信號。通道1工作在方式2(頻率發(fā)生器),時鐘信號接62.5KHZ的頻率,經(jīng)過625分頻后產(chǎn)生周期為0.01ms的方波信號作為通道0的時鐘信號,以0.01ms為基準不斷計數(shù)即可。④為了顯示反應時間,我們選擇了8段數(shù)碼管作為顯示工具,為了能夠有效的控制數(shù)碼管,特別的我們選擇了一個專用芯片8279,通過8279送出數(shù)碼管的位選和段選選擇數(shù)碼管的4位作為顯示的載體,8279外接2M的時鐘信號,通過CS、A0選中,使輸出端口B、C送出段選和位選信號。
2)軟件部分
首先,根據(jù)硬件需求采用8255A、8279和8253芯片,為實現(xiàn)對數(shù)碼管、鍵盤的控制,采用匯編語言,分別對8255A、8251A和8253進行初始化設置。
然后,程序查詢8255A的PA口輸入的開關信號,決定8255A何時向外部設備發(fā)送的刺激信號,即低電平信號(LED燈點亮)。
最后,程序查詢8255A的PB端口接收緩沖區(qū)內(nèi)回饋電信號,根據(jù)所得到的信號(低電平有效),調(diào)用相應模式子程序,控制轉(zhuǎn)換測試時間為BCD碼,并通過數(shù)碼管顯示該時間即可。
2硬件設計
2.1可編程定時器計數(shù)器8253
1)可編程定時器計數(shù)器8253在本設計中的作用
在本系統(tǒng)中,可編程定時器計數(shù)器8253主要用于計數(shù)功能,以達到測試人的反應時間的目的。
2)可編程定時器計數(shù)器8253的功能分析
可編程定時器計數(shù)器8253有6種工作方式,分別為:方式0(計數(shù)結(jié)束產(chǎn)生中斷);方式1(可編程出發(fā)器);方式2(頻率發(fā)生器);方式3(方波發(fā)生器);方式4(軟件出發(fā)選通);方式5(硬件出發(fā)選通)
3)可編程定時器計數(shù)器8253的技術參數(shù)分析
表1 8253的端口選擇和操作
2.2可編程并行接口8255
1)可編程并行接口8255在本設計中的作用
在本設計中,可編程并行接口8255主要用于和用戶之間交互信息,其中包括接受用戶的輸入:主要是啟動按鈕的輸入和測試按鈕的輸入;用于輸出系統(tǒng)信息的主要有LED數(shù)碼管,通過可編程并行接口8255控制LED燈閃亮,用于計時測試正式開始。
2)可編程并行接口8255的功能分析
可編程并行接口8255共有3種工作方式,分別為:
① 方式0:基本輸入/輸出方式;
② 方式 1:選通輸入/輸出方式;
③ 方式2:雙向輸入輸出方式。
3)可編程并行接口8255的技術參數(shù)分析
表2 8255A端口地址及操作功能
2.3可編程設置型鍵盤/顯示器接口8279在本設計中的作用
在本系統(tǒng)中可編程設置型鍵盤/顯示器接口8279的主要功能是用于顯示數(shù)碼管,通過B口控制數(shù)碼管8位段選,C口控制8個數(shù)碼管的位選,實現(xiàn)數(shù)碼管顯示數(shù)據(jù)(用戶反映時間)的作用。
2.4語音模塊ISD1420在本設計中的作用
本設計的最初以光作為刺激信號,由于較為簡單,提前完成了設計內(nèi)容,為了增加內(nèi)容,特別添加了聲音作為刺激信號,在本設計中ISD1420的作用僅僅只是放音的功能,將實現(xiàn)錄制好的聲音通過按鍵播放出來。以達到通知用戶何時測試開始。
2.5鍵盤在本設計中的作用
在本設計中,鍵盤主要的作用是啟動系統(tǒng)和啟動測試及反應回饋,在第二個任務中使用的語音作為啟動測試,而反應回饋仍然是以按鍵的形式。
2.6 LED燈在本設計中的作用
在本設計中,LED燈僅僅在第一個原始任務中使用到,LED燈的作用是作為測試開始的刺激信號,當LED燈閃亮的時候,立即啟動測試,等待用戶再次擊鍵。
2.7數(shù)碼管在本設計中的作用
在本設計中,數(shù)碼管的作用不容小覷,主要用于顯示用戶的反應時間,在第三個任務中,通過顯示9-0這十個數(shù)據(jù),當顯示到0時,作為刺激信號等待用戶反應,在該任務下,我們特別的將沒有作用的零為消除,即當反應時間為02.90時,顯示2.90即可。
2.8蜂鳴器在本設計中的作用
蜂鳴器主要用于第二個任務,在第二個任務中,語音芯片播放測試開始后,立即使得蜂鳴器響,用戶得到聲音的輸入信號后,立即反應即可。
2.9 硬件總邏輯圖說明
本系統(tǒng)共有7塊主要的芯片構成,其中也包括其他一些芯片的輔助工作。
CPU 8086通過8282將發(fā)出的地址信號經(jīng)過譯碼出去,選中當前需要選中的芯片,通過片選信號選中某芯片,并使之為其工作。
其中8255主要用于與用戶的交互使用,通過啟動按鈕和測試按鈕可以輕松的與用戶實時交互,主機通過LED顯示當前的信號。通過設置8255的A口工作于方式0輸入方式,B口工作于方式0的輸入方式實現(xiàn)該交互功能。
而8253則主要實現(xiàn)計時功能,測量當前用戶的反應時間。因為反應時間的顯示是以0.01秒為一個基本單位,試驗條件下,最小的頻率為62.5KHZ,通過8253通道1工作于方式2(分頻發(fā)生器)將時鐘信號分頻為100HZ(即周期為0.01秒);此時將OUT0端輸出接入通道0,并開始計數(shù),當用戶反應則停止計數(shù),并將結(jié)果顯示出來,最大的反應時間為99.99秒。
本系統(tǒng)中,ISD1420的作用是實現(xiàn)語音的播放,當然實現(xiàn)需要錄入語音片段,但是錄入語音片段并不是主要內(nèi)容。通過將CP口接到CS1,REC接到PC0,PLAYE接到PC1,PLAYL接到PC2,再將可編程并行接口8255的PA口接到8位按鍵上,通過1、2兩個按鍵錄音,3、4兩個按鍵分別啟動測試和反饋。其余四個按鍵沒有作用。
在任務二中,還有一個期間蜂鳴器,蜂鳴器作為刺激信號使用,當測試開始聲音播放完畢后,蜂鳴器響,等待用戶測試。8259主要用戶控制8段數(shù)碼管的顯示,用戶實時的用戶交互,顯示當前用戶的反應時間。
3 控制程序設計
3.1控制流程設計及其思路說明
3.1.1 任務一
1)初始化系統(tǒng)芯片
① 初始化可編程并行接口8255:設置PA端口工作于方式0,作為輸入端口,主要用于接收啟動按鍵和測試按鍵的輸入信號。PB端口工作于方式0,作為輸出端口,用于控制LED燈閃爍,指示當前測試開始。
② 初始化可編程定時器計數(shù)器8253:設置通道1工作于方式2(頻率發(fā)生器),將62.5KHZ的時鐘信號625分頻,產(chǎn)生100HZ的時鐘信號用于通道0的定時使用。此時通道0工作于方式0(計數(shù)結(jié)束產(chǎn)生中斷方式)。
START: MOV DX,COM_ADD
MOV AL,90H ;A口共作于方式0輸入,B口工作于方式0輸出
OUT DX,AL
MOV DX,COM_ADDR
MOV AL,74H ;000寫通道1方式2 二進制計數(shù) 先寫低字節(jié)在寫高字節(jié)
OUT DX,AL
MOV DX,T1_ADDR
MOV AL,71H
OUT DX,AL
MOV AL,02H
OUT DX,AL ;271H=625
2)檢測是否開始:通過不斷讀取啟動按鈕的狀態(tài)測試,當前用戶是否要啟動一次反映測試響應;若啟動按鈕有低電平信號,則測試開始。
3)檢測是否反映:當測試開始時,系統(tǒng)將以一LED燈指示,測試計時是否正式開始,當LED亮時測試計時開始,此時系統(tǒng)不斷檢測是否有測試按鈕被按下,若被按下計時時間被采樣。
4)顯示測試結(jié)果:此過程主要用于顯示采用結(jié)果。采樣結(jié)果于8段LED數(shù)碼管上顯示,顯示時間格式為:XX.XX秒。
3.1.2 任務二
1)初始化系統(tǒng)芯片
① 初始化可編程并行接口8255:設置PA端口工作于方式0,作為輸入端口,主要用于接收啟動按鍵、測試按鍵錄音按鍵的輸入信號。PB端口工作于方式0,作為輸出端口,用于控制蜂鳴器的響與不響,指示當前測試開始,設置PC口工作于方式0,作為輸出端口,主要用于控制ISD1420語音芯片的錄音與放音。
② 初始化可編程定時器計數(shù)器8253:設置通道1工作于方式2(頻率發(fā)生器),將62.5KHZ的時鐘信號625分頻,產(chǎn)生100HZ的時鐘信號用于通道0的定時使用。此時通道0工作于方式0(計數(shù)結(jié)束產(chǎn)生中斷方式)。
③ 始化可編程語音接口ISD1420:關閉錄音播放功能,允許手動錄放音。
2)檢測是否開始
通過不斷讀取啟動按鈕的狀態(tài)測試,當前用戶是否要啟動一次反映測試響應;若啟動按鈕有低電平信號,則測試開始。
CON2: IN AL,DX
TEST AL,02H
JNZ CON2 ;判斷是否按測試按鈕
MOV AL,00H ;讀取計數(shù)器0計數(shù)值
MOV DX,COM_ADDR
OUT DX,AL
MOV DX,T0_ADDR
IN AL,DX ;計數(shù)值0的低8位
XCHG AL,AH
IN AL,DX ;計數(shù)器0的高8位
XCHG AL,AH
CALL LedDisplay
MOV DX,PB_ADD ;LED低電平有效
MOV AL,0FFH
OUT DX,AL ;關燈
MOV CX,8
MOV AL,0
XOR SI,SI
3)檢測是否反映
當測試開始時,系統(tǒng)將發(fā)出測試開始,此時用于應該處于就緒狀態(tài),之后系統(tǒng)以一蜂鳴器的響聲指示,測試計時是否正式開始,當蜂鳴器響時測試計時開始,此時系統(tǒng)不斷檢測是否有測試按鈕被按下,若被按下計時時間被采樣。
LedDisplay PROC NEAR ;輸入?yún)?shù)AX
XCHG AX,BX
MOV AX,2710H ;2710H=10000
SUB AX,BX
MOV DX,AX
CALL HEX2BCD
MOV BUFFER+5,10H ;高3位不需要顯示
MOV BUFFER+6,10H
MOV BUFFER+7,10H
LEA SI,BUFFER
CALL Display8
RET
LedDisplay ENDP
4)顯示測試結(jié)果
此過程主要用于顯示采用結(jié)果。采樣結(jié)果于8段LED數(shù)碼管上顯示,顯示時間格式為:XX.XX秒。
3.1.3 任務三
鑒于任務三的內(nèi)容和任務一的內(nèi)容及其相似,此處不再詳細寫出,任務三的刺激信號不再是LED燈的閃亮,而是數(shù)碼管從9變到0后,立即啟動測試,等待用戶擊鍵。
4 結(jié)果分析
本設計能夠高精度的測試人的反應時間,并將反應時間顯示于數(shù)碼管上。通過修改程序時序,使得當用戶反應時間很快時,也能正確的接受,并顯示于數(shù)碼管上,不會出現(xiàn)偶爾的出錯現(xiàn)象。
參考文獻:
[1] 韋興平,胡丹,車暢.基于A3967SLB的步進馬達壽命測試儀的設計[J].工業(yè)控制計算機,2010(1):87-88.
[2] 熊春如,戴青云,韓國軍.“Parkinson”藥物藥理反應測試儀的設計[J].微計算機信息,2006(04Z):46-48.