《微型打印機接口控制實驗》由會員分享,可在線閱讀,更多相關《微型打印機接口控制實驗(7頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、? 實驗內(nèi)容:
將實驗儀接上微型打印機,控制打印機打印出各種效果的漢字和字符。
? 實驗目的:
1 ? 了解微型打印機接口及其打印字符的方法;
2 ? 了解微型打印機打印漢字的方法;
3. 了解單片機與微型打印機的連線方法。
? 有關說明:
并行接口連接
接口與引腳定義:本系列打印機并口與 CENTRONIC兼容,支持BUSY/ACK? 手協(xié)議,接口插座如下圖:
井行接口栩座引腳序號
并行接口各引腳信號的定義如下圖表所示:
嚥式弓關
倚號
方M
說
明
1
-STB
入
醐iom發(fā)肚利上升側讀入脳
3,5,7,9.11,13.15,17
DAI
2、A1
入
這騙號刪代耕砌據(jù)的鼾
-至軌飾號」每個鶻當其邏
-DATA8
輒為T時為電齊酈叩為維”電%
19
-ACK
出
回側沖「用電平表示■被殿而關印機齡脳收下
dtf 一 17-1
21
BUSY
tb
墻”電平表示打印機正沆'
不瞅收躺
PB
出
腳號彌1此弓|腳為高電平時表示打印戕紅為觥平時表
示打印購址
25
SEL
tu
扒卩機內(nèi)略邨肚tr取斛
h表示打印機馥
4
-ERR
IE
打印機內(nèi)粥仙卜拉和八「
h林川洞
6} 8
10-26
GND
接亂遺sro”電平
注:1?“入”表示輸入到
3、打印機。2.“出”表示從打印機輸出。3?信號的邏輯 電平為TTL電平。
并行接口引腳信號時序 并口時序如下圖所示:
四.
實驗電路:
bust
P3.7
/STB
/ERR
/EA PD.?
DT
POl 6
■a
V
*
■a
?■
POLO
DO
8031
I
五. 連線方法:
電路單元
第2單元
打印機
連接1
P0.0-P0.7
Data1-Data8 (3,5,7,9,11 , 13,15,17 )「
連接2
P3.7
/STB (1)
連接3
P3.
4、2 (INT0)
BUSY(21) 「
連接4
Gnd
18
六. 程序
#in elude
#define PRINTER_DATA P0 // 定義打印機數(shù)據(jù)線端口 sbit BUSY = P3A2; // 定義打印機忙信號引腳
sbit n STB =卩3八7; //
sbit PE = P3A3; //
定義打印機nSTB信號引腳
定義打印機紙狀態(tài)檢測信號引腳
定義打印機應答信號引腳 定義打印機錯誤檢測信號引腳 定義打印機在線檢測信號引腳
sbit n ACK =卩3八2; // sbit n ERR =卩3八1; // sbit n
5、SEL = P3A0; // #defi ne CR OxOd #defi ne LF 0x0a void Prin tByte( un sig ned char byte_data); void PrintString(char* str);
void PrintByteN(unsigned char* data_src,unsigned char N);
void main(void)
{
char str[] = "Printer demo";
PrintString(" 北京煒煌 WH");
PrintByte(CR);
while(1);
}
#include
6、ntrins.h>
void PrintByte(unsigned char byte_data)
{
while( BUSY == 1 ){}
PRINTER_DATA = byte_data;
nSTB = 0;
_nop_(); // 調(diào)整 nSTB 信號脈寬
nSTB = 1;
}
void PrintString(char* str)
{
while( *str ){
PrintByte( *(str++));
}
}
void PrintByteN( unsigned char* data_src, // pointer to data source
7、
unsigned char N) // number of data(byte)
{
while( N--){
PrintByte(*(data_src++));
}
}
第三部分 打印命令祥解
一、選擇字符集命令
3-1-1 、【選擇字符集 1】
格式: ASCII : ESC 6
10 進制: 27 54
16 進制: 1B 36 在該命令之后的字符將使用字符集 1 的字符進行打 印。
字符集 1 中有字符 224 個,代碼范圍 20H-FFH(32-255) 。 包括 ASCII 字符,及各種圖形符號等。
3-1-2 、【選擇字符集 2】 格式: ASCII
8、: ESC 7
10 進制: 27 55
16 進制: 1B 37 在該命令之后輸入的代碼將選擇字符集 2 的字符打 印。
字符集 2 中有字符 224 個, 代碼范圍
20H-FFH(32-225) 。包括德、法、俄文、日語片假名 等。
3-1-3 、【進入漢字方式】 格式: ASCII : FS &
10 進制: 28 38
16 進制: 1C 26 該命令用于進入漢字方式。在中文打印方式時,打 印機接收的漢字代碼為標準機內(nèi)碼,根據(jù)該代碼尋 找打印機內(nèi)的硬漢字字模,如找到則打印,否則不 打印。打印機接收到單字節(jié)的 ASCII 碼(范圍
20H-7FH)時,打印出相應的 AS
9、CII字符,與漢字等
高
注: ?打印機分 24 點陣與 16 點陣兩種打印機 ?進入字符集 1 和字符集 2 后, 打印機打印 6*8 點陣的 ASCII 碼字符
?24 點陣打印機默認打印 24*24 點陣一、二級 國標漢字與 20H~7FH 范圍內(nèi)的 12*24 點陣的標準
ASCII 碼字符
?16 點陣打印機默認打印 16*16 點陣一、二級 國標漢字與 20H~7FH 范圍內(nèi)的 8*16 點陣的標準
ASCII 碼字符
二、進紙命令
3-2-1 、【換行】
格式: ASCII : LF
10 進制: 10
16 進制: 0A
打印緩沖區(qū)內(nèi)容,打印機向前走紙一
10、個字符行,即 ( 字 符行高 +行間距 ) 個點行。若打印緩沖區(qū)內(nèi)無內(nèi)容,則 每執(zhí)行兩個 0A 打印機向前走紙一個字符行。
3-2-2 、【執(zhí)行 n 點行走紙】 格式: ASCII : ESC J n 10 進制: 27 74 n 16 進制: 1B 4A n 打印紙向前進給 n 點行(點為絕對值,不受放大或 縮小命令影響), K n< 255.
三、格式設置命令
3-3-1 、【設置 n 點行間距】 格式: ASCII : ESC 1 n 10 進制: 27 49 n 16 進制: 1B 31 n 為后面的換行命令設置 n 點行間距(點為絕對值, 不受放大或縮小命令影響), OW nW
11、 255,上電或初
始化后 n=3。
3-3-2 、【設置字符間距】
格式: ASCII : ESC p n
1O 進制: 27 112 n
16 進制: 1B 7O n 該命令是設定字符之間的空點。 默認方式為零,即字符之間沒有空點(點為絕對值, 不受放大或縮小命令影響), n在0?255之間。
3-3-3 、【設置垂直造表值】 格式: ASCII : ESC B n1 n2...NUL
10 進制: 27 66 n1 n2...0
16 進制: 1B 42 n1 n2...00
輸入垂直造表間隔間隔值 n1, n2 等,最多可輸入 8 個間隔值。例n1=3,則執(zhí)行垂直造表
12、(VT命令)進紙 到第 3 個單位行開始打印,單位行的高度按 8+行間
距 個點行計算(每單位行高度的實際值是絕對的, 不受字符的放大或縮小命令影響)。數(shù)據(jù) NUL 加在最 后表示該命令的結束。
所有輸入的垂直造表位置,可用該命令以 ESC B NUL 的格式清除。
3-3-4 、【執(zhí)行垂直造表】
格式: ASCII : VT
10 進制: 11
16 進制: 0B 打印紙進給到由 ESC B 命令設置的下一垂直造表位 置。如果垂直造表位置已清除,或當前位置已等于 或超過最后一個垂直造表位置, VT 命令將只走紙一 單位行。
3-3-5 、【設置水平造表值】
格式: ASCII
13、 : ESC D n1 n2...NUL
10 進制: 27 68 n1 n2...0
16 進制: 1B 44 n1 n2...00 輸入水平造表位置 n1, n2 等,最多可輸入 8 個位置, 這些數(shù)據(jù)應在所配打印頭和放大倍數(shù)等制約下的每 行能打印最多字符數(shù)之內(nèi)。例 n1=3, 則執(zhí)行水平造 表(HT命令)時在第3個字符處開始打印,每個字符 的寬度按 (字符點陣寬度 +字間距)個點計算(每個字 符寬度的實際值是相對的,受字符的放大或縮小命 令影響)。數(shù)據(jù) NUL 加在最后表示該命令結束。所有
輸入的水平造表位置,可用該命令以 ESC D NUL 的 格式清除。
當對漢字執(zhí)行水平造表
14、的命令時,因其造表的位置 是按字符設置的,還要受到放大倍數(shù)的影響,設置 時需要注意,以達到預設置效果。
3-3-6 、【執(zhí)行水平造表】 格式: ASCII : HT
10 進制: 9
16 進制: 09 打印位置進行到由 ESC D 命令設置的下一水平造表 如果水平造表位置已清除 , 或當前打印位置已等于 或超過最后一個水平造表位置, HT 命令將不執(zhí)行。 3-3-7 、【打印空格或空行】
格式:ASCII : ESC f m n
10 進制:27 102 m n
16 進制: 1B 66 m n
如果m =0,ESC f NUL n 將打印n個空格,每個空格 的寬度按 (字符點
15、陣寬度 +字間距)計算。 n 值應在所 配打印頭行打印最多字符數(shù)內(nèi)。如果m =1,ESC f SOH
n將打印n行單位行(8點行),1 < nW 255。
3-3-8 、【設置右限】
格式: ASCII : ESC Q n
10 進制: 27 81 n
16 進制: 1B 51 n
右限即打印紙右側(打印方向的右側)不打印的字 符數(shù),每個字符的寬度按 ( 字符的點陣寬度 +字間距 ) 計算(每個字符寬度的實際值是相對的,受字符的 放大或縮小命令影響); n 的數(shù)值應在 0 到所配打印 頭的能打印的字符數(shù)內(nèi);上電或初始化后 n=0;即
沒有右限。
3-3-9 、【設置左限】
格
16、式: ASCII : ESC 1 n
10 進制: 27 108 n
16 進制: 1B 6C n 左限即打印紙左側(打印方向的左側)不打印的字 符數(shù),每個字符的寬度按 (字符點陣寬度 +字間距 ) 計算(每個字符寬度的實際值是相對的,受字符的 放大或縮小命令影響); n 的數(shù)值應在 0 到所配打印 頭的行寬范圍內(nèi),上電或初始化后 n=0。
3-3-10 、【灰度打印】 格式: ASCII : ESC m n
10 進制: 27 109 n
16 進制: 1B 6D n
n 的值為 0 或1,當 n=0 時,濃度減量。當 n=1 時, 濃度增量。用于針對不同的熱敏紙的顏色深淺不一
17、問題。
四、字符設置命令
3-4-1 、【橫向放大】 格式: ASCII : ESC U n
10 進制: 27 85 n
16 進制: 1B 55 n 該命令之后的字符將以正常寬度的 n 倍進行打印。
1< n w 8,上電或初始化后16點陣n=2, 24點陣n
=1 o
3-4-2 、【縱向放大】 格式: ASCII : ESC V n
10 進制: 27 86 n
16 進制: 1B 56 n
該命令之后的字符將以正常高度的 n倍進行打印。1wn
w 8,上電或初始化后16點陣n=2,24點陣n = 1。
3-4-3 、【橫向縱向放大】 格式: ASCII : E
18、SC W n
10 進制: 27 87 n
16 進制: 1B 57 n 在該命令之后的字符將以正常寬度和正常高度的 n 倍進行打印。
1w n w 8, 上電或初始化后16點陣n=2, 24點陣n =1。
3-4-4 、【允許 / 禁止下劃線打印】 格式: ASCII : ESC - n
10 進制: 27 45 n
16 進制: 1B 2D n
n=1 允許下劃線打印, n=0 禁止下劃線打印,上電或 初始化后 n=0 允許下劃線打印后,所有字符和漢字 包括空格都打印出下劃線。
3-4-5 、【允許 / 禁止上劃線打印】
格式: ASCII : ESC + n
10 進
19、制: 27 43 n
16 進制: 1B 2B n
n=1 允許上劃線打印, n=0 禁止上劃線打印,上電或 初始化后 n=0 允許上劃線打印,所有字符和漢字包 括空格都打印出上劃線。
3-4-6 、【允許 / 禁止反白打印】
格式 : ASCII: ESC I n
10 進制 : 27 105 n
16 進制 : 1B 69 n
n=1 允許反白打印, n=0 禁止反白打印,上電或初始 化后 n=0。
允許反白打印后的字符和漢字將以黑底白字打印出 來。
3-4-7 、【允許 / 禁止反向打印】
格式 : ASCII: ESC c n
10 進制 : 27 99 n
1
20、6 進制 : 1B 63 n
當 n=0 時,設置字符反向打印,打印方向是由右向左。 當 n=1 時,設置字符正向打印,打印方向是由左向右。 當打印機垂直安裝時,為便于觀察打印結果,應使 用反向字符打印方式。
打印機出廠默認值: n=1。
3-4-8 、【 6x8 字符旋轉打印指令】
格式 : ASCII: FS I n
10 進制 : 28 73 n
16 進制 : 1C 49 N 該命令可以轉動 6*8 點陣的字符 .
N=0 時, 字符逆時針轉動 0 度
N=1 時, 字符逆時針轉動 90 度
N=2 時, 字符逆時針轉動 180 度
N=3 時, 字符逆時針轉動 270 度 該命令后,使用初始化命令后可以打印漢字,初始 對6*8 的字符沒有作用,將仍然旋轉,如需恢復必