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

📄 lcd_demo.c

📁 KIT RTC按键设置闹钟程序!
💻 C
📖 第 1 页 / 共 2 页
字号:
	SetAddress(address,address);
	if(window==1)PutCharR(bmp001[d_where]);//右边
	else	PutCharL(bmp001[d_where]);//左边
	SetPage(3,3);
	SetAddress(address,address);
	if(window==1)PutCharR(bmp001[d_where+width]);
	else	PutCharL(bmp001[d_where+width]);

	}
    x_add++;
   d_where++;
}
}

void Draw_a(uchar d_where,uint x_add,uchar layer,uchar width)
{
uchar x,i=0,address;     //address表示显存的物理地址
uchar page=0;	//page表示上下两页
uchar window=0;  //window表示左右两页
//putcharR	//右边
//putcharL	//左边
d_where=d_where*16;

for (x=width;x>1;x--)
{
if (x_add>60) {window=1;address=x_add%61;}
else address=x_add;	

if(layer==0)	//显示一行八个字
	{
	
	SetPage(0,0);
	SetAddress(address,address);
	if(window==1)PutCharR(bmp009[d_where]);//右边
	else	PutCharL(bmp009[d_where]);//左边
	SetPage(1,1);
	SetAddress(address,address);
	if(window==1)PutCharR(bmp009[d_where+width]);
	else	PutCharL(bmp009[d_where+width]);

	}
else
	{	//显示第二行八个汉字
	SetPage(2,2);
	SetAddress(address,address);
	if(window==1)PutCharR(bmp009[d_where]);//右边
	else	PutCharL(bmp009[d_where]);//左边
	SetPage(3,3);
	SetAddress(address,address);
	if(window==1)PutCharR(bmp009[d_where+width]);
	else	PutCharL(bmp009[d_where+width]);

	}
    x_add++;
   d_where++;
}
}

 /****************************************************************************
   
                        蜂明器报警程序

*****************************************************************************/
void Beep_Alarm(uchar time)
{
 	uchar i;
 for( i=time; i>0;i--){
                       Io_Set(BEEP);
                       delay1s(2);
                       Io_Clr(BEEP);
                       delay1s(2);
					   }

 }
 void IRQ_Timer0(void) __irq

{ 
      key_code= Scan_Key();

    T0IR = 0x01;				/* 清除中断标志									*/
	VICVectAddr = 0x00;			/* 通知VIC中断处理结束							*/
}
 

void Timer0_init(void)
{



  /* 定时器0初始化 */
	T0TC   = 0;			/* 定时器设置为0										*/
	T0PR   = 0;			/* 时钟不分频											*/
	T0MCR  = 0x03;		/* 设置T0MR0匹配后复位T0TC,并产生中断标志				*/
	T0MR0  = Fpclk / 1000;	/* 1M秒钟定时											*/
	T0TCR  = 0x01;		/* 启动定时器											*/
	
	/* 设置定时器0中断IRQ */
	VICIntSelect = 0x00;				/* 所有中断通道设置为IRQ中断			*/
	VICVectCntl0 = 0x20 | 0x04;			/* 设置定时器0中断通道分配最高优先级	*/
	VICVectAddr0 = (uint)IRQ_Timer0;	/* 设置中断服务程序地址					*/
	VICIntEnable = 1 << 0x04;			/* 使能定时器0中断						*/
   }




//液晶显示规则
//	M(左)		S(右)
//	page		page
//	0	|	0
//	1	|	1
//	2	|	2
//	3	|	3

void	delay1s(unsigned char i)
{
	while(i>1)
	{
		i--;
		delayms(20);
	}
}

//显示动态的等待图标
void	wait1(unsigned char i)
{
	clrscr(); //
	DrawBmp1(0,60,Bmptc); //
	for(;i>1;i--)
	{delay1s(2);
	DrawBmp1(76,19,Bmpt1); //
	delay1s(2);
	DrawBmp1(76,19,Bmpt2); //
	delay1s(2);

//	DrawBmp1(0,60,Bmptc); //
	DrawBmp1(76,19,Bmpt3); //
	delay1s(2);

//	DrawBmp1(0,60,Bmptc); //
	DrawBmp1(76,19,Bmpt4); //
	delay1s(2);

//	DrawBmp1(0,60,Bmptc); //
	DrawBmp1(76,19,Bmpt5); //
	delay1s(2);

//	DrawBmp1(0,60,Bmptc); //
	DrawBmp1(76,19,Bmpt6); //
	delay1s(2);

//	DrawBmp1(0,60,Bmptc); //
	DrawBmp1(76,19,Bmpt7); //
	}

}

 void init_port(void)
 {
 //port initialized
 IODIR1=0x00FF0000;
 IODIR0=0x40610010;

 PINSEL1=1<<24;	                                                                                                                                                           
 }
 

 uchar   screen,alarm_hour,alarm_min;

 void  Display(	uchar  data)

 {uint  datas;
  uint  times;
  uint  bak;
  
  
   
   if(data==1)
             {	//clrscr(); //
            	ReadRTC();
           	    Ad_fun();

		    	}

    if(data==2)								 //2,3界面一样的!
	          {	   // clrscr(); //clr 
			   
				  Draw_word(0,32-8,0,16); //
                  Draw_word(1,48-8,0,16); //
                  Draw_word(2,64,0,16); //
                  Draw_word(3,80,0,16);
			   
                  times=CTIME0;
                  datas=CTIME1;

                  bak=(times>>16)&0x1f;

				  

                  Draw_a(alarm_hour/10,48-8,1,8); 
                  Draw_a(alarm_hour%10,56-8,2,8);  

				      Draw_a(10,56,2,8); 
				  	Draw_a(alarm_min/10,56+8,1,8); 
                                        Draw_a(alarm_min%10,56+8+8,1,8);

				  }
	    if(data==3)
	          {	   // clrscr(); //clr 
			   
				  Draw_word(0,32-8,0,16); //
                  Draw_word(1,48-8,0,16); //
                  Draw_word(2,64,0,16); //
                  Draw_word(3,80,0,16);
			   
                  times=CTIME0;
                  datas=CTIME1;

                  bak=(times>>16)&0x1f;

				  
				 
                  Draw_a(alarm_hour/10,48-8,1,8); 
                  Draw_a(alarm_hour%10,56-8,2,8);
				    Draw_a(10,56,2,8); 
                  Draw_a(alarm_min/10,64,1,8); 
                  Draw_a(alarm_min%10,72,1,8);  

				  }

   }

 void  key_do(void)
 {
  

  		//Draw_a(key_code/10,24,1,8);
	                   // Draw_a(key_code%10,32,1,8);
 switch(screen)
		    {
			  case  1	 :

		     	     if(key_code==fun){screen=2;clrscr();}    	  key_code=0;

						 break;		
			  case  2    :							 //设置闹铃分
			         if(key_code==fun){screen=1;	clrscr();}
					 else if(key_code==add)	
					                   {
									   alarm_hour++;  if(alarm_hour==24){alarm_hour=0;}
                                        Draw_a(alarm_hour/10,48-8,1,8); 
                                        Draw_a(alarm_hour%10,56-8,2,8); 		
									     }
						  else if(key_code==dec)	
					                   {
									   alarm_hour--;  if(alarm_hour==0){alarm_hour=23;}
                                        Draw_a(alarm_hour/10,48-8,1,8); 
                                        Draw_a(alarm_hour%10,56-8,2,8); 		
									     }
					   else if(key_code==ok)
					                    {screen=3;	clrscr();}
						                                           key_code=0;
						break;
													  //设置闹铃秒
			  case  3    :
			         if(key_code==fun){screen=1;	clrscr();}
					 else if(key_code==add)	
					                   {
									   alarm_min++;  if(alarm_min==60){alarm_min=0;}
                                        Draw_a(alarm_hour/10,48-8,1,8); 
                                        Draw_a(alarm_hour%10,56-8,1,8); 
									 
                                      

										Draw_a(alarm_min/10,56+8,1,8); 
                                        Draw_a(alarm_min%10,56+8+8,1,8); 
										
												
									     }
						  else if(key_code==dec)	
					                   {
									   alarm_min--;  if(alarm_min==0){alarm_min=0;}
                                        Draw_a(alarm_hour/10,48-8,1,8); 
                                        Draw_a(alarm_hour%10,56-8,1,8); 
										
										//   Draw_a(10,56+8+8,1,8); 

										Draw_a(alarm_min/10,56+8,1,8); 
                                        Draw_a(alarm_min%10,56+8+8,1,8);		
									     }
					   else if(key_code==ok)
					                    {screen=1;	clrscr();}
						                                           key_code=0;
						break;
			         
			}

				   
  }

//演示程序
void main()                                                                                                                          
{                

 uchar  key_code=0;	screen=1;
 init_port();                                                                                                 
 lcdini(); //reset  
 RTCInit();
  



 clrscr(); //clr  
 AD0CR|=(1<<1)|((Fpclk/1000000-1)<<8)|(0<<16)|(0<<17)|(1<<21)|(0<<22)|(1<<24)|(0<<27);

 data=AD0DR1;
 
/*for(data=15;data>0;data--){
               Draw_a(data,8*data,0,8); 
				 delay1s(3);
                               }                                                  
 clrscr();          
 
for(data=0;data<15;data++){
               Draw_a(data,8*data,1,8); 
				 delay1s(3);
			                     }

				   */

   delay1s(8);
    clrscr(); 

/* clrscr();               
 Draw_word(0,0,1,16); //
 Draw_word(1,16,1,16); //
 Draw_word(2,32,1,16); //
 Draw_word(3,48,1,16); //
 Draw_word(0,64,0,16); //
 Draw_word(1,80,0,16); //
 Draw_word(2,96,0,16); //

   delay1s(8);		  */

 clrscr(); //
 DrawBmp(0,112,ARMKIT_bmp);
 DrawBmp(1,119,Bmp002); //
  delay1s(8);
 clrscr(); //
 DrawBmp1(0,122,Bmp012); //LOGO
  delay1s(8);
  clrscr(); //	
  
  
  
  Timer0_init();					 
 while(1)
 	{
//	delay1s(3);
//	if(key_code>0){ 
               	key_do();
		//		   }

	Display(screen);
//	Beep_Alarm(key_code);


				   		

/*	clrscr(); //
	DrawBmp1(10,101,Bmp07); //
	delay1s(8);
	clrscr(); //
	wait1(3);
	DrawBmp1(0,122,Bmp04); //
	delay1s(8);
	clrscr(); //
	wait1(3);
	DrawBmp1(0,122,Bmp03); //超前科技
	delay1s(8);
	clrscr(); //
	wait1(3);
	clrscr(); //
	DrawBmp1(10,101,Bmp05); //
	delay1s(8);
	clrscr(); //
	wait1(3);
	clrscr(); //
	DrawBmp1(10,101,Bmp06); //
	delay1s(8);
	clrscr(); //
	wait1(3);
	clrscr(); //
	DrawBmp1(10,101,Bmp08); //
	delay1s(8);
	clrscr(); //
	wait1(3);
	clrscr(); //
	DrawBmp1(0,122,Bmp01); //
	wait1(8);				 */
	}                                                        
 }                
 
                                         

⌨️ 快捷键说明

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