📄 print.c
字号:
//********************************************************************
//叫号系统窗口屏
//********************************************************************
#include<reg51.h>
#include<stdio.h>
#include<string.h>
#define uchar unsigned char
#define ck Stb=0;Stb=1;
#define Address 0xd3//220号
//P0做数据端
sbit Stb=P2^7;//P1^0;
sbit ACK=P2^6;//P1^1;//应答信号,0表示数据已接受并准备接受下一数据
sbit Busy=P2^5;//P1^2;//应答信号,1表示打印机忙,0表示空闲;忙不能接受数据
sbit Pe=P1^0;//P1^3;//1表示无纸,0表示有纸
sbit Sel=P1^1;//P1^4;//经电阻上拉1表示打印机在线
sbit Err=P1^2;//P1^5;//经电阻上拉1表示无故障
uchar Flag;//
uchar Tab0[]={
" Easyy-Q排队叫号系统 "
};
uchar Tab1[]={
" 您的号码是:"
};
uchar Tab2[15]={
" A0000 "
};
uchar Tab3[24]={
"您的服务类型是:存款业务"
};
uchar Tab4[]={
"您的前面有"
};
uchar Tab5[11]={
"00000位顾客"
};
uchar Tab6[]={
"您的取票时间是:"
};
uchar Tab7[20]={
"2004/05/24 17:45:49"
};
uchar Tab7[];
void SendData(uchar Data);
void delay(uchar m);
void delay(uchar m)
{
uchar i,j;
for (i=0;i<m;i++)
{
for (j=0;j<m;j++)
{
;
}
}
}
void SendData(uchar Data)
{
P0=0xff;
while ( Busy==1);
P0=Data;
Stb=0;
Stb=1;
Stb=0;
}
void Rec(void) interrupt 4{
uchar TempData,i;
uchar Code[2];
uchar Wait[2];
uchar Time[6];
if(RI){
TempData=SBUF;//第一字节地址
if (TempData!=0xd3)return;//不是本机地址返回
RI=0;
SM2=0;
TempData=_getkey();
if (TempData!=0xff)return;//不是本机地址低返回
TempData=_getkey();
if (TempData!=0x01)return;//不是打印应答信号返回
TempData=_getkey();
if (TempData!=0xdc) return;//不是主机高返回
TempData=_getkey();
if (TempData!=0xff)return;//不是主机低地址返回
for (i=0;i<2;i++){
Code[i]=_getkey();//号码
}
for (i=0;i<2;i++){
Wait[i]=_getkey();//等待人数
}
for (i=0;i<6;i++){
Time[i]=_getkey();//时间
}
Tab2[4]=Code[0]/0x10+0x41;//字母
Tab2[5]=((Code[0]%0x10)*256+Code[1])/1000+0x30;//千
Tab2[6]=(((Code[0]%0x10)*256+Code[1])%1000)/100+0x30;//百
Tab2[7]=(((Code[0]%0x10)*256+Code[1])%100)/10+0x30;//十
Tab2[8]=((Code[0]%0x10)*256+Code[1])%10+0x30;//个位
Tab5[0]=(Wait[0]*256+Wait[1])/10000+0x30;//等待万位
Tab5[1]=((Wait[0]*256+Wait[1])%10000)/1000+0x30;//等待千位
Tab5[2]=((Wait[0]*256+Wait[1])%1000)/100+0x30;//等待百位
Tab5[3]=((Wait[0]*256+Wait[1])%100)/10+0x30;//等待10位
Tab5[4]=(Wait[0]*256+Wait[1])%10+0x30;//等待个位
//时间
Tab7[2]=Time[0]/0x10+0x30;
Tab7[3]=Time[0]%0x10+0x30;
Tab7[5]=Time[1]/0x10+0x30;
Tab7[6]=Time[1]%0x10+0x30;
Tab7[8]=Time[2]/0x10+0x30;
Tab7[9]=Time[2]%0x10+0x30;
Tab7[12]=Time[3]/0x10+0x30;
Tab7[13]=Time[3]%0x10+0x30;
Tab7[15]=Time[4]/0x10+0x30;
Tab7[16]=Time[4]%0x10+0x30;
Tab7[18]=Time[5]/0x10+0x30;
Tab7[19]=Time[5]%0x10+0x30;
Flag=0xff;
SM2=1;
}
if (TI)return;
}
void Init()
{
IE=0x92;//EA|-|-|ES|ET1|EX1|ET0|EX0
TMOD=0x21; //GATE|C/T|M1|M0|GATE|C/T|M1|M0
TH1=0xf4;//24000xe8;//0xd0;//1200//9600/22.11//0xe8;////// fa9600 //0xf44800
SCON=0xf0;//SM1=1;REN=1;//SM0|SM1|SM2|REN|TB8|RB8|TI|RI
TCON=0x40;//TR1=TR0=1;//TF1|TR1|TF0|TR0|IE1|IT1|IE0|IT0
delay(20);
}
void main()
{
uchar i;
Init();
kk: SendData(0x1b);
SendData(0x40);//初始化
SendData(0x1b);
SendData(0x63);
SendData(1);//反向打印
SendData(0x1c);
SendData(0x26);//汉字格式
Flag=0x00;
//**********************************
for (i=0;i<24;i++)
{
SendData(Tab0[i]);
}
SendData(0x0d);//回车
for (i=0;i<14;i++)
{
SendData(Tab1[i]);
}
SendData(0x0d);
SendData(0x1c);
SendData(0x2e);//取消汉字状态,切换到字符状态
SendData(0x1b);
SendData(0x55);
SendData(6);//横向放大5倍
SendData(0x1b);
SendData(0x56);
SendData(6);//纵向放大5倍
for (i=0;i<9;i++)
{
SendData(Tab2[i]); //号码
}
SendData(0x0d);//回车
delay(10);
SendData(0x1b);
SendData(0x55);
SendData(2);//横向放大2倍,恢复默认大小
SendData(0x1b);
SendData(0x56);
SendData(2);//纵向放大2倍,恢复默认大小
SendData(0x1c);
SendData(0x26);//切换回汉字格式
for (i=0;i<24;i++)
{
SendData(Tab3[i]);
}
SendData(0x0d);//回车
for (i=0;i<10;i++)
{
SendData(Tab4[i]);
}
for (i=0;i<11;i++)
{
SendData(Tab5[i]);
}
SendData(0x0d);//回车
for (i=0;i<16;i++)
{
SendData(Tab6[i]);
}
SendData(0x0d);//回车
for (i=0;i<20;i++)
{
SendData(Tab7[i]);
}
SendData(0x1c);
SendData(0x2e);//取消汉字状态,切换到字符状态
for (i=0;i<7;i++)
{
SendData(0x0d);//回车
}
SendData(0x1b);
SendData(0x64);
SendData(0x00);//切刀
while(1)
{
if(Flag==0xff)
{
goto kk;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -