⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 print.c

📁 单片机控制伟煌并行热敏微型打印机的程序。已经成功应用于饭店点菜机系统中。
💻 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 + -