老主题,修改了重新发一下,高手一定赐教哦,谢谢
大家好,小弟做的单片机控制打印机的程序,请高手指点!如何修改?
电路图没贴,可是在程序注释里面已经说了硬件如何连接的了!
下面的程序只是我做的课题里的控制打印机的这部分,当然,单片机还完成其他功能。
我的这个程序并没有使打印机动作起来,就是想让大家给我确定一下,这个程序如果没有错误,也可能是
电路的其他部分影响了打印机的正常工作!那么我就再从其他部分找错误!
请大家在百忙之中给我答复一下,谢谢!
祝大家身体健康,工作顺利!
#include <reg51.h>
#include <W78E58.H>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit STROBE=P3^4;//单片机发出的选通信号
sbit CS=P2^5;//打印机在联机时为高电平
sbit ACK=P3^5;//数据以接收,返回主机低电平信号
sbit BUSY=P2^4;//打印机返回主机的忙信号
sbit ERROR=P2^6; //需在打印前判断该位
uchar code init[]={0x1c,0x78,0x00,0x1c,0x26,0x1b,0x45,0x1c,0x53,0x1e,0x1e,0x1b,0x6c,
0x10,0x1b,0x51,0x05 };//打印机初始化控制代码
uchar code tbhead[]={ 0x0a,0x0a, 0xcc,0xce,0xcc,0xce,
0xcd,0xf2,0xcb,0xea,0x21 };//要打印的几个汉字的国标码
void delay(uchar ms)//延时函数
{
uchar i;
while (ms--)
{
for (i=0;i < 10 ;i++)
{;}
}
}
void prt(uchar d)//打印单个字符的函数
{
while(BUSY);
STROBE=0x01;
P0=d;//P0口直接通过4.7K上拉排阻接到打印机上对应的8根数据线上
STROBE=0x00;
delay(1);//延时
STROBE=0x01;
}
void main()
{
uchar i;
for(i=0;i <17;i++)
prt(init[i]);//打印机初始化
while(1)
{
for(i=0;i <11;i++)
delay(500);//延时
prt(tbhead[i]);//打印一串字符
}
}
发表时间:2004年7月14日17:04:36