STM32开发板显示界面添加状态栏

发布者:未来感知最新更新时间:2017-12-01 来源: eefocus关键字:STM32  显示界面  状态栏 手机看文章 扫描二维码
随时随地手机看文章

需要完成的主要工作有:

1)  划分显示位置

2)  绘制状态栏背景

3)  绘制电池图标:一共7种图标baticos[7]

4)  绘制时间:只显示时和分

5)  循环检测时间变化,并更改显示时间数值,同步判断电池电量,绘制相应图标

源文件:satusbar.c

#include  < includes.h >

#include

const u8* baticos[7] =

{

   "0:/STATUSBAR/BAT/battery0.bmp",

   "0:/STATUSBAR/BAT/battery1.bmp",

   "0:/STATUSBAR/BAT/battery2.bmp",

   "0:/STATUSBAR/BAT/battery3.bmp",

   "0:/STATUSBAR/BAT/battery4.bmp",

   "0:/STATUSBAR/BAT/battery5.bmp",

   "0:/STATUSBAR/BAT/battery6.bmp"

 

};

u8 bat_status = 0;

u8 tmer_min = 0;

void statusbar_fun(void)

{

         //绘制状态栏

         //1)绘制状态栏背景 320x12 x=0,y=0,w=320,h=22

         LCD_Fill(0,0,320,22,BLACK);

         //2)绘制电池电量        24X14 右边显示,x=320-5-24,y=2,w=24,h=14

         bat_status = 6;

         minibmp_decode((u8*)baticos[bat_status],320-5-24,4,24,14,0,0);

 

         //3)绘制时间 30x16  x=320-5-24-10-40  y=3,w=40,h=16

                   {

                           

                            POINT_COLOR = WHITE;

                            tmer_min = calendar.min;

                            LCD_ShowChar(320-5-24-10-40+16,3,':',16,1);

                            LCD_ShowNum(320-5-24-10-40,3,calendar.hour,2,16);

                            LCD_ShowNum(320-5-24-10-40+24,3,calendar.min,2,16);                                                                }

}

//由其他界面函数中的while(1)里面调用,例如主函数中

void statusbar_change(void)

{

 

         if(tmer_min!=calendar.min)

          {

        

 

                   tmer_min = calendar.min;

                   //1)绘制时间

                   POINT_COLOR = WHITE;

                   LCD_Fill(320-5-24-10-40,3,320-5-24-10,19,BLACK);

                   LCD_ShowChar(320-5-24-10-40+16,3,':',16,1);

                   LCD_ShowNum(320-5-24-10-40,3,calendar.hour,2,16);                                                                                

                   LCD_ShowNum(320-5-24-10-40+24,3,calendar.min,2,16);       

                           

                   //2)绘制电池电量 //目前没有添加电池,只是循环改变而已,如果之后添加电池,根据获得的电池量,修改bat_status的值

                   if(bat_status == 0||bat_status>6)

                           bat_status =6;

                   else

                            bat_status--;

                  

                   minibmp_decode((u8*)baticos[bat_status],320-5-24,4,24,14,0,0);                                                                                                                                            

                  }

}

 

在头文件中添加,以便其他源文件中的函数调用

//add by joqian  for statusbar

extern u8 bat_status;

extern u8 tmer_min;

extern void statusbar_change(void);

 

显示效果:


关键字:STM32  显示界面  状态栏 引用地址:STM32开发板显示界面添加状态栏

上一篇:STM32开发板电容触摸屏驱动,单点有效
下一篇:STM32电源管理与低功耗模式

推荐阅读最新更新时间:2024-03-16 15:47

stm32 外部中断库函数实现全程分析
前题:   闭门造车,两周了,经过各种的思考和求问,反复阅读了 M3权威指南 和 stm32不完全手册 的相关章节,以及开发板厂商的实验例程,对stm32这块中断终有所悟,是以记之。   至于中断的什么优先级,什么优先级分组,使能之类的原理,就不再赘述。这里主要是记载以下如何使用中断,以及中断配置函数的实现过程,其中并叙述我曾经的疑惑和感悟。   我的开发板里的中断例程是用按键控制一个灯亮和灭的两个状态。   这个例程的实现过程如下描述: 第一步,将一个I/O口配置成中断输入模式。      这里需要注意的是,GPIO本身是没有中断功能神马的。如果硬要使他产生中断输入方式,就得将相应的端口映射到相应的外部事件上去。而
[单片机]
<font color='red'>stm32</font> 外部中断库函数实现全程分析
STM32中的ADC有什么功能?
ADC简介 STM32F103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个外部通道,ADC3一般有8个外部通道,各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存在16位数据寄存器中。ADC的输入时钟不得超过14MHz,其时钟频率由PCLK2分频产生。 ADC功能框图讲解 学习STM32开发板上的外设时首先要了解其外设的功能框图,如下: 功能框图可以大体分为7部分,下面一一讲解: 电压输入范围 ADC所能测量的电压范围就是VREF- ≤ VIN ≤ VREF+,把 VSSA 和 VREF-接地,把 VREF+和 VDDA 接 3V3,
[单片机]
<font color='red'>STM32</font>中的ADC有什么功能?
STM32两种输出调试信息的方法
方式一:基于SEGGER的RTT方式,可直接使用jlink连接到目标板即可看到调试信息。 优点:速度很快,即使是在中断中调用也没有问题,在带系统的程序中也不需要开启临界保护; 缺点:需要加入两个SEGGER提供的.c文件及头文件,不能输出中文和浮点(原因可能是会降低速度); 硬件连接:jlink的SWDIO引脚必须和目标板连接,其它按照标准使用即可。 需要的两个.c文件可在jlink驱动安装目录D:\SEGGER\JLink_V634c\Samples\RTT中找到(我的安装到D盘驱动版本为634c,根据自己的实际情况找) 可看到里面有一个压缩包,解压后将SEGGER_RTT.c、SEGGER_RTT.h
[单片机]
STM32DAC讲解及代码示例
DAC转换 STM32的DAC模块主要特点有: ① 2个DAC转换器:每个转换器对应1个输出通道 ② 8位或者12位单调输出 ③ 12位模式下数据左对齐或者右对齐 ④ 同步更新功能 ⑤ 噪声波形生成 ⑥ 三角波形生成 ⑦ 双DAC通道同时或者分别转换 ⑧ 每个通道都有DMA功能 DAC_OUT1 - PA4 DAC_OUT2 - PA5 DAC配置步骤 程序代码示例: //DAC通道1输出初始化 void Dac1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; DAC_InitTypeDef DAC_InitType; RCC_APB2PeriphClockCm
[单片机]
STM32DAC讲解及代码示例
STM32硬件SPI时钟频率与时钟解析
首先粘贴出我们CubeMX生成的时钟配置: 然后启用SPI3的功能,这里因为博主的逻辑分析仪比较low,所以把SPI的波特率设置成最大分频,即256分频,此时CubeMX工具计算出来的时钟频率为1.5625MBits/s: 我们都知道,SPI3挂载在APB1总线上,受到总线的最大时钟120M的限制,由前面的时钟图可以知道,APB1总线时钟速度为100M,那么经过256分频应该是390.625KHz才对。1.5625M/390.625K=4,这里的4倍频,是CubeMX软件计算的问题,还是真的哪里有了4倍频? 先研究一下手册里关于APB1寄存器的相关说明: 其中SPI3的时钟包含了给spi_ker_ck 输入的内核时
[单片机]
<font color='red'>STM32</font>硬件SPI时钟频率与时钟解析
分析TCP/IP协议栈代码之TCP(STM32平台)
1. TCP介绍 TCP与UDP都属于传输层,但是与UDP不同的是,TCP是面向连接的,可靠的传输协议。 ps:需要找几篇文章来看看两者的不同和各自的用武之地了,虽然对下面的代码分析之后对何为“面向连接”,何为“可靠”有一个具象的了解,但是不够全面和系统,比如何时采用TCP,何时采用UDP,效果如何,当然还得解释清楚其中的原因所在。 2. TCP首部 TCP数据被封装在一个IP数据报中,如图17 - 1所示。 图17 - 2显示TCP首部的数据格式。如果不计任选字段,它通常是20个字节。 每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个
[单片机]
STM32--GPIO口功能以及寄存器介绍
GPIO口功能介绍 每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL【控制端口0~7】,GPIOx_CRH【如有,控制端口8~15】), 两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),(直接设置输入输出的状态,高低电平(0,1)) 一个32位置位/复位寄存器(GPIOx_BSRR),(高16位清零,低16位置1,均为1时有效,0不影响) 一个16位复位寄存器(GPIOx_BRR) ,(只清零,使用低16位) 一个32位锁定寄存器(GPIOx_LCKR)。(锁键) 如图为一个端口的基本结构,(具体的每个寄存器位的定义,请一定参考《STM32中文参考手册》)
[单片机]
STM32--GPIO口功能以及寄存器介绍
STM32速成笔记(5)—串口通信
一、什么是串口通信 串口通信是指外部设备与主控芯片之间,通过数据信号线、地线等,按位进行数据传输的一种通信方式,属于串行通信方式。串行通信是指使用一条数据线依次逐位传输数据,每一位数据占据固定长度的时间。可以看一下简单的串行通信示意图。 串口通信示意图 二、串口通信有什么用 这里简单列举一下串口通信的用途 • 下载程序 • 外设与单片机通信 单片机给外设发送一些指令或者配置信息,外设给单片机回传一些信息。 • 打印信息 比如将ADC采集到的电压发送给上位机的串口调试助手,或者实时监测某一个变量的变化。 三、STM32的串口通信 普中核心板上使用的STM32F103ZET6有三
[单片机]
<font color='red'>STM32</font>速成笔记(5)—串口通信
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved