《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 基于單片機的噴墨打印機控制技術

基于單片機的噴墨打印機控制技術

2008-08-29
作者:蔣曉鳳1 黃志偉2

??? 摘 要: 介紹一種采用MCS51系列單片機控制驅動Hewlett Packard DESKJET 600/800 系列噴墨打印機的硬件接口設計和軟件設計方法" title="設計方法">設計方法。以控制打印機實現表格打印功能為例,給出了用C51語言編寫的一系列相關基本控制程序。
??? 關鍵詞: 單片機? 噴墨打印機? HP PCL LEVEL 3語言

?

??? 單片機應用系統中最常用的輸出打印設備是微型打印機,例如TP系列、UP系列打印機等,對它們的控制技術也較為成熟。但是近年來隨著通用打印機的廣泛使用,微型打印機的缺點也日益明顯:一是通用性及互換性不強;二是打印輸出文檔的幅面過小,不便于裝訂及存檔。而通用打印機都配有國際標準并行接口" title="并行接口">并行接口(CENTRONICS)和串行接口(RS232/422),紙張大小可任意選擇。這些特點是微型打印機所無法抗衡的。因此在越來越多的單片機應用系統中逐漸趨向于使用通用打印機作為打印輸出設備。本文介紹了以MCS-51系列單片機為核心,通過CENTRONICS國際標準8位并行接口控制驅動HP-DJ 600/800系列噴墨打印機的硬件接口電路設計方法及控制程序設計" title="程序設計">程序設計方法。
1 CENTRONICS接口標準
??? HP-DJ 600/800系列噴墨打印機采用與CENTRONICS標準兼容的并行打印機接口,接口各引腳信號的定義如表1所示。

?


2 硬件設計
??? 本著統一編址控制的原則,硬件原理如圖1所示。

?


??? 本設計采用MCS-51系列的89C52型單片機,其內部有8K字節的程序存儲器" title="程序存儲器">程序存儲器,盡可滿足本設計的程序、表格的存儲要求。在外部擴展了一片數據存儲器62256作為打印數據緩沖區,RAM62256的存儲容量為32K字節,可以存放大量的打印數據。從原理框圖可看出,RAM62256的片選端由單片機的P2.7口控制,因此RAM的地址范圍為:0000H~7FFFH。
??? 本設計采用查詢方式進行打印驅動控制,單片機與打印機的接口包括如下內容:
??? (1)單片機的八位數據線通過74LS377鎖存后與打印機的八位數據線相連,傳送打印數據。單片機的P2.7口通過74LS04反相后與74LS377的端相連,因此單片機向打印機傳送數據的口地址為8000H。
??? (2)單片機的P1.0口提供數據選通信號,它與打印機STB端連接,進行將打印數據送打印機的選通控制。
??? (3)單片機的P1.1口接打印機的BUSY端,以BUSY信號作為打印機“忙”或“閑”狀態查詢信號。
3 單片機驅動控制打印機的軟件設計
3.1 打印機的控制方法

??? 系統上電后,當需要打印的數據出現在數據線上時,只要主機向打印機的STB端發一個負脈沖,就把數據送入了打印機。本設計對打印機的控制采取查詢等待方式。首先主機讀打印機BUSY線,如果BUSY為高電平" title="高電平">高電平則表示打印機正“忙”,禁止接收數據,需等待。當打印機取走數據并處理完畢后,BUSY線被置為閑(低電平),同時輸出應答脈沖ACK通知主機,可以再次輸入數據。控制時序如圖2所示。

?


??? STB為數據選通信號,打印機在其上升沿時讀入數據。當主機發送數據后,需要有0.5μs以上的延時才能向STB線發負脈沖,即圖2中的t1值不小于0.5μs;當STB信號從高電平變為低電平后,要保證負脈沖的寬度,亦即圖2中的t2值不小于0.5μs;當STB信號從低電平變為高電平后,要保證有0.5μs以上的延時,亦即圖2中的t3值不小于0.5μs,以確保打印機將數據可靠讀入。控制流程見圖3所示。

?


??? 無論打印機打印輸出的是文字還是圖形,主機向其發送的皆是一系列以字節為單位的數據,因此如何向打印機發送數據是關鍵所在。以下為一數據發送程序實例,其功能是將一個字節數據發送給打印機。
??? void print_one(char ch)??//ch為待發送的數據
????{?
?????? ??while(P1_1); ???//讀打印機狀態,BUSY=1?為1,等待
?????? ??P1_0=1;????????????? ?//置STB為1
?????????*(char xdata*)0x8000=ch;??//輸出數據到打印機
?????? ??P1_0=0;??????? //置STB為0
???? ?? ?_nop_();
????? ? ?_nop_()???????????????????? //延時,等待數據發送完畢
?????????P1_0=1;??????? //置STB為1
????}
3.2 控制程序設計
??? HP-DJ 600/800系列噴墨打印機使用HP PCL LEVEL 3語言,而在單片機控制系統中使用十六進制代碼。因此在以下程序設計中,將PCL命令全部替換為用十六進制代碼表示。
??? 在單片機實時控制系統中,打印機最常用的功能是將控制系統的測試結果打印出來。下面通過如何實現一張表格的打印來具體說明單片機控制驅動噴墨打印機的軟件設計方法。
??? 需要打印的表格如表2所示。首先在Windows界面的“附件”的“畫圖”中制作好如表2的表格,將其保存為文件名:REPORT.BMP,并且在向單片機的程序存儲器中燒寫程序代碼時將此BMP文檔代碼一并寫入,存放在以BMP_ADDR為起始地址的程序區內。BMP_ADDR的值由所制作的表格大小決定,表格的寬度和長度分別用paper_width和paper_length表示。

?


??? 由流程圖4可看出,首項工作是由主機向打印機發送命令,利用軟件實現打印機的初始化。初始化的內容包括紙張型號、文本長度、上下邊距、左右邊距的設置等。在本設計中初始化程序如下:
??? void init_print( )
??? { uchar i;
??? ? char code command[57]=
?????? ??{ 0x1b,0x45,?????????????????? ?//打印機復位
?????? ?? ?0x1b,0x2a,0x62,0x32,0x42,????
?????? ?? ?0x1b,0x26,0x6c,0x30,0x6f,?? ?//圖形方式
?????? ?? ?0x32,0x36,0x61,???????????? ?//圖幅為A4
?????? ?? ?0x30,0x6d,?????????????? ??//普通紙
?????? ?? ?0x31,0x6c,?????????????? ??//允許設計上下邊距
???????? ??0x38,0x64,?????? ?//垂直行距:8行/英寸
?????? ?? ?0x39,0x33,0x70,?//頁長為11.67inch×8=93cpi
???????????0x36,0x65,???????? ?//上邊距為0.75inch×8=6cpi
?????? ?? ?0x37,0x37,0x46,?? //正文長(11.67-0.75-1.25)×8=77cpi
?????? ?? ?0x1b,0x28,0x73,0x30,0x70,? ?//字間距固定
??????? ? ?0x31,0x32,0x48,???????????? ?//12cpi
?????? ?? ?0x1b,0x26,0x61,0x39,0x6c, ?//左邊距=0.75inch
?????? ?? ?0x39,0x30,0x4d,??????????
?????? ?? ?0x1b,0x2a,0x72,0x31,0x75,? ?//單色
?????? ?? ?0x31,0x41,??????????????????
?????? ?? ?0x1b,0x2a,0x62,0x30,0x4d
??? ?};
? for(i=0;i<57;i++) print_one(command[i]);
}

??? 打印機初始化完成后,將打印緩沖區清零。這個打印緩沖區實際上就是位于外部RAM 62256內的一段存儲區域,RAM 62256的地址范圍是0000H~7FFFH,在本設計中將打印緩沖區的首地址定義為0000H。為了書寫方便在以下的程序中用PRINT_BUF表示這個地址值。接著將ROM中以BMP_ADDR為首址的內容讀出并寫入首址為PRINT_BUF的打印緩沖區內,其代碼長度即所設定表格的寬度和長度的積。具體程序如下:
??? void read_bmp( )
??? { uint i;
????? uchar xdata *p; uchar code *q;
????? p=PRINT_BUF;
??? ? q=BMP_ADDR;
??? ? for(i=0;i??? }

??? 打印數據全部存入打印緩沖區后,只要主機向打印機發開始打印命令,將打印緩沖區內的數據按字節依次發往打印機,一張符合要求的表格即打印出來了。具體程序如下:
??? void print_report( )
????{ char i;
????uint j;
??? uchar xdata *p;
??? char code command1[]={0x1b,0x2a,0x62,0x36,0x34,0x57}; ?????????//開始打印控制命令
??? char code command2[]={0x1b,0x2a,0x72,0x43,0x1b,0x45}; ?????????//結束打印控制命令
?? ?init_print( );?????//初始化打印機
?? ?clear_print_buf( );? ????//清打印緩沖區
??? read_bmp( ); ?????//讀入打印緩沖區
??? p=PRINT_BUF;
?? ?for(j=0;j????{for(i=0;i<6;i++) print_one(command1[i]);
?? ?for(i=0;i????}
?? ?for(i=0;i<6;i++) print_one(command2[i]);
????}
??? 所設計的MCS-51系列單片機與噴墨打印機的硬件接口和程序在衡陽無線電總廠的多種測試儀器中應用,效果良好。該硬件接口和軟件編程方法具有一定的通用性,適用于采用HP PCL LEVEL 3 打印機命令語言并且配有Centronics并行接口的各種打印機,只需在程序中根據不同機型修改個別參數值,即可實現打印輸出。

參考文獻
1 馬良渝.打印機應用大全[M].福州:福建科學技術出版社,1995.9
2 Hewlett-Packard Company. Hewlett Packard DeskJet 600/800 Series Printers Software Developer's Pcl Guide.http://www.hp.com.1997.7.1

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美在线亚洲在线| 亚洲一区二区在线观看视频| 国产精品久久久久久久久久久久久| 亚洲一区二区动漫| 午夜精品久久久久久久99樱桃 | 99成人精品| 国产精品素人视频| 久久亚洲国产成人| 一区二区三区回区在观看免费视频| 亚洲香蕉成视频在线观看 | 性色一区二区| 亚洲人www| 国产精品视频午夜| 欧美aⅴ99久久黑人专区| 亚洲一区中文| 亚洲激情精品| 亚洲自拍三区| 亚洲国产欧美一区| 国产日韩欧美不卡| 欧美日韩国产色视频| 欧美一区二区黄色| 99国产精品私拍| 性做久久久久久| 亚洲精品国产视频| 国内精品亚洲| 国产精品你懂的在线| 欧美~级网站不卡| 性久久久久久久久久久久| 亚洲人午夜精品| 欧美一级理论性理论a| 亚洲精品一区二区三区福利| 国内成人自拍视频| 国产精品大全| 欧美精品高清视频| 久久这里只精品最新地址| 亚洲男人的天堂在线aⅴ视频| 最新亚洲激情| 久久精品国产亚洲aⅴ| 在线视频精品一| 亚洲精品国产拍免费91在线| 国产一区二区日韩精品| 国产精品成人一区二区艾草| 久久亚洲春色中文字幕| 午夜久久黄色| 亚洲社区在线观看| 日韩视频不卡| 最新成人av在线| 久久精品道一区二区三区| 亚洲综合激情| 中文在线资源观看网站视频免费不卡| 伊人天天综合| 国产一区二区三区在线免费观看 | 亚洲欧美成人一区二区三区| 日韩午夜激情av| 亚洲全部视频| 亚洲激情在线播放| 亚洲第一在线综合网站| 激情欧美一区| 国产一区二三区| 国产欧美日韩中文字幕在线| 国产精品久久久久秋霞鲁丝| 欧美日韩国产大片| 欧美成人免费网| 奶水喷射视频一区| 免费一区二区三区| 免费看的黄色欧美网站| 久久一区激情| 玖玖精品视频| 欧美**字幕| 男人的天堂亚洲| 免费成人黄色片| 免费在线观看一区二区| 女主播福利一区| 欧美国产日韩一区| 欧美精品麻豆| 欧美人成免费网站| 欧美久久久久久蜜桃| 欧美日韩dvd在线观看| 欧美日韩国产成人在线91| 欧美了一区在线观看| 欧美精品在线播放| 欧美日韩精品二区| 欧美午夜精品久久久| 欧美性一区二区| 国产精品久久久久久久久久妞妞| 国产精品区二区三区日本| 国产欧美激情| 国模 一区 二区 三区| 精品二区视频| 亚洲激情电影在线| 99国产精品视频免费观看一公开| 一区二区日韩| 午夜久久久久| 亚洲激情专区| 一区二区三区 在线观看视频| 亚洲网站在线看| 午夜精品婷婷| 久久久夜夜夜| 欧美韩日一区二区三区| 欧美日韩精品一区视频| 国产精品久久午夜| 国产一区二区三区黄视频| 尤物yw午夜国产精品视频明星| 亚洲国产另类精品专区| 亚洲另类在线一区| 亚洲综合色丁香婷婷六月图片| 性色av一区二区怡红| 亚洲茄子视频| 亚洲免费小视频| 久久久久久久一区二区三区| 免费在线国产精品| 欧美特黄a级高清免费大片a级| 国产伦精品一区二区三区在线观看| 国产一区久久| 日韩一级片网址| 欧美一区二区三区婷婷月色| 亚洲日本aⅴ片在线观看香蕉| 亚洲专区免费| 久久久国际精品| 欧美日韩精品福利| 国产色视频一区| 亚洲精品免费网站| 亚洲欧美在线播放| av成人免费在线| 欧美一级一区| 欧美激情国产日韩| 国产精品最新自拍| 亚洲国产精品电影在线观看| 亚洲一区二区欧美| 亚洲黄色av| 欧美一级网站| 欧美日韩国产欧| 黄色日韩网站视频| 亚洲午夜一级| 日韩视频久久| 久久免费视频网站| 国产精品国产三级国产专播精品人 | 国产精品久久久91| 亚洲国产成人av在线| 亚洲性视频网址| 日韩视频第一页| 欧美主播一区二区三区| 欧美日韩激情网| 伊人久久大香线蕉综合热线| 亚洲在线视频网站| av72成人在线| 欧美成人四级电影| 国产在线拍偷自揄拍精品| 一区二区三区久久| 亚洲日韩视频| 久久久久九九九九| 国产精品嫩草99av在线| 亚洲乱码精品一二三四区日韩在线| 久久激情综合| 性欧美1819sex性高清| 欧美日韩一二区| 在线日韩av| 久久精品日产第一区二区三区| 欧美一级成年大片在线观看| 欧美视频在线不卡| 亚洲欧洲视频| 亚洲欧洲日本专区| 狂野欧美激情性xxxx欧美| 国产亚洲欧美中文| 亚洲一二三四区| 亚洲天堂免费观看| 欧美女同在线视频| 亚洲国产视频一区二区| 亚洲国产高清视频| 久久久午夜精品| 国产一区深夜福利| 欧美在线影院| 久久精品伊人| 国产亚洲精品自拍| 欧美在线观看网站| 久久久久天天天天| 好吊色欧美一区二区三区视频| 午夜精品久久| 久久精品30| 国产一区白浆| 久久精品欧洲| 久热精品视频在线观看| 一区在线免费观看| 亚洲国产免费| 免费人成网站在线观看欧美高清| 极品少妇一区二区| 亚洲激情午夜| 欧美国产一区二区| 亚洲精品日韩激情在线电影| 日韩午夜高潮| 欧美亚州在线观看| 亚洲影院在线观看| 欧美自拍偷拍午夜视频| 国产欧美日韩中文字幕在线| 欧美一区二区三区日韩视频| 久久国产日韩| 一区二区在线看| 日韩视频不卡| 国产精品99一区| 香港成人在线视频|