單片機(jī)系統(tǒng)制作微型打印機(jī)的源程序及方案
//單片機(jī)系統(tǒng)打印機(jī)程序思路如下:
// 打印規(guī)格(16×16點(diǎn)陣),打印機(jī)執(zhí)行單片機(jī)n點(diǎn)行走紙指令:0x1B-0x4A-n。向前走n點(diǎn)行,n的值是1-255范圍內(nèi)。
//設(shè)置 n點(diǎn)行間距:0x1B-0x31-n。n的值是0-255之間,
//在使用ESC/K命令打印點(diǎn)陣圖形時(shí),通常設(shè)置n=0。文本打印時(shí)通常設(shè)置n=3。
//-----------------------函數(shù)聲明--------------------------------------------------------
#include"stdio.h"
#include"absacc.h"
#include"reg51.h"
//-----------------------LCD接口管腳聲明--------------------------------------------------------
sbit STB=P3^0; //輸出,數(shù)據(jù)選通觸發(fā)脈沖上升沿時(shí)讀入數(shù)據(jù)。
sbit BUSY=P3^1; //輸入,"高"表示打印機(jī)正"忙",不能接收數(shù)據(jù)。
sbit ACK=P3^2; //輸入,應(yīng)答脈沖"低"電平表示數(shù)據(jù)已被接收而且已準(zhǔn)備好接收下一個(gè)數(shù)據(jù)。
sbit ERR=P3^3; //輸入,經(jīng)電阻上拉"高"電平,表示打印機(jī)無(wú)故障。
sbit SEL=P3^4; //輸入,經(jīng)電阻上拉"高"電平,表示打印機(jī)在線(xiàn)。
#define DATA_OUT P1 //P1為數(shù)據(jù)端口
bit printer_ERR=0; //打印機(jī)故障標(biāo)志:0表示正常,1表示故障
bit printer_online=1; //打印機(jī)在先標(biāo)志:1表示在線(xiàn),0表示離線(xiàn)
#define check_ERR() printer_ERR=~ERR //檢查打印機(jī)是否出錯(cuò)
#define check_online() printer_online=SEL //檢查打印機(jī)是否在線(xiàn)
//-----------------------定義各命令字--------------------------------------------------------
#define printer_init() SEND_2BYTE(0x1B,0x40) //初始化打印機(jī)
#define enter_hangzimode() SEND_2BYTE(0x1C,0x26) //進(jìn)入漢字打印命令:0x1C-0x26。
#define exit_hangzimode() SEND_2BYTE(0x1C,0x2E) //退出漢字打印命令:0x1C-0x2E。
#define setting_LARGEhz() SEND_2BYTE(0x1C,0x0E) //打印的漢字將在橫向放大一倍,縱向不改變。
#define cancel_LARGEhz() SEND_2BYTE(0x1C,0x14)//取消漢字倍寬打?。骸?br />
#define select_muster1() SEND_2BYTE(0x1B,0x36)//選擇字符集1:。
#define select_muster2() SEND_2BYTE(0x1B-0x37)//選擇字符集2:。
#define change_row() SEND_BYTE(0x0A) //換行:。
#define change_page() SEND_BYTE(0xOC) //換頁(yè):。
#define made_CZtable() SEND_BYTE(0x0B) //執(zhí)行垂直造表:0x0B。
#define made_SPtable() SEND_BYTE(0x09) //執(zhí)行水平造表:0x0B。
#define setting_rowLG() SEND_BYTE(0x0E) //一行內(nèi)倍寬度打印:0x0E。
#define cancel_rowLG() SEND_BYTE(0x14) //撤除一行內(nèi)倍寬度打印:0x14。
#define renew_char_set() SEND_2BYTE(0x1B,0x3A) //恢復(fù)字符集中的字符:0x1B-0x3A。
#define enter() SEND_BYTE(0x0D) //回車(chē):0x0D。
#define delete_row() SEND_BYTE(0x18) //刪除一行:0x18。
#define delete_byte() SEND_BYTE(0x7F) //刪除一字節(jié):0x7F。
#define execute_NULL() SEND_BYTE(00) //(4) 空:00。
//設(shè)置漢字點(diǎn)陣打印規(guī)格(16×16點(diǎn)陣):0x1C-0x69-n
//設(shè)定漢字點(diǎn)陣:n=0,16×16點(diǎn)陣
//n=1,8 ×16點(diǎn)陣?
//n=2,16×8點(diǎn)陣
//n=3,8×8點(diǎn)陣。
#define setting_HZmode(n) SEND_2BYTE(0x1C,0x69);SEND_BYTE(n)
// 執(zhí)行n點(diǎn)行走紙:0x1B-0x4A-n。向前走n點(diǎn)行,n的值是1-255范圍內(nèi)。
#define goahead_nrow(n) SEND_2BYTE(0x1B,0x4A);SEND_BYTE(n)
//設(shè)置 n點(diǎn)行間距:0x1B-0x31-n。n的值是0-255之間,
//在使用ESC/K命令打印點(diǎn)陣圖形時(shí),通常設(shè)置n=0。文本打印時(shí)通常設(shè)置n=3。
#define setting_rowgap(n) SEND_2BYTE(0x1B,0x31);SEND_BYTE(n)
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱(chēng): SEND_BYTE
// 入口參數(shù): ndata
// 函數(shù)功能: 送出1BYTE數(shù)據(jù)
//--------------------------------------------------------------------------------------------------
void SEND_BYTE(unsigned char ndata)
{
STB=1;
while(BUSY);
DATA_OUT=ndata;
STB=0;
STB=1;
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱(chēng): SEND_2BYTE
// 入口參數(shù): ndata1,ndata2
// 函數(shù)功能: 送出1BYTE數(shù)據(jù)
//--------------------------------------------------------------------------------------------------
void SEND_2BYTE(unsigned char ndata1,ndata2)
{
SEND_BYTE(ndata1);
SEND_BYTE(ndata2);
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱(chēng): SEND_nBYTE
// 入口參數(shù): ndata
// 函數(shù)功能: 送出1BYTE數(shù)據(jù)
//--------------------------------------------------------------------------------------------------
void SEND_nBYTE(unsigned char n,unsigned char *ndata)
{
while(n--)
{
SEND_BYTE(*ndata++);
}
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱(chēng): main
// 函數(shù)功能: 主函數(shù)
//--------------------------------------------------------------------------------------------------
main()
{
unsigned char ndata[]="I love DPJ";
check_ERR(); //檢查打印機(jī)是否出錯(cuò)
check_online(); //檢查打印機(jī)是否在線(xiàn)
while(printer_ERR==0&&printer_online);
printer_init(); //初始化打印機(jī)
SEND_nBYTE(11,ndata);
SEND_2BYTE(0x0D,0x0D);
}
-
單片機(jī)
+關(guān)注
關(guān)注
6071文章
45256瀏覽量
660087 -
微型打印機(jī)
+關(guān)注
關(guān)注
0文章
11瀏覽量
8142
發(fā)布評(píng)論請(qǐng)先 登錄
基于飛思卡爾微型熱敏打印機(jī)的設(shè)計(jì)與實(shí)現(xiàn)
如何用單片機(jī)把獲取的文字和圖片傳輸?shù)?b class='flag-5'>打印機(jī)完成打印
怎樣去設(shè)計(jì)一種基于單片機(jī)的微型打印機(jī)控制電路
單片機(jī)微型打印機(jī)控制電路的設(shè)計(jì)資料分享
單片機(jī)與微型打印機(jī)的接口設(shè)計(jì)
MCS-51單片機(jī)與鍵盤(pán)、顯示器、微型打印機(jī)的接口
單片機(jī)在微型打印機(jī)中的應(yīng)用

基于C8051F單片機(jī)的標(biāo)簽打印機(jī)接口設(shè)計(jì)

進(jìn)行微型打印機(jī)和單片機(jī)接口的程序免費(fèi)下載

基于單片機(jī)的微型打印機(jī)控制電路設(shè)計(jì)

單片機(jī)微型打印機(jī)控制電路的設(shè)計(jì)

評(píng)論