單片機系統(tǒng)制作微型打印機的源程序及方案
//單片機系統(tǒng)打印機程序思路如下:
// 打印規(guī)格(16×16點陣),打印機執(zhí)行單片機n點行走紙指令:0x1B-0x4A-n。向前走n點行,n的值是1-255范圍內(nèi)。
//設(shè)置 n點行間距:0x1B-0x31-n。n的值是0-255之間,
//在使用ESC/K命令打印點陣圖形時,通常設(shè)置n=0。文本打印時通常設(shè)置n=3。
//-----------------------函數(shù)聲明--------------------------------------------------------
#include"stdio.h"
#include"absacc.h"
#include"reg51.h"
//-----------------------LCD接口管腳聲明--------------------------------------------------------
sbit STB=P3^0; //輸出,數(shù)據(jù)選通觸發(fā)脈沖上升沿時讀入數(shù)據(jù)。
sbit BUSY=P3^1; //輸入,"高"表示打印機正"忙",不能接收數(shù)據(jù)。
sbit ACK=P3^2; //輸入,應(yīng)答脈沖"低"電平表示數(shù)據(jù)已被接收而且已準備好接收下一個數(shù)據(jù)。
sbit ERR=P3^3; //輸入,經(jīng)電阻上拉"高"電平,表示打印機無故障。
sbit SEL=P3^4; //輸入,經(jīng)電阻上拉"高"電平,表示打印機在線。
#define DATA_OUT P1 //P1為數(shù)據(jù)端口
bit printer_ERR=0; //打印機故障標志:0表示正常,1表示故障
bit printer_online=1; //打印機在先標志:1表示在線,0表示離線
#define check_ERR() printer_ERR=~ERR //檢查打印機是否出錯
#define check_online() printer_online=SEL //檢查打印機是否在線
//-----------------------定義各命令字--------------------------------------------------------
#define printer_init() SEND_2BYTE(0x1B,0x40) //初始化打印機
#define enter_hangzimode() SEND_2BYTE(0x1C,0x26) //進入漢字打印命令: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)//取消漢字倍寬打印:。
#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) //換頁:。
#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)倍寬度打?。?x14。
#define renew_char_set() SEND_2BYTE(0x1B,0x3A) //恢復字符集中的字符:0x1B-0x3A。
#define enter() SEND_BYTE(0x0D) //回車: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è)置漢字點陣打印規(guī)格(16×16點陣):0x1C-0x69-n
//設(shè)定漢字點陣:n=0,16×16點陣
//n=1,8 ×16點陣?
//n=2,16×8點陣
//n=3,8×8點陣。
#define setting_HZmode(n) SEND_2BYTE(0x1C,0x69);SEND_BYTE(n)
// 執(zhí)行n點行走紙:0x1B-0x4A-n。向前走n點行,n的值是1-255范圍內(nèi)。
#define goahead_nrow(n) SEND_2BYTE(0x1B,0x4A);SEND_BYTE(n)
//設(shè)置 n點行間距:0x1B-0x31-n。n的值是0-255之間,
//在使用ESC/K命令打印點陣圖形時,通常設(shè)置n=0。文本打印時通常設(shè)置n=3。
#define setting_rowgap(n) SEND_2BYTE(0x1B,0x31);SEND_BYTE(n)
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: 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ù)名稱: SEND_2BYTE
// 入口參數(shù): ndata1,ndata2
// 函數(shù)功能: 送出1BYTE數(shù)據(jù)
//--------------------------------------------------------------------------------------------------
void SEND_2BYTE(unsigned char ndata1,ndata2)
{
SEND_BYTE(ndata1);
SEND_BYTE(ndata2);
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: SEND_nBYTE
// 入口參數(shù): ndata
// 函數(shù)功能: 送出1BYTE數(shù)據(jù)
//--------------------------------------------------------------------------------------------------
void SEND_nBYTE(unsigned char n,unsigned char *ndata)
{
while(n--)
{
SEND_BYTE(*ndata++);
}
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: main
// 函數(shù)功能: 主函數(shù)
//--------------------------------------------------------------------------------------------------
main()
{
unsigned char ndata[]="I love DPJ";
check_ERR(); //檢查打印機是否出錯
check_online(); //檢查打印機是否在線
while(printer_ERR==0&&printer_online);
printer_init(); //初始化打印機
SEND_nBYTE(11,ndata);
SEND_2BYTE(0x0D,0x0D);
}
-
單片機
+關(guān)注
關(guān)注
6067文章
44992瀏覽量
650499 -
微型打印機
+關(guān)注
關(guān)注
0文章
11瀏覽量
8072
發(fā)布評論請先 登錄
如何用單片機把獲取的文字和圖片傳輸?shù)?b class='flag-5'>打印機完成打印
單片機微型打印機控制電路的設(shè)計資料分享
單片機與微型打印機的接口設(shè)計
基于單片機的噴墨打印機控制技術(shù)

單片機在微型打印機中的應(yīng)用

基于C8051F單片機的標簽打印機接口設(shè)計

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

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

評論