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

📄 main.c.130215224020

📁 ATmega16-ad1602
💻 130215224020
字号:
#define MAIN_C
#include "includes.h"
/*void change(float num)
{	 num
	 float a=0.0048; 
	 ge=a*num%5;//2
	 table3[1]='.';
	 table3[2]=10*(a*num-table3[0])%5;//5
	 table3[3]=100*(10*(a*num-table3[0])-table3[2]);
}			 */ 
void main(void)
{	unsigned int i=0;
	unsigned char key_press_num;
	unsigned int  num=0;
	//unsigned char table1[]=" vol=_____";
	unsigned char table2[]=" designed by ZHM!";
	unsigned char table3[4];
	
	
	Init_LCD();
	LCD_Clear();
	//LCD_DisplayString(1,1,table1);
	LCD_DisplayString(2,1,table2);
	delay_nms(2000);	

	DDRB=0XFF;
 	spi_init();
	spi_io_init();
	
	DDRA&=~BIT(PA2);//PA2输入
	PORTA|=BIT(PA2);//PA2上拉电阻
	DDRA&=~BIT(PA3);//PA3输入
	PORTA|=BIT(PA3);//PA3上拉电阻
	
	/*
	while(1)
	{
	 
	 if( (PIND&0x04)==0)
	 {
	 delay_nms(20);
	 	if( (PINA&0x04)==0 )
		{
		spi_tlc5615(num);
		num=num+3;
		delay_nms(200);
		}
	 }
	}
}	
*/
  	
//	for(i;i<1024;i=i+24)
//	 {spi_tlc5615(i);}

	
	while (1)         //主循环
	{
	if( (PINA&0x04)==0 )  //检测到加
     {
	 	delay_nms(10); //延时去抖,一般10-20ms
		if( (PINA&0x04)==0 )   //再次确认按键是否按下,没有按下则退出
		 {
			while((PINA&0x04)==0)
	    	{
			key_press_num++;
			delay_nms(10);           //10x200=2000ms=2s 
//****************************长按键模式开始*****************************************
			
			if(key_press_num==100) //大约2s,进入长按键模式
			 {
				key_press_num=0; 
				while((PINA&0x04)==0)  //这里用于识别是否按键还在按下,如果按下执行相关动作,否则退出
				{
				if(num<1020)    	//是否达到最大值
				 num=num+24;		  	//未到达最大值则加操作
				 
				 						 //即时把显示数据处理,如果去掉下面2
                 	table3[2]=(unsigned char)num%100;//百 512-5
					table3[1]=(unsigned char)num%10/10;//十
					table3[0]=(unsigned char)num%10;//个
					LCD_DisplayString(1,4,table3);		//句处理信息,实际上看不到渐变效果,
               		        			//而是看到跳变效果
										//用户可以自行屏蔽测试
     									//分解显示信息,如要显示68,则68/10=6  68%10=8
				spi_tlc5615(num);  
				delay_nms(30);	//用于调节长按循环操作的速度,可以自行调整此值以便达到最佳效果
				}
			  }
		     }
			 key_press_num=0;//防止累加造成错误识别
			 
//****************************长按键模式结束*****************************************
			 
			 if(num<1020)
			 num=num+24;
			 spi_tlc5615(num);
			 table3[0]=num%100;//百
			 table3[1]=num%10/10;//十
			 table3[2]=num%10;//个
			 LCD_DisplayString(1,4,table3);
			
		 }
     }
	 
//****************************长按键模式结束*****************************************	 
	 
	 if( (PINA&0x08)==0 )  //检测到加
     {
	 	delay_nms(10); //延时去抖,一般10-20ms
		if( (PINA&0x08)==0 )   //再次确认按键是否按下,没有按下则退出
		 {
			while((PINA&0x08)==0)
	    	{
			key_press_num++;
			delay_nms(10);           //10x200=2000ms=2s 
//****************************长按键模式开始*****************************************
			
			if(key_press_num==100) //大约2s,进入长按键模式
			 {
				key_press_num=0; 
				while((PINA&0x08)==0)  //这里用于识别是否按键还在按下,如果按下执行相关动作,否则退出
				{
				if(num>0)    	//是否达到最大值
				 num=num-24;		  	//未到达最大值则加操作
										//即时把显示数据处理,如果去掉下面2
                						//句处理信息,实际上看不到渐变效果,
               		        			//而是看到跳变效果
										//用户可以自行屏蔽测试
     									//分解显示信息,如要显示68,则68/10=6  68%10=8
				spi_tlc5615(num);  
				delay_nms(30);	//用于调节长按循环操作的速度,可以自行调整此值以便达到最佳效果
				}
			  }
		     }
			 key_press_num=0;//防止累加造成错误识别
			 
//****************************长按键模式结束*****************************************
			 
			 if(num>0)
			 num=num-24;
			 spi_tlc5615(num);
		 }
     }
	 
	 
	 
	 
	}
}

⌨️ 快捷键说明

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