📄 am12864.c
字号:
/*-- 文字: 1 --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0xC0,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x00,0x00,
/*-- 文字: 2 --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x00,0x80,0xC0,0x60,0x20,0x20,0x20,0x20,0x60,0xE0,0xC0,0xC0,0x00,0x00,
0x00,0x00,0x0F,0x0F,0x0C,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0x7F,0x3F,0x1F,0x00,
0x00,0x00,0x80,0xC0,0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00,0x80,0xF0,0xF0,0x00,
0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,
/*-- 文字: 3 --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x80,0xC0,0xC0,0x60,0x20,0x20,0x20,0x60,0xE0,0xC0,0xC0,0x00,0x00,0x00,
0x00,0x00,0x07,0x07,0x07,0x00,0x40,0x40,0x40,0xE0,0xF0,0xBF,0x9F,0x0F,0x00,0x00,
0x00,0x00,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0xFF,0xFF,0x3C,0x00,
0x00,0x00,0x00,0x01,0x01,0x03,0x02,0x02,0x02,0x02,0x03,0x01,0x01,0x00,0x00,0x00,
/*-- 文字: 4 --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xC0,0xF0,0x38,0x1E,0x07,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
0x00,0x08,0x0E,0x0F,0x09,0x08,0x08,0x08,0x08,0xFF,0xFF,0xFF,0xFF,0x08,0x08,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x07,0x07,0x07,0x07,0x04,0x04,0x04,
/*-- 文字: 5 --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x00,0x00,0xE0,0xE0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x00,
0x00,0x00,0x00,0xFC,0xFF,0x63,0x30,0x10,0x10,0x10,0x30,0x70,0xE0,0xC0,0x00,0x00,
0x00,0x00,0xF0,0xF0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x3F,0x00,
0x00,0x00,0x00,0x01,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x01,0x01,0x00,0x00,0x00,
/*-- 文字: 6 --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x60,0x20,0x20,0x20,0xE0,0xC0,0x80,0x00,
0x00,0x00,0xF0,0xFE,0xFF,0xC7,0xC0,0x60,0x20,0x20,0x20,0x60,0xE1,0xC1,0x81,0x00,
0x00,0x00,0x1F,0x7F,0xFF,0xE1,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x3F,
0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x02,0x02,0x02,0x03,0x01,0x01,0x00,0x00,
/*-- 文字: 7 --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x80,0xE0,0xE0,0xE0,0x60,0x60,0x60,0x60,0x60,0x60,0xE0,0xE0,0x60,0x00,
0x00,0x00,0x07,0x07,0x01,0x00,0x00,0x00,0xC0,0xF0,0x3C,0x0F,0x03,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFE,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 8 --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x00,0x80,0xC0,0xE0,0x60,0x20,0x20,0x20,0x60,0xE0,0xC0,0x80,0x00,0x00,
0x00,0x00,0x0F,0x1F,0xBF,0xF8,0xF0,0xE0,0xC0,0xC0,0xC0,0xF0,0x3F,0x1F,0x0F,0x00,
0x00,0x7C,0xFE,0xFF,0x83,0x01,0x00,0x00,0x00,0x01,0x03,0x87,0xFF,0xFE,0x7C,0x00,
0x00,0x00,0x00,0x01,0x01,0x03,0x02,0x02,0x02,0x02,0x03,0x01,0x01,0x00,0x00,0x00,
/*-- 文字: 9 --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x80,0xC0,0xC0,0x60,0x20,0x20,0x20,0x20,0x60,0xC0,0x80,0x00,0x00,0x00,
0x00,0x7E,0xFF,0xFF,0x81,0x00,0x00,0x00,0x00,0x00,0x80,0xC1,0xFF,0xFF,0xFC,0x00,
0x00,0x00,0xC0,0xC1,0xC3,0x03,0x02,0x02,0x02,0x83,0xC1,0xF9,0x7F,0x3F,0x07,0x00,
0x00,0x00,0x01,0x01,0x03,0x02,0x02,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: . --*/
/*-- 宋体24; 此字体下对应的点阵为:宽x高=17x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
void AM12864_Delay_Nmicrosecond(uint32 t)
{
uint32 i;
for(i=0;i<=t;i++);
}
/**************************************************************************************************
**Name:
**Function:
**Input:
**Output:
**************************************************************************************************/
void AM12864_Bl(uint8 state)
{
switch(state)
{
case (ON): // 开AM12864 EL 背光(AM12864_BL = Low)并延时等待上电稳定
AM12864_BL_SET() ;
break;
case (OFF): // 关AM12864 EL 背光(AM12864_BL = High)
AM12864_BL_CLR() ;
break;
}
}
/**************************************************************************************************
**Name:
**Function:
**Input:
**Output:
**************************************************************************************************/
void AM12864_SendByte(uint8 Dat)
{
uint8 SPIBitNum = 8; //置数据发送循环变量 初值
while (SPIBitNum--)
{
AM12864_SCK_CLR(); //SCK = LOW
switch (Dat & 0x80) //读取待发送位
{
case (0x80): // Bit7 = 1
AM12864_DI_SET(); //DI H
break;
case (0x00): // Bit7 = 0
AM12864_DI_CLR(); //DI L
break;
}
Dat<<=1;
AM12864_SCK_SET(); //SCK = HIGH
}
}
/**************************************************************************************************
**Name:
**Function:
**Input:
**Output:
**************************************************************************************************/
void AM12864_Reset(void)
{
AM12864_CS_SET(); // CS = High
AM12864_RST_SET(); // Rst = High
AM12864_Delay_Nmicrosecond(1000);
AM12864_RST_CLR(); // Rst = Low > 900nS
AM12864_Delay_Nmicrosecond(1000);
AM12864_RST_SET(); // Rst = High
}
/**************************************************************************************************
**Name:
**Function:
**Input:
**Output:
**************************************************************************************************/
void AM12864_SendData(uint8 Dat, uint8 OrderMode, uint8 DisplayMode)
{
AM12864_CS_SET(); // CS = High, 关片选
AM12864_SCK_SET(); // SCK = High
AM12864_CS_CLR(); // CS = Low, 开片选
switch(OrderMode)
{
case (AM12864_Dat):
AM12864_RS_SET(); //Write display data(RS = High)
switch (DisplayMode) // 发送显示命令或显示数据到AM12864
{
case (AM12864_Block): // 反白显示数据取反输出
AM12864_SendByte(~Dat);
break;
case (AM12864_Natural): // 正常显示数据直接输出
AM12864_SendByte(Dat);
break;
}
break;
case (AM12864_Cmd):
AM12864_RS_CLR(); //Write display order(RS = Low)
AM12864_SendByte(Dat);
break;
}
AM12864_CS_SET(); // CS = High
}
/**************************************************************************************************
**Name:
**Function:
**Input:
**Output:
**************************************************************************************************/
void AM12864_Clear(void)
{
uint8 ucLoop1;
uint8 ucLoop2;
for (ucLoop1 = 0; ucLoop1 < 8; ucLoop1++)
{
AM12864_SendData((0xB0 | ucLoop1), AM12864_Cmd, AM12864_Natural); // WRITE PAGE ADDRESS
AM12864_SendData(0x00, AM12864_Cmd, AM12864_Natural); // WRITE LOW ADDRESS
AM12864_SendData(0x10, AM12864_Cmd, AM12864_Natural); // WRITE HIGE ADDRESS
for (ucLoop2 = 0; ucLoop2 < 132; ucLoop2++)
{
AM12864_SendData(0, AM12864_Dat,0); // 清空显示缓冲区
}
}
}
/******************************************************************************************
* 函数名称 :
* 功能描述 :
* 参数名称 :
*
* 返回值 :
* 作者 :qsw
* 创建日期 :
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史-------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void AM12864_Init(void)
{
AM12864_PO_GPIO();
AM12864_PO_OUT();
AM12864_PO_SET();
AM12864_CS_GPIO();
AM12864_CS_OUT();
AM12864_RST_GPIO();
AM12864_RST_OUT();
AM12864_RS_GPIO();
AM12864_RS_OUT();
AM12864_DI_GPIO();
AM12864_DI_OUT();
AM12864_SCK_GPIO();
AM12864_SCK_OUT();
AM12864_BL_GPIO();
AM12864_BL_OUT();
AM12864_Reset();
AM12864_SendData(0xA0, AM12864_Cmd, AM12864_Natural); // ADC Select // 液晶显示方向定义
AM12864_SendData(0xC0, AM12864_Cmd, AM12864_Natural); // SHL Select // SHL 设置
AM12864_SendData(0xA2, AM12864_Cmd, AM12864_Natural); // Select AM12864 Bias //液晶显示屏偏压设置(1/9)
AM12864_SendData(0xA6, AM12864_Cmd, AM12864_Natural); // Reverse Display On/Off //液晶正/反显示模式开关
AM12864_SendData(0xA4, AM12864_Cmd, AM12864_Natural); // Entire Display On/Off //液晶完整显示模式开关
AM12864_SendData(0xE2, AM12864_Cmd, AM12864_Natural); // Reset //内部软件复位操作
AM12864_SendData(0x2F, AM12864_Cmd, AM12864_Natural); //Power Control // 设置供电控制
AM12864_SendData(0x25, AM12864_Cmd, AM12864_Natural);
AM12864_SendData(0x81, AM12864_Cmd, AM12864_Natural); // Reference Voltage Select // 设置电源参考电压选择(此值可调整屏幕对比度)
AM12864_SendData(0x25, AM12864_Cmd, AM12864_Natural);
AM12864_SendData(0x40, AM12864_Cmd, AM12864_Natural); // Initial Display Line // 初始化显示屏幕起始行为第"0" 行
AM12864_SendData(0xAF, AM12864_Cmd, AM12864_Natural); // Display On/Off //打开液晶显示屏幕开关
AM12864_Clear(); // 清空当前系统显示
}
/******************************************************************************************
* 函数名称 :
* 功能描述 :
* 参数名称 :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -