亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? system.c

?? 51單片機時鐘 和18B20 溫度的 LED顯示
?? C
?? 第 1 頁 / 共 2 頁
字號:
//=========================================================================================//
//文件名稱:system.c
//功能描述:液晶顯示驅動,以及時間日期調整
//維護記錄:2006.7.31  by zhenlei
//==========================================================================================//
#include "SPCE061A.h"
#include "SPLC501User.h"
#include "Bit.h"

#define  serial_clk  IOB1_Data
#define  serial_data IOB0_Data

extern void keyscan();                   //鍵盤掃描函數聲明
extern void PlayRespond(unsigned int Result);
extern void F_Disp_Drv(unsigned int i,unsigned int j);
                                         //語音播放函數聲明
void showhour(int showhour);             //顯示小時函數聲明
void ring_choice();                      //鈴聲選擇函數聲明
void BCD(unsigned int c,unsigned int *p );
void uart_operate(unsigned int uart_data);
void ClearDisplay();
extern unsigned int num;                 //2HZ計數單元

extern unsigned int hour;                //存放當前的小時
extern unsigned int min;                 //存放當前的分鐘
extern unsigned int sec;                 //存放當前的秒
extern unsigned int year;                //存放當前的年
extern unsigned int gmonth;              //存放當前的公歷的月
extern unsigned int gday;                //存放當前的公歷的日
extern unsigned int xqvalue;             //存放當前的星期
extern unsigned int nmonth;              //存放農歷的月
extern unsigned int nday;                //存放農歷的日

extern unsigned int runxq[];             //閏年星期偏差表
extern unsigned int pingxq[];            //平年星期偏差表
extern unsigned int glunarmonthday[];    //農歷月天數表
extern char number[];     
extern int DispEnb; 
extern unsigned int keyvalue;
extern unsigned int keyflag3;
extern unsigned int keyflag4;
extern unsigned int keyflag6;
extern unsigned int keyflag7;
extern unsigned int clockset[];
extern unsigned int nhour;
extern unsigned int nmin;
extern unsigned int mbsec;
extern unsigned int mmsec;
extern unsigned int mbmin;
extern unsigned int keyflag5;
extern unsigned int mbnum;
extern unsigned int onoff;
extern unsigned int runflag;
extern unsigned int ringflag;
extern unsigned int int2hz;
extern unsigned int counter;                   
extern unsigned int mapcounter1;
extern unsigned int mapcounter2;
extern unsigned int* BMP_Cartoon[];
extern unsigned int Flash;
extern unsigned int Time[6],mTime[6],Date[6],nDate[6];
unsigned int LED[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};//數碼管的段選碼
//===============================================================//
//語法格式:void clock()
//實現功能:時鐘的調整
//參數    :無
//返回值  :無
//==============================================================//    
void clock()                                                   //時鐘運算函數,入口參數半秒、秒、分、時。
{ 
	if(num==0x0002)                                            //如果半秒到了2,則秒加1
	{
    	num = 0x0000;
		sec = sec++;
		counter=counter++;                                     //顯示動畫的楨加一
		if(counter==40)
			counter=0;	
	}
	if(sec==60)                                                //如果秒到了60,則秒清零分加1
	{
		sec = 0;
		min = ++min;	
	}
	if(min==60)                                                //如果分到了60,則分清零,小時加1
	{
		min = 0;
		hour = ++hour;
	}
		
}
//===============================================================//
//語法格式: void gyearmonthday()
//實現功能:公歷日期和農歷日期的調整
//參數    :無
//返回值  :無
//==============================================================// 
void gyearmonthday()                                            //公歷運算子函數修改變量年、
{   
	int monthvalue = 0;                                         //月、日、時、陰歷月,日
	int xx = 0;
	int nmonthvalue = 0;
	if(hour==24)
	{
		hour = 0;
		gday = ++gday;
		nday = ++nday;
	}
	switch(nmonth)                                         		//查表確定陰歷月份的天數。
	{
		case 1:
			xx=glunarmonthday[year-2001]&0x8000;
			break;
		case 2:
			xx=glunarmonthday[year-2001]&0x4000;
			break;
		case 3: 
			xx=glunarmonthday[year-2001]&0x2000;
			break;
		case 4: 
			xx=glunarmonthday[year-2001]&0x1000;
			break;
		case 5: 
			xx=glunarmonthday[year-2001]&0x0800;
			break;
		case 6: 
			xx=glunarmonthday[year-2001]&0x0400;
			break;
		case 7: 
			xx=glunarmonthday[year-2001]&0x0200;
			break;
		case 8: 
			xx=glunarmonthday[year-2001]&0x0100;
			break;
		case 9: 
			xx=glunarmonthday[year-2001]&0x0080;
			break;
		case 10: 
			xx=glunarmonthday[year-2001]&0x0040;
			break;
		case 11: 
			xx=glunarmonthday[year-2001]&0x0020;
			break;
		case 12: 
			xx=glunarmonthday[year-2001]&0x0010;
			break;
	}
	if(xx==0)
		nmonthvalue = 29;
	else
	    nmonthvalue = 30;
	if(nday==(nmonthvalue+1))
	{ 
		if((nmonth==(glunarmonthday[year-2001] & 0x000f)) && runflag==0)//判斷是否當年閏月
		{
			runflag = 1; 
			nday = 1;
		}	
		else
		{
			nmonth = ++nmonth;
		    runflag = 0; 
		    nday = 1;
		}
	}
	if(nmonth==13)
	{
		nmonth = 1;
	}
		    
	switch(gmonth)                                    					 //判斷公歷天的個數
	{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12: 
			monthvalue = 31;
			break;
		case 4:
		case 6:
		case 9:
		case 11: 
			monthvalue = 30;
			break;
		case 2: 
			if((year%4==0&&year%100!=0)||(year%400==0))  				 // 判斷當年是否是閏年。
				monthvalue = 29;
		    else
		    {
		    	monthvalue = 28;
		    }
		    break;
	}
	if(gday==monthvalue+1)
	{
		gday = 1;
		gmonth=gmonth++;
	}
	if(gmonth==13)
	{
		gmonth = 1;
		year = year++;                                           //到了12月,年就加1。
	}
    if(year==2101)                                               //年的顯示范圍為2001--2100。
    {
    	year = 2001;
    }
}	
//===============================================================//
//語法格式:gxq()
//實現功能:星期的調整
//參數    :無
//返回值  :無
//==============================================================// 	
void gxq()                                                      // 計算當前星期的子函數,入口參數年、
{                                                               //月、日、星期
	if((year%4==0&&year%100!=0)||(year%400==0))                 //如果當年是閏年
	{
		xqvalue = (((year/100)%4)*5+year%100+(year%100)/4+runxq[gmonth-1]+gday+2)%7;
	}
	else
	    xqvalue = (((year/100)%4)*5+year%100+(year%100)/4+pingxq[gmonth-1]+gday+2)%7;
}

//===============================================================//
//語法格式: void display()
//實現功能:顯示正常運行界面
//參數    :
//返回值  :無
//==============================================================//
void display()
{
	BCD(sec,&Time[4]);
	BCD(min,&Time[2]);
	BCD(hour,&Time[0]);
	
	uart_operate(Time[0]);
	uart_operate(Time[1]);	//顯示小時
	uart_operate(0x02);
	uart_operate(Time[2]);
	uart_operate(Time[3]);	//顯示分
	uart_operate(0x02);
	uart_operate(Time[4]);
	uart_operate(Time[5]);	//顯示秒
}

//===============================================================//
//語法格式: void nextdisplay() 
//實現功能:顯示時間日期調整及功能選擇界面
//參數    :無
//返回值  :無
//==============================================================//
void nextdisplay()                                              //顯示時間日期調整子程序
{
	BCD(gday,&Date[4]);
	BCD(gmonth,&Date[2]);
	BCD(year-2000,&Date[0]);
	
	uart_operate(Date[0]);
	uart_operate(Date[1]);	//顯示年
	uart_operate(0x02);
	uart_operate(Date[2]);
	uart_operate(Date[3]);	//顯示月
	uart_operate(0x02);
	uart_operate(Date[4]);
	uart_operate(Date[5]);	//顯示日
}
//===============================================================
//===============================================================
void nextdisplay2()
{
 	BCD(xqvalue,&nDate[4]);
	BCD(nday,&nDate[2]);
	BCD(nmonth,&nDate[0]);
	
	uart_operate(nDate[0]);
	uart_operate(nDate[1]);	//顯示農歷月
	uart_operate(0x02);
	uart_operate(nDate[2]);
	uart_operate(nDate[3]);	//顯示農歷日
	uart_operate(0x02);
	uart_operate(nDate[4]);
	uart_operate(nDate[5]);	//顯示星期
}

//===============================================================//
//語法格式: void displaymodify(keynowvalue)
//實現功能:時間日期調整界面
//參數    :keynowvalue當前閃爍
//返回值  :無
//==============================================================//
void displaymodify(unsigned int keynowvalue)
{
 	switch(keynowvalue)
 	{
 		case 0:
 			if(Flash)		//正常顯示
 			{
 				nextdisplay();
 				Flash=0;
 			}
 			else if(DispEnb)		//每0.5s秒不顯示
 			{
 				uart_operate(0x00);
				uart_operate(0x00);		//不顯示年
				uart_operate(0x02);		//-
				uart_operate(Date[2]);
				uart_operate(Date[3]);	//顯示月
				uart_operate(0x02);		//-
				uart_operate(Date[4]);
				uart_operate(Date[5]);	//顯示日
				DispEnb=0;	
 			}
 			break;
		case 2:
 			if(Flash)		//正常顯示
 			{
 				nextdisplay();
 				Flash=0;
 			}
 			else if(DispEnb)			//每0.5s秒不顯示
 			{
 				uart_operate(Date[0]);
				uart_operate(Date[1]);	//顯示年
				uart_operate(0x02);
				uart_operate(0x00);		//-
				uart_operate(0x00);		//不顯示月
				uart_operate(0x02);		//-
				uart_operate(Date[4]);
				uart_operate(Date[5]);	//顯示日
				DispEnb=0;	
 			}
 			break;
 		case 4:
 			if(Flash)		//正常顯示
 			{
 				nextdisplay();
 				Flash=0;
 			}
 			else if(DispEnb)				//每0.5s秒不顯示
 			{
 				uart_operate(Date[0]);
				uart_operate(Date[1]);		//顯示年
				uart_operate(0x02);			//-
				uart_operate(Date[2]);
				uart_operate(Date[3]);		//顯示月
				uart_operate(0x02);			//-
				uart_operate(0x00);
				uart_operate(0x00);			//不顯示日

				DispEnb=0;	
 			}
 			break;
 		case 6:
 			if(Flash)		//正常顯示
 			{
 				display();
 				Flash=0;
 			}
 			else if(DispEnb)		//每0.5s年不顯示
 			{
 				uart_operate(0x00);
				uart_operate(0x00);		//不顯示時
				uart_operate(0x02);
				uart_operate(Time[2]);
				uart_operate(Time[3]);	//顯示分
				uart_operate(0x02);
				uart_operate(Time[4]);
				uart_operate(Time[5]);	//顯示秒	
 				DispEnb=0;
 			}
 			break;
 		case 8:
 			if(Flash)		//正常顯示
 			{
 				display();
 				Flash=0;
 			}
 			else if(DispEnb)		//每0.5s年不顯示
 			{
 				uart_operate(Time[0]);
				uart_operate(Time[1]);		//顯示時
				uart_operate(0x02);
				uart_operate(0x00);
				uart_operate(0x00);	//不顯示分
				uart_operate(0x02);
				uart_operate(Time[4]);
				uart_operate(Time[5]);	//顯示秒	
				DispEnb=0;
 			}
 			break;
 		case 10:
 			if(Flash)		//正常顯示
 			{
 				display();
 				Flash=0;
 			}
 			else if(DispEnb)		//每0.5s年不顯示
 			{
 				uart_operate(Time[0]);
				uart_operate(Time[1]);		//顯示時
				uart_operate(0x02);
				uart_operate(Time[2]);
				uart_operate(Time[3]);	//顯示分
				uart_operate(0x02);
				uart_operate(0x00);
				uart_operate(0x00);	//不顯示秒	
				DispEnb=0;
 			}
 			break;
 		case 12:
 			if(Flash)		//正常顯示
 			{
 				nextdisplay2();
 				Flash=0;
 			}
 			else if(DispEnb)		//每0.5s年不顯示
 			{
 				uart_operate(0x00);
				uart_operate(0x00);		//不顯示農歷月
				uart_operate(0x02);
				uart_operate(nDate[2]);
				uart_operate(nDate[3]);	//顯示農歷日
				uart_operate(0x02);
				uart_operate(nDate[4]);
				uart_operate(nDate[5]);	//顯示星期	
				DispEnb=0;
 			}
 			break;
 		case 14:
 			if(Flash)		//正常顯示
 			{
 				nextdisplay2();
 				Flash=0;
 			}
 			else if(DispEnb)		//每0.5s年不顯示
 			{
 				uart_operate(nDate[0]);
				uart_operate(nDate[1]);		//顯示農歷月
				uart_operate(0x02);
				uart_operate(0x00);
				uart_operate(0x00);	//不顯示農歷日
				uart_operate(0x02);
				uart_operate(nDate[4]);
				uart_operate(nDate[5]);	//顯示星期	
				DispEnb=0;
 			}
 			break;
 	}
}


//===============================================================//
//語法格式:  void setday() 
//實現功能:顯示時間日期調整界面
//參數    :無
//返回值  :無
//==============================================================//
void setday()
{   
	int j = 0;
    /*此處 如有需要可加入 日期顯示*/
    keyflag3 = 1;                                               //置位鍵按下標志                                         
	while(keyflag3==1)
	{
		keyscan();                                              //鍵盤掃描
		if(keyvalue!=0)
			if(j>=0&&j<6)		//年、月、日
				nextdisplay();
			else if(j>=6&&j<12)	//十、分、秒
				display();
			else
				nextdisplay2();	//農歷月、日和星期
		else
			displaymodify(j);                                   //調用時間日期顯示界面
		switch(keyvalue)
		{
			case 0x0001:
				if(j==14)                                       //如果光標已經到了最后的一個位置
			    {                                               //則退出調整界面
			     	keyflag3 = 0;
			  	}
			    else                                            //根據按鍵修改光標的位置                    
			    	j = j+2;
				break;
			case 0x0002:                                        //如果是KEY2按下,那么光標所對應的值進行加操作
				switch(j)
	            {
	            	case 0:
	                  	if(year>=2100)
	                		year = 2001;
	                    else
	                    	year = ++year;
	                    break;
					case 2:
                    	if(gmonth==12)
                        	gmonth = 1;
                        else
                        	gmonth = ++gmonth;
                        break;
					case 4:
                    	if(gday==31)
                        	gday = 1;
                        else
                        	gday = ++gday;
                        break;                             
					case 6:        
                        if(hour==24)
                        	hour = 0;
                        else
               	        	hour = ++hour;
                        break;
					case 8:
                    	if(min==60)
                        	min = 0;
                        else
                        	min = ++min;	 
                        break;
					case 10:
                    	if(sec==60)
                        	sec = 0;
                        else
                        	sec = ++sec;
                        break;
					case 12:
                   		if(nmonth==12)
                        	nmonth = 1;
                        else
                        	nmonth = ++nmonth;
                        break;
					case 14:
                    	if(nday==30)
                        	nday = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产自产拍在线| 美女网站在线免费欧美精品| 亚洲一区二区在线观看视频| 久久国产精品第一页| 91国偷自产一区二区使用方法| 日韩精品中文字幕在线一区| 一区二区在线观看视频| 国产盗摄一区二区| 日韩一区二区免费高清| 亚洲一区二区三区四区五区黄 | 久久久天堂av| 亚洲一区av在线| 成人综合婷婷国产精品久久免费| 欧美二区三区的天堂| 一区二区久久久久久| jlzzjlzz亚洲日本少妇| 国产日韩在线不卡| 国产精品亚洲午夜一区二区三区| 日韩欧美一级二级三级| 日韩影院免费视频| 欧美肥妇毛茸茸| 午夜精品国产更新| 欧美性色欧美a在线播放| 中文字幕一区二区日韩精品绯色| 福利一区在线观看| 国产婷婷一区二区| 国产精品白丝av| 日本一区二区三区免费乱视频| 韩国女主播成人在线观看| 精品国产a毛片| 极品尤物av久久免费看| 2022国产精品视频| 国产激情一区二区三区四区 | 欧美日韩一区二区三区四区五区| 亚洲欧洲性图库| 色婷婷国产精品综合在线观看| 成人欧美一区二区三区| 99久久精品国产导航| 亚洲另类色综合网站| 精品视频一区二区不卡| 亚洲成人动漫在线免费观看| 在线电影国产精品| 老司机一区二区| 欧美精品一区二区三| 国产成人免费视频精品含羞草妖精 | 色一情一乱一乱一91av| 亚洲午夜在线电影| 91精品欧美久久久久久动漫 | 久久精品国产99| 久久久久九九视频| 91免费精品国自产拍在线不卡| 亚洲国产综合91精品麻豆| 欧美精品电影在线播放| 老司机精品视频一区二区三区| 久久久久久久久久久久久久久99 | 成人av网站免费| 亚洲成人高清在线| 久久久久国产精品麻豆| 91免费视频观看| 精品一区免费av| 亚洲色图在线视频| 制服丝袜成人动漫| 夫妻av一区二区| 午夜精品久久久久久久久久| 久久精品无码一区二区三区| 一本色道亚洲精品aⅴ| 蜜臀国产一区二区三区在线播放| 国产精品另类一区| 欧美精品v国产精品v日韩精品| 国产一区二区电影| 日本va欧美va欧美va精品| 免费成人性网站| 欧美一二三区在线观看| 国产传媒一区在线| 亚洲国产成人高清精品| 国产欧美日韩另类视频免费观看| 欧美午夜精品免费| 国产成人aaaa| 欧美一区二区三区性视频| 国产精品久久久久四虎| 99精品久久免费看蜜臀剧情介绍| 国产精品久久综合| 色偷偷久久人人79超碰人人澡 | 精品第一国产综合精品aⅴ| 亚洲国产欧美日韩另类综合| 欧美狂野另类xxxxoooo| 免费的成人av| 国产视频一区不卡| 成人ar影院免费观看视频| 亚洲色图色小说| 日本高清成人免费播放| 日韩中文字幕一区二区三区| 欧美一级国产精品| 国产二区国产一区在线观看| 国产精品女主播av| 色狠狠色狠狠综合| 美国一区二区三区在线播放| 久久精品免费在线观看| 91免费看视频| 精品在线播放免费| 亚洲欧美偷拍三级| 欧美精品久久一区二区三区| 国产资源精品在线观看| 国产精品不卡一区| 91精品国产乱| 成人精品gif动图一区| 亚洲大片精品永久免费| 国产亚洲欧洲997久久综合| 色老综合老女人久久久| 久久99久久99精品免视看婷婷 | 丁香激情综合五月| 亚洲一区二区三区四区不卡| 久久奇米777| 欧美久久久久久蜜桃| 成人午夜伦理影院| 日本欧美一区二区三区乱码| 国产精品福利影院| 日韩欧美一级二级三级久久久| 99这里都是精品| 狠狠色狠狠色综合日日91app| 亚洲激情欧美激情| 国产亚洲一区二区在线观看| 欧美日韩国产一二三| a级高清视频欧美日韩| 久久9热精品视频| 午夜视黄欧洲亚洲| 自拍偷拍亚洲激情| 久久久国产精华| 日韩欧美成人一区| 3d动漫精品啪啪1区2区免费| 91麻豆成人久久精品二区三区| 国产一区久久久| 免费高清不卡av| 奇米影视在线99精品| 亚洲成人精品一区二区| 亚洲视频在线观看三级| 国产精品私人影院| 久久九九全国免费| 26uuuu精品一区二区| 91精品国产综合久久香蕉的特点| 在线观看www91| 欧美性一区二区| 国产精品不卡在线观看| 国产三级久久久| 久久精品视频免费| 国产校园另类小说区| 久久精品亚洲精品国产欧美kt∨| 久久这里只有精品6| 久久综合狠狠综合久久综合88| 91精选在线观看| 91精品国产综合久久婷婷香蕉| 欧美日韩国产色站一区二区三区| 色88888久久久久久影院野外| 色呦呦网站一区| 欧美视频中文字幕| 精品视频1区2区| 欧美男同性恋视频网站| 777a∨成人精品桃花网| 精品国一区二区三区| 久久蜜臀精品av| 国产精品久久久久影视| 亚洲毛片av在线| 亚洲第一福利一区| 精品一区二区三区视频 | 国产精品久线观看视频| 亚洲欧美另类久久久精品| 亚洲午夜av在线| 91视频在线看| 91精品久久久久久久91蜜桃| 日韩一区二区视频在线观看| 欧美精品一区二区三区一线天视频| 国产性色一区二区| 亚洲一区在线视频观看| 日韩电影在线观看电影| 国产成人高清视频| 日本乱人伦aⅴ精品| 欧美日韩国产首页| 亚洲国产激情av| 无码av免费一区二区三区试看| 久久不见久久见免费视频7| 成人激情小说网站| 欧美体内she精视频| 国产日韩欧美a| 亚洲成人av电影| 国产不卡免费视频| 欧美日韩国产首页在线观看| 久久久久一区二区三区四区| 亚洲最新视频在线观看| 国产很黄免费观看久久| 欧美三级电影在线看| 国产欧美日韩在线看| 亚洲成人av福利| 91日韩一区二区三区| 久久综合精品国产一区二区三区 | 在线精品视频免费播放| 欧美xxxx老人做受| 亚洲一区二区三区美女| 国产激情91久久精品导航| 欧美一区午夜视频在线观看| 亚洲品质自拍视频|