/* * 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>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>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); }