/** ****************************************************************************** * @file LCD.c * @author jjj * @version V1.0.0 * @date 06/13/2022 * @brief ****************************************************************************** * * *

© COPYRIGHT 2022

****************************************************************************** **/ #include "LCD.h" const uint8_t SegCode[11]= { 0x5f, //0 0x06, //1 0x3d, //2 0x2f, //3 0x66, //4 0x6b, //5 0x7b, //6 0x0e, //7 0x7f, //8 0x6f, //9 0x20 //- }; const uint8_t LCDAddr[11][2]={ {13,12}, {15,14}, {17,16}, {19,18}, {21,20}, {10,11}, {8,9}, {6,7}, {4,5}, {2,3}, {0,1} }; extern void Delay_us(uint32_t us); extern uint32_t gFunTrace; /** * @function AppLCDInit * @brief LCD³õʼ»¯ */ void LCD_Init(void) { GPIO_InitTypeDef GPIO_Board_Init; memset((void *)&GPIO_Board_Init,0,sizeof(GPIO_InitTypeDef)); GPIO_Board_Init.Pin = GPIO_PIN_5|GPIO_PIN_6; GPIO_Board_Init.Pull = GPIO_NOPULL; GPIO_Board_Init.Speed = GPIO_FAST_SPEED; GPIO_Board_Init.Otype = GPIO_MODE_OUTPUT_PP; GPIO_Board_Init.Mode = GPIO_MODE_OUT; GPIO_Init(GPIOB, &GPIO_Board_Init); GPIO_Board_Init.Pin = GPIO_PIN_3; GPIO_Board_Init.Pull = GPIO_NOPULL; GPIO_Board_Init.Speed = GPIO_FAST_SPEED; GPIO_Board_Init.Otype = GPIO_MODE_OUTPUT_PP; GPIO_Board_Init.Mode = GPIO_MODE_OUT; GPIO_Init(GPIOE, &GPIO_Board_Init); //LCD backlight GPIO_Board_Init.Pin = GPIO_PIN_12; GPIO_Board_Init.Pull = GPIO_NOPULL; GPIO_Board_Init.Speed = GPIO_LOW_SPEED; GPIO_Board_Init.Otype = GPIO_MODE_OUTPUT_PP; GPIO_Board_Init.Mode = GPIO_MODE_OUT; GPIO_Board_Init.SMIT = GPIO_INPUTSCHMIT_DISABLE; GPIO_Init(GPIOD, &GPIO_Board_Init); GPIO_ResetBits(GPIOD,GPIO_PIN_12); LCD_CS_H; LCD_WR_H; LCD_DAT_H; TMC_Delay(500); LCD_SendCmd(0x52); LCD_SendCmd(0X30); LCD_SendCmd(0X00); LCD_SendCmd(0X0A); LCD_SendCmd(0X02); LCD_SendCmd(0X06); LCD_SendCmd(BIAS1_3_4COM); LCD_SendCmd(SYSEN); LCD_SendCmd(LCDON); } /** * @function LCD_SendCmd * @brief */ void LCD_SendCmd(uint8_t Cmd) { LCD_CS_L; Delay_us(1); LCD_SendBit(0x80,3); LCD_SendBit(Cmd,9); LCD_CS_H; Delay_us(1); } /** * @function LCD_SendBit * @brief */ void LCD_SendBit(uint8_t dat,uint8_t cnt) { u8 i; for(i=0; i>=1; } } /** * @function LCD_Erase * @brief */ void LCD_Erase(void) { uint8_t i; gFunTrace = 20; LCD_CS_L; LCD_SendBit(0xa0,3); LCD_SendBit(0,6);//start address for(i=0;i>4,4); LCD_CS_H; Delay_us(1); gFunTrace = 22; } /** * @function LCD_Display * @brief */ void LCD_Display(uint8_t *p,uint8_t num) { uint8_t i,sCode; LCD_Erase(); gFunTrace = 23; for(i=0;i>4,4); // LCD_CS_H; Delay_us(1); } gFunTrace = 24; } /** * @function LCD_CharDisplay * @brief */ void LCD_CharDisplay(char *p,uint8_t num) { uint8_t i,sCode,j; LCD_Erase(); gFunTrace = 25; j = 0; for(i=0;i='0' && p[i]<='9')sCode = p[i] - '0'; else continue; sCode = SegCode[sCode]; LCD_CS_L; LCD_SendBit(0xa0,3); LCD_SendBit(LCDAddr[j][0]<<2,6); LCD_SendDataBit(sCode,4); // LCD_CS_H; Delay_us(1); LCD_CS_L; LCD_SendBit(0xa0,3); LCD_SendBit(LCDAddr[j][1]<<2,6); LCD_SendDataBit(sCode>>4,4); // LCD_CS_H; Delay_us(1); j++; if(j==11)break; } gFunTrace = 26; } void LCD_Display_test(uint8_t p) { uint8_t i,sCode; LCD_Erase(); for(i=0;i<11;i++) { sCode = p; LCD_CS_L; LCD_SendBit(0xa0,3); LCD_SendBit(LCDAddr[i][0]<<2,6); LCD_SendDataBit(sCode,4); // LCD_CS_H; Delay_us(1); LCD_CS_L; LCD_SendBit(0xa0,3); LCD_SendBit(LCDAddr[i][1]<<2,6); LCD_SendDataBit(sCode>>4,4); // LCD_CS_H; Delay_us(1); } }