基于CH375的LPT-USB打印機驅動(dòng)器的設計
1 引言
本課題來(lái)源于北京普析通用公司。 由于該公司現有光譜儀器的單機版(如1810和T6等)采用的是并行口打印技術(shù),而隨著(zhù)USB打印機技術(shù)的逐漸普及,并行口打印機越來(lái)越少,有些用戶(hù)原有的打印機只是USB接口而非并行口,因此現有儀器對打印機的支持不能適應用戶(hù)需要。為了使該公司的并行口儀器直接和USB打印機相連,筆者設計了一種LPT-USB打印機驅動(dòng)器,實(shí)現并口儀器與USB打印機的連接。
筆者利用單片機和USB總線(xiàn)接口器件實(shí)現LPT-USB打印機驅動(dòng)器的設計。利用該設計將能夠實(shí)現并行打印口數據在USB打印機上的直接打印,克服了有些并口儀器必須連接并口打印機才能打印的弊端,極大地方便了用戶(hù)的使用。
2 CH375的特點(diǎn)及工作原理
2.1 CH375的特點(diǎn)
CH375是一個(gè)USB總線(xiàn)通用接口電路,支持HOST主機方式和SLAVE設備方式。CH375內部集成了PLL倍頻器、主從USB接口SIE、數據緩沖區、被動(dòng)并行接口、異步串型接口、命令解釋器、控制傳輸的協(xié)議處理器、通用的固件程序等。在本地端,CH375具有8位數據總線(xiàn)和讀、寫(xiě)、片選控制線(xiàn)及中斷輸出,可以方便地掛接到單片機、DSP、MCU等控制器的系統總線(xiàn)上。CH375的USB主機方式支持各種常用的USB全速設備,外部單片機、DSP、MCU可以通過(guò)CH375按照相應的USB協(xié)議與USB設備通信。CH375的特點(diǎn)如下:
(1)全速USB-HOST主機接口符合USB1.1,支持動(dòng)態(tài)切換主機與設備方式,外圍元器件只需要1個(gè)晶體和2個(gè)電容;
(2)主機端點(diǎn)輸入和輸出緩沖區各有64字節,支持常用的12Mb/s全速USB設備;
(3)支持USB設備的控制傳輸、批量傳輸、中斷傳輸;
(4)自動(dòng)檢測USB設備的連接和斷開(kāi),提供設備連接和斷開(kāi)的通知;
(5)內置控制傳輸的協(xié)議處理器,簡(jiǎn)化常用的控制傳輸;
(6)并行接口包含8位數據總線(xiàn),4線(xiàn)控制:讀選通、寫(xiě)選通、片選輸入和中斷輸出;
(7)串行接口包括串行輸入、串行輸出和中斷輸出,支持通信波特率的動(dòng)態(tài)調整。
(8)支持5V電源電壓和3.3V電源電壓。
2.2 CH375的工作原理
如圖1所示,CH375通過(guò)被動(dòng)并行接口電路可以方便地掛接到各種8位單片機、DSP、MCU的系統總線(xiàn)上,并且可以與多個(gè)外圍器件共存。并口信號線(xiàn)包括8位雙向數據總線(xiàn)D7-DO、讀選通輸入RD、寫(xiě)選通輸入WR、片選輸入CS、中斷輸出INT及地址輸入線(xiàn)AO。CH375的RD和WR可以分別連接到單片機的讀選通輸出引腳和寫(xiě)選通輸出引腳。INT可以連接到單片機的中斷輸入引腳,中斷請求是低電平有效。當CS、RD及AO都為低電平時(shí),CH375中的數據通過(guò)D7-DO輸出;當CS和WR以及AO都為低電平時(shí),D7-DO上的數據被寫(xiě)入CH375;當CS、WR都為低電平而A1為高電平時(shí),D7-DO上的數據被作為命令碼寫(xiě)入CH375。
![]() |
---|
3 硬件電路設計
圖2所示為單片機通過(guò)CH375控制USB打印機的硬件電路。CH375通過(guò)被動(dòng)并行接口電路掛接到8位單片機的系統總線(xiàn)上,CH375的TXD引腳接地,使CH375工作于并口方式。CH375的8位雙向數據總線(xiàn)D7-DO直接與單片機的PO數據口相連,RD和WR分別連接到單片機的讀選通輸出引腳和寫(xiě)選通輸出引腳。片選信號CS連接到單片機的P2.6引腳,該引腳為低電平時(shí)選通CH375。INT可以連接到單片機的中斷輸入INTO引腳,中斷請求是低電平有效。地址輸入線(xiàn)AO連接至單片機的P2.5引腳,當AO引腳為高電平時(shí)選擇命令端口,可以寫(xiě)入命令,當AO引腳為低電平時(shí)選擇數據斷口,可以讀寫(xiě)數據。
![]() |
---|
采用74HC245型三態(tài)雙向總線(xiàn)驅動(dòng)器作為打印機口向單片機傳送并口數據的接口,其片選信號與單片機的P2.7相連,方向控制位DIR與單片機的P3.4相連,當DIR為高電平時(shí),數據從A端口向B端口傳送,此時(shí)單片機可以通過(guò)讀取74HC245數據端口得到并口的數據,打印機狀態(tài)信號BUSY連接至單片機的P1.5引腳,并口數據采集控制信號CTRL直接連至單片機的INT1中斷引腳,當INT1產(chǎn)生中斷時(shí),單片機從并口讀取數據,然后再發(fā)送至打印機進(jìn)行打印。
4 軟件設計
4.1 軟件流程
軟件流程如圖3所示。該軟件用C語(yǔ)言編程,通信過(guò)程主要包括初始化和并口數據的采集。
![]() |
---|
并口數據的采集是通過(guò)中斷方式進(jìn)行的。采集數據的控制信號CTRL連接至單片機的中斷INT1引腳,通過(guò)不斷檢測INT1的狀態(tài)進(jìn)行并口數據的采集。當打印機不忙(BUSY=0)時(shí),如果產(chǎn)生INT1中斷,則從74HC245的數據斷口讀出并口數據,同時(shí)將打印機忙標志BUSY置1(表示打印機忙),當數據已經(jīng)發(fā)送至打印機打印時(shí),則將打印機忙標志BUSY置0。然后重復上述步驟進(jìn)行并口數據的采集及打印。
初始化過(guò)程分為單片機初始化和打印機的枚舉初始化。單片機的初始化過(guò)程是直接向相應的I/0口寫(xiě)初始化值及設置看門(mén)狗,可調用函數watchdog_init()設置看門(mén)狗。
打印機的枚舉初始化過(guò)程是很重要的,要打印采集到的并口數據首先必須成功地枚舉初始化打印機。初始化USB打印機函數init_print()主要使用以下幾個(gè)主要函數:
![]() |
---|
![]() |
![]() |
4.2 主程序源代碼 主程序代碼如下: |
![]() |
![]() |
![]() |
---|
5 結束語(yǔ)
本文詳細介紹了基于80C51型單片機和CH375型USB總線(xiàn)通用接口電路的LPT-USB打印機驅動(dòng)器的設計及C語(yǔ)言實(shí)現。測試結果表明,利用該設計能夠實(shí)現并口儀器數據直接經(jīng)USB打印機打印,打印結果正確無(wú)誤。該設計現已用于并口儀器上,并行口儀器利用該驅動(dòng)器可以直接和USB打印機相連并進(jìn)行打印,克服了有些并口儀器必須連接并口打印機才能打印的弊端,方便了用戶(hù)。
評論