下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于打印機接口的語音型搶答器很多單位在開展文娛活動時有搶答一項,需要用到搶答器,普通搶答器使用通用集成電路制成,價格高、顯示方式簡單,性價比較差。而一般單位都有計算機,如果利用計算機就可以很方便地構成一臺功能強大而價格十分低廉的搶答器。下面介紹的是筆者實際制作使用的電路。一、打印口工作原理簡介 參照圖1,PC機上的打印接口共有25根連線,其中18-25都是地線,因此實際共有17根線,分成三類,8根數據線,可進行數據輸出,5根狀態(tài)線,輸入,4根控制線,輸出。這三組線分別由打印口的三個寄存器控制,即378H(數據口),379H(狀態(tài)口),37AH(控制口),只要
2、對這三個地址的寄存器讀或寫,就可以輸入或輸出數據。而對這三個地址的讀寫可以用C語言中的函數outportb(int port,int data)和 inportb(int port)來進行,十分方便。二、硬件電路圖使用一片廉價的八緩沖器74LS244。74LS244介紹:參考圖2,74LS244是三態(tài)輸出的八緩沖器,由2組、每組四路輸入、輸出構成。每組有一個控制端,由控制端的高或低電平決定該組數據被接通還是斷開,功能表如下表所示。 電路介紹(參考圖3):將74LS244的控制端和分別接到打印機控制端口的兩個輸出端,接到一個端口也可以,但要增加一個反相器,因控
3、制端口有多余線可用,就分別接兩根線,可以省些硬件。利用這兩個端口分別接通兩組中的一組,將兩組的輸出端對應并聯起來,接入打印機的狀態(tài)端口,這樣就可以輸入8路數據了。如再接入一片74LS244,可以把輸入擴展到16路。打印口控制端的另一根線()接入一個交流晶閘管型光耦(型號為MC3020),光耦的另一端接一個雙向晶閘管和一個電燈,按圖示,當該口為低電平時,指示燈亮表示可以開始搶答。三、程序的編制 這個制作的核心程序編寫是非常簡單的,只要使打印口的控制端口的低兩位分時為低電平,然后分別讀入狀態(tài)端口的數據,就可以判斷是否有人搶答了。這部份的程序如下:#define
4、CTRL_H 0x03 /*第一組切入,此時第16腳為0,17腳為1*/#define CTRL_L 0x0f /*第二組切入,此時第17腳為0,16腳為1*/for(;) outportb(port_ctrl,CTRL_H); /*port_ctrl為控制端口地址,見下說明*/inp_data_h=inportb(port_inp); /*讀輸入口數據*/outportb(port_ctrl,CTRL_L); /*切入第二組*/inp_data_l=inportb(port_inp); /*讀輸入口數據*/inp_data=(inp_data_h&&0xf0)|(inp_da
5、ta_l>>4); /*兩次讀到的數據合并*/if(inp_data!=0x77) /*高4位輸入端無任何腳接地時,應讀到7,請參考圖1及電路圖3*/break; /*每組僅用高4位,兩組合并后0x77為兩次均無任何腳接地*/delay(10); /*延時10毫秒,實際可在此作一些界面變化的處理,增加美觀*/ 在實際制作中為充分利用PC機的資源,充分美化搶答器,采用了全圖形化的編程,并加入了聲音功能。即將搶答的組數在顯示器上用大字顯示出,并同時利用PC機上的聲卡報出相應組數。具體程序由各人及計算機檔次而定,筆者編的程序可在
6、386機上流暢地運行。四、注意事項如果讀者實際制作這個電路,還要注意以下幾個問題: 1.打印口地址的確定,并非每一臺計算機的打印口地址都是以上所列的地址,最常見的還有278H,279H,27AH。因此針對不同的計算機自動尋找打印口很重要,在計算機的內存中存放有打印口地址,自動查找打印口可用如下程序:unsigned int far *fpb=(unsigned far * )0x00400008; /*在內存40:08H處單元中有打印地址*/port_data=*fpb; /*取打印機數據口的地址*/port_inp=*fpb+1; /*狀態(tài)端口為數據口地址
7、加1*/port_ctrl=*fpb+2; /*控制端口為數據端口加2*/ 2. 以上設計是基于標準的打印口設置,如果主板的打印口設計不標準,則以上編程會有問題。以筆者的調查,所找到的所有386、586兼容機(約10個不同品種的主板)及以上機均能正常工作,但486機主板較混亂,筆者找了5、6種486兼容機,沒一臺能用。但所有的品牌機都沒有發(fā)現有這方面的問題,為謹慎起見,自制前最好對自已所用計算機的打印口檢測一下,即將狀態(tài)線分別接地,然后讀出狀態(tài)口數據,看是否與接線相符。在計算機用語音報出開始后要先檢測一次輸入,如果已有人按下按鈕,則
8、屬范規(guī),如無人按下,再點亮指示燈,表示搶答可以開始。DOS下的聲卡發(fā)聲程序編起來比較麻煩,而且一定要計算機有聲卡才行,如果打算讓舊計算機發(fā)揮余熱,而又想有聲音功能,那不妨多花上十多元錢按圖4做一個發(fā)聲電路。這是一個D/A轉換器,只要讀出WAV文件的數據并逐一送往數據端口,就可以發(fā)聲了,這部份程序如下:void wave(char *file) /*發(fā)聲函數,參數為文件名*/ char ch='0'FILE *fp;if(fp=fopen(file,"rb")=NULL) /*打不開文件的常規(guī)處理*/ printf("File%s not found!",*file);exit(1);while(!feof(fp) /*如果未到文件尾*/ outportb(port_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論