|
因为项目中用到了微型打印机,所以调试了一下,驱动挺简单的,发上来大家分享一下,o(∩_∩)o...
//----------------------------main.c--------------------------------------------------------------
/*******************************************************************************
* * 微型打印机驱动
* *功 能:驱动北京荣达创新公司的RD-D32_SN-24型热敏微型打印机
* *芯 片:mega16
* *作 者:莫锦攀
* *时 间:2008.4.23
* *备 注:底层驱动由串口驱动提供
******************************************************************************/
#include <iom16v.h>
#include "printf.h"
void main(void)
{
unsigned char i;
Printf_Init();
Printf_String("同期电压: 28V");
Printf_String("同期相位: 2度");
Printf_String("同期频率:48.22HZ");
Printf_String("同期误差:-156ms");
Printf_String("导前时间:156ms");
Printf_String(" 实 验 记 录 01");
while(1)
{
}
}
/-------------------------------------------printf.c-------------------------------------------
/*******************************************************************************
* * 微型打印机驱动
* *功 能:驱动北京荣达创新公司的RD-D32_SN-24型热敏微型打印机
* *芯 片:mega16
* *作 者:莫锦攀
* *时 间:2008.4.23
* *备 注:底层驱动由串口驱动提供
******************************************************************************/
#include "printf.h"
/*******************************************************************************
**函数名称:Printf_Init()
**函数功能:初始化打印机
**函数入口:无
**函数出口:无
*******************************************************************************/
void Printf_Init(void)
{
init_USART();//初始串口
put_c(0x1b);
put_c(0x40);//初始化打印机
}
/*******************************************************************************
**函数名称:Printf_Cn()
**函数功能:打印一个汉字
**函数入口:*cn
**函数出口:无
*******************************************************************************/
void Printf_Cn( unsigned char *cn)
{
unsigned int len;
unsigned int k;
len = Length_Printf_GB();
for(k=0;k<len;k++)
{
if(cn[0] == Printf_GB[k].Index[0] && cn[1] == Printf_GB[k].Index[1])
break;
}
put_c(0x1b);//选择16*16点阵汉字打印
put_c(0x38);
put_c(0x00);
put_c(0x1b);//横向放大两倍
put_c(0x57);
put_c(0x02);
put_c(Printf_GB[k].Msk[0]);
put_c(Printf_GB[k].Msk[1]);
}
/***********************************************************************************************
**函数名称:Printf_En()
**函数功能:打印一个字符
**函数入口:en
**函数出口:无
***********************************************************************************************/
void Printf_En(unsigned char en)
{
put_c(0x1b);//选择字符集1
put_c(0x36);
put_c(0x1b);//放大4倍
put_c(0x57);
put_c(0x04);
put_c(en); //输出字符
}
/***********************************************************************************************
**函数名称:Printf_String()
**函数功能:
**函数入口:
**函数出口:无
***********************************************************************************************/
void Printf_String( unsigned char*p)
{
unsigned char i=0;
while(p>0)
{
if(p < 128)// ASCII
{
Printf_En(p);
}
else // 中文
{
Printf_Cn(&p);
i++;
}
i++;
}
}
//---------------------------font.c---------------------------------------------------------
/*******************************************************************************
* * 字库文件
* *功 能:为打印机提供字模转换
* *芯 片:mega16
* *作 者:莫锦攀
* *时 间:2008.4.23
* *备 注:
******************************************************************************/
#include "font.h"
typFNT_Printf_GB const Printf_GB[]=
{
"实",0xCA,0xB5,
"验",0xD1,0xE9,
"记",0xBC,0xC7,
"录",0xC2,0xBC,
"导",0xB5,0xBC,
"前",0xC7,0xB0,
"时",0xCA,0xB1,
"间",0xBC,0xE4,
"同",0xCD,0xAC,
"期",0xC6,0xDA,
"误",0xCE,0xF3,
"差",0xB2,0xEE,
"频",0xC6,0xB5,
"率",0xC2,0xCA,
"相",0xCF,0xE0,
"位",0xCE,0xBB,
"电",0xB5,0xE7,
"压",0xD1,0xB9,
"度",0xB6,0xC8,
};
/*******************************************************************************
**函数名称:Length_GB()
**函数功能:计算字库大小
**函数入口:无
**函数出口:len
*******************************************************************************/
unsigned int Length_Printf_GB(void)
{
unsigned int len;
len = sizeof(Printf_GB)/sizeof(Printf_GB[0]);
return len;
}
点击此处下载 ourdev_259586.rar(文件大小:32K) (原文件名:printf.rar)
点击此处下载 ourdev_259582.PDF(文件大小:716K) (原文件名:RD-D型微打使用说明.PDF)
点击此处下载 ourdev_259583.rar(文件大小:3K) (原文件名:区位码取模软件.rar)
(原文件名:DSC00902.JPG)
(原文件名:DSC00903.JPG) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|