⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.c

📁 基于stm32的MP3播放器
💻 C
字号:
#include "COMM.h"
//时间显示部分的GUI
const u8 *week_table[7]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
//根据当前的日期,更新日历表.
void Date_Refresh(void) 
{
	u8 str[15]; //暂存
	u8 weekn;   //周寄存
	//从阳历,得到阴历日期	   
	POINT_COLOR=GREEN;		  
    GetChinaCalendarStr(timer.w_year,timer.w_month,timer.w_date,str);  
	weekn=strlen((const char *)str);//得到字符串长度
	Show_Str(120-weekn*4,60,str,0x01); //显示农历
	//显示阳历年月日
	POINT_COLOR=BRED;  
	TFT_ShowNum(5,193,(timer.w_year/100)%100,16,0);//显示年  20/19  
	TFT_ShowNum(21,193,timer.w_year%100,16,0);//显示年  
	TFT_ShowString(37,193,"-"); //"-"
	TFT_ShowNum(45,193,timer.w_month,16,0);//显示月
	TFT_ShowString(61,193,"-"); //"-"
	TFT_ShowNum(69,193,timer.w_date,16,0);//显示日

	//显示周几?
	POINT_COLOR=RED;
    GetWeek(timer.w_year,timer.w_month,timer.w_date,&weekn);//得到星期	   
	Show_Str(21,218,(u8 *)week_table[weekn],0x01); //显示周几?	
		
	//得到节气
	POINT_COLOR=GRED;														  
    GetJieQiStr(timer.w_year,timer.w_month,timer.w_date,str);     
	weekn=strlen((const char *)str);//得到字符串长度
	Show_Str(120-weekn*4,268,str,0x01); //显示节气
}
//时间显示模式
void Time_Viewer(void)
{
	u8 key;	    
	u8 second;
	short temperate=0;//温度值		   
	u8 t=0;
	u8 tempdate;
	//u8 JQdate;
	while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步  
	RTC->CRH|=0X01;  		  //允许秒中断
	while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成

	TFT_CLEAR(BLACK);//清黑屏    	  
	second=timer.sec;//得到此刻的秒钟
	POINT_COLOR=GBLUE;
	Show_Str(48,60,"正在加载,请稍候...",0x01); //显示农历
		    
	delay_ms(1100);//等待1.1s 
	BACK_COLOR= BLACK;
	TFT_CLEAR(BLACK);//清黑屏 
	Date_Refresh();  //加载日历
	tempdate=timer.w_date;//天数暂存器

	Pen_Point.Key_Sta=Key_Up;         //释放显示期间的触发	   	  
	while(1)
	{	
		if(Pen_Point.Key_Sta==Key_Down||NPEN)key=Touch_Key_Pro(2);//得到了按键值		   
		if(key) 
		{ 
			if(key==MOVE_LEFT)break;//退出时钟模式  	    	
			key=0;										   
			Pen_Point.Key_Sta=Key_Up;         //释放显示期间的触发 
		}
		if(second!=timer.sec) //秒钟改变了
		{ 	
			second=timer.sec;		
			//显示大体的时钟
			POINT_COLOR=GBLUE;
			TFT_ShowBigNum(0,100,timer.hour);//显示时
			TFT_ShowBigChar(60,100,':'); //"/"
			TFT_ShowBigNum(90,100,timer.min);//显示分
			TFT_ShowBigChar(150,100,':'); //"/"
			TFT_ShowBigNum(180,100,timer.sec);//显示秒	 
			if(t==1)ADC1->CR2|=1<<22;//启动单次规则转换 通道16(温度传感器)
			if(t%6==0)//等待五秒钟
			{			  
				temperate=get1820data();//得到温度
				if(temperate<0)//温度为负数的时候,红色显示
				{
					POINT_COLOR=RED;
					temperate=-temperate;//改为正温度
				}
				else POINT_COLOR=BRRED;		   //正常为棕红色字体显示
				TFT_ShowBigNum(90,184,temperate/10);//XX
				TFT_ShowBigChar(150,184,'.'); //"."
				TFT_ShowBigChar(180,184,temperate%10);//显示小数
				TFT_ShowBigChar(210,184,'C'); //"/"
				if(t>0)t=0;			 
			}
			if(timer.w_date!=tempdate)Date_Refresh();//天数变化了,更新日历.  
			t++;  
		}			 			 
	};
	while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步  
	RTC->CRH&=~(0X01);  	  //关闭秒中断
	while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
	TFT_CLEAR(WHITE);//清黑屏    
	POINT_COLOR=BLUE;
	BACK_COLOR=WHITE ;	
}




























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -