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

📄 main._c

📁 本设计以ATMEL公司生产的AT90S8515作为控制核心
💻 _C
字号:
#include <eeprom.h>
#include <io8515v.h>
#include "init.h"
#include "key5.h"
#include "1602LCD.h"
#define DEFAULT_K1 1.509
#define DEFAULT_T  100
#define MIN_T 50
// globals:
unsigned int  value;                  //  电流数值                     
//unsigned int  *p;                     //  数据指针
unsigned char DAC4_value=1;
float K1=DEFAULT_K1;
unsigned int  ADC;                    //  AD转换值
unsigned int  ADC_GD;
unsigned int  DAC;                    //  DA转换值
unsigned char time_count;             //  计数寄存器
float POUNT;
unsigned char value_table[5];         //  数据缓冲区
unsigned char mode=1;                 //  模式标志
unsigned int  value_temp;             //  数据寄存器
unsigned char j;  					  //  光标位置
unsigned long arv_ADC=0;
unsigned long arv_count=0;
unsigned int Time1;

void main(void)
{
	mode_choice();
	init_devices();                   //  硬件初始化
	
	while(1)                          //  主循环
	{
	    key_service(2,0,4,&value );   //  键盘服务
	}
}
void SaveToEEPROM(unsigned char off,unsigned char len,unsigned add)
{
 	int i;
	for(i=0;i<len;i++)
 		EEPROMwrite(add++,value_table[off++]);
}
unsigned int changK1(void)
{
 	if(K1>6.5) K1=6.5;
 	return K1*10000;
}
void mode_choice(void)
{
	unsigned char flag=1;
	unsigned char key_temp;
	
	LCD_init();
	K1=EEPROMread(0x00)+EEPROMread(0x01)*0.1+EEPROMread(0x02)*0.01+EEPROMread(0x03)*0.001+EEPROMread(0x04)*0.0001;
	Time1=EEPROMread(0x05)*1000+EEPROMread(0x06)*100+EEPROMread(0x07)*10+EEPROMread(0x08);
	if(Time1<MIN_T) Time1=MIN_T;
mode_again:
	LCD_clr();
	LCD_write_string(0,0,"K=     ,T=    ");
	LCD_display(2,0,5,changK1());
	LCD_display(10,0,4,Time1);
	LCD_write_string(0,1,"Fn:Mod C:Def");
	while(flag)
	{
	    key_temp=keypad();
		if(key_temp==KEY_OK)
		{
			Time1=0-Time1;
			TCNT1H=Time1>>8;
			TCNT1L=Time1&0xff;
		 	break;
		}
		if(key_temp==KEY_CU)
		{
		 	K1=DEFAULT_K1;
		 	data_init(changK1());
			SaveToEEPROM(0,5,0);
		 	Time1=DEFAULT_T;
		 	data_init(Time1);
			SaveToEEPROM(1,4,5);
			goto mode_again;
		}
	    if(key_temp==KEY_FN)
		{    
	        LCD_clr();
			LCD_display(0,0,5,changK1());
			LCD_write_string(6,0,"-10e4");
			LCD_write_string(0,1,"^          Set K");
			j=0;
			data_init(changK1());
	        while(flag)
			{
			    key_temp=keypad();
				switch(key_temp)
				{
				case	KEY_CU:
					LCD_write(j,1,' ');
					j++;
					if(j>4)	j=0;
					LCD_write(j,1,'^');
					break;
				case	KEY_INC:
					value_table[j]++;
					if(value_table[j]>9) value_table[j]=0;
			        LCD_write(j,0,value_table[j]+'0');
					break;
				case	KEY_DEC:
					value_table[j]--;
					if(value_table[j]==255) value_table[j]=9;
			        LCD_write(j,0,value_table[j]+'0');
					break;
			    case	KEY_FN:
			     	K1=value_table[0]+ value_table[1]*0.1+value_table[2]*0.01+value_table[3]*0.001+value_table[4]*0.0001;
					data_init(changK1());
					SaveToEEPROM(0,5,0);
					LCD_clr();
					LCD_display(0,0,4,Time1);
					LCD_write_string(0,1,"^          Set T");
					j=1;
					data_init(Time1);
					flag=0;
					break;
				}
			}
			flag=1;
	        while(flag)
			{
			    key_temp=keypad();
				switch(key_temp)
				{
				case	KEY_CU:
					LCD_write(j-1,1,' ');
					j++;
					if(j>4)	j=1;
					LCD_write(j-1,1,'^');
					break;
				case	KEY_INC:
					value_table[j]++;
					if(value_table[j]>9) value_table[j]=0;
			        LCD_write(j,0,value_table[j]+'0');
					break;
				case	KEY_DEC:
					value_table[j]--;
					if(value_table[j]==255) value_table[j]=9;
			        LCD_write(j,0,value_table[j]+'0');
					break;
			    case	KEY_FN:
			     	Time1=value_table[1]*1000+ value_table[2]*100+value_table[3]*10+value_table[4];
					if(Time1<MIN_T) Time1=MIN_T;
					data_init(Time1);
					SaveToEEPROM(1,4,5);
					goto mode_again;
				}
			}
        }
    }
}

⌨️ 快捷键说明

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