硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6271|回复: 4
收起左侧

[有问必答] LCD字符显示重叠

[复制链接]

12

主题

26

回帖

114

积分

初级会员

积分
114
发表于 2014-5-30 14:05:26 | 显示全部楼层 |阅读模式
QQ图片20140530113502.jpg
/*
*********************************************************************************************************
*
*    模块名称 : 主程序模块。
*    文件名称 : main.c
*    版    本 : V2.0
*    说    明 : 触摸屏例程,支持3.0、4.3和7.0寸屏。
*                其中3.0寸屏的触摸芯片是TSC2046;
*                4.3和7寸屏的驱动是RA8875,触摸是RA8875内置。
*    修改记录 :
*        版本号  日期       作者    说明
*        v1.0    2012-08-08 armfly  ST固件库V3.5.0版本。
*
*    Copyright (C), 2012-2013, 安富莱电子 www.armfly.com
*
*********************************************************************************************************
*/

#include "stm32f4xx.h"        /* 如果要用ST的固件库,必须包含这个文件 */
#include <stdio.h>            /* 因为用到了printf函数,所以必须包含这个文件 */
#include <string.h>            /* 因为用到了strcpy函数,所以必须包含这个文件 */
#include "bsp.h"        /* printf函数定向输出到串口,所以必须包含这个文件 */
#include "images.h"            /* 图标文件 */
#include "num_pad.h"

/* 定义例程名和例程发布日期 */
#define EXAMPLE_NAME    "F4-018_TFT触摸屏例程(支持4.3寸、7寸屏)"
#define EXAMPLE_DATE    "2012-08-08"
#define DEMO_VER        "1.0"


/* 定义界面结构 */
typedef struct
{
    FONT_T FontBlack;    /* 静态的文字 */
    FONT_T FontBlue;    /* 变化的文字字体 */
    FONT_T FontRed;
    FONT_T FontBtn;        /* 按钮的字体 */
    FONT_T FontBox;        /* 分组框标题字体 */

    GROUP_T Box1;

    LABEL_T Label1;    LABEL_T Label2;
    LABEL_T Label3; LABEL_T Label4;
    LABEL_T Label5; LABEL_T Label6;
    LABEL_T Label7; LABEL_T Label8;

    LABEL_T Label9;

    EDIT_T Edit1;        /* 日期 */
    EDIT_T Edit2;        /* 时间 */

    BUTTON_T Btn1;        /* 拨号 */
    BUTTON_T Btn2;        /* 挂机 */
    BUTTON_T Btn3;        /* 切换音频通道 */

    BUTTON_T BtnRet;    /* 返回 */

    char strHardInfo[32];        /* 模块硬件信息 */
    uint8_t ucNetStatus;    /* 网络状态 */
    uint8_t ucAudioCh;        /* 当前音频通道 0, 1 */
    uint8_t ucEarVolume;    /* 耳机音量 0 - 5 */
    int16_t ucMicGain;        /* MIC音量  -12:最小增益  12:最大增益  13:静音*/

}FormFJ_T;

/* 窗体背景色 */
#define FORM_BACK_COLOR        CL_BTN_FACE

/* 框的坐标和大小 */
#define BOX1_X    5
#define BOX1_Y    8
#define BOX1_H    (g_LcdHeight - BOX1_Y - 10)
#define BOX1_W    (g_LcdWidth -  2 * BOX1_X)
#define BOX1_TEXT    "测试程序"

/* 返回按钮的坐标(屏幕右下角) */
#define BTN_RET_H    32
#define BTN_RET_W    60
#define    BTN_RET_X    ((BOX1_X + BOX1_W) - BTN_RET_W - 4)
#define    BTN_RET_Y    ((BOX1_Y  + BOX1_H) - BTN_RET_H - 4)
#define    BTN_RET_TEXT    "返回"

#define LABEL1_X      (BOX1_X + 8)
#define LABEL1_Y    (BOX1_Y + 30)
#define LABEL1_TEXT    "日期"

#define LABEL2_X      (LABEL1_X)
#define LABEL2_Y    (LABEL1_Y + 30 * 1)
#define LABEL2_TEXT    "时间"

#define LABEL3_X      (LABEL1_X + 50)
#define LABEL3_Y    (BOX1_Y + 30)
#define LABEL3_TEXT    ""

#define LABEL4_X      (LABEL2_X + 50)
#define LABEL4_Y    (LABEL1_Y + 30 * 1)
#define LABEL4_TEXT    ""

/* Edit */
#define    EDIT1_X        (LABEL1_X + 50)
#define    EDIT1_Y         (LABEL1_Y - 50)
#define EDIT1_H        20
#define EDIT1_W        90

#define    EDIT2_X        (LABEL2_X + 50)
#define    EDIT2_Y         (LABEL2_Y - 50)
#define EDIT2_H        20
#define EDIT2_W        90
static void InitFormFJ(void);
static void DispFJInitFace(void);
static void DispFJStatus(void);

FormFJ_T *FormFJ;


extern uint8_t aShowTime[8]; /* 在文件bsp_rtc里面 */
/*
*********************************************************************************************************
*    函 数 名: main
*    功能说明: c程序入口
*    形    参:无
*    返 回 值: 错误代码(无需处理)
*********************************************************************************************************
*/
int main(void)
{

    uint8_t fRefresh;
   
    FormFJ_T form;

    FormFJ = &form;
    /*
        由于ST固件库的启动文件已经执行了CPU系统时钟的初始化,所以不必再次重复配置系统时钟。
        启动文件 startup_stm32f4xx.s 会调用 system_stm32f4xx.c 中的 void SystemInit(void)。
        SystemInit()函数配置了CPU主时钟频率、内部Flash访问速度和可选的外部SRAM FSMC初始化。

        安富莱STM32-V5开发板主晶振是25MHz, 内部PLL倍频到168MHz。如果需要更改主频,可以修改下面的文件:
        \User\bsp_stm32f4xx\system_stm32f4xx.c
        文件开头的几个宏是PLL倍频参数,修改这些宏就可以修改主频,无需更改硬件。
    */

    bsp_Init();

    LCD_InitHard();    /* 初始化显示器硬件(配置GPIO和FSMC,给LCD发送初始化指令) */
    TOUCH_InitHard();
   


     LCD_ClrScr(CL_BTN_FACE);

     InitFormFJ();

     DispFJInitFace();
   
    fRefresh = 1;
    bsp_StartAutoTimer(0, 500);    /* 每秒定时显示GPS状态 */
    while (1)
    {
        bsp_Idle();

        if (bsp_CheckTimer(0) || (fRefresh == 1))

        {
            fRefresh = 0;

            DispFJStatus();
            fRefresh = 1;
        }
        
    }


   






}
/*
*********************************************************************************************************
*    函 数 名: DispADStatus
*    功能说明: 显示AD7606状态
*    形    参:无
*    返 回 值: 无
*********************************************************************************************************
*/
static void DispFJStatus(void)
{
    char buf[128];
    RTC_DateShow();sprintf(buf, "%s", aShowTime);FormFJ->Label3.pCaption = buf;
    LCD_DrawLabel(&FormFJ->Label3);
    RTC_TimeShow();sprintf(buf, "%s", aShowTime);FormFJ->Label4.pCaption = buf;
    LCD_DrawLabel(&FormFJ->Label4);

}
/*
*********************************************************************************************************
*    函 数 名: InitFormFJ
*    功能说明: 初始化控件属性
*    形    参:无
*    返 回 值: 无
*********************************************************************************************************
*/
static void InitFormFJ(void)
{
    /* 分组框标题字体 */
    FormFJ->FontBox.FontCode = FC_ST_16;
    FormFJ->FontBox.BackColor = CL_BTN_FACE;    /* 和背景色相同 */
    FormFJ->FontBox.FrontColor = CL_BLACK;
    FormFJ->FontBox.Space = 0;

    /* 字体1 用于静止标签 */
    FormFJ->FontBlack.FontCode = FC_ST_16;
    FormFJ->FontBlack.BackColor = CL_MASK;        /* 透明色 */
    FormFJ->FontBlack.FrontColor = CL_BLACK;
    FormFJ->FontBlack.Space = 0;

    /* 字体2 用于变化的文字 */
    FormFJ->FontBlue.FontCode = FC_ST_16;
    FormFJ->FontBlue.BackColor = CL_BTN_FACE;
    FormFJ->FontBlue.FrontColor = CL_BLUE;
    FormFJ->FontBlue.Space = 0;

    FormFJ->FontRed.FontCode = FC_ST_16;
    FormFJ->FontRed.BackColor = CL_BTN_FACE;
    FormFJ->FontRed.FrontColor = CL_RED;
    FormFJ->FontRed.Space = 0;

    /* 按钮字体 */
    FormFJ->FontBtn.FontCode = FC_ST_16;
    FormFJ->FontBtn.BackColor = CL_MASK;        /* 透明背景 */
    FormFJ->FontBtn.FrontColor = CL_BLACK;
    FormFJ->FontBtn.Space = 0;

    /* 分组框 */
    FormFJ->Box1.Left = BOX1_X;
    FormFJ->Box1.Top = BOX1_Y;
    FormFJ->Box1.Height = BOX1_H;
    FormFJ->Box1.Width = BOX1_W;
    FormFJ->Box1.pCaption = BOX1_TEXT;
    FormFJ->Box1.Font = &FormFJ->FontBox;

    /* 静态标签 */
    FormFJ->Label1.Left = LABEL1_X;
    FormFJ->Label1.Top = LABEL1_Y;
    FormFJ->Label1.MaxLen = 0;
    FormFJ->Label1.pCaption = LABEL1_TEXT;
    FormFJ->Label1.Font = &FormFJ->FontBlack;
   
    FormFJ->Label2.Left = LABEL2_X;
    FormFJ->Label2.Top = LABEL2_Y;
    FormFJ->Label2.MaxLen = 0;
    FormFJ->Label2.pCaption = LABEL2_TEXT;
    FormFJ->Label2.Font = &FormFJ->FontBlack;

    FormFJ->Label3.Left = LABEL3_X;
    FormFJ->Label3.Top = LABEL3_Y;
    FormFJ->Label3.MaxLen = 0;
    FormFJ->Label3.pCaption = LABEL3_TEXT;
    FormFJ->Label3.Font = &FormFJ->FontBlack;
   
    FormFJ->Label4.Left = LABEL4_X;
    FormFJ->Label4.Top = LABEL4_Y;
    FormFJ->Label4.MaxLen = 0;
    FormFJ->Label4.pCaption = LABEL4_TEXT;
    FormFJ->Label4.Font = &FormFJ->FontBlack;

  /* 按钮 */
    FormFJ->BtnRet.Left = BTN_RET_X;
    FormFJ->BtnRet.Top = BTN_RET_Y;
    FormFJ->BtnRet.Height = BTN_RET_H;
    FormFJ->BtnRet.Width = BTN_RET_W;
    FormFJ->BtnRet.pCaption = BTN_RET_TEXT;
    FormFJ->BtnRet.Font = &FormFJ->FontBtn;
    FormFJ->BtnRet.Focus = 0;
   
    /* 编辑框 */
    FormFJ->Edit1.Left = EDIT1_X;
    FormFJ->Edit1.Top = EDIT1_Y;
    FormFJ->Edit1.Height = EDIT1_H;
    FormFJ->Edit1.Width = EDIT1_W;
    sprintf(FormFJ->Edit1.Text, "13-01-01");
    FormFJ->Edit1.pCaption = FormFJ->Edit1.Text;
    FormFJ->Edit1.Font = &FormFJ->FontBtn;

    FormFJ->Edit2.Left = EDIT2_X;
    FormFJ->Edit2.Top = EDIT2_Y;
    FormFJ->Edit2.Height = EDIT2_H;
    FormFJ->Edit2.Width = EDIT2_W;
    sprintf(FormFJ->Edit2.Text, "00:00:00");
    FormFJ->Edit2.pCaption = FormFJ->Edit2.Text;
    FormFJ->Edit2.Font = &FormFJ->FontBtn;
   


}

/*
*********************************************************************************************************
*    函 数 名: DispFormFJ
*    功能说明: 显示所有的控件
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
static void DispFJInitFace(void)
{
    //LCD_ClrScr(CL_BTN_FACE);

    /* 分组框 */
    LCD_DrawGroupBox(&FormFJ->Box1);
   
    /* 静态标签 */
    LCD_DrawLabel(&FormFJ->Label1);
    LCD_DrawLabel(&FormFJ->Label2);
//     LCD_DrawLabel(&FormFJ->Label3);
//     LCD_DrawLabel(&FormFJ->Label4);
   
    /* 按钮 */
    LCD_DrawButton(&FormFJ->BtnRet);

//     /* 编辑框 */
//     LCD_DrawEdit(&FormFJ->Edit1);
//     LCD_DrawEdit(&FormFJ->Edit2);
   


}

/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/
实时显示RTC,结果显示出来字符重叠了。
我对照其他程序,一直找不出问题,求解答……
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107558
QQ
发表于 2014-5-30 14:45:42 | 显示全部楼层
这个GUI的界面是群主做的,我没有怎么研究过。

这个出厂程序里面是不是有动态显示数字的例子,好像有一个传感器的数值就是动态显示的,你参考下。
回复

使用道具 举报

12

主题

26

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2014-6-5 23:14:19 | 显示全部楼层
最近卡在这了,我再看看
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2014-6-8 15:13:47 | 显示全部楼层
你这个Label 用的字体的背景是透明色属性,请修改为和背景色相同即可。

    FormFJ->FontBlack.BackColor = CL_MASK;        /* 透明色 */
修改为:
    FormFJ->FontBlack.BackColor = CL_BTN_FACE;    /* 和背景色相同 */
回复

使用道具 举报

12

主题

26

回帖

114

积分

初级会员

积分
114
 楼主| 发表于 2014-6-8 15:25:24 | 显示全部楼层

回 armfly 的帖子

armfly:你这个Label 用的字体的背景是透明色属性,请修改为和背景色相同即可。

    FormFJ->FontBlack.BackColor = CL_MASK;        /* 透明色 */
修改为:
    FormFJ->FontBlack.BackColor =  .. (2014-06-08 15:13)
问题解决,大拿就是大拿,多谢多谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-5 17:29 , Processed in 0.278326 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表