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

📄 xff.c.bak

📁 这是TOPWAY公司的LCD驱动程序
💻 BAK
📖 第 1 页 / 共 4 页
字号:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void Set_Bell(unsigned char sel, bit sel_1)
{
  	signed char address,item;
  	signed char max,mini;
  	if(sel==4)  
  		{
  			address=0xc6; 
  			max=59;
  			mini=0;
  		}    //秒
  	if(sel==3)  
  		{
  			address=0xc4; 
  			max=59;
  			mini=0;
  		}    //分
  	if(sel==2)  
  		{
  			address=0xc2; 
  			max=23; 
  			mini=0;
  		}   //时
  	if(sel==1)  									//标志位
  		{
  			address=0xc8;//for read
				if(Add_Key ==0 || Dec_Key ==0)
				Bell_Swh=~Bell_Swh;
				write_clock(address,Bell_Swh);
  		}    //开关

  	item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
  	if(sel_1==0) 
  		item++;  
  	else
  		item--;
  	if(item>max) 
  		item=mini;   
  	if(item<mini) 
  		item=max;

  	write_clock(0x8e,0x00);//允许写操作
  	write_clock(address,(item/10)*16+item%10);//转换成16进制写入1302
  	write_clock(0x8e,0x80);//写保护,禁止写操作 
}

/******************************************************************************************
* 函数名称    :Timer0_Init
* 功能描述    :定时器0初始化
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void Timer0_Init(void)
{
		TMOD=0x01;
		TH0=(65535-50000)/256;
		TL0=(65535-50000)%256;
		EA=1;
		ET0=1; 
		TR0=1;
}

/******************************************************************************************
* 函数名称    :Timer0
* 功能描述    :中断入口,冒号闪烁
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void Timer0(void) interrupt 1 using 1
{
		static unsigned char timecount = 0;//

		TH0=(65535-50000)/256; //50ms定时
  	TL0=(65535-50000)%256;  
  	timecount++;
  	if(timecount > 9)//500MS
   		{
    		timecount = 0;    
    		flag = ~flag;          
    	}
}

/******************************************************************************************
* 函数名称    :Init_1302
* 功能描述    :设置1302的初始时间
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void Init_1302(void)//设置1302的初始时间
{
	write_clock(0x8e,0x00);//允许写操作
	write_clock(0x8c,0x05);//年
	write_clock(0x8a,0x06);//星期
	write_clock(0x88,0x01);//月
	write_clock(0x86,0x01);//日
	write_clock(0x84,0x12);//小时
	write_clock(0x82,0x00);//分钟
	write_clock(0x80,0x00);//秒
	write_clock(0x90,0xa5);//充电	
	write_clock(0x8e,0x80);//禁止写操作
}

/******************************************************************************************
* 函数名称    :Lcd_Mark1
* 功能描述    :在预定的位置上写入汉字
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void Lcd_Mark1(void)//在预定的位置上写入汉字
{
		Clr_Scr();//清屏

		LCD_Write_string(1,1,bt);//标题-电子万年历-
		LCD_set_xy(2,1);
		LCD_Write_number(2);//2
		LCD_Write_number(0);//0
		LCD_Write_string(2,3,nian);//显示年月日
		LCD_Write_string(2,5,yue);
		LCD_Write_string(2,7,ri);
		LCD_Write_string(3,0,xq);//星期
		LCD_Write_string(4,0,sw);//室温
		LCD_Write_string(4,4,ssd);//℃
	
		if(Bell_Swh == 1)//闹钟为开
		{	
			LCD_Write_string(4,6,nzbz);//显示闹钟图标
		}
}

/******************************************************************************************
* 函数名称    :Lcd_Mark2
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void Lcd_Mark2(void)
{
		Clr_Scr();//清屏

		//显示闹钟设定等几个汉字
		LCD_Write_string(1,1,nzsd);//
		LCD_Write_string(2,3,xsfz);//	
}

/******************************************************************************************
* 函数名称    :Beep
* 功能描述    :输出函数
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void Bell(void)
{
		Bell_Out = 0;
		Delaynms(150);//150ms
		Bell_Out = 1;
		Delaynms(50);//50ms
		Bell_Out = 0;
		Delaynms(250);//250ms
		Bell_Out = 1;
		Delaynms(400);//400ms
}

/******************************************************************************************
* 函数名称    :
* 功能描述    :
* 参数        :  参数名称:	输入/输出?	类型		描述
* 
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void main(void)//主函数
{
		Timer0_Init();//定时器T0初始化
		Lcd_init();//设置液晶显示器

		Clr_Scr();//清屏	
		Disp_img(logo);	//显示湘灵电子LOGO
		Delaynms(1000);
		Lcd_init();//从图形显示状态下返回

		Bell_Swh = read_clock(0xc9);//读取开关的状态
		Lcd_Mark1( );

		while(1)//主循环
 		{	
		//设置时钟的初始值,显示05年1月1号12:00:00
  		if(Add_Key == 0 && Dec_Key == 0)
			{
				Delay(1000);
				if(Add_Key == 0 && Dec_Key == 0)
				{
					Init_1302();
				}
			}

			if(OK_Key == 0 && Dec_Key ==0 )//进入闹钟设置界面
			{
				Delaynms(100);
				if(OK_Key == 0 && Dec_Key ==0 )
				{
					Lcd_Mark2();
					if(Bell_Swh == 0)
						{
							LCD_Write_string(1,6,guan);
						}//关
					else  
						{
							LCD_Write_string(1,6,kai);
						}
				while(1)
				{	
					if (OK_Key == 0) // 设置和选择项目键
      				{	
								Delay(1000);
       					if(OK_Key == 0)
								{
									id2++;
									if(id2>4) 
										id2=0;
								}
       					while(OK_Key == 0);//等待键松开   
 				    	}
					switch( id2 )
					{
						case 0:
							Disp2();
							break;//正常显示
						case 1:
							Kgb = 1;
							id_case2_key();
							Disp2();
							break;//开关
						case 2:
							Kgb= 0;
							Hourb=1;
							id_case2_key();
							Disp2();
							break;//
						case 3:
							Hourb=0;
							Minb=1;
							id_case2_key();
							Disp2();break;
						case 4:
							Minb=0;
							id2=0;
							Lcd_Mark1();
							goto MF;
							break;//返回主界面
						default:
							break;
					}
				}//while(1)
			}//if
		}//if
/*****************************************/
		MF:   //返回主界面
/*****************************************/			
		if (OK_Key == 0) // 设置和选择项目键
      	{
       		Delay(1000);
       		if(OK_Key == 0)
			{
				id++;if(id>7)id=0;	
			}
       		while(OK_Key == 0);//等待键松开    
      	}
     	switch( id )
      	{
       		case 0:
       			sec=0;	
       			Disp();
       			break;//正常显示
         	case 1:
         		year=1;
         		id_case1_key();
         		Disp();
         		break;//年	
			    case 2:
			    	year=0;
			    	mon=1;
			    	id_case1_key();
			    	Disp();
			    	break;//月
          case 3:
          	mon=0;
          	day=1;
          	id_case1_key();
          	Disp();
          	break;  //日 
         	case 4:
         		day=0;
         		weekk=1;
         		id_case1_key();
         		Disp();
         		break;//星期     
         	case 5:
         		weekk=0;
         		hour=1;
         		id_case1_key();
         		Disp();
         		break;  //小时
       		case 6:
       			hour=0;
       			min=1;
       			id_case1_key();
       			Disp();
       			break; //分钟
       		case 7:
       			min=0;
       			sec=1;
       			id_case1_key();
       			Disp();
       			break; //秒
         	default:
         		break;	
      	}

		if(Bell_Swh == 1)//闹钟为开
		{
				H_Bell=read_clock(0xc3);//读取闹钟的时
				S_Bell=read_clock(0xc5);//读取闹钟的分
			
				H_1302=read_clock(0x85);//读小时
				S_1302=read_clock(0x83);//读分钟
	
				if(H_Bell == H_1302) 
		 		{
					if(S_Bell == S_1302)
					{
						Clr_Scr();//清屏
						LCD_Write_string(2,2,nzsjd);//闹钟显示时间到!
					
						while(S_Bell == S_1302)//判断是否到闹钟设定时间
						{
							Bell();
							S_Bell=read_clock(0x83);//读分钟

							if(Add_Key ==0 ||Dec_Key ==0 || OK_Key ==0)
							break;//按任意键退出
						}
						Lcd_Mark1();
					}//if
				}
		}//if
	}//while
}//main

⌨️ 快捷键说明

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