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

📄 clock.c

📁 使用51系列单片机(AT89S52)控制LCD(12864),全菜单化操作控制初始时间输入
💻 C
字号:
/*********************************************************************************************************                  
*                                     		clock test
*                                       	QZhao,2007
*                                       	All Rights Reserved  
* File : clock.c
* By   : QZhao
* Contact : zq1987731@163.com
*********************************************************************************************************/

/*★★★可调用函数:clock(时,分,秒)->指针式时钟显示函数*/

/*********************************************************************************************************   
*               
*                                     		指针式时钟绘图函数
*			人口参数:clock(时,分,秒)
*			返回值:成功则TRUE
*			功能:在LCD屏上画出时分秒针
*
*********************************************************************************************************/	

	bool INDEX(uchar x,uchar y,uchar z)
	{	
		uchar a,b,c;
	
		CLEAR_HALF();			//清除之前指针

		a=(x>>4)*10;
		a+=x&0x0F;

		b=(y>>4)*10;
		b+=y&0x0F;

		c=(z>>4)*10;
		c+=z&0x0F;

		if(a>12)	
			a=(a-12)*5;
		else
			a*=5;

		if(a>=30)	a-=30;
		else	a+=30;
		if(b>=30)	b-=30;
		else	b+=30;
		if(c>=30)	c-=30;
		else	c+=30;

		switch(c)
		{
			case 	59:LCDLineXy(31,31,31,2);	break;
			case 	58:LCDLineXy(31,31,33,2);	break;
			case 	57:LCDLineXy(31,31,36,2);	break;
			case 	56:LCDLineXy(31,31,39,3);	break;
			case 	55:LCDLineXy(31,31,42,4);	break;
			case 	54:LCDLineXy(31,31,45,6);	break;
			case 	53:LCDLineXy(31,31,48,8);	break;
			case 	52:LCDLineXy(31,31,50,10);	break;
			case 	51:LCDLineXy(31,31,52,12);	break;
			case 	50:LCDLineXy(31,31,54,14);	break;
			case 	49:LCDLineXy(31,31,56,17);	break;
			case 	48:LCDLineXy(31,31,58,20);	break;
			case 	47:LCDLineXy(31,31,59,23);	break;
			case 	46:LCDLineXy(31,31,60,26);	break;
			case 	45:LCDLineXy(31,31,60,29);	break;
			case 	44:LCDLineXy(31,31,60,31);	break;
			case 	43:LCDLineXy(31,31,60,33);	break;
			case 	42:LCDLineXy(31,31,60,36);	break;
			case 	41:LCDLineXy(31,31,59,39);	break;
			case 	40:LCDLineXy(31,31,58,42);	break;
			case 	39:LCDLineXy(31,31,56,45);	break;
			case 	38:LCDLineXy(31,31,54,48);	break;
			case 	37:LCDLineXy(31,31,52,50);	break;
			case 	36:LCDLineXy(31,31,50,52);	break;
			case 	35:LCDLineXy(31,31,48,54);	break;
			case 	34:LCDLineXy(31,31,45,56);	break;
			case 	33:LCDLineXy(31,31,42,58);	break;
			case 	32:LCDLineXy(31,31,39,58);	break;
			case 	31:LCDLineXy(31,31,36,60);	break;
			case 	30:LCDLineXy(31,31,33,60);	break;
			case 	29:LCDLineXy(31,31,31,60);	break;
			case 	28:LCDLineXy(31,31,29,60);	break;
			case 	27:LCDLineXy(31,31,26,60);	break;
			case 	26:LCDLineXy(31,31,23,59);	break;
			case 	25:LCDLineXy(31,31,20,58);	break;
			case 	24:LCDLineXy(31,31,17,56);	break;
			case 	23:LCDLineXy(31,31,14,54);	break;
			case 	22:LCDLineXy(31,31,12,52);	break;
			case 	21:LCDLineXy(31,31,10,50);	break;
			case 	20:LCDLineXy(31,31,8,48);	break;
			case 	19:LCDLineXy(31,31,6,45);	break;
			case 	18:LCDLineXy(31,31,4,42);	break;
			case 	17:LCDLineXy(31,31,3,39);	break;
			case 	16:LCDLineXy(31,31,2,36);	break;
			case 	15:LCDLineXy(31,31,2,33);	break;
			case 	14:LCDLineXy(31,31,2,31);	break;
			case 	13:LCDLineXy(31,31,2,29);	break;
			case 	12:LCDLineXy(31,31,2,26);	break;
			case 	11:LCDLineXy(31,31,3,23);	break;
			case 	10:LCDLineXy(31,31,4,20);	break;
			case 	9:LCDLineXy(31,31,6,17);	break;
			case 	8:LCDLineXy(31,31,8,14);	break;
			case 	7:LCDLineXy(31,31,10,12);	break;
			case 	6:LCDLineXy(31,31,12,10);	break;
			case 	5:LCDLineXy(31,31,14,8);	break;
			case 	4:LCDLineXy(31,31,17,6);	break;
			case 	3:LCDLineXy(31,31,20,4);	break;
			case 	2:LCDLineXy(31,31,23,3);	break;
			case 	1:LCDLineXy(31,31,26,2);	break;
			case 	0:LCDLineXy(31,31,29,2);	break;
		}

		switch(b)
		{
			case 	59:LCDLineXy(31,31,31,6);	break;
			case 	58:LCDLineXy(31,31,33,6);	break;
			case 	57:LCDLineXy(31,31,35,6);	break;
			case 	56:LCDLineXy(31,31,37,7);	break;
			case 	55:LCDLineXy(31,31,40,8);	break;
			case 	54:LCDLineXy(31,31,43,10);	break;
			case 	53:LCDLineXy(31,31,46,13);	break;
			case 	52:LCDLineXy(31,31,48,15);	break;
			case 	51:LCDLineXy(31,31,49,16);	break;
			case 	50:LCDLineXy(31,31,51,18);	break;
			case	49:LCDLineXy(31,31,52,19);	break;
			case 	48:LCDLineXy(31,31,54,22);	break;
			case 	47:LCDLineXy(31,31,55,25);	break;
			case 	46:LCDLineXy(31,31,56,27);	break;
			case 	45:LCDLineXy(31,31,56,29);	break;
			case 	44:LCDLineXy(31,31,56,31);	break;
			case 	43:LCDLineXy(31,31,56,33);	break;
			case 	42:LCDLineXy(31,31,56,35);	break;
			case 	41:LCDLineXy(31,31,55,37);	break;
			case 	40:LCDLineXy(31,31,54,40);	break;
			case 	39:LCDLineXy(31,31,52,43);	break;
			case 	38:LCDLineXy(31,31,51,44);	break;
			case 	37:LCDLineXy(31,31,49,46);	break;
			case 	36:LCDLineXy(31,31,46,49);	break;
			case 	35:LCDLineXy(31,31,44,51);	break;
			case 	34:LCDLineXy(31,31,43,52);	break;
			case 	33:LCDLineXy(31,31,40,54);	break;
			case 	32:LCDLineXy(31,31,37,55);	break;
			case 	31:LCDLineXy(31,31,35,56);	break;
			case 	30:LCDLineXy(31,31,33,56);	break;
			case 	29:LCDLineXy(31,31,31,56);	break;
			case 	28:LCDLineXy(31,31,29,56);	break;
			case 	27:LCDLineXy(31,31,27,56);	break;
			case 	26:LCDLineXy(31,31,25,55);	break;
			case 	25:LCDLineXy(31,31,25,54);	break;
			case 	24:LCDLineXy(31,31,19,52);	break;
			case 	23:LCDLineXy(31,31,18,51);	break;
			case 	22:LCDLineXy(31,31,16,49);	break;
			case 	21:LCDLineXy(31,31,13,46);	break;
			case 	20:LCDLineXy(31,31,11,44);	break;
			case 	19:LCDLineXy(31,31,10,43);	break;
			case 	18:LCDLineXy(31,31,8,40);	break;
			case 	17:LCDLineXy(31,31,7,37);	break;
			case 	16:LCDLineXy(31,31,6,35);	break;
			case 	15:LCDLineXy(31,31,6,33);	break;
			case 	14:LCDLineXy(31,31,6,31);	break;
			case 	13:LCDLineXy(31,31,6,29);	break;
			case 	12:LCDLineXy(31,31,6,27);	break;
			case 	11:LCDLineXy(31,31,7,25);	break;
			case 	10:LCDLineXy(31,31,8,22);	break;
			case 	9:LCDLineXy(31,31,10,19);	break;
			case 	8:LCDLineXy(31,31,11,18);	break;
			case 	7:LCDLineXy(31,31,13,16);	break;
			case 	6:LCDLineXy(31,31,16,13);	break;
			case 	5:LCDLineXy(31,31,18,11);	break;
			case 	4:LCDLineXy(31,31,19,10);	break;
			case 	3:LCDLineXy(31,31,22,8);	break;
			case 	2:LCDLineXy(31,31,25,7);	break;
			case 	1:LCDLineXy(31,31,27,6);	break;
			case 	0:LCDLineXy(31,31,29,6);	break;
		}

		switch(a)
		{
			case 	59:LCDLineXy(31,31,31,11);	break;
			case 	58:LCDLineXy(31,31,33,11);	break;
			case 	57:LCDLineXy(31,31,35,12);	break;
			case 	56:LCDLineXy(31,31,37,13);	break;
			case 	55:LCDLineXy(31,31,39,14);	break;
			case 	54:LCDLineXy(31,31,41,15);	break;
			case 	53:LCDLineXy(31,31,43,17);	break;
			case 	52:LCDLineXy(31,31,44,18);	break;
			case 	51:LCDLineXy(31,31,45,19);	break;
			case 	50:LCDLineXy(31,31,46,20);	break;
			case 	49:LCDLineXy(31,31,47,21);	break;
			case 	48:LCDLineXy(31,31,48,23);	break;
			case 	47:LCDLineXy(31,31,49,25);	break;
			case 	46:LCDLineXy(31,31,50,27);	break;
			case 	45:LCDLineXy(31,31,51,29);	break;
			case 	44:LCDLineXy(31,31,51,31);	break;
			case 	43:LCDLineXy(31,31,51,33);	break;
			case 	42:LCDLineXy(31,31,50,35);	break;
			case 	41:LCDLineXy(31,31,49,37);	break;
			case 	40:LCDLineXy(31,31,48,39);	break;
			case 	39:LCDLineXy(31,31,47,41);	break;
			case 	38:LCDLineXy(31,31,46,42);	break;
			case 	37:LCDLineXy(31,31,45,43);	break;
			case 	36:LCDLineXy(31,31,43,45);	break;
			case 	35:LCDLineXy(31,31,42,46);	break;
			case 	34:LCDLineXy(31,31,41,47);	break;
			case 	33:LCDLineXy(31,31,39,48);	break;
			case 	32:LCDLineXy(31,31,37,49);	break;
			case 	31:LCDLineXy(31,31,35,50);	break;
			case 	30:LCDLineXy(31,31,33,51);	break;
			case 	29:LCDLineXy(31,31,31,51);	break;
			case 	28:LCDLineXy(31,31,29,51);	break;
			case 	27:LCDLineXy(31,31,27,50);	break;
			case 	26:LCDLineXy(31,31,25,49);	break;
			case 	25:LCDLineXy(31,31,23,48);	break;
			case 	24:LCDLineXy(31,31,21,47);	break;
			case 	23:LCDLineXy(31,31,20,46);	break;
			case 	22:LCDLineXy(31,31,19,45);	break;
			case 	21:LCDLineXy(31,31,17,43);	break;
			case 	20:LCDLineXy(31,31,16,42);	break;
			case 	19:LCDLineXy(31,31,15,41);	break;
			case 	18:LCDLineXy(31,31,14,39);	break;
			case 	17:LCDLineXy(31,31,13,37);	break;
			case 	16:LCDLineXy(31,31,12,35);	break;
			case 	15:LCDLineXy(31,31,11,33);	break;
			case 	14:LCDLineXy(31,31,11,31);	break;
			case 	13:LCDLineXy(31,31,11,29);	break;
			case 	12:LCDLineXy(31,31,12,27);	break;
			case 	11:LCDLineXy(31,31,13,25);	break;
			case 	10:LCDLineXy(31,31,14,23);	break;
			case 	9:LCDLineXy(31,31,15,21);	break;
			case 	8:LCDLineXy(31,31,16,20);	break;
			case 	7:LCDLineXy(31,31,17,19);	break;
			case 	6:LCDLineXy(31,31,19,17);	break;
			case 	5:LCDLineXy(31,31,20,16);	break;
			case 	4:LCDLineXy(31,31,21,15);	break;
			case 	3:LCDLineXy(31,31,23,14);	break;
			case 	2:LCDLineXy(31,31,25,13);	break;
			case 	1:LCDLineXy(31,31,27,12);	break;
			case 	0:LCDLineXy(31,31,29,11);	break;
		}
		return TRUE;
	}

⌨️ 快捷键说明

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