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

📄 mbb225_2.c

📁 基于2104的热敏打印机控制程序
💻 C
📖 第 1 页 / 共 5 页
字号:
/*--  文字:  能  --*/
unsigned char code char_neng[] ={
0x20,0x40,0x30,0x40,0x24,0x4C,0x42,0x70,0xFF,0x44,0x42,0x46,0x00,0x7C,0x7E,0x00,
0x42,0x40,0x7E,0x4C,0x42,0x70,0x7E,0x40,0x42,0x44,0x42,0x46,0x4A,0x3C,0x44,0x00,
};

/*--  文字:  言  --*/
unsigned char code char_yan[] ={
0x02,0x00,0x01,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x1F,0xF0,
0x00,0x00,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
};
/*--  文字:  择  --*/
unsigned char code char_ze[] ={
0x20,0x00,0x23,0xF8,0x21,0x10,0xFC,0xA0,0x20,0x40,0x20,0xA0,0x2B,0x58,0x30,0x46,
0x63,0xF8,0xA0,0x40,0x20,0x40,0x27,0xFE,0x20,0x40,0x20,0x40,0xA0,0x40,0x40,0x40,
};
/*--  文字:  体  --*/
unsigned char code char_tii[] ={
0x10,0x40,0x18,0x40,0x10,0x40,0x20,0x40,0x37,0xFC,0x60,0xC0,0xA0,0xE0,0x21,0x60,
0x21,0x50,0x22,0x48,0x24,0x4E,0x2B,0xF4,0x20,0x40,0x20,0x40,0x20,0x40,0x00,0x00,
};
/*--  文字:  数  --*/
unsigned char code char_shuu[] ={
0x08,0x20,0x49,0x30,0x2A,0x20,0x1C,0x20,0xFF,0x7E,0x1C,0x44,0x2B,0x44,0x48,0xC4,
0x08,0x28,0xFF,0x28,0x12,0x10,0x34,0x10,0x0C,0x28,0x32,0x4E,0xC0,0x84,0x00,0x00,
};
/*--  文字:  语  --*/
unsigned char code char_yuu[] ={
0x40,0x00,0x23,0xFC,0x30,0x40,0x20,0x40,0x03,0xF8,0xE0,0x88,0x20,0x88,0x27,0xFE,
0x20,0x00,0x21,0xF8,0x21,0x08,0x21,0x08,0x29,0x08,0x31,0xF8,0x21,0x08,0x00,0x00,
};
/*--  文字:  选  --*/
unsigned char code char_xuann[] ={
0x00,0x40,0x22,0x40,0x12,0x40,0x13,0xF8,0x04,0x40,0x00,0x40,0xF7,0xFC,0x11,0x20,
0x11,0x20,0x12,0x24,0x12,0x24,0x14,0x1C,0x10,0x00,0x28,0x00,0x47,0xFE,0x00,0x00,
};
void delay0()                      //延时约 ? mS
{
    register unsigned char i,j;

    for(i=0;i<0x64;i++)
    {
        for(j=0;j<0xff;j++);
    }
}

void delay1()                      //延时约 ? mS
{
    register unsigned char i,j;

    for(i=0;i<0x19;i++)
    {
        for(j=0;j<0xff;j++);
    }
}

void delay2()                      //延时约 ? mS
{
    register unsigned char h,i,j;

    for(h=0;h<0x14;h++)
    {
    	for(i=0;i<0xff;i++)
    	{
        	for(j=0;j<0xff;j++);
    	}
	}
}

void delay3()                      //延时约 ? mS
{
    register unsigned char i;

    for(i=0;i<0x96;i++);
}

void delay4()                      //延时约 ? mS
{
    register unsigned char i,j,k;

    for(i=0;i<0x02;i++)
    {
        for(j=0;j<0xff;j++)
        {
        	for(k=0;k<0xff;k++);
        }
    }
}

//向LCD内部控制器发命令
void LCD_order(unsigned char Order_Code)
{
    CW_ADD = Order_Code;
}

//向LCD内部控制器写入数据
void LCD_write(unsigned char Data_Code)
{
   	DW_ADD = Data_Code;
}

//读当前光标处字符码
unsigned char LCD_read()
{
    char Data_code;

    Data_code = DR_ADD;
    return(Data_code);
}

//屏幕的开与关
void Screen_switch(unsigned char mode_code,unsigned char control_code)
{
	//mode_code -为开或关的命令码(0x59 或 0x58)
	//control_code -控制方式码

	LCD_order(mode_code);
	LCD_write(control_code);
}

//系统初始化
void Init_system()
{
	unsigned char i;

	LCD_order(0x40);
	for(i=0;i<8;i++)
	{
		LCD_write(System_set[i]);
	}
	LCD_order(0x44);
	for(i=0;i<10;i++)
	{
		LCD_write(Scroll_set[i]);
	}
	LCD_order(0x5a);
	LCD_write(0x00);
	LCD_order(0x5b);
	LCD_write(0x0f);
	Screen_switch(0x59,0x00);
}

//锁定光标位置
void Locate_cursor(unsigned char high_bit,unsigned char low_bit)
{
	LCD_order(0x46);
	LCD_write(low_bit);
	LCD_write(high_bit);
}

//清全屏幕
void LCD_cls()
{
    unsigned char i,j;

	LCD_order(0x4c);
	Locate_cursor(0x00,0x00);
	LCD_order(0x42);
	for(i=0;i<240;i++)
	{
		for(j=0;j<40;j++) LCD_write(0x00);
	}

}

//图形模式下屏幕锁定光标
void Graph_locate(unsigned int row,unsigned char column)
{
	//row-行(以像素为单位)  column-列(以字节为单位)
	unsigned int address;
	unsigned char high_bit,low_bit;

	address = ((row - 1) * 40) + (column - 1);
	high_bit = (address >> 8) & 0xff;
	low_bit = address & 0xff;
	Locate_cursor(high_bit,low_bit);
}

//图形模式下在指定行指定列显示指定大小的图形
void Picture_display(unsigned int row,unsigned char column,
					 unsigned char *picture_code,unsigned int width,
					 unsigned int high,unsigned char mode)
{
	//row-行(以像素为单位)  column-列(以字节为单位)  *picture_code-图形数组
	//width-图形宽度(以像素为单位)  high-图形高度(以像素为单位)
	//mode-显示模式:1-正常  2-反白
	unsigned char i,j,d_code;

	LCD_order(0x4c);
	width = width / 8;
	for(i=0;i<high;i++)
	{
		Graph_locate(row,column);
		LCD_order(0x42);
		for(j=0;j<width;j++)
		{
			d_code = *picture_code;
			if(mode==2)	d_code = ~d_code;
			LCD_write(d_code);
			picture_code++;
		}
		row++;
	}
}

// 图形模式下在指定行指定列填充一定的矩形区域
void Fill_area(unsigned char row,unsigned char column,unsigned char width,
               unsigned char high,unsigned char mode_code)
{
	// row-行(以像素为单位)  column-列(以字节为单位)
	// width-区域宽度(以字节为单位)  high-区域高度(以像素为单位)
	// mode_code-填充方式码
	unsigned char i,j;

	LCD_order(0x4c);
	for(i=0;i<high;i++)
	{
		Graph_locate(row,column);
		LCD_order(0x42);
		for(j=0;j<width;j++) LCD_write(mode_code);
		row++;
	}
}

//整屏棋盘格填充测试
void Test_grid(bit start_mode,unsigned char grid_code)
{
	unsigned char i,j,row,column;
	bit grid_mode = start_mode;

	Screen_switch(0x59,0x00);
	for(i=0;i<15;i++)
	{
		row = i * 16 + 1;
		for(j=0;j<20;j++)
		{
			column = j * 2 + 1;
			if(grid_mode==0)
			{
				Fill_area(row,column,2,16,0x4f);
			}else
			{
				Fill_area(row,column,2,16,grid_code);
			}
			grid_mode = ~grid_mode;
		}
		grid_mode = ~grid_mode;
	}
	Screen_switch(0x59,0x04);
}

// 屏幕中央走马灯显示测试
void Test_movegrid()
{
	unsigned char row,column,i,j;
	bit grid_mode = 0;

	for(j=0;j<15;j++)
	{
		Screen_switch(0x59,0x00);
		column = 8;
		row = 60;
		for(i=0;i<13;i++)
		{
			column = 8 + i * 2;
			if(grid_mode==0)
			{
				Fill_area(row,column,2,16,0xff);
			}else
			{
				Fill_area(row,column,2,16,0x00);
			}
			grid_mode = ~grid_mode;
		}
		column = 32;
		row = 97;
		for(i=0;i<3;i++)
		{
			row = 97 + i * 16;
			if(grid_mode==0)
			{
				Fill_area(row,column,2,16,0xff);
			}else
			{
				Fill_area(row,column,2,16,0x00);
			}
			grid_mode = ~grid_mode;
		}
		column = 32;
		row = 145;
		for(i=0;i<13;i++)
		{
			column = 32 - i * 2;
			if(grid_mode==0)
			{
				Fill_area(row,column,2,16,0xff);
			}else
			{
				Fill_area(row,column,2,16,0x00);
			}
			grid_mode = ~grid_mode;
		}
		column = 8;
		row = 100;
		for(i=0;i<3;i++)
		{
			row = 129 - i * 16;
			if(grid_mode==0)
			{
				Fill_area(row,column,2,16,0xff);
			}else
			{
				Fill_area(row,column,2,16,0x00);
			}
			grid_mode = ~grid_mode;
		}
		Screen_switch(0x59,0x04);
		delay4();
		delay4();
		grid_mode = ~grid_mode;
	}
}

//艺术化清显示屏
void Empty_screen(unsigned char mode)
{
	// 1-上向下方式   1-下向上方式  3-左往右方式  4-右往左方式
	unsigned char i,j,row,column;

	LCD_order(0x4c);
	if(mode==1)
	{
		row = 1;
		for(i=0;i<240;i++)
		{
			column = 1;
			Graph_locate(row,column);
			LCD_order(0x42);
			for(j=0;j<40;j++) LCD_write(0x00);
			delay1();
			row++;
		}
	}else if(mode==2)
	{
		row = 240;
		for(i=240;i>0;i--)
		{
			column = 1;
			Graph_locate(row,column);
			LCD_order(0x42);
			for(j=0;j<40;j++) LCD_write(0x00);
			delay1();
			row--;
		}
	}else if(mode==3)
	{
		for(column=1;column<=40;column++)
		{
			row = 1;
			for(i=0;i<240;i++)
			{
				Graph_locate(row,column);
				LCD_order(0x42);
				LCD_write(0x00);
				delay3();
				row++;
			}
		}
	}else if(mode==4)
	{
		for(column=40;column>=1;column--)
		{
			row = 1;
			for(i=0;i<240;i++)
			{
				Graph_locate(row,column);
				LCD_order(0x42);
				LCD_write(0x00);
				delay3();
				row++;
			}
		}
	}
}

// 滚屏效果
void Move_scroll(unsigned char move_mode)
{
	// move_mode: 1-上滚屏 2-下滚屏 3-左滚屏 4-右滚屏
	unsigned int address;
	unsigned char high_bit,low_bit,i,j;

	address = 0x0000;
	if((move_mode==1)||(move_mode==2))
	{
		for(i=0;i<240;i++)
		{
			high_bit = (address >> 8) & 0xff;
			low_bit = address & 0xff;
			LCD_order(0x44);
			LCD_write(low_bit);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -