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

📄 3208_v4.01.00.c

📁 《爱上单片机》_单片机学习必备
💻 C
📖 第 1 页 / 共 4 页
字号:
			while(T[y] != 0x99){//显示开机画面“ALARM”			
				Ledplay[bn] = T[y];//将二维数组中的一组数据放入显示缓冲区	
				y++;//换下一个提取字节		
				bn++;//换下一个显示缓冲字节				
			}	
			switch (a){//显示设置项的说明		
				case 1:			
					putin(read_clock(0x8d)/16);//显示年(十位)		
					putin(read_clock(0x8d)%16);//显示年(个位)		
					putin(20);//显示“年”表示		
					break;//		
				case 2:			
					putin(read_clock(0x89)/16);//显示(十位)		
					putin(read_clock(0x89)%16);//显示(个位)		
					putin(21);//显示“月”表示		
					break;//		
				case 3:			
					putin(read_clock(0x87)/16);//显示(十位)		
					putin(read_clock(0x87)%16);//显示(个位)		
					putin(22);//显示“日”表示		
					break;//		
				case 4:			
					putin(23);//显示“周”表示		
					putin(read_clock(0x8b)+9);//显示(个位)		
					break;//		
				case 5:			
					putin(read_clock(0x85)/16);//显示(十位)		
					putin(read_clock(0x85)%16);//显示(个位)		
					putin(24);//显示“时”表示		
					break;//		
				case 6:			
					putin(read_clock(0x83)/16);//显示分(十位)		
					putin(read_clock(0x83)%16);//显示分(个位)		
					putin(25);//显示“分”表示		
					break;//		
			}		
			Set_time(a,0);		
			MENUexit ();		
		 	if(OK_Key == 0){					
		 		DelayM(20);//去抖					
		 		if(OK_Key == 0){		
					key_off ();//等待键放开		
		 			Beep_set();//调时提示音					
		 			a++; if(a>6){ a = 1;}		
		 		}		
			}		
		}	
/**********************************************************************************************/	
		if(MENU == 8){//正点报时设置	V4.0----(8)	
			bn = 0;a=0;	
			clearRAM();//清空显示缓冲区数据	
			while(POINT[a] != 0x99){//显示开机画面“POINT”			
				Ledplay[bn] = POINT[a];//将二维数组中的一组数据放入显示缓冲区	
				a++;//换下一个提取字节		
				bn++;//换下一个显示缓冲字节				
			}	
			MENUadd1 ();//菜单加1	
			MENUexit ();	
		 	if(OK_Key == 0){				
		 		DelayM(20);//去抖				
		 		if(OK_Key == 0){	
					key_off ();//等待键放开	
		 			Beep_set();//调时提示音				
		 			MENU = 101;	
					a = 0;	
		 		}	
			}	
		}
/**********************************************************************************************/		
		if(MENU == 101){//正点报时 设置项 	
			uchar y = 0;	
			bn = 0;//显示位累加寄存器清零(从头开始写入显示缓冲区)	
			clearRAM();//清空显示缓冲区数据	
			while(Pp[y] != 0x99){//显示			
				Ledplay[bn] = Pp[y];//将二维数组中的一组数据放入显示缓冲区	
				y++;//换下一个提取字节		
				bn++;//换下一个显示缓冲字节				
			}	
			write_clock(0x8e,0x00);//允许写操作	
				switch (a){//显示设置项的说明	
					case 0: break;	
					case 1:	write_clock(0xc2,0x07);write_clock(0xc4,0x19);break;//设置正点报时为>7 <19,即8到18点	
					case 2:	write_clock(0xc2,0x07);write_clock(0xc4,0x20);break;//	
					case 3:	write_clock(0xc2,0x07);write_clock(0xc4,0x21);break;//	
					case 4:	write_clock(0xc2,0x07);write_clock(0xc4,0x22);break;//	
					case 5:	write_clock(0xc2,0x07);write_clock(0xc4,0x23);break;//	
					case 6:	write_clock(0xc2,0);write_clock(0xc4,0x23);break;//	
					case 7:	write_clock(0xc2,0);write_clock(0xc4,0);break;//	
				}	
				write_clock(0x8e,0x80);//禁止写操作	
				putin(read_clock(0xc3)%16);//显示开始时间	
				putin(18);//	
				putin(read_clock(0xc5)/16);//显示结束(十位)	
				putin(read_clock(0xc5)%16);//显示结束(个位)	
				MENUexit ();	
		 		if(OK_Key == 0){				
		 			DelayM(20);//去抖				
		 			if(OK_Key == 0){	
						key_off ();//等待键放开	
		 				Beep_set();//调时提示音				
		 				a++; if(a>7){ a = 1;}	
		 			}	
				}	
		}
/**********************************************************************************************/		
		if(MENU == 9){//闹钟总开关	V4.0-----(9)	
			bn = 0;a=0;	
			clearRAM();//清空显示缓冲区数据	
			while(ONOFF[a] != 0x99){//显示			
				Ledplay[bn] = ONOFF[a];//将二维数组中的一组数据放入显示缓冲区	
				a++;//换下一个提取字节		
				bn++;//换下一个显示缓冲字节				
			}	
			MENUadd1 ();//菜单加1	
			MENUexit ();	
			if(OK_Key == 0){				
		 		DelayM(20);//去抖				
		 		if(OK_Key == 0){	
					key_off ();//等待键放开	
		 			Beep_set();//调时提示音				
		 			MENU = 102;	
		 		}	
			 }	
		}
/**********************************************************************************************/	
		if(MENU == 102){//闹钟总开关		
			bn = 0;a=0;	
			clearRAM();//清空显示缓冲区数据	
			if(read_clock(0xc7) == 1){	
				while(Aon[a] != 0x99){//显示			
					Ledplay[bn] = Aon[a];//将二维数组中的一组数据放入显示缓冲区	
					a++;//换下一个提取字节		
					bn++;//换下一个显示缓冲字节				
				}	
			}else{	
				while(Aoff[a] != 0x99){//显示			
					Ledplay[bn] = Aoff[a];//将二维数组中的一组数据放入显示缓冲区	
					a++;//换下一个提取字节		
					bn++;//换下一个显示缓冲字节				
				}	
			}	
		 	if(OK_Key == 0){					
		 		DelayM(20);//去抖					
		 		if(OK_Key == 0){		
					key_off ();//等待键放开		
		 			Beep_set();//调时提示音		
					write_clock(0x8e,0x00);//允许写操作		
					if(read_clock(0xc7) == 1){					
		 				write_clock(0xc6,0);			
					}else{					
		 				write_clock(0xc6,1);			
					}		
		 			write_clock(0x8e,0x80);//禁止写操作		
				}		
			}		
			MENUexit ();				
		}
/**********************************************************************************************/
		if(MENU == 10){//------V4.0新增功能-流动速度
			bn = 0;a=0;	
			clearRAM();//清空显示缓冲区数据
			while(SPEED[a] != 0x99){//显示			
				Ledplay[bn] = SPEED[a];//将二维数组中的一组数据放入显示缓冲区	
				a++;//换下一个提取字节		
				bn++;//换下一个显示缓冲字节				
			}	
			MENUadd1 ();//菜单加1	
			MENUexit ();	
			if(OK_Key == 0){				
		 		DelayM(20);//去抖				
		 		if(OK_Key == 0){	
					key_off ();//等待键放开	
		 			Beep_set();//调时提示音				
		 			MENU = 103;	
		 		}	
			}
		}
/**********************************************************************************************/	
		if(MENU == 103){//流动显示项
		uchar temp;
			bn = 0;a=0;		
			clearRAM();//清空显示缓冲区数据	
			while(LEVEL[a] != 0x99){//显示			
				Ledplay[bn] = LEVEL[a];//将二维数组中的一组数据放入显示缓冲区	
				a++;//换下一个提取字节		
				bn++;//换下一个显示缓冲字节				
			}	
			temp=read_clock(0xc3+7*6);
			putin(temp);

			if(Add_Key == 0 || Add2_Key == 0){			
				DelayM(20);//去抖
				if(Add_Key == 0){			
					temp++;
					Beep_key();//调时提示音
					if(temp >9){//速度分为9级。//减少两组闹钟,增加三个功能,menu由11改为12
						temp = 1;
					}		
				}
				if(Add2_Key == 0){			
					temp--;
					Beep_key();//调时提示音
					if(temp <1){
						temp = 9;
					}		
				}			
				key_off ();//等待键放开		
			}
			write_clock(0x8e,0x00);//允许写操作	
			write_clock(0xc2+7*6,temp);//使用原第七组闹钟的RAM
			write_clock(0x8e,0x80);//禁止写操作				
			MENUexit ();	
		}
/**********************************************************************************************/
		if(MENU == 11){//V4.0新增功能-时间校准
			bn = 0;a=0;	
			clearRAM();//清空显示缓冲区数据	
			while(TIMEADJ[a] != 0x99){//显示			
				Ledplay[bn] = TIMEADJ[a];//将二维数组中的一组数据放入显示缓冲区	
				a++;//换下一个提取字节		
				bn++;//换下一个显示缓冲字节				
			}	
			MENUadd1 ();//菜单加1	
			MENUexit ();	
			if(OK_Key == 0){				
		 		DelayM(20);//去抖				
		 		if(OK_Key == 0){	
					key_off ();//等待键放开	
		 			Beep_set();//调时提示音				
		 			MENU = 104;	
		 		}	
			}
		}
/**********************************************************************************************/	
		if(MENU == 104){
			uchar temp;				
			temp=read_clock(0xc3+7*6+2);
			if((temp>0)&&(temp<26)){ //
				bn = 0;a=0;		
				clearRAM();//清空显示缓冲区数据
				while(VAL_DEC[a] != 0x99){//显示			
					Ledplay[bn] = VAL_DEC[a];//将二维数组中的一组数据放入显示缓冲区	
					a++;//换下一个提取字节		
					bn++;//换下一个显示缓冲字节				
				}	
				putin((26-temp)/10);//26-temp:让本来+2.+1.+0.-25.-24...变成+2.+1.+0.-1.-2...
				putin((26-temp)%10);
			}
			if((temp>=26)&&(temp<52)){	//
				bn = 0;a=0;		
				clearRAM();//清空显示缓冲区数据
				while(VAL_INC[a] != 0x99){//显示			
					Ledplay[bn] = VAL_INC[a];//将二维数组中的一组数据放入显示缓冲区	
					a++;//换下一个提取字节		
					bn++;//换下一个显示缓冲字节				
				}	
				putin((temp-26)/10);	//调整显示为实际纠正值。
				putin((temp-26)%10);
			}

			if(Add_Key == 0 || Add2_Key == 0){			
				DelayM(20);//去抖
				if(Add_Key == 0){			
					temp++;
					Beep_key();//调时提示音
					if(temp >51)//速度分为9级。
					{//减少两组闹钟,增加三个功能,menu由11改为12
						temp = 1;
					}		
				}
				if(Add2_Key == 0){			
					temp--;
					Beep_key();//调时提示音
					if(temp <1){
						temp = 51;
					}		
				}			
				key_off ();//等待键放开		
			}
			write_clock(0x8e,0x00);//允许写操作	
			write_clock(0xc2+7*6+2,temp);//写入校准值到DS1302
			write_clock(0x8e,0x80);//禁止写操作				
			MENUexit ();
		}
/**********************************************************************************************/
		if(MENU == 12){//V4.0新增功能-显示方式
			bn = 0;a=0;	
			clearRAM();//清空显示缓冲区数据	
			while(DISMODE[a] != 0x99){//显示			
				Ledplay[bn] = DISMODE[a];//将二维数组中的一组数据放入显示缓冲区	
				a++;//换下一个提取字节		
				bn++;//换下一个显示缓冲字节				
			}	
			MENUadd1 ();//菜单加1	
			MENUexit ();	
			if(OK_Key == 0){				
		 		DelayM(20);//去抖				
		 		if(OK_Key == 0){	
					key_off ();//等待键放开	
		 			Beep_set();//调时提示音				
		 			MENU = 105;	
		 		}	
			}
		}
/**********************************************************************************************/	
		if(MENU == 105){
			uchar temp;
			bn = 0;a=0;		
			clearRAM();//清空显示缓冲区数据	
			while(DIS[a] != 0x99){//显示			
				Ledplay[bn] = DIS[a];//将二维数组中的一组数据放入显示缓冲区	
				a++;//换下一个提取字节		
				bn++;//换下一个显示缓冲字节				
			}	
			temp=read_clock(0xc3+7*6+4);
			putin(temp);

			if(Add_Key == 0 || Add2_Key == 0){			
				DelayM(20);//去抖
				if(Add_Key == 0){			
					temp++;
					Beep_key();//调时提示音
					if(temp >3)//显示有3种方式。
					{//减少两组闹钟,增加三个功能,menu由11改为12
						temp = 1;
					}		
				}
				if(Add2_Key == 0){			
					temp--;
					Beep_key();//调时提示音
					if(temp <1){
						temp = 3;
					}		
				}			
				key_off ();//等待键放开		
			}
			clearBuf();//清待显缓冲,避免切换到其它显示方式时有乱码出现。
			write_clock(0x8e,0x00);//允许写操作	
			write_clock(0xc2+7*6+4,temp);//使用原第七组闹钟的RAM
			write_clock(0x8e,0x80);//禁止写操作				
			MENUexit ();
		}
	}
}
/**********************************************************************************************/
//DoYoung.net 杜洋个人空间   分享精制与创意!
/**********************************************************************************************/

⌨️ 快捷键说明

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