新聞中心

        EEPW首頁 > 模擬技術 > 80C51和CH375的USB打印機驅動設計

        80C51和CH375的USB打印機驅動設計

        ——
        作者:王小芳 鄭寬磊 強偉鋒 時間:2007-11-06 來源:單片機及嵌入式系統應用 收藏

          摘要:介紹基于驅動器的設計與實現方法,介紹總線的通用接口芯片的特點及工作原理,給出通過控制的硬件設計及其C語言軟件實現。利用該設計能夠實現并行打印口數據在USB直接打印,極大的克服了有些并口儀器必須連接并口打印機才能打印的弊端,可極大方便用戶的使用。

          關鍵詞:CH375 USB 打印機

        引 言

          本課題來源于北京普析通用公司的一個項目。由于公司現有單機版光譜儀器產品(如1810、T6等)采用的是并行口打印技術,而隨著USB打印機技術的逐漸普及,并行口打印機越來越不好買到,而且有些用戶的打印機只是USB接口而非并行口,因此現有儀器產品對打印機的支持變得不能適應用戶需要。為了實現能將公司的并行口儀器直接和USB打印機相連進行打印,決定設計開發一款-USB打印機的驅動器,負責并口儀器和USB打印機的連接。

          本文利用和USB總線接口芯片實現LPT-USB打印機的驅動器設計。利用該設計將能夠實現并行打印口數據可以在USB打印機上的直接打印工作,克服了有些并口儀器必須連接并口打印機才能打印的弊端,極大地方便了用戶的使用。

        1 CH375芯片特點及工作原理

        1.1 CH375芯片特點

          CH375 是一個USB總線的通用接口芯片,支持Host主機方式和Slave設備方式。CH375芯片內部集成了PLL倍頻器、主從USB接口SIE、數據緩沖區、被動并行接口、異步串行接口、命令解釋器、控制傳輸的協議處理器、通用的固件程序等。在本地端,CH375 具有8 位數據總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機/DSP/MCU 等控制器的系統總線上。CH375 的USB 主機方式支持各種常用的USB 全速設備,外部單片機/DSP/MCU 可以通過CH375 按照相應的USB 協議與USB 設備通信。CH375芯片有如下特點:

          ① 全速USBHOST 主機接口USB V1.1,支持動態切換主機與設備方式,外圍元器件只需要一個晶體和2個電容;

          ② 主機端點輸入和輸出緩沖區各64 B,支持常用的12 Mbps 全速USB設備;

          ③ 支持USB 設備的控制傳輸、批量傳輸和中斷傳輸;

          ④ 自動檢測USB 設備的連接和斷開,提供設備連接和斷開的事件通知;

          ⑤ 內置控制傳輸協議處理器,簡化常用的控制傳輸;

          ⑥ 并行接口包含8 位數據總線,4 線控制(讀選通、寫選通、片選輸入和中斷輸出);

          ⑦ 串行接口包含串行輸入、串行輸出和中斷輸出,支持通信波特率動態調整;

          ⑧ 支持5 V電源電壓和3.3 V電源電壓。

        1. 2CH375芯片工作原理

          如圖1所示,CH375芯片通過被動并行接口芯片可以很方便地掛接到各種8 位單片機、DSP和MCU 的系統總線上,并且可以與多個外圍器件共存。并口信號線包括:8 位雙向數據總線D7~D0、讀選通輸入RD、寫選通輸入WR、片選輸入CS、中斷輸出INT以及地址輸入線A0。CH375 芯片的RD和WR可以分別連接到單片機的讀選通輸出引腳和寫選通輸出引腳。INT可以連接到單片機的中斷輸入引腳,中斷請求是低電平有效。當CS和RD以及A0 都為低電平時,CH375 中的數據通過D7~D0 輸出;當CS和WR以及A0 都為低電平時,D7~D0 上的數據被寫入CH375 芯片中;當CS和WR都為低電平而A1 為高電平時,D7~D0 上的數據被作為命令碼寫入CH375 芯片中。

          圖1主機通過CH375控制USB設備原理圖

        圖2硬件電路原理圖

        2 硬件電路設計

          單片機通過CH375控制USB打印機的硬件電路,如圖2所示。

          如圖2所示,CH375芯片通過被動并行接口芯片掛接到8 位單片機的系統總線上,CH375 的TXD 引腳接地,從而使CH375 工作于并口方式。CH375芯片的8 位雙向數據總線D7~D0直接與單片機的P0數據口相連,RD和WR分別連接到單片機的讀選通輸出引腳和寫選通輸出引腳。片選信號CS連接到單片機的P26引腳,該引腳為低電平時選通CH375芯片。INT可以連接到單片機的中斷輸入INT0引腳,中斷請求是低電平有效。地址輸入線A0連接至單片機的P25引腳,當A0引腳為高電平時選擇命令端口,可以寫入命令;當A0引腳為低電平時選擇數據端口,可以讀寫數據。

          采用74HC245三態雙向總線驅動器作為打印機口向單片機傳送并口數據的接口,其片選信號與單片機的P27相連,方向控制位DIR與單片機的T0相連。當DIR置成高電平時,數據從A端口向B端口傳送,此時單片機可以通過讀取74HC245數據端口即可得到并口數據。打印機狀態信號BUSY連接至單片機的P15引腳,并口數據采集控制信號CTRL直接連至單片機的INT1中斷引腳,當INT1產生中斷時,單片機從并口將數據取走,然后再發送至打印機打印出來。

        3 軟件設計實現

          軟件實現的流程如圖3所示。該軟件編程是用C語言實現的,通信過程主要包括兩部分:初始化和并口數據的采集。

          并口數據的采集是通過中斷方式進行的。采集數據的控制信號CTRL連接至單片機的中斷INT1引腳,通過不斷檢測INT1的狀態來進行并口數據的采集。當打印機不忙(即BUSY=0)時,如果有INT1中斷產生,則從74HC245的數據端口將并口數據讀出,同時將打印機忙標志BUSY置1(表示打印機忙)。當數據已經發送至打印機打印時,則將打印機忙標志BUSY置0。然后重復上述步驟進行并口數據的采集及打印。

          初始化過程分兩部分:單片機初始化和打印機的枚舉初始化。單片機的初始化過程就是直接向相應的I/O口寫初始化值及設置看門狗,可調用函數watchdog_init()實現設置看門狗。

        圖3軟件實現流程圖

          打印機的枚舉初始化過程很重要,要實現打印采集到的并口數據,首先必須成功地枚舉初始化打印機。初始化USB打印機函數init_print()主要用到以下幾個主要函數:

          ◇ get_descr(1),獲取設備描述符。
          ◇ rd_usb_data(buffer),從CH375中讀取數據到單片機中。
          ◇ set_addr(3),設置打印機的USB地址。
          ◇ get_full_descr(buffer),獲取配置描述符。
          ◇ set_config(unsigned char cfg),加載USB配置值。

          編者注:具體程序見本刊網站:www.mesnet.com.cn

        結語

          本文詳細介紹了基于80C51單片機和USB總線通用接口芯片CH375的LPT-USB打印機驅動器設計及C語言實現。經測試表明,利用該設計能夠實現并口儀器數據直接經USB打印機打印出來,打印結果正確無誤。該設計現已被用于并口儀器上,利用該驅動器,并行口儀器可以直接和USB打印機相連進行打印,極大克服了有些并口儀器必須連接并口打印機才能打印的弊端,從而很大程度上方便了用戶。

         

        51單片機相關文章:51單片機教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 兴隆县| 临夏县| 金阳县| 乌什县| 正定县| 陆丰市| 榆林市| 黄骅市| 祥云县| 会泽县| 星座| 新邵县| 普格县| 凯里市| 桓台县| 五河县| 双辽市| 乳源| 沐川县| 焦作市| 南通市| 高雄市| 资兴市| 上高县| 鄂托克旗| 丰县| 龙陵县| 奉贤区| 普洱| 庆云县| 康保县| 枣庄市| 昌图县| 威信县| 新竹县| 芮城县| 通城县| 刚察县| 涿鹿县| 安国市| 南汇区|