基于STM32的多功能数字钟
if(sec_back!=calendar.sec)
{
sprintf(temp,"DATE:%d-%d-%d %d",calendar.w_year,calendar.w_month,calendar.w_date,calendar.week);
LCD_ShowString(30,100,210,24,24,temp);
sprintf(temp,"TIME: %d:%d:%d ",calendar.hour,calendar.min,calendar.sec);
LCD_ShowString(30,140,210,24,24,temp);
}
}
keyfunction();//按键扫描和功能解析(包括了开发板上的按键、红外遥控按键、触摸按键)
if(flag_1s ==1)//每秒读取一次温度
{
flag_1s =0;
LCD_ShowString(30+5*12,180,210,24,24," ");
temp5=DS18B20_Get_Temp();
sprintf(temp,"TEMP:%d.%d",temp5/10,temp5%10);
LCD_ShowString(30,180,210,24,24,temp);
}
}
}
/*
函数功能:显示画图框
*/
void Load_Drow_Dialog(void)
{
LCD_Clear(RED);//清屏
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(lcddev.width-30,0,200,24,24,"RST");//显示清屏区域
}
void Disp_Tiao_Shan(void)
{
unsigned char temp[12];
switch(flag_tiao)
{
case 1: {
if(flag_250ms==1)
{
LCD_ShowString(30+12*13,140,24,24,24," ");
break;
}
else goto kk2;
}
case 2: {
if(flag_250ms==1)
{
LCD_ShowString(30+12*10,140,24,24,24," ");
break;
}
else goto kk2;
}
case 3: {
if(flag_250ms==1)
{
LCD_ShowString(30+12*7,140,24,24,24," ");
break;
}
else goto kk2;
}
case 4: {
if(flag_250ms==1)
{
LCD_ShowString(30+12*15,100,24,24,24," ");
break;
}
else goto kk2;
}
case 5: {
if(flag_250ms==1)
{
LCD_ShowString(30+12*12,100,24,24,24," ");
break;
}
else goto kk2;
}
case 6: {
if(flag_250ms==1)
{
LCD_ShowString(30+12*10,100,24,24,24," ");
break;
}
else goto kk2;
}
case 7: {
if(flag_250ms==1)
{
LCD_ShowString(30+12*5,100,48,24,24," ");
break;
}
else goto kk2;
}
kk2:
{
sprintf(temp,"DATE:%d-%d-%d %d",calendar.w_year,calendar.w_month,calendar.w_date,calendar.week);
LCD_ShowString(30,100,210,24,24,temp);
sprintf(temp,"TIME: %d:%d:%d ",calendar.hour,calendar.min,calendar.sec);
LCD_ShowString(30,140,210,24,24,temp);
break;
}
default :break ;
}
}
#include "sys.h"
#include "delay.h"
#include "key.h"
#include "rtc.h"
#include "remote.h"
#include "touch.h"
#include "lcd.h"
typedef struct
{
vu8 s_hour;
vu8 s_min;
vu8 s_sec;
//公历日月年周
vu16 s_year;
vu8 s_month;
vu8 s_date;
vu8 s_week;
}Timer;
extern unsigned char flag_20ms;
extern unsigned char flag_key0,flag_key1,flag_key2,flag_tiao;
extern Timer S_timer;
void key_init(void)
{
GPIO_InitTypeDef KEY_InitTypeDef;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOC,ENABLE);
KEY_InitTypeDef.GPIO_Pin=GPIO_Pin_0;
KEY_InitTypeDef.GPIO_Mode=GPIO_Mode_IPD;
KEY_InitTypeDef.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&KEY_InitTypeDef);
KEY_InitTypeDef.GPIO_Pin=GPIO_Pin_5;
KEY_InitTypeDef.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOC,&KEY_InitTypeDef);
KEY_InitTypeDef.GPIO_Pin=GPIO_Pin_15;
KEY_InitTypeDef.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOA,&KEY_InitTypeDef);
KEY0=1;
KEY1=1;
WK_UP=0;
}
/*
函数功能:按键扫描函数
输入参数:无
输出参数:返回键码。无按键时返回
STM32数字 相关文章:
- STM32 数字电压表 LM317 可调电源(12-03)
- 基于STM32的多功能数字钟(中文版)(11-18)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
