147 lines
3.3 KiB
C
147 lines
3.3 KiB
C
/*
|
|
* lcd.c
|
|
*
|
|
* Created on: Jul 2, 2024
|
|
* Author: 10425
|
|
*/
|
|
#include "lcd.h"
|
|
|
|
void LCD_setInt(uint16_t addr,uint16_t data)
|
|
{
|
|
while( __HAL_UART_GET_FLAG(&huart3,UART_FLAG_TXE) != SET );
|
|
HAL_Delay(1);
|
|
uint8_t cnt =0;
|
|
TXBuff[cnt++] = 0xA5;
|
|
TXBuff[cnt++] = 0x5A;
|
|
TXBuff[cnt++] = 0x05; //指令字节长度
|
|
TXBuff[cnt++] = 0x82; //指令
|
|
TXBuff[cnt++] = addr>>8; //变量地址
|
|
TXBuff[cnt++] = addr&0xFF;
|
|
TXBuff[cnt++] = data>>8; //数据
|
|
TXBuff[cnt++] = data&0xFF;
|
|
HAL_UART_Transmit_DMA(&huart3, TXBuff, cnt);
|
|
}
|
|
|
|
|
|
void LCD_setChar(uint16_t addr,uint8_t*data,uint8_t len)
|
|
{
|
|
while( __HAL_UART_GET_FLAG(&huart3,UART_FLAG_TXE) != SET );
|
|
HAL_Delay(1);
|
|
uint8_t cnt =0;
|
|
TXBuff[cnt++] = 0xA5;
|
|
TXBuff[cnt++] = 0x5A;
|
|
TXBuff[cnt++] = 5+len; //指令字节长度
|
|
TXBuff[cnt++] = 0x82; //指令
|
|
TXBuff[cnt++] = addr>>8; //变量地址
|
|
TXBuff[cnt++] = addr&0xFF;
|
|
for(uint8_t i=0;i<len;i++)
|
|
{
|
|
TXBuff[cnt++] = data[i]; //数据
|
|
}
|
|
TXBuff[cnt++] = 0xFF; //数据
|
|
TXBuff[cnt++] = 0xFF;
|
|
HAL_UART_Transmit_DMA(&huart3, TXBuff, cnt);
|
|
}
|
|
|
|
|
|
void LCD_setLine(uint16_t *data,uint8_t length)
|
|
{
|
|
while( __HAL_UART_GET_FLAG(&huart3,UART_FLAG_TXE) != SET );
|
|
HAL_Delay(1);
|
|
uint16_t cnt =0;
|
|
TXBuff[cnt++] = 0xA5;
|
|
TXBuff[cnt++] = 0x5A;
|
|
TXBuff[cnt++] = length*2+2; //指令字节长度
|
|
TXBuff[cnt++] = 0x84; //曲线显示指令
|
|
TXBuff[cnt++] = 0x01; //使用0通道
|
|
for(uint8_t i =0;i<length;i++)
|
|
{
|
|
TXBuff[cnt++]= data[i]>>8;
|
|
TXBuff[cnt++]= data[i]&0xFF;
|
|
}
|
|
HAL_UART_Transmit_DMA(&huart3, TXBuff, cnt);
|
|
}
|
|
|
|
void LCD_setLine_ISR(uint16_t *data,uint8_t length)
|
|
{
|
|
while( __HAL_UART_GET_FLAG(&huart3,UART_FLAG_TXE) != SET );
|
|
uint16_t cnt =0;
|
|
TXBuff[cnt++] = 0xA5;
|
|
TXBuff[cnt++] = 0x5A;
|
|
TXBuff[cnt++] = length*2+2; //指令字节长度
|
|
TXBuff[cnt++] = 0x84; //曲线显示指令
|
|
TXBuff[cnt++] = 0x01; //使用0通道
|
|
for(uint8_t i =0;i<length;i++)
|
|
{
|
|
TXBuff[cnt++]= data[i]>>8;
|
|
TXBuff[cnt++]= data[i]&0xFF;
|
|
}
|
|
HAL_UART_Transmit_DMA(&huart3, TXBuff, cnt);
|
|
}
|
|
|
|
void LCD_setFont(uint16_t addr,uint8_t data)
|
|
{
|
|
while( __HAL_UART_GET_FLAG(&huart3,UART_FLAG_TXE) != SET );
|
|
HAL_Delay(1);
|
|
uint8_t cnt =0;
|
|
TXBuff[cnt++] = 0xA5;
|
|
TXBuff[cnt++] = 0x5A;
|
|
TXBuff[cnt++] = 9; //指令字节长度
|
|
TXBuff[cnt++] = 0x82; //指令
|
|
TXBuff[cnt++] = addr>>8; //变量地址
|
|
TXBuff[cnt++] = addr&0xFF;
|
|
if(data == 0)
|
|
{
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 1;
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 2;
|
|
}
|
|
else if(data == 1)
|
|
{
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 3;
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 4;
|
|
}
|
|
else if(data == 2)
|
|
{
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 5;
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 6;
|
|
}
|
|
else if(data == 3)
|
|
{
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 7;
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 8;
|
|
}
|
|
else if(data == 4)
|
|
{
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 9;
|
|
TXBuff[cnt++] = 0;
|
|
TXBuff[cnt++] = 10;
|
|
}
|
|
TXBuff[cnt++] = 0xFF; //数据
|
|
TXBuff[cnt++] = 0xFF;
|
|
HAL_UART_Transmit_DMA(&huart3, TXBuff, cnt);
|
|
}
|
|
|
|
//蜂鸣器
|
|
void LCD_setBell(uint16_t data)
|
|
{
|
|
while( __HAL_UART_GET_FLAG(&huart3,UART_FLAG_TXE) != SET );
|
|
HAL_Delay(1);
|
|
uint8_t cnt =0;
|
|
TXBuff[cnt++] = 0xA5;
|
|
TXBuff[cnt++] = 0x5A;
|
|
TXBuff[cnt++] = 0x03; //指令字节长度
|
|
TXBuff[cnt++] = 0x80; //指令
|
|
TXBuff[cnt++] = 0x02; //变量地址
|
|
TXBuff[cnt++] = data/10;
|
|
HAL_UART_Transmit_DMA(&huart3, TXBuff, cnt);
|
|
}
|