基于CH375接口電路的LPT-USB打印機(jī)驅(qū)動(dòng)器的設(shè)計(jì)與實(shí)現(xiàn)
1 引言
本課題來源于北京普析通用公司。 由于該公司現(xiàn)有光譜儀器的單機(jī)版(如1810和t6等)采用的是并行口打印技術(shù),而隨著usb打印機(jī)技術(shù)的逐漸普及,并行口打印機(jī)越來越少,有些用戶原有的打印機(jī)只是usb接口而非并行口,因此現(xiàn)有儀器對(duì)打印機(jī)的支持不能適應(yīng)用戶需要。為了使該公司的并行口儀器直接和usb打印機(jī)相連,筆者設(shè)計(jì)了一種lpt-usb打印機(jī)驅(qū)動(dòng)器,實(shí)現(xiàn)并口儀器與usb打印機(jī)的連接。
筆者利用單片機(jī)和usb總線接口器件實(shí)現(xiàn)lpt-usb打印機(jī)驅(qū)動(dòng)器的設(shè)計(jì)。利用該設(shè)計(jì)將能夠?qū)崿F(xiàn)并行打印口數(shù)據(jù)在usb打印機(jī)上的直接打印,克服了有些并口儀器必須連接并口打印機(jī)才能打印的弊端,極大地方便了用戶的使用。
2 ch375的特點(diǎn)及工作原理
2.1 ch375的特點(diǎn)
ch375是一個(gè)usb總線通用接口電路,支持host主機(jī)方式和slave設(shè)備方式。ch375內(nèi)部集成了pll倍頻器、主從usb接口sie、數(shù)據(jù)緩沖區(qū)、被動(dòng)并行接口、異步串型接口、命令解釋器、控制傳輸?shù)膮f(xié)議處理器、通用的固件程序等。在本地端,ch375具有8位數(shù)據(jù)總線和讀、寫、片選控制線及中斷輸出,可以方便地掛接到單片機(jī)、dsp、mcu等控制器的系統(tǒng)總線上。ch375的usb主機(jī)方式支持各種常用的usb全速設(shè)備,外部單片機(jī)、dsp、mcu可以通過ch375按照相應(yīng)的usb協(xié)議與usb設(shè)備通信。ch375的特點(diǎn)如下:
(1)全速usb-host主機(jī)接口符合usb1.1,支持動(dòng)態(tài)切換主機(jī)與設(shè)備方式,外圍元器件只需要1個(gè)晶體和2個(gè)電容;
(2)主機(jī)端點(diǎn)輸入和輸出緩沖區(qū)各有64字節(jié),支持常用的12mb/s全速usb設(shè)備;
(3)支持usb設(shè)備的控制傳輸、批量傳輸、中斷傳輸;
(4)自動(dòng)檢測usb設(shè)備的連接和斷開,提供設(shè)備連接和斷開的通知;
(5)內(nèi)置控制傳輸?shù)膮f(xié)議處理器,簡化常用的控制傳輸;
(6)并行接口包含8位數(shù)據(jù)總線,4線控制:讀選通、寫選通、片選輸入和中斷輸出;
(7)串行接口包括串行輸入、串行輸出和中斷輸出,支持通信波特率的動(dòng)態(tài)調(diào)整。
(8)支持5v電源電壓和3.3v電源電壓。
2.2 ch375的工作原理
如圖1所示,ch375通過被動(dòng)并行接口電路可以方便地掛接到各種8位單片機(jī)、dsp、mcu的系統(tǒng)總線上,并且可以與多個(gè)外圍器件共存。并口信號(hào)線包括8位雙向數(shù)據(jù)總線d7-do、讀選通輸入rd、寫選通輸入wr、片選輸入cs、中斷輸出int及地址輸入線ao。ch375的rd和wr可以分別連接到單片機(jī)的讀選通輸出引腳和寫選通輸出引腳。int可以連接到單片機(jī)的中斷輸入引腳,中斷請(qǐng)求是低電平有效。當(dāng)cs、rd及ao都為低電平時(shí),ch375中的數(shù)據(jù)通過d7-do輸出;當(dāng)cs和wr以及ao都為低電平時(shí),d7-do上的數(shù)據(jù)被寫入ch375;當(dāng)cs、wr都為低電平而a1為高電平時(shí),d7-do上的數(shù)據(jù)被作為命令碼寫入ch375。
3 硬件電路設(shè)計(jì)
圖2所示為單片機(jī)通過ch375控制usb打印機(jī)的硬件電路。ch375通過被動(dòng)并行接口電路掛接到8位單片機(jī)的系統(tǒng)總線上,ch375的txd引腳接地,使ch375工作于并口方式。ch375的8位雙向數(shù)據(jù)總線d7-do直接與單片機(jī)的po數(shù)據(jù)口相連,rd和wr分別連接到單片機(jī)的讀選通輸出引腳和寫選通輸出引腳。片選信號(hào)cs連接到單片機(jī)的p2.6引腳,該引腳為低電平時(shí)選通ch375。int可以連接到單片機(jī)的中斷輸入into引腳,中斷請(qǐng)求是低電平有效。地址輸入線ao連接至單片機(jī)的p2.5引腳,當(dāng)ao引腳為高電平時(shí)選擇命令端口,可以寫入命令,當(dāng)ao引腳為低電平時(shí)選擇數(shù)據(jù)斷口,可以讀寫數(shù)據(jù)。
采用74hc245型三態(tài)雙向總線驅(qū)動(dòng)器作為打印機(jī)口向單片機(jī)傳送并口數(shù)據(jù)的接口,其片選信號(hào)與單片機(jī)的p2.7相連,方向控制位dir與單片機(jī)的p3.4相連,當(dāng)dir為高電平時(shí),數(shù)據(jù)從a端口向b端口傳送,此時(shí)單片機(jī)可以通過讀取74hc245數(shù)據(jù)端口得到并口的數(shù)據(jù),打印機(jī)狀態(tài)信號(hào)busy連接至單片機(jī)的p1.5引腳,并口數(shù)據(jù)采集控制信號(hào)ctrl直接連至單片機(jī)的int1中斷引腳,當(dāng)int1產(chǎn)生中斷時(shí),單片機(jī)從并口讀取數(shù)據(jù),然后再發(fā)送至打印機(jī)進(jìn)行打印。
4 軟件設(shè)計(jì)
4.1 軟件流程
軟件流程如圖3所示。該軟件用c語言編程,通信過程主要包括初始化和并口數(shù)據(jù)的采集。
并口數(shù)據(jù)的采集是通過中斷方式進(jìn)行的。采集數(shù)據(jù)的控制信號(hào)ctrl連接至單片機(jī)的中斷int1引腳,通過不斷檢測int1的狀態(tài)進(jìn)行并口數(shù)據(jù)的采集。當(dāng)打印機(jī)不忙(busy=0)時(shí),如果產(chǎn)生int1中斷,則從74hc245的數(shù)據(jù)斷口讀出并口數(shù)據(jù),同時(shí)將打印機(jī)忙標(biāo)志busy置1(表示打印機(jī)忙),當(dāng)數(shù)據(jù)已經(jīng)發(fā)送至打印機(jī)打印時(shí),則將打印機(jī)忙標(biāo)志busy置0。然后重復(fù)上述步驟進(jìn)行并口數(shù)據(jù)的采集及打印。
初始化過程分為單片機(jī)初始化和打印機(jī)的枚舉初始化。單片機(jī)的初始化過程是直接向相應(yīng)的i/0口寫初始化值及設(shè)置看門狗,可調(diào)用函數(shù)watchdog_init()設(shè)置看門狗。
打印機(jī)的枚舉初始化過程是很重要的,要打印采集到的并口數(shù)據(jù)首先必須成功地枚舉初始化打印機(jī)。初始化usb打印機(jī)函數(shù)init_print()主要使用以下幾個(gè)主要函數(shù):
主程序代碼如下:
5 結(jié)束語
本文詳細(xì)介紹了基于80c51型單片機(jī)和ch375型usb總線通用接口電路的lpt-usb打印機(jī)驅(qū)動(dòng)器的設(shè)計(jì)及c語言實(shí)現(xiàn)。測試結(jié)果表明,利用該設(shè)計(jì)能夠?qū)崿F(xiàn)并口儀器數(shù)據(jù)直接經(jīng)usb打印機(jī)打印,打印結(jié)果正確無誤。該設(shè)計(jì)現(xiàn)已用于并口儀器上,并行口儀器利用該驅(qū)動(dòng)器可以直接和usb打印機(jī)相連并進(jìn)行打印,克服了有些并口儀器必須連接并口打印機(jī)才能打印的弊端,方便了用戶。
評(píng)論