📄 printertest.c
字号:
* 说 明:A0=1 发送数据
****************************************************************************/
void GUI_SendDat( uint8 Dat )
{
uint8 Data;
Data = ~Dat;
IO0DIR = LCDDB|LCDCS | LCDA0 | LCDWR | LCDRD;
IO0SET = LCDA0;
IO0CLR = LCDCS; //片选lcd,低电平有效
IO0CLR = LCDWR; //控制lcd写数据
IO0SET = LCDRD;
if(Dat==0x00)
{
IO0CLR=(0XFF<<LCDNUM);
}
else
{
IO0SET = Dat << LCDNUM; // 从P0.10~P0.17输出
IO0CLR = (Data << LCDNUM);
}
IO0SET = LCDCS;
IO0SET = LCDRD;
IO0SET = LCDWR; // LCDWR = 1
IO0CLR = LCDDB;
}
/****************************************************************************
* 名 称:GUI_LcdInit()
* 功 能:初始化lcd
* 入口参数:无
* 出口参数:无
* 说 明:目标器件为:LMS0192B-1型液晶屏
****************************************************************************/
void GUI_LcdInit(void)
{
GUI_SendCom( 0xAB );
GUI_SendCom( 0xA2 );
GUI_SendCom( 0xA1 );
GUI_SendCom( 0xC8 );
GUI_SendCom( 0x40 );
GUI_SendCom( 0xa4 );
GUI_SendCom( 0xa6 );
GUI_SendCom( 0x2F );
GUI_SendCom( 0x27 );
GUI_SendCom( 0x81 );
GUI_SendCom( 0x13 );
GUI_SendCom( 0xAF );
GUI_SendCom( 0xB0 );
GUI_SendCom( 0x12 );
GUI_SendCom( 0x04 );
}
/****************************************************************************
* 名 称:GUI_WriteWord_1616()
* 功 能: 在屏上指定页和指定列写一个16*16的字符
* 入口参数:Page :起始页;
* Col :起始列;
* Word :字符的起始数据指针
* Reverse :反现标志,非零有效
* 出口参数:无
* 说 明:目标器件为:LMS0192B-1型液晶屏
****************************************************************************/
void GUI_WriteWord_1616(uint8 Page,uint8 Col,uint8 *Word,uint8 Reverse)
{
uint8 ColData,PageData;
uint8 ColRam;
if((Col<159)&&(Page<7))
{
ColRam=Col+0x24;
for(ColData=0;ColData<16;ColData++) //列循环。
{
for(PageData=0;PageData<2;PageData++) //跳上下页。
{
GUI_SendCom(0xb0+Page+PageData);
GUI_SendCom(0x00|((ColData+ColRam)&0x0f));
GUI_SendCom(0x10|((ColData+ColRam)>>4));
if(Reverse)
GUI_SendDat(~Word[16*PageData+ColData]);
else
GUI_SendDat(Word[16*PageData+ColData]);
}
}
}
}
/****************************************************************************
* 名 称:GUI_WriteARowWord_1616()
* 功 能: 在屏上指定页和指定列写一行16*16的字符
* 入口参数: Page :起始页;
* Col :起始列;
* Word :字符的起始数据指针
* Reverse :反显标志,非零有效
* Num :字符个数
* 出口参数:无
* 说 明:
****************************************************************************/
void GUI_WriteARowWord_1616(uint8 Page,uint8 Col,uint8 *Word,uint8 Reverse,uint8 Num)
{
uint8 Temp;
for(Temp=0;Temp<Num;Temp++)
{
GUI_WriteWord_1616(Page,Col+Temp*16,Word+Temp*32,Reverse);
}
}
/****************************************************************************
* 名 称:GUI_ClrScreen()
* 功 能: 整屏清除
* 入口参数:无
* 出口参数:无
* 说 明:目标器件为:LMS0192B-1型液晶屏
****************************************************************************/
void GUI_ClrScreen(void)
{
uint8 Page,Col;
for(Page=0;Page<=7;Page++)
{
GUI_SendCom(0xb0 + Page);
GUI_SendCom(0x12);
GUI_SendCom(0x04);
for(Col=0;Col<=159;Col++)
{
GUI_SendDat(0x00);
}
}
}
/****************************************************************************
* 名 称:PrintFactoryInf()
* 功 能: 打印厂家信息
* 入口参数:无
* 出口参数:无
* 说 明:目标器件为:MP-T153-PC型微型打印机
****************************************************************************/
void PrintFactoryInf(void)
{
PrintWords(PrintArmy); //"中国人民解放军"
PrintByte(0x0d); //回车
PrintWords(PrintFactory); //“第XXXXX工厂”
PrintByte(0x0d); //回车
PrintChars(PrintDeviceModel); //“YWM-1“
PrintWords(PrintDeviceType); //“型误码仪”
PrintByte(0x0d); //回车
PrintChars(PrintLineShort); //“-------------”
PrintByte(0x0d); //回车
}
/****************************************************************************
* 名 称:PrintTableHead()
* 功 能: 打印表头
* 入口参数:无
* 出口参数:无
* 说 明:目标器件为:MP-T153-PC型微型打印机
****************************************************************************/
void PrintTableHead(void)
{
PrintByte(0x1b);
PrintByte(0x44);
DelayNS(2);
PrintByte(0x01); //位置3
PrintByte(0x0a); //位置15
//PrintByte(0x0d); //位置26
//PrintByte(0x15); //位置35
PrintByte(0x14); //位置41
PrintByte(0x19); //位置45
PrintByte(0x00); //造表命令结束
PrintByte(0x09); //执行水平造表
PrintChars(PrintBER); //"BER"
PrintByte(0x09); //执行水平造表
PrintChars(PrintBEN); //"BEN"
PrintByte(0x09); //执行水平造表
//PrintChars(PrintES); //"ES"
//PrintByte(0x09); //执行水平造表
//PrintChars(PrintSES); //"SES"
//PrintByte(0x09); //执行水平造表
PrintChars(PrintESR); //"ES%"
PrintByte(0x09); //执行水平造表
PrintChars(PrintSESR); //"SES%"
PrintByte(0x0d); //回车
PrintChars(PrintLineLong); //“--------------------------”
PrintByte(0x0d); //回车
}
/****************************************************************************
* 名 称:PrintTestExample()
* 功 能: 打印测试用例,
* 入口参数:无
* 出口参数:无
* 说 明:目标器件为:MP-T153-PC型微型打印机
****************************************************************************/
void PrintTestExample(void)
{
PrintByte(0x09); //执行水平造表
PrintChars(PrintTestBER); //"BER"
PrintByte(0x09); //执行水平造表
PrintChars(PrintTestBEN); //"BEN"
PrintByte(0x09); //执行水平造表
//PrintChars(PrintES); //"ES"
//PrintByte(0x09); //执行水平造表
//PrintChars(PrintSES); //"SES"
//PrintByte(0x09); //执行水平造表
PrintChars(PrintTestESR); //"ES%"
PrintByte(0x09); //执行水平造表
PrintChars(PrintTestSESR); //"SES%"
PrintByte(0x0d); //回车
}
/****************************************************************************
* 名称:main()
* 功能:
****************************************************************************/
int main(void)
{
PINSEL0 = 0x00000000; // 设置所有管脚连接GPIO
PINSEL1 = 0x00000000;
PINSEL2 = 0x00000004;
IO1DIR = FPGA_RESET|MPU_TEST|LCDBACKLIGHT; // 设置FPGA_RESET和MPU_TEST控制口为输出
IO1SET = FPGA_RESET;
DelayNS(1000);
IO1CLR = FPGA_RESET; // 复位FPGA
IO1SET=LCDBACKLIGHT; // 点亮LCD背光
GUI_LcdInit();
//IO1CLR=LCDBACKLIGHT; // 关闭LCD背光
GUI_ClrScreen();
GUI_WriteARowWord_1616(1,46,test[0],0,3);
while(1)
{
DelayNS(50000);
//PrintFactoryInf(); //打印厂家信息
PrintTableHead(); //打印表
PrintTestExample();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -