低钾会有什么症状| 常德有什么大学| 生日送什么| 哈工大全称是什么| 荨麻疹吃什么中药| 青少年膝盖痛什么原因| 晟这个字念什么| 舌头疼吃什么药好得快| 血糖高早餐吃什么| 什么泡酒让性功能最强| 四五天不排便是什么原因| 福禄寿的禄是什么意思| 阴历7月22什么日子| 处女座男和什么座最配对| 做妇科检查前需要注意什么| 狸是什么动物| 菠萝和凤梨有什么区别| 刻舟求剑的意思是什么| 高危妊娠是什么意思啊| 什么是尿毒症啊| 怀男孩和女孩有什么区别| 6是什么意思网络语言| 奥氮平片是什么药| 什么寒什么暖| 血小板平均体积偏高是什么意思| 唾液酸是什么| 广州有什么山| 胆结石不能吃什么| 奢侈品是什么意思| 什么的叫| 什么是乳酸堆积| 灭活疫苗是什么意思| 琬字五行属什么| 筋膜炎用什么药好| 龟头流脓小便刺痛吃什么药| 脑利钠肽前体值高预示什么| 一诺千金什么意思| 甲氧氯普胺片又叫什么| dm什么意思| 蛇与什么属相相配最好| 雪碧喝多了有什么危害| 孩子头晕挂什么科| 什么是孤独| 假酒喝了有什么症状| 中药不能和什么一起吃| 羊肚菌为什么那么贵| 5月11日是什么星座| 吃了螃蟹后不能吃什么| 发烧拉稀是什么原因| 左下腹痛挂什么科| dpl是什么意思| 尿毒症吃什么最好| 查染色体的目的是什么| 面皮是什么做的| 手指甲有竖纹是什么原因| 打什么| 颈椎病有些什么症状| 孕早期吃什么有利于胎心胎芽发育| 蓁是什么意思| 戒掉手淫有什么好处| 灵芝与什么相克| 多潘立酮片是什么药| 宝宝是什么意思| 体癣是什么原因引起的| 风属于五行属什么| 优格是什么| bv中间型是什么意思| 牙发黑是什么原因怎么办| 黄芪加陈皮有什么功效| 免签是什么意思| 迁移宫是什么意思| 什么不及什么| 小孩血糖高有什么症状| 西洋参有什么用| 感冒为什么会头痛| 增强免疫力的针叫什么| 头秃了一块是什么原因| 狰狞是什么意思| 魏大勋和李沁什么关系| 世界上最长的蛇是什么蛇| 腿有淤青是什么原因| 为什么会低血糖| 甲亢吃什么好的更快| 手淫过多会导致什么| 什么叫健康| 以讹传讹什么意思| 排骨炖什么菜好吃| 9点半是什么时辰| 打招呼是什么意思| 冬菜是什么菜| 宝五行属什么| 疝气手术是什么| 小孩腰疼是什么原因引起的| 激素6项检查是些什么| 地果是什么| 蚊子最怕什么植物| 人到无求品自高什么意思| 灵魂伴侣是指什么意思| 珍珠状丘疹用什么药膏| 晒太阳补什么| 阴道有腥味是什么原因| 厅长是什么级别| 黄柏的功效与作用是什么| 吃得什么| 梦到伟人有什么兆头| 白细胞偏低吃什么| 天启是什么意思| 7.1什么星座| 濡养是什么意思| 缺铁性贫血吃什么补血最快| 11.15是什么星座| 社恐到底在害怕什么| 腹泻吃什么水果好| 吹箫是什么意思| 硬度不够是什么原因| 想要什么样的爱| 你要干什么| 智齿吃什么消炎药| 晟这个字念什么| 有什么作用| 狗狗气喘吃什么药| 双瞳电影到底讲了什么| 晚上睡不着白天睡不醒是什么原因| 茯苓泡水喝有什么功效| 丙型肝炎病毒抗体阴性什么意思| 盆腔炎吃什么药最有效| 血脂稠吃什么好| 处女座男生喜欢什么样的女生| 大便为什么是绿色的| 脱脂乳粉是什么| 身体发冷是什么原因| 美国绿卡有什么好处| 木兮是什么意思| 白细胞介素是什么| 立春有什么讲究| 风云际会的意思是什么| 草鱼吃什么| 七岁属什么生肖| 带沉香手串有什么好处| 急功近利什么意思| 首长是什么意思| 胎动少是什么原因| 鸟加一笔是什么字| 近视眼镜是什么镜| 木日念什么| 2013年五行属什么| 偶尔什么意思| 为什么要补钾| 为什么一动就出汗| 梦见流水是什么征兆| 穴位是什么| 椰子和椰青有什么区别| 血红蛋白低吃什么补最快| 猪五行属什么| 丁桂鱼吃什么食物| 刷酸是什么| 为什么做春梦| 肝肿瘤不能吃什么| 唐宋元明清前面是什么| 黑裙配什么颜色的上衣| 坐月子适合吃什么水果| 肚脐左侧疼是什么原因| 掐人中有什么作用| 羊脑炎什么症状怎么治| 什么呼什么应| 乳杆菌是什么| 维c什么时候吃效果最好| 沐五行属性是什么| 为什么做梦| 三刀六洞什么意思| 支那是什么意思| 阁字五行属什么| 六月二七是什么星座| 吃什么解油腻| 胃湿热吃什么药| 嘴唇边缘发黑是什么原因| 胎位不正是什么原因导致的| 牛肉馅配什么菜包饺子好吃| 唾手可得是什么意思| 内分泌科主要看什么| 今天过生日是什么星座| 珑字五行属什么| 所费不赀是什么意思| hpv检查什么| 血友病是什么遗传方式| 检查肺挂什么科| 犯太岁是什么意思啊| 怀孕什么时候显怀| 打呼噜是什么引起的| 扁桃体发炎是什么原因| 药吃多了会有什么后果| 廿年是什么意思| 水泥烧伤皮肤用什么药| 吴孟达什么时候去世的| 什么书在书店里买不到| 艾附暖宫丸什么时候吃| 反复是什么意思| 补肾壮阳吃什么| 五险一金的一金是什么| 心胸狭窄是什么意思| 跳蚤喜欢咬什么样的人| 秋水伊人是什么意思| pose什么意思| 坐月子吃什么下奶最快最多最有效| 孩子爱咬指甲是什么原因| 兆后面的单位是什么| 什么牌子的燃气灶质量好| 颐养天年是什么意思| 清真食品是什么意思| 吃什么可以自然掉体毛| 小鸡仔吃什么| 6月有什么水果| 所以我求求你别让我离开你是什么歌| 软化耳屎的药水叫什么| 桃子又什么又什么填空| o型血为什么招蚊子| 醒酒喝什么| 扶她是什么| 什么颜色的床单有助于睡眠| 宝宝肚子疼吃什么药| 枝柯是什么意思| 天蓝色配什么颜色| 铄字五行属什么| 今年25岁属什么生肖| 诬赖是什么意思| 近视眼底改变什么意思| 拿什么拯救你我的爱人演员表| 这个表情什么意思| 减肥期间应该吃什么| 头孢不能和什么药一起吃| 生化流产是什么原因造成的| 琼脂是什么东西| 自投罗网是什么意思| 新生儿嘴唇发紫是什么原因| 一什么花瓶| ca199偏高是什么原因| 虚不受补是什么意思| 什么照镜子里外不是人| 本卦和变卦是什么关系| 一个大一个多念什么| 什么痣不能点| 红字五行属什么| h是什么| 三点水加分念什么| 酸奶对人体有什么好处| 夏天煲鸡汤放什么材料| 心肌缺血吃什么药最好| 胃痛吃什么药最有效| 脑堵塞有什么症状| 凡人修仙传什么时候写的| 孕期长痘痘是什么原因| 指数是什么| 什么是亚麻籽油| 哈尔滨有什么特产| 腿经常抽筋是什么原因| 中午一点半是什么时辰| 瘴气是什么意思| 血稠是什么原因造成的| 秋葵什么季节吃| 来例假吃什么水果| 例假量多是什么原因| street是什么意思| 武松的绰号是什么| 汪星是什么意思| 百度
打印
[其他ST产品]

车讯:东风本田Gienia成都车展首发 全新两厢车

[复制链接]
40235|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hehhehee|  楼主 | 2025-08-04 19:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Cubemx配置
配置6个GPIO口,定义用户标签,方便调用

LCD底层驱动lcd.init.h
#ifndef __LCD_INIT_H
#define __LCD_INIT_H

#include "main.h"
#define  u8  uint8_t
#define  u16 uint16_t

#define USE_HORIZONTAL 1  //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏
                          //0,1,2,3分别控制4个不同的方向显示


#if USE_HORIZONTAL==0||USE_HORIZONTAL==1
#define LCD_W 128
#define LCD_H 160

#else
#define LCD_W 160
#define LCD_H 128
#endif


//-----------------LCD端口定义----------------

#define LCD_SCLK_Clr() HAL_GPIO_WritePin(LCD_SCLK_GPIO_Port,LCD_SCLK_Pin,GPIO_PIN_RESET)//SCLK
#define LCD_SCLK_Set() HAL_GPIO_WritePin(LCD_SCLK_GPIO_Port,LCD_SCLK_Pin,GPIO_PIN_SET)

#define LCD_MOSI_Clr() HAL_GPIO_WritePin(LCD_MOSI_GPIO_Port,LCD_MOSI_Pin,GPIO_PIN_RESET)//MOSI
#define LCD_MOSI_Set() HAL_GPIO_WritePin(LCD_MOSI_GPIO_Port,LCD_MOSI_Pin,GPIO_PIN_SET)

#define LCD_RES_Clr()  HAL_GPIO_WritePin(LCD_RES_GPIO_Port,LCD_RES_Pin,GPIO_PIN_RESET)//RES
#define LCD_RES_Set()  HAL_GPIO_WritePin(LCD_RES_GPIO_Port,LCD_RES_Pin,GPIO_PIN_SET)

#define LCD_DC_Clr()   HAL_GPIO_WritePin(LCD_DC_GPIO_Port,LCD_DC_Pin,GPIO_PIN_RESET)//DC
#define LCD_DC_Set()   HAL_GPIO_WritePin(LCD_DC_GPIO_Port,LCD_DC_Pin,GPIO_PIN_SET)
              
#define LCD_CS_Clr()   HAL_GPIO_WritePin(LCD_CS_GPIO_Port,LCD_CS_Pin,GPIO_PIN_RESET)//CS
#define LCD_CS_Set()   HAL_GPIO_WritePin(LCD_CS_GPIO_Port,LCD_CS_Pin,GPIO_PIN_SET)

#define LCD_BLK_Clr()  HAL_GPIO_WritePin(LCD_BLK_GPIO_Port,LCD_BLK_Pin,GPIO_PIN_RESET)//BLK
#define LCD_BLK_Set()  HAL_GPIO_WritePin(LCD_BLK_GPIO_Port,LCD_BLK_Pin,GPIO_PIN_SET)



void LCD_GPIO_Init(void);//初始化GPIO
void LCD_Writ_Bus(u8 dat);//模拟SPI时序
void LCD_WR_DATA8(u8 dat);//写入一个字节
void LCD_WR_DATA(u16 dat);//写入两个字节
void LCD_WR_REG(u8 dat);//写入一个指令
void LCD_Address_Set(u16 x1,u16 y1,u16 x2,u16 y2);//设置坐标函数
void LCD_Init(void);//LCD初始化
#endif



沙发
hehhehee|  楼主 | 2025-08-04 19:33 | 只看该作者
lcd.init.c
#include "lcd_init.h"

/******************************************************************************
      函数说明:LCD串行数据写入函数
      入口数据:dat  要写入的串行数据
      返回值:  无
******************************************************************************/
void LCD_Writ_Bus(u8 dat)
{   
    u8 i;
    LCD_CS_Clr();
    for(i=0;i<8;i++)
    {              
        LCD_SCLK_Clr();
        if(dat&0x80)
        {
           LCD_MOSI_Set();
        }
        else
        {
           LCD_MOSI_Clr();
        }
        LCD_SCLK_Set();
        dat<<=1;
    }   
  LCD_CS_Set();   
}


/******************************************************************************
      函数说明:LCD写入数据
      入口数据:dat 写入的数据
      返回值:  无
******************************************************************************/
void LCD_WR_DATA8(u8 dat)
{
    LCD_Writ_Bus(dat);
}


/******************************************************************************
      函数说明:LCD写入数据
      入口数据:dat 写入的数据
      返回值:  无
******************************************************************************/
void LCD_WR_DATA(u16 dat)
{
    LCD_Writ_Bus(dat>>8);
    LCD_Writ_Bus(dat);
}


/******************************************************************************
      函数说明:LCD写入命令
      入口数据:dat 写入的命令
      返回值:  无
******************************************************************************/
void LCD_WR_REG(u8 dat)
{
    LCD_DC_Clr();//写命令
    LCD_Writ_Bus(dat);
    LCD_DC_Set();//写数据
}


/******************************************************************************
      函数说明:设置起始和结束地址
      入口数据:x1,x2 设置列的起始和结束地址
                y1,y2 设置行的起始和结束地址
      返回值:  无
******************************************************************************/
void LCD_Address_Set(u16 x1,u16 y1,u16 x2,u16 y2)
{
    if(USE_HORIZONTAL==0)
    {
        LCD_WR_REG(0x2a);//列地址设置
        LCD_WR_DATA(x1);
        LCD_WR_DATA(x2);
        LCD_WR_REG(0x2b);//行地址设置
        LCD_WR_DATA(y1);
        LCD_WR_DATA(y2);
        LCD_WR_REG(0x2c);//储存器写
    }
    else if(USE_HORIZONTAL==1)
    {
        LCD_WR_REG(0x2a);//列地址设置
        LCD_WR_DATA(x1);
        LCD_WR_DATA(x2);
        LCD_WR_REG(0x2b);//行地址设置
        LCD_WR_DATA(y1);
        LCD_WR_DATA(y2);
        LCD_WR_REG(0x2c);//储存器写
    }
    else if(USE_HORIZONTAL==2)
    {
        LCD_WR_REG(0x2a);//列地址设置
        LCD_WR_DATA(x1);
        LCD_WR_DATA(x2);
        LCD_WR_REG(0x2b);//行地址设置
        LCD_WR_DATA(y1);
        LCD_WR_DATA(y2);
        LCD_WR_REG(0x2c);//储存器写
    }
    else
    {
        LCD_WR_REG(0x2a);//列地址设置
        LCD_WR_DATA(x1);
        LCD_WR_DATA(x2);
        LCD_WR_REG(0x2b);//行地址设置
        LCD_WR_DATA(y1);
        LCD_WR_DATA(y2);
        LCD_WR_REG(0x2c);//储存器写
    }
}

void LCD_Init(void)
{
//    LCD_GPIO_Init();//初始化GPIO
   
    LCD_RES_Clr();//复位
    HAL_Delay(100);
    LCD_RES_Set();
    HAL_Delay(100);
   
    LCD_BLK_Set();//打开背光
    HAL_Delay(100);
   
    //************* Start Initial Sequence **********//
    LCD_WR_REG(0x11); //Sleep out
    HAL_Delay(120);              //Delay 120ms
    //------------------------------------ST7735S Frame Rate-----------------------------------------//
    LCD_WR_REG(0xB1);
    LCD_WR_DATA8(0x05);
    LCD_WR_DATA8(0x3C);
    LCD_WR_DATA8(0x3C);
    LCD_WR_REG(0xB2);
    LCD_WR_DATA8(0x05);
    LCD_WR_DATA8(0x3C);
    LCD_WR_DATA8(0x3C);
    LCD_WR_REG(0xB3);
    LCD_WR_DATA8(0x05);
    LCD_WR_DATA8(0x3C);
    LCD_WR_DATA8(0x3C);
    LCD_WR_DATA8(0x05);
    LCD_WR_DATA8(0x3C);
    LCD_WR_DATA8(0x3C);
    //------------------------------------End ST7735S Frame Rate---------------------------------//
    LCD_WR_REG(0xB4); //Dot inversion
    LCD_WR_DATA8(0x03);
    //------------------------------------ST7735S Power Sequence---------------------------------//
    LCD_WR_REG(0xC0);
    LCD_WR_DATA8(0x28);
    LCD_WR_DATA8(0x08);
    LCD_WR_DATA8(0x04);
    LCD_WR_REG(0xC1);
    LCD_WR_DATA8(0XC0);
    LCD_WR_REG(0xC2);
    LCD_WR_DATA8(0x0D);
    LCD_WR_DATA8(0x00);
    LCD_WR_REG(0xC3);
    LCD_WR_DATA8(0x8D);
    LCD_WR_DATA8(0x2A);
    LCD_WR_REG(0xC4);
    LCD_WR_DATA8(0x8D);
    LCD_WR_DATA8(0xEE);
    //---------------------------------End ST7735S Power Sequence-------------------------------------//
    LCD_WR_REG(0xC5); //VCOM
    LCD_WR_DATA8(0x1A);
    LCD_WR_REG(0x36); //MX, MY, RGB mode
    if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x00);
    else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC0);
    else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x70);
    else LCD_WR_DATA8(0xA0);
    //------------------------------------ST7735S Gamma Sequence---------------------------------//
    LCD_WR_REG(0xE0);
    LCD_WR_DATA8(0x04);
    LCD_WR_DATA8(0x22);
    LCD_WR_DATA8(0x07);
    LCD_WR_DATA8(0x0A);
    LCD_WR_DATA8(0x2E);
    LCD_WR_DATA8(0x30);
    LCD_WR_DATA8(0x25);
    LCD_WR_DATA8(0x2A);
    LCD_WR_DATA8(0x28);
    LCD_WR_DATA8(0x26);
    LCD_WR_DATA8(0x2E);
    LCD_WR_DATA8(0x3A);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x01);
    LCD_WR_DATA8(0x03);
    LCD_WR_DATA8(0x13);
    LCD_WR_REG(0xE1);
    LCD_WR_DATA8(0x04);
    LCD_WR_DATA8(0x16);
    LCD_WR_DATA8(0x06);
    LCD_WR_DATA8(0x0D);
    LCD_WR_DATA8(0x2D);
    LCD_WR_DATA8(0x26);
    LCD_WR_DATA8(0x23);
    LCD_WR_DATA8(0x27);
    LCD_WR_DATA8(0x27);
    LCD_WR_DATA8(0x25);
    LCD_WR_DATA8(0x2D);
    LCD_WR_DATA8(0x3B);
    LCD_WR_DATA8(0x00);
    LCD_WR_DATA8(0x01);
    LCD_WR_DATA8(0x04);
    LCD_WR_DATA8(0x13);
    //------------------------------------End ST7735S Gamma Sequence-----------------------------//
    LCD_WR_REG(0x3A); //65k mode
    LCD_WR_DATA8(0x05);
    LCD_WR_REG(0x29); //Display on
}
板凳
hehhehee|  楼主 | 2025-08-04 19:33 | 只看该作者
LCD应用层驱动
lcd.h

#ifndef __LCD_H
#define __LCD_H        
#include "main.h"
#define  u8  uint8_t
#define  u16 uint16_t
#define  u32 uint32_t


void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color);//指定区域填充颜色
void LCD_DrawPoint(u16 x,u16 y,u16 color);//在指定位置画一个点
void LCD_DrawLine(u16 x1,u16 y1,u16 x2,u16 y2,u16 color);//在指定位置画一条线
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2,u16 color);//在指定位置画一个矩形
void Draw_Circle(u16 x0,u16 y0,u8 r,u16 color);//在指定位置画一个圆


void LCD_ShowChar(u16 x,u16 y,u8 num,
                    u16 font_color,u16 back_color,u8 sizey,u8 mode);//显示一个字符
void LCD_ShowString(u16 x,u16 y,const u8 *p,
                    u16 font_color,u16 back_color,u8 sizey,u8 mode);//显示字符串
u32 mypow(u8 m,u8 n);//求幂
void LCD_ShowIntNum(u16 x,u16 y,u16 num,u8 len,
                    u16 font_color,u16 back_color,u8 sizey);//显示整数变量
void LCD_ShowFloatNum1(u16 x,u16 y,float num,u8 len,
                    u16 font_color,u16 back_color,u8 sizey);//显示两位小数变量
void LCD_ShowChinese(u16 x, u16 y, char ch,
                    u16 font_color, u16 back_color, u8 font_size);//显示汉字


//画笔颜色
#define WHITE              0xFFFF
#define BLACK              0x0000      
#define BLUE            0x001F  
#define BRED            0XF81F
#define GRED                   0XFFE0
#define GBLUE                  0X07FF
#define RED                0xF800
#define MAGENTA            0xF81F
#define GREEN              0x07E0
#define CYAN               0x7FFF
#define YELLOW             0xFFE0
#define BROWN                  0XBC40 //棕色
#define BRRED                  0XFC07 //棕红色
#define GRAY                   0X8430 //灰色
#define DARKBLUE           0X01CF    //深蓝色
#define LIGHTBLUE       0X7D7C    //浅蓝色  
#define GRAYBLUE        0X5458 //灰蓝色
#define LIGHTGREEN      0X841F //浅绿色
#define LGRAY                  0XC618 //浅灰色(PANNEL),窗体背景色
#define LGRAYBLUE       0XA651 //浅灰蓝色(中间层颜色)
#define LBBLUE          0X2B12 //浅棕蓝色(选择条目的反色)

#endif
地板
hehhehee|  楼主 | 2025-08-04 19:34 | 只看该作者
lcd.c
#include "lcd.h"
#include "lcd_init.h"
#include "lcdfont.h"

/******************************************************************************
      函数说明:在指定区域填充颜色
      入口数据:xsta,ysta   起始坐标
                xend,yend   终止坐标
                                color       要填充的颜色
      返回值:  无
******************************************************************************/
void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color)
{         
    u16 i,j;
    LCD_Address_Set(xsta,ysta,xend-1,yend-1);//设置显示范围
    for(i=ysta;i<yend;i++)
    {                                                               
        for(j=xsta;j<xend;j++)
        {
            LCD_WR_DATA(color);
        }
    }                              
}

/******************************************************************************
      函数说明:在指定位置画点
      入口数据:x,y 画点坐标
                color 点的颜色
      返回值:  无
******************************************************************************/
void LCD_DrawPoint(u16 x,u16 y,u16 color)
{
    LCD_Address_Set(x,y,x,y);//设置光标位置
    LCD_WR_DATA(color);
}


/******************************************************************************
      函数说明:画线
      入口数据:x1,y1   起始坐标
                x2,y2   终止坐标
                color   线的颜色
      返回值:  无
******************************************************************************/
void LCD_DrawLine(u16 x1,u16 y1,u16 x2,u16 y2,u16 color)
{
    u16 t;
    int xerr=0,yerr=0,delta_x,delta_y,distance;
    int incx,incy,uRow,uCol;
    delta_x=x2-x1; //计算坐标增量
    delta_y=y2-y1;
    uRow=x1;//画线起点坐标
    uCol=y1;
    if(delta_x>0)incx=1; //设置单步方向
    else if (delta_x==0)incx=0;//垂直线
    else {incx=-1;delta_x=-delta_x;}
    if(delta_y>0)incy=1;
    else if (delta_y==0)incy=0;//水平线
    else {incy=-1;delta_y=-delta_y;}
    if(delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴
    else distance=delta_y;
    for(t=0;t<distance+1;t++)
    {
        LCD_DrawPoint(uRow,uCol,color);//画点
        xerr+=delta_x;
        yerr+=delta_y;
        if(xerr>distance)
        {
            xerr-=distance;
            uRow+=incx;
        }
        if(yerr>distance)
        {
            yerr-=distance;
            uCol+=incy;
        }
    }
}


/******************************************************************************
      函数说明:画矩形
      入口数据:x1,y1   起始坐标
                x2,y2   终止坐标
                color   矩形的颜色
      返回值:  无
******************************************************************************/
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2,u16 color)
{
    LCD_DrawLine(x1,y1,x2,y1,color);
    LCD_DrawLine(x1,y1,x1,y2,color);
    LCD_DrawLine(x1,y2,x2,y2,color);
    LCD_DrawLine(x2,y1,x2,y2,color);
}


/******************************************************************************
      函数说明:画圆
      入口数据:x0,y0   圆心坐标
                r       半径
                color   圆的颜色
      返回值:  无
******************************************************************************/
void Draw_Circle(u16 x0,u16 y0,u8 r,u16 color)
{
    int a,b;
    a=0;b=r;      
    while(a<=b)
    {
        LCD_DrawPoint(x0-b,y0-a,color);             //3           
        LCD_DrawPoint(x0+b,y0-a,color);             //0           
        LCD_DrawPoint(x0-a,y0+b,color);             //1               
        LCD_DrawPoint(x0-a,y0-b,color);             //2            
        LCD_DrawPoint(x0+b,y0+a,color);             //4               
        LCD_DrawPoint(x0+a,y0-b,color);             //5
        LCD_DrawPoint(x0+a,y0+b,color);             //6
        LCD_DrawPoint(x0-b,y0+a,color);             //7
        a++;
        if((a*a+b*b)>(r*r))//判断要画的点是否过远
        {
            b--;
        }
    }
}


/******************************************************************************
      函数说明:显示单个字符
      入口数据:x,y显示坐标
                num 要显示的字符
                fc 字的颜色
                bc 字的背景色
                sizey 字号
                mode:  0非叠加模式  1叠加模式
      返回值:  无
******************************************************************************/
void LCD_ShowChar(u16 x,u16 y,u8 num,u16 font_color,u16 back_color,u8 sizey,u8 mode)
{
    u8 temp,sizex,t,m=0;
    u16 i,TypefaceNum;//一个字符所占字节大小
    u16 x0=x;
    sizex=sizey/2;
    TypefaceNum=(sizex/8+((sizex%8)?1:0))*sizey;
    num=num-' ';    //得到偏移后的值
    LCD_Address_Set(x,y,x+sizex-1,y+sizey-1);  //设置光标位置
    for(i=0;i<TypefaceNum;i++)
    {
        if(sizey==12)temp=ascii_1206[num];               //调用6x12字体
        else if(sizey==16)temp=ascii_1608[num];         //调用8x16字体
        else if(sizey==24)temp=ascii_2412[num];         //调用12x24字体
        else if(sizey==32)temp=ascii_3216[num];         //调用16x32字体
        else return;
        for(t=0;t<8;t++)
        {
            if(!mode)//非叠加模式
            {
                if(temp&(0x01<<t))LCD_WR_DATA(font_color);
                else LCD_WR_DATA(back_color);
                m++;
                if(m%sizex==0)
                {
                    m=0;
                    break;
                }
            }
            else//叠加模式
            {
                if(temp&(0x01<<t))LCD_DrawPoint(x,y,font_color);//画一个点
                x++;
                if((x-x0)==sizex)
                {
                    x=x0;
                    y++;
                    break;
                }
            }
        }
    }              
}


/******************************************************************************
      函数说明:显示字符串
      入口数据:x,y显示坐标
                *p 要显示的字符串
                fc 字的颜色
                bc 字的背景色
                sizey 字号
                mode:  0非叠加模式  1叠加模式
      返回值:  无
******************************************************************************/
void LCD_ShowString(u16 x,u16 y,const u8 *p,u16 font_color,u16 back_color,u8 sizey,u8 mode)
{         
    while(*p!='\0')
    {      
        LCD_ShowChar(x,y,*p,font_color,back_color,sizey,mode);
        x+=sizey/2;
        p++;
    }  
}


/******************************************************************************
      函数说明:显示数字
      入口数据:m底数,n指数
      返回值:  无
******************************************************************************/
u32 mypow(u8 m,u8 n)
{
    u32 result=1;     
    while(n--)result*=m;
    return result;
}


/******************************************************************************
      函数说明:显示整数变量
      入口数据:x,y显示坐标
                num 要显示整数变量
                len 要显示的位数
                fc 字的颜色
                bc 字的背景色
                sizey 字号
      返回值:  无
******************************************************************************/
void LCD_ShowIntNum(u16 x,u16 y,u16 num,u8 len,u16 font_color,u16 back_color,u8 sizey)
{            
    u8 t,temp;
    u8 enshow=0;
    u8 sizex=sizey/2;
    for(t=0;t<len;t++)
    {
        temp=(num/mypow(10,len-t-1))%10;
        if(enshow==0&&t<(len-1))
        {
            if(temp==0)
            {
                LCD_ShowChar(x+t*sizex,y,' ',font_color,back_color,sizey,0);
                continue;
            }else enshow=1;
              
        }
         LCD_ShowChar(x+t*sizex,y,temp+48,font_color,back_color,sizey,0);
    }
}


/******************************************************************************
      函数说明:显示两位小数变量
      入口数据:x,y显示坐标
                num 要显示小数变量
                len 要显示的位数
                fc 字的颜色
                bc 字的背景色
                sizey 字号
      返回值:  无
******************************************************************************/
void LCD_ShowFloatNum1(u16 x,u16 y,float num,u8 len,u16 font_color,u16 back_color,u8 sizey)
{            
    u8 t,temp,sizex;
    u16 num1;
    sizex=sizey/2;
    num1=num*100;
    for(t=0;t<len;t++)
    {
        temp=(num1/mypow(10,len-t-1))%10;
        if(t==(len-2))
        {
            LCD_ShowChar(x+(len-2)*sizex,y,'.',font_color,back_color,sizey,0);
            t++;
            len+=1;
        }
         LCD_ShowChar(x+t*sizex,y,temp+48,font_color,back_color,sizey,0);
    }
}



//************************************************************************************//
/**
* @brief   显示汉字
* @param   x,y    —— 起点坐标
* @param   color —— 颜色
* @param   ch —— 汉字编号
* @param   size —— 汉字大小,支持16、24、32(可在font字库中自由添加)
* @return  none
*/
void LCD_ShowChinese(u16 x, u16 y, char ch, u16 font_color, u16 back_color, u8 font_size)
{
    u16 i, j;
    u16 x_pos, y_pos, size, font_width, font_height;
    u8 *font_ptr;
    u8 bit_width, temp;
   
        //检查是否越界
    if((x > (LCD_W - font_size)) || (y > (LCD_H - font_size)))   
        {
        return;
    }
   
    x_pos = x;
    y_pos = y;
    font_height = font_size;
    font_width = font_size;
    bit_width = 8;
        
    size = (font_width / 8 + ((font_width % 8) ? 1 : 0)) * font_height;
   
        switch(font_size)
        {
            case 16: font_ptr = (uint8_t*)&Chinese_16word[ch]; break;
            case 24: font_ptr = (uint8_t*)&Chinese_24word[ch]; break;
            case 32: font_ptr = (uint8_t*)&Chinese_32word[ch]; break;
            default : break;
        }

    for (i = 0; i < size; i++)
        {
        temp = *(font_ptr + i);
        for (j = 0; j < bit_width; j++)
                {
            if(temp & 0x80)
                        {
                LCD_DrawPoint(x_pos, y_pos, font_color);
            }
                        else
                        {
                LCD_DrawPoint(x_pos, y_pos, back_color);
            }
            temp <<= 1;
            x_pos++;
        }
        if (x_pos >= (x + font_width))
                {
            y_pos++;
            x_pos = x;
        }
    }
}
5
hehhehee|  楼主 | 2025-08-04 19:34 | 只看该作者
lcdfont.h
#ifndef __LCDFONT_H
#define __LCDFONT_H
      
//PC2LCD2002的ascll取模方式设置:阴码+逐行式+逆向+C51格式
const unsigned char ascii_1206[][12]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x04,0x00,0x00},/*"!",1*/
{0x14,0x14,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
{0x00,0x00,0x0A,0x0A,0x1F,0x0A,0x0A,0x1F,0x0A,0x0A,0x00,0x00},/*"#",3*/
{0x00,0x04,0x0E,0x15,0x05,0x06,0x0C,0x14,0x15,0x0E,0x04,0x00},/*"$",4*/
{0x00,0x00,0x12,0x15,0x0D,0x15,0x2E,0x2C,0x2A,0x12,0x00,0x00},/*"%",5*/
{0x00,0x00,0x04,0x0A,0x0A,0x36,0x15,0x15,0x29,0x16,0x00,0x00},/*"&",6*/
{0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
{0x10,0x08,0x08,0x04,0x04,0x04,0x04,0x04,0x08,0x08,0x10,0x00},/*"(",8*/
{0x02,0x04,0x04,0x08,0x08,0x08,0x08,0x08,0x04,0x04,0x02,0x00},/*")",9*/
{0x00,0x00,0x00,0x04,0x15,0x0E,0x0E,0x15,0x04,0x00,0x00,0x00},/*"*",10*/
{0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00,0x00,0x00},/*"+",11*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0x00},/*",",12*/
{0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",13*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00},/*".",14*/
{0x00,0x20,0x10,0x10,0x08,0x08,0x04,0x04,0x02,0x02,0x01,0x00},/*"/",15*/
{0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x11,0x11,0x0E,0x00,0x00},/*"0",16*/
{0x00,0x00,0x04,0x06,0x04,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"1",17*/
{0x00,0x00,0x0E,0x11,0x11,0x08,0x04,0x02,0x01,0x1F,0x00,0x00},/*"2",18*/
{0x00,0x00,0x0E,0x11,0x10,0x0C,0x10,0x10,0x11,0x0E,0x00,0x00},/*"3",19*/
{0x00,0x00,0x08,0x0C,0x0C,0x0A,0x09,0x1F,0x08,0x1C,0x00,0x00},/*"4",20*/
{0x00,0x00,0x1F,0x01,0x01,0x0F,0x11,0x10,0x11,0x0E,0x00,0x00},/*"5",21*/
{0x00,0x00,0x0C,0x12,0x01,0x0D,0x13,0x11,0x11,0x0E,0x00,0x00},/*"6",22*/
{0x00,0x00,0x1E,0x10,0x08,0x08,0x04,0x04,0x04,0x04,0x00,0x00},/*"7",23*/
{0x00,0x00,0x0E,0x11,0x11,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00},/*"8",24*/
{0x00,0x00,0x0E,0x11,0x11,0x19,0x16,0x10,0x09,0x06,0x00,0x00},/*"9",25*/
{0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00},/*":",26*/
{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x04,0x00},/*";",27*/
{0x00,0x00,0x10,0x08,0x04,0x02,0x02,0x04,0x08,0x10,0x00,0x00},/*"<",28*/
{0x00,0x00,0x00,0x00,0x3F,0x00,0x3F,0x00,0x00,0x00,0x00,0x00},/*"=",29*/
{0x00,0x00,0x02,0x04,0x08,0x10,0x10,0x08,0x04,0x02,0x00,0x00},/*">",30*/
{0x00,0x00,0x0E,0x11,0x11,0x08,0x04,0x04,0x00,0x04,0x00,0x00},/*"?",31*/
{0x00,0x00,0x1C,0x22,0x29,0x2D,0x2D,0x1D,0x22,0x1C,0x00,0x00},/*"@",32*/
{0x00,0x00,0x04,0x04,0x0C,0x0A,0x0A,0x1E,0x12,0x33,0x00,0x00},/*"A",33*/
{0x00,0x00,0x0F,0x12,0x12,0x0E,0x12,0x12,0x12,0x0F,0x00,0x00},/*"B",34*/
{0x00,0x00,0x1E,0x11,0x01,0x01,0x01,0x01,0x11,0x0E,0x00,0x00},/*"C",35*/
{0x00,0x00,0x0F,0x12,0x12,0x12,0x12,0x12,0x12,0x0F,0x00,0x00},/*"D",36*/
{0x00,0x00,0x1F,0x12,0x0A,0x0E,0x0A,0x02,0x12,0x1F,0x00,0x00},/*"E",37*/
{0x00,0x00,0x1F,0x12,0x0A,0x0E,0x0A,0x02,0x02,0x07,0x00,0x00},/*"F",38*/
{0x00,0x00,0x1C,0x12,0x01,0x01,0x39,0x11,0x12,0x0C,0x00,0x00},/*"G",39*/
{0x00,0x00,0x33,0x12,0x12,0x1E,0x12,0x12,0x12,0x33,0x00,0x00},/*"H",40*/
{0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"I",41*/
{0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x09,0x07},/*"J",42*/
{0x00,0x00,0x37,0x12,0x0A,0x06,0x0A,0x12,0x12,0x37,0x00,0x00},/*"K",43*/
{0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x02,0x22,0x3F,0x00,0x00},/*"L",44*/
{0x00,0x00,0x3B,0x1B,0x1B,0x1B,0x15,0x15,0x15,0x35,0x00,0x00},/*"M",45*/
{0x00,0x00,0x3B,0x12,0x16,0x16,0x1A,0x1A,0x12,0x17,0x00,0x00},/*"N",46*/
{0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x11,0x11,0x0E,0x00,0x00},/*"O",47*/
{0x00,0x00,0x0F,0x12,0x12,0x0E,0x02,0x02,0x02,0x07,0x00,0x00},/*"P",48*/
{0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x17,0x19,0x0E,0x18,0x00},/*"Q",49*/
{0x00,0x00,0x0F,0x12,0x12,0x0E,0x0A,0x12,0x12,0x37,0x00,0x00},/*"R",50*/
{0x00,0x00,0x1E,0x11,0x01,0x06,0x08,0x10,0x11,0x0F,0x00,0x00},/*"S",51*/
{0x00,0x00,0x1F,0x15,0x04,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"T",52*/
{0x00,0x00,0x33,0x12,0x12,0x12,0x12,0x12,0x12,0x0C,0x00,0x00},/*"U",53*/
{0x00,0x00,0x33,0x12,0x12,0x0A,0x0A,0x0C,0x04,0x04,0x00,0x00},/*"V",54*/
{0x00,0x00,0x15,0x15,0x15,0x15,0x0E,0x0A,0x0A,0x0A,0x00,0x00},/*"W",55*/
{0x00,0x00,0x1B,0x0A,0x0A,0x04,0x04,0x0A,0x0A,0x1B,0x00,0x00},/*"X",56*/
{0x00,0x00,0x1B,0x0A,0x0A,0x0A,0x04,0x04,0x04,0x0E,0x00,0x00},/*"Y",57*/
{0x00,0x00,0x1F,0x09,0x08,0x04,0x04,0x02,0x12,0x1F,0x00,0x00},/*"Z",58*/
{0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x1C,0x00},/*"[",59*/
{0x00,0x02,0x02,0x04,0x04,0x04,0x08,0x08,0x08,0x10,0x10,0x00},/*"\",60*/
{0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0E,0x00},/*"]",61*/
{0x04,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F},/*"_",63*/
{0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/
{0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x1C,0x12,0x3C,0x00,0x00},/*"a",65*/
{0x00,0x03,0x02,0x02,0x02,0x0E,0x12,0x12,0x12,0x0E,0x00,0x00},/*"b",66*/
{0x00,0x00,0x00,0x00,0x00,0x1C,0x12,0x02,0x12,0x0C,0x00,0x00},/*"c",67*/
{0x00,0x18,0x10,0x10,0x10,0x1C,0x12,0x12,0x12,0x3C,0x00,0x00},/*"d",68*/
{0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x1E,0x02,0x1C,0x00,0x00},/*"e",69*/
{0x00,0x18,0x24,0x04,0x04,0x1E,0x04,0x04,0x04,0x1E,0x00,0x00},/*"f",70*/
{0x00,0x00,0x00,0x00,0x00,0x3C,0x12,0x0C,0x02,0x1C,0x22,0x1C},/*"g",71*/
{0x00,0x03,0x02,0x02,0x02,0x0E,0x12,0x12,0x12,0x37,0x00,0x00},/*"h",72*/
{0x00,0x04,0x04,0x00,0x00,0x06,0x04,0x04,0x04,0x0E,0x00,0x00},/*"i",73*/
{0x00,0x08,0x08,0x00,0x00,0x0C,0x08,0x08,0x08,0x08,0x08,0x07},/*"j",74*/
{0x00,0x03,0x02,0x02,0x02,0x1A,0x0A,0x06,0x0A,0x13,0x00,0x00},/*"k",75*/
{0x00,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"l",76*/
{0x00,0x00,0x00,0x00,0x00,0x0F,0x15,0x15,0x15,0x15,0x00,0x00},/*"m",77*/
{0x00,0x00,0x00,0x00,0x00,0x0F,0x12,0x12,0x12,0x37,0x00,0x00},/*"n",78*/
{0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x12,0x12,0x0C,0x00,0x00},/*"o",79*/
{0x00,0x00,0x00,0x00,0x00,0x0F,0x12,0x12,0x12,0x0E,0x02,0x07},/*"p",80*/
{0x00,0x00,0x00,0x00,0x00,0x1C,0x12,0x12,0x12,0x1C,0x10,0x38},/*"q",81*/
{0x00,0x00,0x00,0x00,0x00,0x1B,0x06,0x02,0x02,0x07,0x00,0x00},/*"r",82*/
{0x00,0x00,0x00,0x00,0x00,0x1E,0x02,0x0C,0x10,0x1E,0x00,0x00},/*"s",83*/
{0x00,0x00,0x00,0x04,0x04,0x1E,0x04,0x04,0x04,0x1C,0x00,0x00},/*"t",84*/
{0x00,0x00,0x00,0x00,0x00,0x1B,0x12,0x12,0x12,0x3C,0x00,0x00},/*"u",85*/
{0x00,0x00,0x00,0x00,0x00,0x1B,0x0A,0x0A,0x04,0x04,0x00,0x00},/*"v",86*/
{0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x0E,0x0A,0x0A,0x00,0x00},/*"w",87*/
{0x00,0x00,0x00,0x00,0x00,0x1B,0x0A,0x04,0x0A,0x1B,0x00,0x00},/*"x",88*/
{0x00,0x00,0x00,0x00,0x00,0x33,0x12,0x12,0x0C,0x08,0x04,0x03},/*"y",89*/
{0x00,0x00,0x00,0x00,0x00,0x1E,0x08,0x04,0x04,0x1E,0x00,0x00},/*"z",90*/
{0x18,0x08,0x08,0x08,0x08,0x0C,0x08,0x08,0x08,0x08,0x18,0x00},/*"{",91*/
{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*"|",92*/
{0x06,0x04,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x06,0x00},/*"}",93*/
{0x16,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/
};

//PC2LCD2002汉字取模方式设置:阴码+逐行式+顺向+C51格式
const unsigned char  Chinese_16word[   ][32]=   //16*16汉字码
{
0x20,0x00,0x3E,0x7C,0x48,0x44,0x08,0x44,0xFF,0x44,0x14,0x44,0x22,0x7C,0x40,0x00,
0x1F,0xF0,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,/*"智",0*/

0x10,0x40,0x24,0x44,0x42,0x48,0xFF,0x70,0x01,0x40,0x00,0x42,0x7E,0x42,0x42,0x3E,
0x42,0x00,0x7E,0x44,0x42,0x48,0x42,0x70,0x7E,0x40,0x42,0x42,0x4A,0x42,0x44,0x3E,/*"能",1*/
}

const unsigned char  Chinese_24word[   ][72]=   //24*24汉字码
{
0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x0F,0xF3,0xF8,0x08,0x82,0x08,0x10,
0x82,0x08,0x11,0x82,0x08,0x3F,0xFE,0x08,0x01,0x02,0x08,0x01,0xC2,0x08,0x03,0x33,
0xF8,0x06,0x1A,0x08,0x0C,0x12,0x00,0x11,0xFF,0xE0,0x21,0x00,0x40,0x01,0x00,0x40,
0x01,0xFF,0xC0,0x01,0x00,0x40,0x01,0x00,0x40,0x01,0x00,0x40,0x01,0xFF,0xE0,0x01,
0x00,0x60,0x00,0x00,0x40,0x00,0x00,0x00,/*"智",0*/

0x00,0x00,0x00,0x02,0x00,0x00,0x03,0x03,0x00,0x06,0x02,0x10,0x04,0x42,0x38,0x08,
0x22,0x60,0x30,0xF3,0x80,0x3F,0x12,0x00,0x00,0x12,0x04,0x1F,0xE2,0x04,0x18,0x63,
0xFC,0x18,0x60,0x00,0x1F,0xE4,0x00,0x18,0x62,0x10,0x18,0x62,0x38,0x18,0x62,0x60,
0x1F,0xE3,0x80,0x18,0x62,0x04,0x18,0x62,0x04,0x18,0x62,0x04,0x18,0x62,0x06,0x19,
0xE3,0xFC,0x10,0x40,0x00,0x00,0x00,0x00,/*"能",1*/
}
6
hehhehee|  楼主 | 2025-08-04 19:34 | 只看该作者
main.c主函数
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "lcd_init.h"
#include "lcd.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();  
  /* USER CODE BEGIN 2 */
    uint16_t num1 = 50;     //定义两个变量
    float num2 = 12.13;
   
    LCD_Init();             //LCD初始化
    LCD_Fill(0,0,128,160,GREEN);    //绿色全屏
    LCD_ShowString(0,0,"GMU-DK",RED,GREEN,16,0);    //显示字符串GMU-DK
    LCD_DrawLine(0,16,128,16,BLUE);       //划线
    LCD_DrawLine(0,24,128,24,BLACK);
    LCD_DrawRectangle(16,40,100,80,YELLOW); //画矩形
    Draw_Circle(64,80,16,MAGENTA);      //画圆
    LCD_ShowIntNum(8,96,num1,2,RED,GREEN,12);      //显示整数变量
    LCD_ShowFloatNum1(8,108,num2,4,RED,GREEN,12);  //显示两位小数变量
   
    LCD_ShowChinese(8,120,0,RED,GREEN,16);     //显示16*16的汉字
    LCD_ShowChinese(24,120,1,RED,GREEN,24);    //显示24*24的汉字
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}
7
hehhehee|  楼主 | 2025-08-04 19:34 | 只看该作者
效果展示
8
hehhehee|  楼主 | 2025-08-04 19:35 | 只看该作者
关于屏幕有白边的解决方案
根据合宙官方提供的驱动,修改lcd_init.c的LCD_Address_Set函数,x1,y1,x2,y2都不用加减任何数即可正常显示
9
中国龙芯CDX| | 2025-08-04 08:50 | 只看该作者
这个MX只是SPI通信进行设置,屏驱还是直接导入的
10
MzZY| | 2024-8-28 17:21 | 只看该作者
何必那么麻烦,直接用LCD的控制芯片驱动岂不是更方便
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

1251

帖子

0

粉丝
小便不利什么意思 胸闷气短吃什么药效果好 加湿器用什么水比较好 劲头是什么意思 cm是什么单位
卖关子是什么意思 中国最大的湖泊是什么湖 试管移植后吃什么容易着床 肉字五行属什么 一热就头疼是什么原因
女人下巴长痘痘是什么原因 万马奔腾是什么意思 是什么样的 浓茶喝多了有什么危害 尿道感染要吃什么药
rh是什么血型 女性长胡子是什么原因 更年期吃什么 减脂早餐吃什么 拔凉拔凉是什么意思
58年属什么zhiyanzhang.com 牙龈老是出血是什么原因引起的96micro.com 什么茶不影响睡眠hcv8jop4ns5r.cn 吃什么补钾hcv7jop9ns8r.cn 15号来月经排卵期是什么时候hcv9jop6ns1r.cn
乌龟能吃什么hcv8jop6ns3r.cn 洋盘是什么意思hcv7jop9ns6r.cn 黑米和紫米有什么区别hcv7jop6ns7r.cn 什么地吃xjhesheng.com 中午吃什么饭hcv9jop4ns9r.cn
ufo是什么意思hcv7jop6ns3r.cn 夜盲症是什么hcv8jop9ns2r.cn 经期吃什么排污血最强hcv9jop2ns7r.cn 尿酸高是什么原因造成的hcv8jop9ns5r.cn 血痰是什么原因hcv8jop0ns4r.cn
梦见别人理发是什么意思bjhyzcsm.com 真知灼见什么意思beikeqingting.com 15朵玫瑰花代表什么意思hcv7jop9ns7r.cn 梦到自己牙齿掉了是什么意思hcv7jop6ns0r.cn 怀孕肚子疼是什么原因hlguo.com
百度