STM32LCD 显示代码网友共享专贴
本帖主要是针对STM32LCD功能的汇总,也希望各位网友在这里发布自己的想法和实现的图片,让我们共同学习和使用STM32。目前LCD的显示主要是使用UCOS+GDI,或者裸机奔跑。我目前在使用的是裸机奔跑,对于GUI在学习中,也希望大家能够提供一些关于GUI学习的资料和例程。谢谢大家的支持。
更多资料可能未及时更新,欢迎大家访问我的博客来阅读,谢谢大家的支持。
我的博客地址:https://www.eefocus.com/caihong0217/blog/
回复:STM32LCD 显示代码网友共享专贴
下面的程序是我利用STM32的LCD显示屏代码。主要是显示的是MP3频率。如图:#ifndef __MP3_Driver_h
#define __MP3_Driver_h
extern u8 PlanNuming;
extern u8 PlanDraw;
extern u8 PlayNow;
extern u16 MP3data;
void MP3_fre(u16 x,u16 y,u16 num);
extern void MP3_Fres(u16 *Nums);
extern void MP3_Plan(u16 PlanNum,u16 *Nums);
#endif
#include "stm32f10x_lib.h" // STM32F10x Library Definitions
#include "LCD.h"
#include "Timer.h"
#include "XP_driver.h"
u8 PlanNuming;
u8 PlanDraw=0;
u16 MP3data={0};
const u16 PlanColor={
0x3DA8,0x3DA8,0x3DA8,0x4648,0x4F08,0x4FA8,0x4F08,0x4648,0x3DA8,0x3DA8,0x3DA8
};
u8 PlayNow=0;
/*******************************************************************************
* Function Name :
* Description :
* Input :
* Output :
* Return : None
*******************************************************************************/
void MP3_fre(u16 x,u16 y,u16 num)
{
u8 n,i,lennum=0;
if((num>0)&&(num16)&&(num160)&&(num1600)&&(num16000)&&(num
回复:STM32LCD 显示代码网友共享专贴
下面的代码是我用来显示日期的代码,我没有使用时间戳,使用的是算法来实现日期的变换和时间显示。其中RTC是中断,为1秒1次。下图是我的日期图。#ifndef __Timer_H
#define __Timer_H
#define Timer_1s 1000;
#define Timer_500s 500;
#define Timer_250s 250;
#define Timer_125ms 125;
extern u8 DateBuffer;
//#define Time_FlashAddr 0x08000100;
extern u32 TimerNum;
extern void RTC_Configuration(void);
extern void RTC_TimeSet(u8 HH,u8 MM,u8 SS);
extern void RTC_EETimeRead(void);
extern void RTC_EETimeRead(void);
extern u8 DataMonth(u16 Year,u8 M);
extern void RTC_DateSet(u16 Y,u8 M,u8 D,u8 Week,u8 HH,u8 MM,u8 SS);
extern void RTC_TimeRead(void);
extern void RTC_It(void);
#endif
#include "stm32f10x_lib.h" // STM32F10x Library Definitions
#include "LCD.h"
#include "Timer.H"
#include "IOmenu.h"
#include "I2C.H"
u8 DateBuffer={20,9,1,1,7,0,0,0};
u32 TimerNum;
/*******************************************************************************
* Function Name : RTC_Configuration
* Description : RTC配置
* Input :
* Output :
* Return : None
*******************************************************************************/
void RTC_Configuration(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
RTC_WaitForLastTask();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
RTC_SetPrescaler(93750); /* RTC period = RTCCLK/RTC_PR = (93.750 KHz)/(RTC+1) */
RTC_WaitForLastTask();
}
/*******************************************************************************
* Function Name : RTC_TimeSet
* Description : RTC时间设置
* Input : HH:输入小时,MM:输入分钟,SS:输入秒
* Output :
* Return : None
*******************************************************************************/
void RTC_TimeSet(u8 HH,u8 MM,u8 SS)
{
u32 TimeCount;
TimeCount=HH*3600+MM*60+SS;
RTC_WaitForLastTask();
RTC_SetCounter(TimeCount);
RTC_WaitForLastTask();
}
/*******************************************************************************
* Function Name : RTC_TimeRead
* Description : RTC时间设置
* Input : HH:输入小时,MM:输入分钟,SS:输入秒
* Output :
* Return : None
*******************************************************************************/
void RTC_EETimeRead(void)
{
EE_PageRead(0,DateBuffer,8);
RTC_TimeSet(DateBuffer,DateBuffer,DateBuffer);
}
u8 DataMonth(u16 Year,u8 M)
{
if((M==1)||(M==3)||(M==5)||(M==7)||(M==8)||(M==10)||(M==12))
{return(1);}
else if((M==4)||(M==6)||(M==9)||(M==11))
{return(2);}
else if((M==2)&& (Year%4!=0))
{return(3);}
else if((M==2)&& (Year%4==0))
{return(4);}
else {return(0);}
}
void DataSet(void)
{
u16 Y;
u8 M,D,Week,Ms;
EE_PageRead(0,DateBuffer,8);
Y=DateBuffer0)||((RM-DateBuffer)>9)) //将时间写入E2
{
RTC_SAVELED();
DateBuffer=RH;
DateBuffer=RM;
DateBuffer=RS;
EE_BlockWrite(0,DateBuffer);
Delay_1ms(50);
RTC_SAVELED();
}
else if((RM==0)&&(RH==0)&&(RS==0))
{
RTC_SAVELED();
DateBuffer=RH;
DateBuffer=RM;
DateBuffer=RS;
EE_BlockWrite(0,DateBuffer);
Delay_1ms(50);
RTC_SAVELED();
}
LCD_Str(255,2,Time,Black,Grey);
}
/*******************************************************************************
* Function Name : RTC_It
* Description :
* Input :
* Output :
* Return : None
*******************************************************************************/
void RTC_It(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =6;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/****************************E N D***************************************/
RE:STM32LCD 显示代码网友共享专贴
在做触摸屏,谢谢楼主的共享回复:STM32LCD 显示代码网友共享专贴
回复第 1 楼 安 于2010-04-12 15:14:27发表:本帖主要是针对STM32LCD功能的汇总,也希望各位网友在这里发布自己的想法和实现的图片,让我们共同学习和使用STM32。
目前LCD的显示主要是使用UCOS+GDI,或者裸机奔跑。我目前在使用的是裸机奔跑,对于GUI在学习中,也希望大家能够提供一些关于GUI学习的资料和例程。谢谢大家的支持。
更多资料可能未及时更新,欢迎大家访问我的博客来阅读,谢谢大家的支持。
我的博客地址:https://www.eefocus.com/caihong0217/blog/
kankan
RE:STM32LCD 显示代码网友共享专贴
hao,ding!!回复:STM32LCD 显示代码网友共享专贴
这个不错!RE:STM32LCD 显示代码网友共享专贴
应当给与奖励,可惜我没有积分RE:STM32LCD 显示代码网友共享专贴
谢谢楼上支持。:LRE:STM32LCD 显示代码网友共享专贴
楼主能不能把LCD驱动的代码贡献出来呢,想了解一些这方面的知识
页:
[1]
2