搜索
bottom↓
回复: 14

大家有 M-150微型打印机程序吗?

[复制链接]

出0入0汤圆

发表于 2009-10-6 16:46:49 | 显示全部楼层 |阅读模式
大家有 M-150微型打印机程序吗?

出0入0汤圆

发表于 2009-10-6 17:52:17 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2009-10-6 19:59:31 | 显示全部楼层
是吗?
能否发上来呢?

出0入0汤圆

 楼主| 发表于 2009-10-21 13:48:09 | 显示全部楼层
求人,就是他吗的垃圾。
求人,就是知道某些人的品质。
求人,还不如求己!

上次我写的那个打印机程序没有问题出问题的是电路图画错了。

附上我写的打印机程序
ATMEGA128的


/***************************************
**函数名:DelayMs(uint ms)
**函数功能:延时1毫秒
***************************************/
void DelayMs(uint ms)
{
        uint  i,l;
        for(i=0;i<ms;i++)
                for(l=0;l<140;l++);
}

void print_num(ulong num);

/***************************************
**函数名:void Display_p_(void)
**函数功能:打印时显示--zou-
***************************************/
void Display_p_(void)
{
       
        //P0=0X01;//启动走纸 ---即打印机的Motor.
        PQ0_1;
        mic_clk_0;
        //mic_clk=0;mic_clk=0;
        //PORTB &=0XDF;
        _nop_();_nop_();
        _nop_();_nop_();
    //mic_clk=1;mic_clk=1;
        mic_clk_1;
        _nop_();
       
        /*
        mic_clk_0;
        _nop_();
        PQ0_0;
        mic_clk_1;
        _nop_();
       
       
        mic_clk_0;
        _nop_();
        PQ0_1;
        mic_clk_1;
        _nop_();
       
        mic_clk_0;
        _nop_();
        PQ0_0;
        mic_clk_1;
        _nop_();
        */
       
}
/************************************
**函数名:mic_print_dh() 打印一行

当针头走回到最左边初始位置的时候,干簧管会闭合并通过1、2脚输出一个高电平。

***************************************/
void mic_print_dh(uchar array1[12],uchar array2[12],uchar array3[12],uchar array4[12],uchar array5[12],uchar array6[12],uchar array7[12],uchar array8[12],uchar array9[12],uchar array10[12],uchar array11[12],uchar array12[12],uchar array13[12],uchar array14[12],uchar array15[12],uchar array16[12])
{
        uchar  mic_print_data[4][4];
        uchar  i,j,k;
        _nop_();
        for(i=0;i<12;i++)//每个字有12行
        {
                mic_print_data[0][0]=array1;//第一个字的左半部分
                mic_print_data[0][1]=array2;//第一个字的右半部分
                mic_print_data[0][2]=array3;//第二个字的左半部分
                mic_print_data[0][3]=array4;//第二个字的右半部分
                mic_print_data[1][0]=array5;
                mic_print_data[1][1]=array6;
                mic_print_data[1][2]=array7;
                mic_print_data[1][3]=array8;
                mic_print_data[2][0]=array9;
                mic_print_data[2][1]=array10;
                mic_print_data[2][2]=array11;
                mic_print_data[2][3]=array12;
                mic_print_data[3][0]=array13;
                mic_print_data[3][1]=array14;
                mic_print_data[3][2]=array15;
                mic_print_data[3][3]=array16;
                  
                //Display_p_();
                //mic_clk_0;
                //DDRE &=0Xbf;
                //PORTE |=0X40;
                //_nop_();
                //mic_left=0; //此信号由微型打印机输出。
                //打完一行后,打印机输出高电平,然后打印机回到最左边开始处。---P18
                //DelayMs(500);//时间的长短可以控制点阵行间距
                //do{;}while(mic_left==1);
                //do{;}while((PINE&0X40)==0X00);
                //mic_left=1;
                //PORTE |=0X40;
                //DelayMs(30);
                _nop_();_nop_();_nop_();_nop_();_nop_();
                do{;}while((PINE&0X40)==0X00);//mic_left==0
        //在信号的下降沿,打印机开始打印。
                //HC273是低到高跳变时数字信号输出
                for(k=0;k<4;k++)//一行有8个字,每个打印头负责2个字,因为一次纸打印半个字所以,需要打印四次
                {
                        for(j=0;j<6;j++)//每次每个打印头都打印半个字宽6点阵
                        {

                                //打印头A ,P0最低一位为“1”,表示打印机电动机旋转,即打印针移动。
                                //mic_sync=1;        //同步脉冲,此位的意义为打印机输出的脉冲。以此来侦测打印针的移动。
                       // PORTE |=0X20;
                                if(mic_print_data[0][k]&0x80) //打印头A---PB4
                                        {
                                          PORTB &=0XE0;
                                          PORTB |=0X11;
                                        }
                                else
                                        {
                                          PORTB &=0XE0;
                                          PORTB |=0X01;
                                        }
                                do{;}while((PINE&0X20)==0X00);//mic_sync==0   //判断同步信号是否为高
                                mic_clk_0;
                                _nop_();_nop_();
                                _nop_();_nop_();
                                mic_clk_1;
                                mic_print_data[0][k]<<=1;
                               
                           //打印头B
                                //mic_sync=1;
                        //PORTE |=0X20;
                                if(mic_print_data[1][k]&0x80)//打印头B---PB3
                                        {
                                          PORTB &=0XE0;
                                          PORTB |=0X09;
                                        }
                                else
                                        {
                                          PORTB &=0XE0;
                                          PORTB |=0X01;
                                        }
                                do{;}while((PINE&0X20)==0X20);   //mic_sync==1判断同步信号是否为低
                                mic_clk_0;
                                _nop_();_nop_();
                                _nop_();_nop_();
                                mic_clk_1;
                                mic_print_data[1][k]<<=1;
                               
                           //打印头C
                                //mic_sync=1;
                        //PORTE |=0X20;
                                if(mic_print_data[2][k]&0x80)//打印头C---PB2
                                        {
                                           PORTB &=0XE0;
                                           PORTB |=0X05;
                                        }
                                else
                                        {
                                          PORTB &=0Xe0;
                                          PORTB |=0X01;
                                        }
                                DelayMs(1);
                                do{;}while((PINE&0X20)==0X00);   //mic_sync==0判断同步信号是否为高
                                mic_clk_0;
                                _nop_();_nop_();
                                _nop_();_nop_();
                                mic_clk_1;
                                mic_print_data[2][k]<<=1;
                       
                                //打印头D
                                //mic_sync=1;
                        //PORTE |=0X20;
                                if(mic_print_data[3][k]&0x80)//打印头D---PB1
                                        {
                                           PORTB &=0Xe0;
                                           PORTB |=0X03;
                                        }
                                else
                                        {
                                           PORTB &=0Xe0;
                                           PORTB |=0X01;
                                        }
                                do{;}while((PINE&0X20)==0X20);   //mic_sync==1判断同步信号是否为低
                                mic_clk_0;
                                _nop_();_nop_();
                                _nop_();_nop_();
                                mic_clk_1;
                                mic_print_data[3][k]<<=1;
                        }
                }
        }
        DelayMs(50);//汉字行距控制
}

出0入0汤圆

发表于 2009-12-18 16:22:49 | 显示全部楼层
辛苦楼主,谢谢

出0入0汤圆

发表于 2010-2-2 19:36:24 | 显示全部楼层
现在正在弄 MARK

出0入0汤圆

发表于 2010-2-3 13:18:10 | 显示全部楼层
我做这个头的驱动电路。手册要求是出针时间600-2500uS。我的驱动电路实测只需500uS打印就没问题。只是商业开发,不能发布。
你的程序应该不成。至少思路不对。
程序不是我写的。
我说下驱动思路。
首先是实时读取螺线圈信号。在每次换项中取。
当取到干簧管信号处理第一针的第一点,再处理第二针的第一点
1,1、 2,1、 3,1、 4,1、 1,2、 2,2、 3,2、 4,2、。。。96点  
第一行点处理完成。
在此期间处理第二行所需数据
读取螺线圈信号。在每次换项中取。。。。

出0入0汤圆

 楼主| 发表于 2010-2-4 10:16:39 | 显示全部楼层
我的这个程序完全可以用。因为与我这个程序所关联的产品已经在市场上销售。而且客户反映良好。

出0入0汤圆

 楼主| 发表于 2010-2-4 10:18:01 | 显示全部楼层
而且你说的思路我不敢苟同。

出0入0汤圆

发表于 2010-2-4 10:25:26 | 显示全部楼层
我来发一个完整的测试程序, 有些地方不是很完善.

(原文件名:打印机.jpg)

点击此处下载 Printer_Test_V0.0.rar


#include "CPU_Config.h"
#include "Printer.h"
#include "init.h"


#define StopMoto()   PORTE |= (1<<PE3)
#define StartMoto()  PORTE &=~(1<<PE3)    //低电平有效

#define ClrAllDot()  PORTF |= 0x0F
#define PrintDotA()  PORTF &=~(1<<PF0)    //低电平有效
#define PrintDotB()  PORTF &=~(1<<PF1)
#define PrintDotC()  PORTF &=~(1<<PF2)
#define PrintDotD()  PORTF &=~(1<<PF3)

#define RstIntOn()   EIMSK |= (1<<INT5)   //允许复位信号中断
#define RstIntOff()  EIMSK &=~(1<<INT5)   //禁止复位信号中断
#define TimIntOn()   EIMSK |= (1<<INT4)   //允许同步信号中断
#define TimIntOff()  EIMSK &=~(1<<INT4)   //禁止同步信号中断

__flash uchar ASCII[128][10] = {
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 0
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 1
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 2
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 3
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 4
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 5
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 6
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 7
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 8
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 9
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 10
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 11
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 12
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 13
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 14
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 15
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 16
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 17
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 18
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 19
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 20
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 21
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 22
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 23
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 24
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 25
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 26
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 27
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 28
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 29
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 30
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 31

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},// ' ' 0
{0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00},// '!' 1
{0x00,0x50,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00},// '"' 2
{0x00,0x00,0x00,0x50,0xF8,0x50,0x50,0xF8,0x50,0x00},// '#' 3
{0x00,0x00,0x20,0x78,0xA0,0x70,0x28,0xF0,0x20,0x00},// '$' 4
{0x00,0x00,0xC0,0xC0,0x10,0x20,0x40,0x98,0x18,0x00},// '%' 5
{0x00,0x00,0x40,0xA0,0xA0,0x40,0xA8,0x90,0x68,0x00},// '&' 6
{0x00,0x30,0x30,0x20,0x00,0x00,0x00,0x00,0x00,0x00},// ''' 7
{0x10,0x20,0x20,0x40,0x40,0x40,0x40,0x20,0x20,0x10},// '(' 8
{0x40,0x20,0x20,0x10,0x10,0x10,0x10,0x20,0x20,0x40},// ')' 9
{0x00,0x00,0x00,0x50,0x20,0xF8,0x20,0x50,0x00,0x00},// '*' 10
{0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00},// '+' 11
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0xC0},// ',' 12
{0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00},// '-' 13
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00},// '.' 14
{0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80},// '/' 15
{0x00,0x00,0x70,0x88,0x98,0xA8,0xC8,0x88,0x70,0x00},// '0' 16
{0x00,0x00,0x20,0x60,0xA0,0x20,0x20,0x20,0xF8,0x00},// '1' 17
{0x00,0x00,0x70,0x88,0x08,0x30,0x40,0x80,0xF8,0x00},// '2' 18
{0x00,0x00,0x70,0x88,0x08,0x30,0x08,0x88,0x70,0x00},// '3' 19
{0x00,0x00,0x10,0x30,0x50,0x90,0xF8,0x10,0x10,0x00},// '4' 20
{0x00,0x00,0xF8,0x80,0xF0,0x08,0x08,0x88,0x70,0x00},// '5' 21
{0x00,0x00,0x70,0x88,0x80,0xF0,0x88,0x88,0x70,0x00},// '6' 22
{0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x20,0x20,0x00},// '7' 23
{0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x00},// '8' 24
{0x00,0x00,0x70,0x88,0x88,0x78,0x08,0x88,0x70,0x00},// '9' 25
{0x00,0x00,0x00,0x60,0x60,0x00,0x60,0x60,0x00,0x00},// ':' 26
{0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x60,0x60,0xC0},// ';' 27
{0x00,0x00,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x00},// '<' 28
{0x00,0x00,0x00,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00},// '=' 29
{0x00,0x00,0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x00},// '>' 30
{0x00,0x70,0x88,0x08,0x10,0x20,0x20,0x00,0x20,0x00},// '?' 31
{0x00,0x00,0x70,0x88,0xA8,0xA8,0xB0,0x80,0x70,0x00},// '@' 32
{0x00,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00},// 'A' 33
{0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x00},// 'B' 34
{0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00},// 'C' 35
{0x00,0x00,0xF0,0x88,0x88,0x88,0x88,0x88,0xF0,0x00},// 'D' 36
{0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00},// 'E' 37
{0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0x00},// 'F' 38
{0x00,0x00,0x70,0x88,0x80,0x80,0x98,0x88,0x70,0x00},// 'G' 39
{0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00},// 'H' 40
{0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00},// 'I' 41
{0x00,0x00,0x08,0x08,0x08,0x08,0x88,0x88,0x70,0x00},// 'J' 42
{0x00,0x00,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00},// 'K' 43
{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00},// 'L' 44
{0x00,0x00,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x00},// 'M' 45
{0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x00},// 'N' 46
{0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00},// 'O' 47
{0x00,0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x00},// 'P' 48
{0x00,0x00,0x70,0x88,0x88,0x88,0xA8,0x90,0x68,0x00},// 'Q' 49
{0x00,0x00,0xF0,0x88,0x88,0xF0,0xA0,0x90,0x88,0x00},// 'R' 50
{0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00},// 'S' 51
{0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x00},// 'T' 52
{0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00},// 'U' 53
{0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x50,0x20,0x00},// 'V' 54
{0x00,0x00,0x88,0x88,0x88,0xA8,0xA8,0xD8,0x88,0x00},// 'W' 55
{0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x00},// 'X' 56
{0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x00},// 'Y' 57
{0x00,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x00},// 'Z' 58
{0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70},// '[' 59
{0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x08,0x08},// '\' 60
{0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70},// ']' 61
{0x00,0x00,0x00,0x00,0x20,0x50,0x88,0x00,0x00,0x00},// '^' 62
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC},// '_' 63
{0x00,0x30,0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00},// '`' 64
{0x00,0x00,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x00},// 'a' 65
{0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0xF0,0x00},// 'b' 66
{0x00,0x00,0x00,0x00,0x78,0x80,0x80,0x80,0x78,0x00},// 'c' 67
{0x00,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x00},// 'd' 68
{0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x70,0x00},// 'e' 69
{0x00,0x00,0x30,0x40,0x40,0xF0,0x40,0x40,0x40,0x00},// 'f' 70
{0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08},// 'g' 71
{0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0x00},// 'h' 72
{0x00,0x00,0x20,0x00,0x60,0x20,0x20,0x20,0x70,0x00},// 'i' 73
{0x00,0x00,0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x10},// 'j' 74
{0x00,0x00,0x80,0x80,0x88,0x90,0xE0,0x90,0x88,0x00},// 'k' 75
{0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00},// 'l' 76
{0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x00},// 'm' 77
{0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x00},// 'n' 78
{0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00},// 'o' 79
{0x00,0x00,0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80},// 'p' 80
{0x00,0x00,0x00,0x00,0x78,0x88,0x88,0x88,0x78,0x08},// 'q' 81
{0x00,0x00,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x00},// 'r' 82
{0x00,0x00,0x00,0x00,0x78,0x80,0x70,0x08,0xF0,0x00},// 's' 83
{0x00,0x00,0x20,0x20,0x78,0x20,0x20,0x20,0x18,0x00},// 't' 84
{0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x00},// 'u' 85
{0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x00},// 'v' 86
{0x00,0x00,0x00,0x00,0x88,0xA8,0xA8,0xA8,0x50,0x00},// 'w' 87
{0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x00},// 'x' 88
{0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x78,0x08},// 'y' 89
{0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x40,0xF8,0x00},// 'z' 90
{0x00,0x10,0x20,0x20,0x20,0xC0,0x20,0x20,0x20,0x10},// '{' 91
{0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20},// '|' 92
{0x00,0x80,0x40,0x40,0x40,0x30,0x40,0x40,0x40,0x80},// '}' 93
{0x00,0x00,0x00,0x00,0x68,0xB0,0x00,0x00,0x00,0x00},// '~' 94
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},// '' 95
};

//uchar * PtrPrint[16];
//PrtPrint[1] = ASCII[32];
__flash uchar code[16][10] = {
{0x00,0x00,0x70,0x88,0x98,0xA8,0xC8,0x88,0x70,0x00},
{0x00,0x00,0x20,0x60,0xA0,0x20,0x20,0x20,0xF8,0x00},
{0x00,0x00,0x70,0x88,0x08,0x30,0x40,0x80,0xF8,0x00},
{0x00,0x00,0x70,0x88,0x08,0x30,0x08,0x88,0x70,0x00},

{0x00,0x00,0x10,0x30,0x50,0x90,0xF8,0x10,0x10,0x00},
{0x00,0x00,0xF8,0x80,0xF0,0x08,0x08,0x88,0x70,0x00},
{0x00,0x00,0x70,0x88,0x80,0xF0,0x88,0x88,0x70,0x00},
{0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x20,0x20,0x00},

{0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x00},
{0x00,0x00,0x70,0x88,0x88,0x78,0x08,0x88,0x70,0x00},
{0x00,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00},
{0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x00},

{0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00},
{0x00,0x00,0xF0,0x88,0x88,0x88,0x88,0x88,0xF0,0x00},
{0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00},
{0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0x00},
};
void Print_Init(void)
{
   DDRF |= ((1<<PF0)|(1<<PF1)|(1<<PF2)|(1<<PF3));
   DDRE |= (1<<PE3);
   DDRE &= ~((1<<PE4)|(1<<PE5));
   PORTE &= ~((1<<PE4)|(1<<PE5));
   RstIntOff();
   TimIntOff();
   ClrAllDot();
   StopMoto();   
}
void PrintStart(void)
{
   StartMoto();
   ClrAllDot();
   RstIntOn();
   TimIntOn();
}
void PrintStop(void)
{
   StopMoto();
   ClrAllDot();
   RstIntOff();
   RstIntOff();
}

uchar __flash *CodePtr[16];
uchar TimingCount = 0;
uchar PrintFlag = 0;

#pragma vector=INT4_vect
__interrupt void TimingDectInt(void)
{
   uchar x, z, w;

   static uchar y = 0;
   
   if (PrintFlag == 2)
   {
      x = TimingCount/24;
      w = TimingCount%4;      //对应ABCD四个打印头
      z = (TimingCount/4)%6;  //每个字符点阵移位
      
      ClrAllDot();

      //if ((TimingCount<96)&&(code[4*w+x][y] & (0x80>>z)))   //判断该点是否需要打印
      if ((TimingCount<96) && (*(CodePtr[4*w+x]+y)&(0x80>>z)) )
      {
         switch (w)
         {
         case 0:
            PrintDotA();
            break;
         case 1:
            PrintDotB();
            break;
         case 2:
            PrintDotC();
            break;
         case 3:
            PrintDotD();
            break;
         default:
            break;
         }
      }
   }
   TimingCount++;
   if (TimingCount>167)  //判断一行到头
   {
      TimingCount = 0;
      y++;
      if (y == 10)
      {
         PrintStop();
         PrintFlag = 0;
         y = 0;
      }
   }

}

#pragma vector=INT5_vect
__interrupt void ResetDectInt(void)
{  
   if ((PrintFlag==0)&&(TimingCount == 0x2B))
   {
      PrintFlag = 1;
   }
   if ((PrintFlag==1)&&(TimingCount == 0x7D))
   {
      PrintFlag = 2;
      RstIntOff();
      TimIntOn();
   }
   TimingCount = 0;
}

void PrintLine(uchar *str)
{
   uchar c=0, i=0;
      
   while (*str)
   {
      c = *str++;
      CodePtr[i++] = ASCII[c];
   }
   for (; i< 16; i++)
   {
      CodePtr = ASCII[' '];
   }

   PrintStart();
}

void main(void)
{
   mcu_init();
   Print_Init();
   //TransmitLine("Uart0 Test...");
   //PrintStart();

   while(1)
   {
      PrintLine("Hello!Print!");
      delay_ms(2000);
   }
}

出0入0汤圆

发表于 2010-5-31 22:00:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-1 09:18:51 | 显示全部楼层
void PrintOneLineChar(BYTE data *pbtData)
{
    register BYTE i;
    register BYTE j;
    register BYTE k;
    BOOL biDot1;
    BOOL biDot2;
    BOOL biDot3;
    BOOL biDot4;

    DR=FALSE;
    FindLeft();
    for(i=0;i<8;i++)//打8点行
    {
        while(SY){};
        for(j=0;j<4;j++)//每根针打4个字
        {
            for(k=0;k<6;k++)//一根针打6个点
            {
                biDot1=FindDot(pbtData[j],i,k);//找某个字的第几个点
                biDot2=FindDot(pbtData[j+4],i,k);
                biDot3=FindDot(pbtData[j+8],i,k);
                biDot4=FindDot(pbtData[j+12],i,k);
                while(~PLUS){}; //上升沿击打
                PIND=TRUE;
                PINA=~biDot1;
                while(PLUS){}; //下降有沿击打
                PINA=TRUE;
                PINB=~biDot2;
                while(~PLUS){};
                PINB=TRUE;
                PINC=~biDot3;
                while(PLUS){};
                PINC=TRUE;
                PIND=~biDot4;
             }
        }
    }
    PIND=TRUE;
    DR=TRUE;
}

出0入0汤圆

发表于 2011-6-8 21:56:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-5-23 09:11:13 | 显示全部楼层
mark重复发帖,

出0入0汤圆

发表于 2017-8-29 10:23:24 | 显示全部楼层
多谢楼主,参考参考!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 09:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表