999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言在AVR單片機控制的微打印應用

2020-09-02 08:31:44陳宏明
計算機測量與控制 2020年8期

劉 芙,陳宏明

(1.江蘇省淮陰商業學校 計算機學院,江蘇 淮陰 223003;2.淮陰工學院,江蘇 淮陰 223003)

0 引言

微型打印機并不是局限于某個時代的產物,自從1946年日本的愛普生公司研發了第一個微型打印機開始,到現在已有65個年頭之多,對其適用性和可優化性的研究并沒停息過。當下,業界對體積小、重量輕、噪音低、高速度、高清晰、連接方便、功能完備的微型熱敏打印機研究步伐依然如故。如何建立一個由計算機C語言編程的基于AVR單片機控制的微型熱敏打印的獨立系統。系統采用LTP1245熱敏打印機芯為對象,由AVR單片機ATMEGA16作為主控制芯片,FAN8200作為熱敏打印機走紙系統步進電機驅動芯片,通過串口與上位機進行通訊。并制定給出了計算機控制程序系統的控制流程及相應的字庫,致使該微型打印機實現了系統優、硬件簡、成本低、應用廣闊的前景[1-3]。

1 系統設計整體結構

基于采用日本精工LTP1245高速熱敏打印機。LTP1245由走紙單元、加熱單元及控制單元構成。[4]系統硬件結構是AVR單片機主控電路、驅動走紙、熱敏頭、檢保電路等組成,如圖1所示。

圖1 系統硬件結構框圖

表1為LTP1245打印機芯規格參數。

表1 LTP1245打印頭規格參數

1.1 走紙單元

LTP1245熱敏打印機芯走紙電機采用2相4拍步進電機,其規格參數如表2所示,激勵時序如表3所示,驅動脈沖波形如圖2所示。電機以順時針的方向旋轉時,是正向進紙[4]。

表2 LTP1245走紙電機規格參數

表3 LTP1245走紙電機激勵時序

圖2 LTP1245走紙電機驅動脈沖波形

激勵順序:表3中是LPT1245進紙按正常的方向,當馬達按相位的順序激勵時,第1步,第2步,第3步,第4步,第1步,第2步……,相反,要使馬達按相反的方面旋轉,則激勵馬達的順序為:第4步,第3步,第2步,第1步,第4步,第3步……

步進電機時序:

1) 停止步驟:為了停止馬達,給一個相位的單個激勵周期,也就是最后的一個打印步驟。

2) 暫停狀態:在暫停狀態,為了防止步進電機過熱,不要激勵步進電機,即便在步進電機沒有被激勵的情況下,仍然會有一個壓力保持紙張不會滑動。

3) 起始步驟:重新從步進電機的步進電機立即切換到打印狀態。當重新啟動電機的懸浮狀態,在單一步驟的輸出和步驟相同的相位信號停止然后開始正常的打印順序。

1.2 熱敏頭單元

LTP1245熱敏頭如圖3所示:由384個加熱單元及加熱驅動構成。每一點線的打印數據按位由低到高在同步脈沖時鐘以串行方式傳輸的數據,然后將閂鎖止,通過以下方式注冊的閂鎖信號(見圖 4 )[5]。輸入熱敏頭加熱到寫激勵信號的DST反過來根據 printdata 存儲在鎖存寄存器,刺激加熱裝置,在熱敏打印紙上產生點行[6]。LTP1245支持6個分區的打印。表4顯示了DST信號與加熱單元的關系。

圖3 熱敏頭框圖

圖4 LTP1245數據打印方式

表4 分區和加熱單元

LTP1245熱敏頭工作時序如圖5所示,各脈沖信號的典型時間如表5所示。

圖5 LTP1245熱敏頭工作時序圖

表5 LTP1245時序典型時間

LTP1245為384點打印寬度,即48個字節,由于目前使用的都是雙層熱敏紙,所以打印脈沖為2個脈沖/點,即每點行24個字節。數據傳輸時24個字節數據按位由低到高依次傳送。

根據LTP1245熱敏頭工作時序,熱敏打印頭初始化時同步脈沖CLK為低電平,鎖存脈沖LATCH為高電平,加熱激勵脈沖DST為低電平[7]。打印時首先需要將打印數據傳送到熱敏打印頭,同步脈沖CLK輸出1個脈沖信號作為傳輸開始,在CLK為低電平時數據的第一個位放到信號線DAT上,經過延時T2后同步脈沖CLK變為高電平,保持T3時間后當前位數據傳送完畢,CLK變為低電平,循環反復將所有24字節數據傳送完畢,在傳送最后一位時在CLK為高電平時鎖存脈沖LATCH變為低電平并保持T5時間,將數據鎖存到熱敏打印頭,然后加熱激勵脈沖DST變為高電平將數據加熱打印到熱敏打印紙上[8]。

LTP1245光電檢測電路如圖6所示,當熱敏頭壓紙桿打開時HS的信號為高電平,當缺紙時PS 的信號為高電平,正常工作時均為低電平。

圖6 LTP1245光電檢測

1.3 主控制電路單元

為了實現快速打印,要求處理器給打印頭傳送數據的速度要快。這就要求選用高性能、高速度的單片機做主控制器——AVR單片機,該芯片是高性能,低功率8位AVR微處理器與先進的RISC結構,131指示,多數指令執行時間為一個唯一時鐘周期,32目8位普遍運行的記數器,充分的靜態操作,16 MIPS運行在16兆赫下,硬件乘算器以僅二時鐘周期發揮程序迭行和數據記憶;16k字節在系統可編程序的閃光;刪掉生活:10 000次;任意起動編碼區與鎖位的獨立;編程通過在芯片Boot程序起動編碼系統,真實地進行同時讀和寫操作;512字節EEPROM,eraselife:100 000 次,片內模擬比較碼器等特殊的處理器特點;上電復位和可編程電源故障檢測,在芯片標定 RC 振蕩器、芯片/芯片外的中斷源,6 睡眠模式:空閑模式、ADC 的噪聲抑制模式,節能模式,斷電模式下,待機模式;32 個可編程的I/O口[9]。

主控制電路如圖7所示。各控制引腳功能如下:

圖7 主控制電路圖

1)RST:復位

2)TXD,RXD:串口USART。

3)DST1~DST6:熱敏頭打印6個控制區的加熱接口。

4)ENA:走紙電機使能,當打印時ENA為高電平,使步進電機驅動器FAN8200輸出驅動脈沖。

5)IN1,IN2:步進電機驅動脈沖輸入,工作時序如圖5所示。

6)LATCH:熱敏打印頭數據鎖存脈沖,當一點行數據由DAT傳送到熱敏打印頭后,該引腳由高電平變為低電平,將數據存入熱敏打印頭。

7)DAT:熱敏打印頭數據輸入線。

8)PS1:缺紙信號,當熱敏打印頭缺紙時該信號為低電平。

9)HS1:打印頭壓板杠桿解除信號,當熱打印頭壓板杠桿解除信號為低電壓。

10)CLK:同步信號脈沖的熱打印頭,打印數據傳輸信號中的脈沖通過DAT熱打印頭的配合。

2 系統計算機控制程序設計

2.1 系統整體工作流程

本熱敏打印機的計算機控制程序設計主要是通過串口接收上位機數據,并判斷數據類型,如果是命令字,則轉去執行相應的命令程序。如果是打印字符,則轉換成相應的點行數據輸送到熱敏打印機的移位寄存器,然后加熱打印并走紙一定步數。打印的字符可以是16*16點陣的漢子字符,也可以是8*8點陣的ASCII碼[10]。整體工作流程如圖8所示。

圖8 系統整體工作流程

2.2 系統整體工作流程

根據圖5中工作時序的要求,數據加載的工作流程如圖9所示。在單片機模擬時鐘CLK的配合下將點陣寄存器中的數據由低位到高位依次通過數據線DAT輸出數據到熱敏打印頭內部的移位寄存器中。LTP1245一點行需要24個字節數據,故需要移位24個字節。工作流程如圖9所示。

圖9 數據加載工作流程

計算機C語言程序如下:

/*數據加載函數*/

void Loaddata()

{

uchar i,j,data;//i:左移位的次數;j:傳送字節數;data:要傳送的字節

CLK=0;//時鐘為低電平

for (j=0;j<24;j++) //一點行總共需要傳送24個字節

{

data=Pointbuf[j];//從點陣寄存器中取出要傳送的字節數據

for (i=0;i<8;i++) //循環左移8次,

{

if (data &0x80)

DAT=1;//若此位為1,數據線為高電平

else

DAT=0;//若此位為0,數據線為低電平

CLK=1;

delay_us(1);

CLK=0;

delay_us(1);

data = data<<1;//左移1位

}

}

}

圖10為數據打印的工作流程:首先將從串口接收的打印字符存入字符緩存區,判斷字符的類型。由于ASC碼是8*8點陣,所以每個字符有8個字節數據;中文字符為16*16點陣,共有32個字節,漢字點陣的排列順序采用“田字格”方法,將一個漢字分成左上、左下、右上、右下4個部分,每個部分就是一個8*8點陣數據。確定字庫后如果是ASC碼字符,則將一行打印字符數據依次取第一行點陣,重新編成一行點陣數據。將這一行點陣數據傳送到熱敏打印頭并鎖存。由于采用雙層熱敏打印紙,每一打印行最多24個字節字符數據,打印時先給DST1、3、5區加熱然后走紙1點行,再次加熱DST2、4、6區,走紙1點行,完成一點行打印。取第二行點陣數據松熱敏打印頭打印,循環直到一行字符打印完畢。如果是漢字字符,則將一行打印字符數據依次取第一行點陣,重新編成一行點陣數據。將這一行點陣數據傳送到熱敏打印頭并鎖存。[11]由于采用雙層熱敏打印紙,每一打印行最多24個字節字符數據,打印時先給DST1、3、5區加熱然后走紙1點行,再次加熱DST2、4、6區,走紙1點行,完成一點行打印。取第二行點陣數據松熱敏打印頭打印,循環直到一行字符打印完畢[11-12]。

圖10 數據打印工作流程

打印8*8點陣ASC碼的計算機C語言程序:

/*打印8*8點陣字符*/

void PrintASC()

{

uchar i,j;//i;打印點行數;j:每點行打印字符字節數

uint data;//加載的數據

Pointbuf_clear();//清打印點陣存儲區

for (i=0;i<8;i++) //打印8點行

{

for (j=0;j<24;j++) //每點行24個字節

{

data=Codebuf[j]-0x20;//轉換字符,由ASC碼//0X20開始

data=data*8+i;//每個ASC碼為8*8點陣

Pointbuf[j]=ASCCODE[data];//存入點陣存儲器

}

Loaddata(); //數據加載

latch_set(); //鎖存

dst135();//135區加熱打印

Motor_run();//走紙1點行

Dst246();//246區加熱打印

Motor_run();//走紙1點行

}

}

2.3 走紙電機工作流程

根據LTP1245走紙電機激勵時序及驅動芯片FAN8200的工作時序,走紙電機工作流程如圖11所示。開始打印時FAN8200的使能端ENA(ENA=ENA1=ENA2)變為高電平,輸入端IN1=1,IN2=1走第一步,接下來IN1=0,IN2=1走第二步,IN1=0,IN2=0時走第三步,第四步IN1=1,IN2=0。由于LTP1245的走紙電機是2相4拍步進電機,所以走四步后重新循環,由第一步開始。當一點行打印結束后使能端ENA變為低電平,停止步進電機的驅動輸出。下面是計算機C語言的打印機走紙電機驅動程序[13]。

圖11 走紙電機工作流程

/*打印機走紙電機驅動程序*/

void Motor_run()

{

ENA=1;

switch(Step)

{

case 0:

IN1=1;

IN2=1;

Step=1;

break;

case 1:

IN1=0;

IN2=1;

Step=2;

break;

case 2:

IN1=0;

IN2=0;

Step=3;

break;

case 3:

IN1=1;

IN2=0;

Step=0;

break;

}

}

3 字庫的搭建

為了減少硬件的存儲空間,字庫采用了自定義特征庫。這樣有利于建立一個強大、靈活的自定字體庫,所以以柔性的打印寬度,打印出美觀的字符效果。首先確定字符型,再尋要打印的第一地址字符,根據規范的漢字點陣,點陣選出來的字體到緩沖區,然后加載和打印[14]。

本設計打印字符用到了8*8點陣的ASC碼字符和16*16點陣的漢字字符,所以需要建立ASC碼字庫和漢字庫,還能擴展條形碼(CODE128)、二維碼(QR)等。點陣字符的提取可以使用專用計算機控制程序自動生成,也可以通過自行描點方式提取。ASC碼字庫的建立要與ASC碼字符表一一對應,為減小字庫大小,ASC碼字符表前32個可以省略不要,從第33個字符“!”開始,第0個為空格,第一個為“!”…需注意提取點陣時的提取順序要與數據加載時的順序一致。下面是8*8點陣ASC碼和16*16點陣漢字的計算機C語言字庫[15]。

flash uchar ASCCODE[]=

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"空格"/

0x08,0x08,0x08,0x08,0x00,0x00,0x08,0x00,//"!"/

0x14,0x14,0x14,0x00,0x00,0x00,0x00,0x00,//”‘

}

flash uchar kai[]=

{0x00,0x7F,0x11,0x11,0x11,0xFF,0x11,0x11,0x11,0x21,0xC1,0x00,

0x40,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00};/*"開"*/

flash uchar shi[]=

{0x21,0x21,0xFA,0x54,0x57,0x50,0x53,0xD2,0x32,0x4B,0x82,0x00,

0x00,0x00,0x40,0x20,0xE0,0x00,0xE0,0x20,0x20,0xE0,0x20,0x00};/*"始"*/

4 應用結果驗證

該系統采用了12V/3A電源適配器,并將打印機連接到電腦的USB到串行端口進行測試。在開機通電后,上面的機器的串行調試軟件發送命令和字符,端口速率設置為9 600,便可以打印相應的字符在熱敏紙上。測試打印8*8點陣ASC碼和16*16點陣漢字的計算機C語言字庫、條形碼 (CODE128)、二維碼等也都可以擴展使用。打印出英文、中文字符,條碼顯示清晰,分辨率高、效果好。在上機串行調試軟件發送"江蘇省淮陰商學院",將它打印成二維碼,然后對其通過手機二維碼軟件掃描后能被快速識別,顯示完全正確。

5 結束語

基于設計的AVR單片機控制的熱敏打印機由ATMEGA16及FAN8200構成,減少了周圍元器件,具有可靠性高,打印速度快,裝配成本低等優點。

加載位移數據采用電腦控制程序,生成的 PWM 信號,提供所需的步進電機驅動器的源代碼;從而有利于對打印機的測量與有效控制,通過自建的字庫可以打印任意字符和條形碼、二維碼等。缺紙停止打印,放入打印紙后自動牽拉打印紙等功能方便了用戶使用,值得深入研究和推廣應用。

主站蜘蛛池模板: 欧美精品一区在线看| 久久久久人妻一区精品色奶水| 久久国产精品波多野结衣| 欧美日韩激情在线| 暴力调教一区二区三区| 亚洲精品成人片在线播放| 国产农村精品一级毛片视频| 综合色88| 国产视频一区二区在线观看| 自拍欧美亚洲| 国产精品xxx| a级毛片一区二区免费视频| 亚洲欧美日韩高清综合678| 久草国产在线观看| 激情网址在线观看| 99在线观看免费视频| 国产人碰人摸人爱免费视频| 亚洲天堂啪啪| 在线播放真实国产乱子伦| 激情无码视频在线看| 一级爆乳无码av| 亚洲欧美成aⅴ人在线观看 | 国产女主播一区| 国产性生交xxxxx免费| 99久久国产综合精品女同| 欧美成人综合视频| 国产va在线| 青青草国产精品久久久久| 极品av一区二区| 久久综合九九亚洲一区| 精品国产aⅴ一区二区三区 | 欧美国产精品不卡在线观看| 免费一级毛片不卡在线播放| 免费无码AV片在线观看中文| www.av男人.com| 亚洲色无码专线精品观看| 欧美日韩午夜视频在线观看| 特级精品毛片免费观看| 国产尹人香蕉综合在线电影| 欧美日韩国产综合视频在线观看| 国产成人久久777777| 综合五月天网| 欧美亚洲一区二区三区导航 | 原味小视频在线www国产| 四虎成人在线视频| 在线国产毛片手机小视频| 美女视频黄又黄又免费高清| 色窝窝免费一区二区三区| 成年人国产视频| 国产精品人莉莉成在线播放| 69av免费视频| 激情午夜婷婷| 1024国产在线| 99这里只有精品在线| 国产精品部在线观看| 毛片a级毛片免费观看免下载| 伊人91在线| 国产XXXX做受性欧美88| 精品国产一区91在线| 亚洲综合在线最大成人| 国产一级在线观看www色| 欧洲一区二区三区无码| 第一区免费在线观看| 无码日韩人妻精品久久蜜桃| 免费播放毛片| 国产精品嫩草影院av| 国产欧美视频在线| 国产女人喷水视频| 不卡无码网| 国产永久免费视频m3u8| 欧美综合成人| 国产美女在线观看| 五月天福利视频| 91视频首页| 国产电话自拍伊人| 亚洲三级色| 无码免费试看| 午夜福利在线观看入口| 日本免费高清一区| 成人福利在线观看| 国产在线观看高清不卡| 在线精品自拍|