单片机控制打印机例程北京荣达
《单片机控制打印机例程北京荣达》由会员分享,可在线阅读,更多相关《单片机控制打印机例程北京荣达(23页珍藏版)》请在装配图网上搜索。
1、单片机控制打印机例程 达-串口)(北京荣/*/新荣达电子打印机测试程序51单片机,晶振11.0592时间:2009-7-10用与测试串行接口打印机常用打印机指令以函数行式体现 可根据需要自行调用单一函数单字节打印/busy为1时,等待,如数据* */#i nclude51 头文件#i ncludevstri ng.h字串处理函数头文件#in clude #defi ne uchar un sig ned charsbit BUSY=P3八4;II并口打印机的 BUSY,串口打印机的CTS/* * void print(un sig ned char ch) while (BUS Y=1)量小,
2、可不判BUSY;SBUF= ch;busy=O,将数据送到 P1 口while(TI=O)/当TI为0时,表示数据未发送完成,;TI=0;/*/将TI清0一直等待,直到为1串 口 初 始 化* void comn it(void)TH仁0XFD;/波特率值装入计数器,9600BPSTMOD=0X20;串口设置,定时器1,设为方式2,8位自动重载,用于产生波特率串口发送方式1,8位数据位,1SCON=0X50;TR 1=1;/*开启定时器1位停止位字符打 印 函数*/void prin t_chs(uchar ch) uchar i;for(i=0;istrle n( ch);i+) prin
3、t(chi);/*汉字打印例程*/void han zitest(void)uchar i;prin t(0x1b);pri nt(0x40);/ 初始化打印机prin t(0x1b);pri nt(0x38);pri nt(OxOO);/ 调用 16*阵汉字,24点阵为24*24print_chs(汉字命令测试:n);for(i=0;i5;i+)搋环打印 5 次prin t(0x1b);pri nt(0x38);pri nt(OxOO);点阵汉字,24点阵为24*24print(OxdO);print(0xc2);打印数据新print(0x1b);print(0x38);print(0x04
4、); /调用 12*12 点阵汉字,24点阵为24*24prin t(0xc8);pri nt(0xd9);pri nt(0xb4);pri nt(0xef);数据“荣达”prin t(OxOd); / 回车/*/调用行 间 距16点16*16/打印16*16 点设置行间/打印字例程16*16 点* void han gjia nju (void)uchar i;prin t(Ox1b);pri nt(0x40);/ 初始化打印机prin t(0x1b);pri nt(0x38);pri nt(OxOO);/ 调用阵汉字,24点阵为24*24print_chs(行间距测试:n);for(i=0
5、;i11;i=i+2)循环打印prin t(0x1b);pri nt(0x31);pri nt(i);/ESC 1距prin t_chs(LINESPACING);pri nt(OxOa);符串和换行水平造表/* * void shuip in gzhaobiao(void)prin t(0x1b);pri nt(0x40);/ 初始化打印机prin t(0x1b);pri nt(0x38);pri nt(OxOO);/ 调用阵汉字,24点阵为24*24print_chs(水平造表测试:n);prin t_chs(1234567890123456);标尺prin t(OxOd);prin t(
6、0x1b);pri nt(0x44);pri nt(2);pri nt(9);pri nt(14);pri nt(0 );/ESC Dprin t(9);prin t_chs(HT1);prin t(9);prin t_chs(HT2);prin t(9);prin t_chs(HT3);prin t(OxOd);/*/HT命令/打印字符串/HT命令/打印字符串/HT命令打印字符串打印空格或换行例程void kon ggehua nhan g(void) prin t(Ox1b);pri nt(0x40);初始化打印机print(0x1b);print(0x38);print(OxOO);/调
7、用 16*16 点阵汉字,24点阵为24*24print_chs(换行或空格测试:n);print_chs(TE);打印字符串“ TE ”print(0x1b);print(0x66);print(O);print(0x06);/ 空六格prin t_chs(ST);打印字符串“ ST”prin t(OxOd);回车/print_chs(TE);打印字符串“ TE ”prin t(0x1b);pri nt(0x66);pri nt(OxO1);pri nt(0x06); 6行打印字符串“ ST”回车prin t_chs(ST);prin t(OxOd);/* * void youxia n(
8、void)初始化打印机调用16占八、*16prin t(Ox1b);pri nt(0x40);prin t(0x1b);pri nt(0x38);pri nt(OxOO);阵汉字,24点阵为24*24print_chs(右限测试:n);print_chs(12345678901234567890123456789012); 标尺prin t(0x1b);pri nt(0x51);pri nt(0x06);/ESC Q命令,右限为6/回车print_chs(12345678901234567890123456789012);/ 打 印 字串prin t(OxOd);/*左限 例 程* void
9、zhuoxia n( void) /初始化打印机/调用16*16点prin t(Ox1b);pri nt(0x40);prin t(0x1b);pri nt(0x38);pri nt(OxOO);阵汉字,24点阵为24*24print_chs(左限测试:n);print_chs(12345678901234567890123456789012); 标尺print(0x1b);print(0x6c);print(0x06);/ESC I 命令,左限为6print_chs(12345678901234567890123456789012); 打 印字串prin t(OxOd);II 回车放大指令例
10、程I* * void fan gda(void)uchar i;prin t(0x1b);pri nt(0x40);II 初始化打印机print(0x1b);print(0x38);print(OxOO);II调用 16*16 点阵汉字,24点阵为24*24从1到3print_chs(放大测试:n); for(i=1;i4;i+)倍rin t (0x1b);pri nt(0x55);pri nt(i);/横向放大rin t_chs(RD);/打印字符t(0x0d);/回车命令t(Ox1b);prin t(0x40);/初始化打印机=1;i4;i+)/从rin t (0x1b);pri nt(0
11、x56);pri nt(i);/纵放命令rin t_chs(RD);/打印字符rin t(0x0d);回车t(0x1b);prin t(0x40);/初始化打印机=1;i4;i+)/从1到3倍print (0x1b);pri nt(0x57);pri nt(i);/ 横纵向PPprinprin1至U 3for(i倍PPPfor(i放大打印字符/回车prin t_chs(RD);prin t(OxOd);/*划线指令例程*/void huaxia n( void)prin t(0x1b);pri nt(0x40);初始化打印机16点prin t(0x1b);pri nt(0x38);pri nt
12、(OxOO);/ 调用 16*阵汉字,24点阵为24*24print_chs(划线测试:n);prin t(0x1b);pri nt(0x57);pri nt(2);放大两倍打印,便于观察划线prin t_chs(RD);打印字串prin t(0x1b);pri nt(0x2d);pri nt(1);允许下划线打印print_chs(UPT);UPT 打印下划线prin t(0x1b);pri nt(0x2d);pri nt(O);禁止下划线打印prin t_chs(RD);打印字串prin t(OxOd);/ 回车prin t(0x1b);pri nt(0x40);初始化打印机prin t(
13、0x1b);pri nt(0x57);pri nt(2);放大两倍打印,便于观察划线prin t_chs(RD);打印字串prin t(0x1b);pri nt(0x2b);pri nt(1);/ 允许上打印线打印print_chs(UPT);UPT 上打印上划线prin t(0x1b);pri nt(0x2b);pri nt(0);禁止上划线prin t_chs(RD);打印字串prin t(OxOd);打印回车/*上下标指令*void sha ngxiabiao(void)prin t(0x1b);pri nt(0x40);/ 初始化打印机prin t(0x1b);pri nt(0x38)
14、;pri nt(OxOO);阵汉字,24点阵为24*24print_chs(上下标测试:n);prin t(0x1b);pri nt(0x57);pri nt(0x02);prin t(M);prin t(0x1b);pri nt(0x57);pri nt(0x01);prin t(0x1c);pri nt(0x72);pri nt(0);prin t(2);prin t(OxOd);/调用16*放大两倍打印字符M原倍上标命令/打印字符回车162占八、prin t(0x1b);pri nt(0x57);pri nt(OxO1);prin t(0x1b);pri nt(0x57);pri nt(
15、0x02);prin t(M);原倍放大两倍/打印字符Mprin t(0x1c);pri nt(0x72);pri nt(1);prin t(0x1b);pri nt(0x57);pri nt(0x01);prin t(2);prin t(OxOd); /*上标命令原倍/打印字符2/回车向指令例程*void hen gzh on g(void)prin t(0x1b);pri nt(0x40);prin t(0x1b);pri nt(0x38);pri nt(OxOO);阵汉字,24点阵为24*24print_chs(横纵向测试:n);/调用16*16点prin t(0x1c);pri nt(
16、0x4a);prin t_chs(ABCDEFGHI);prin t(OxOd);/设置纵向打印/打印字符回车prin t(Ox1b);pri nt(0x40);prin t(0x1C);pri nt(0x4B); 印prin t_chs(ABCDEFGHI);prin t(OxOd);/设置横向打/打印字符回车/*自定义指令例程*void zidi ngyi(void)prin t(0x1b);pri nt(0x40);prin t(0x1b);pri nt(0x38);pri nt(OxOO);阵汉字,24点阵为24*24print_chs(自定义字符测试:n);prin t(0x1b);
17、pri nt(0x36);如是自定义字符前面要加一个1B 36指令才行prin t(0x1b);pri nt(0x57);pri nt(2);大2倍初始化指令/调用16*16点24点阵机器,在/横向纵向放prin t(0x1b);pri nt(0x26);pri nt(65);prin t(0x02);pri nt(0x7C);pri nt(0x40);prin t(OxCO);pri nt(0x40);pri nt(OxOO);/ESC &命令/字模数据/字模数据prin t(0x1b);pri nt(0x25);pri nt(65);pri nt(65);pri nt(0);/ESC %p
18、rin t(65);符prin t(0x1b);pri nt(0x3a); /ESC :命令prin t(65);prin t(OxOd);打印定义字/复符集中的字符/*图形指令例程*void tux in g(void) ucharcodetch =0x7c,0x44,0x44,0xff,0x44,0x44,0x7c,0x00,0x41,0x62,0 x54,0xc8,0x54,0x62,0x41;uchar i;prin t(0x1b);pri nt(0x40);prin t(0x1b);pri nt(0x38);pri nt(OxOO);阵汉字,24点阵为24*24print_chs(图
19、形测试:n);/prin t(0x1b);pri nt(0x57);pri nt(2);/初始化指令/调用16*16点/横向纵向放大2倍prin t(Ox1b);pri nt(0x4b);pri nt(15);pri nt(0);命令/ESC Kfor(i=0;i15;i+) prin t(tchi); prin t(OxOd);输入15个字节数据/输入回车/*曲线II 指令例程*/仅适用于热敏打印机void quxia n_2(void)float X;un sig ned int Y,YY;/Y1=50+40*abs (-0.01*X) *sin (X/10)/Y2=50-40*abs (
20、-0.01*X ) *sin (X/10)/Y 3=50/Y4=50+40*abs(-0.1*X)/Y5=50-40*abs(-0.01*X)/你可以用C语言编写如下的程序:/#in clude /un sig ned int Y,YY,X;/初始化指令/调用16*16点打印150点行prin t(0x1b);pri nt(0x40);prin t(0x1b);pri nt(0x38);pri nt(0x00); 阵汉字,24点阵为24*24print_chs(曲线 1 测试:n);for(X=0;X150;X+)Y= 40*exp(-0.01*X);YY= Y *si n( X/10);pr
21、int(0x1b);print(39);print(5);print(0);/ESC 命令,M=5,0prin t(50+YY);prin t(0);pri nt(50-YY) ;pri nt(0);pri nt(50);pri nt(0);prin t(50+Y);pri nt(0);pri nt(50-Y);pri nt(0);pri nt(13); /*/仅适用于针式打印机void quxia n_1(void)float X;un sig ned int Y,YY;/Y1=50+40*abs( -0.01*X)*sinY2=50-40*abs(-0.01*X)*sinY3=50Y4=5
22、0+40*abs(-0.1*X)Y5=50-40*abs(-0.01*X)你可以用C语言编写如下的程序:#in clude (X/10)(X/10)unsigned int Y,YY,X;/prin t(0x1b);pri nt(0x40);prin t(0x1b);pri nt(0x38);pri nt(0x00); 阵汉字,24点阵为24*24print_chs(曲线 2 测试:n);for(X=0;X150;X+)/初始化指令/调用16*16点打印150点行Y 40*exp(-0.01*X);YY= Y *si n( X/10);print(0x1b);print(39);print(5
23、);/ESC 命令,M=5prin t(50+YY );pri nt(50-YY );pri nt(50);prin t(50+Y);pri nt(50-Y);pri nt(13);旋转指令例程/*void xua nzhua n( void)uchar i;/初始化指令0,90,180,270 旋转prin t(0x1b);pri nt(0x40);for(i=0;i4;i+)print(0x1c);print(0x49);print(i);/ 旋 转指令print(0x1b);print(0x38);print(0);II汉字调 出指令打印汉字回车print_chs(旋转测试);prin
24、t(OxOd);/*反白指令例* void fan bai(void)uchar i;prin t(Ox1b);pri nt(0x40);/ 初始化指令for(i=0;i2;i+)/i 为 1 时,反白打印pri nt(0x1b);pr in t(0x69);pr in t(i);pri nt(0x1b);pr in t(0x38);pr in t(0); print_chs(反白测试);pri nt(0x0d);反向指令例/*void fan xia ng(void)uchar i;/初始化指令/i为1时,禁止反向prin t(0x1b);pri nt(0x40);for(i=0;i2;i+
25、)prin t(0x1b);pri nt(0x63);pri nt(i); prin t(0x1b);pri nt(0x38);pri nt(0); print_chs(反向测试);prin t(OxOd);/* * /只有部分型号的打印机支持此指令void tiaoma(void)prin t(Ox1b);pri nt(0x40);prin t(0x1d);pri nt(0x72);pri nt(0x01); 符prin t(0x1d);pri nt(0x68);pri nt(0x60);度为96点指令例程/初始化指令/打印条码字/设置条码高prin t(0x1d);pri nt(0x6B)
26、;pri nt(0x45);pri nt(8); 度为8的CODE39码/打印长prin t(0x2a);pri nt(0x31);pri nt(0x32);pri nt(0x34);pri nt(0x35);pri nt(0x37);pri nt(0x36);pri nt(0x2a); /CODE39码数据prin t(OxOd);/ 回车prin t(0x1d);pri nt(0x6B);pri nt(3);EAN13 码/打印prin t(0x32);pri nt(0x37);pri nt(0x30);pri nt(0x38);pri nt(0x35);pri nt(0x38);pri
27、nt(0x35);pri nt(0x30); /EAN13码数据prin t(0x30);pri nt(0x39);pri nt(0x32);pri nt(0x34);pri nt(0x38);pri nt(OxOO);回车prin t(OxOd);Mai n()comni t();han zitest();han gjia nju ();shuip in gzhaobiao();kon ggehua nhan g();youxia n();fan gda();huaxia n();sha ngxiabiao();he ngzho ng();zhuoxia n();zidi ngyi();tuxi ng();quxian_2(); /如用针打打印机将此函数去掉 quxian_1(); /如用热敏打印机将此函数去掉 xua nzhua n();fan bai(); fan xia ng(); tiaoma();prin t(OxOd);回车prin t(0x0d);回车prin t(0x0d);回车while(1);循环/死
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。