📄 main.c
字号:
/******************************************************************
本程序只供学习使用,未经作者许可,不得用于其它任何用途
我的邮箱:computer-lov@tom.com
欢迎访问我的blog: http://computer00.21ic.org
Main.C file
Created by Computer-lov
Date: 2004.11.12
Edit date:2006.3.2
Version V1.1
Copyright(C) Computer-lov 2004-2014
All rigths reserved
*******************************************************************/
#include "main.h"
#include "hardware.h"
#include "LCD1602.H"
#include "square_wave_generator.h"
#include "measure_capacity.h"
#include "system_initial.h"
#include "isr.h"
#include "measure_frequency.h"
unsigned char buffer[17];
unsigned char TVH0;
unsigned char status=0;
unsigned long int result;
unsigned char menu_value;
unsigned char NO_2401=0;
struct
{
unsigned char flag;
unsigned char last_status;
unsigned char mode;
unsigned char capacity_scope;
unsigned char wave_value;
unsigned int zero_offset[5];
}settings_value;
code unsigned char TEXT[6][17]={
"Select Function:",
"1. Capacity",
"2. Frequency",
"3. Square Wave",
"4. Settings",
"5. Help"
};
void delayXms(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<240;j++);
}
void Display_menu(void)
{
LCD_cls();
LCD_prints(TEXT[0]);
LCD_set_position(40);
LCD_prints(TEXT[menu_value]);
}
void Main_menu(void)
{
unsigned char i;
Display_menu();
while(status==MAIN_MENU)
{
while(!key);
switch(key)
{
case KEY_MENU: menu_value=1;Display_menu();break;
case KEY_UP: if(menu_value==1)menu_value=5;else menu_value--;Display_menu();break;
case KEY_DOWN: if(menu_value==5)menu_value=1;else menu_value++;Display_menu();break;
case KEY_ENTER:
{
switch(menu_value)
{
case 1:
{
i=1;
LCD_cls();
LCD_prints("Mode select:");
LCD_set_position(40);
LCD_prints("1. Manual mode");
settings_value.mode=MANUAL_MODE;
key=0;
while(i)
{
while(!key);
switch(key)
{
case KEY_UP: LCD_cls();LCD_prints("Mode select:");LCD_set_position(40);LCD_prints("1. Manual mode");settings_value.mode=MANUAL_MODE;break;
case KEY_DOWN: LCD_cls();LCD_prints("Mode select:");LCD_set_position(40);LCD_prints("2. Auto mode");settings_value.mode=AUTO_MODE;break;
case KEY_ENTER:
{
status=MEASURE_CAPACITY;
Write_a_EEPROM_data(EEPROM_Addr,0x01,status);
Write_a_EEPROM_data(EEPROM_Addr,0x02,settings_value.mode);
i=0;
break;
}
case KEY_MENU: i=0;break;
default: break;
}
key=0;
}
break;
}
case 2: status=MEASURE_FREQUENCY;Write_a_EEPROM_data(EEPROM_Addr,0x01,status);break;
case 3: status=SQUARE_WAVE_GENERATOR;Write_a_EEPROM_data(EEPROM_Addr,0x01,status);break;
case 4: status=SETTINGS;/*Write_a_EEPROM_data(EEPROM_Addr,0x01,status);*/break;
case 5: status=HELP;/*Write_a_EEPROM_data(EEPROM_Addr,0x01,status);*/break;
default: break;
}
}break;
default: break;
}
key=0;
}
}
unsigned char code adjust_zero_text[][17]=
{
"Addjust zero",
"Are you sure?"
};
void adjust_zero(void)
{
unsigned char i,temp;
for(i=0;i<5;i++)
{
scope_select=SCOPE_STOP;
delayXms(400);
capacity_measure_end=0;
TVH0=0;
TH0=0;
TL0=0;
switch(i)
{
case 0: temp=SCOPE_1;break;
case 1: temp=SCOPE_2;break;
case 2: temp=SCOPE_3;break;
case 3: temp=SCOPE_4;break;
case 4: temp=SCOPE_5;break;
default: break;
}
scope_select=temp; //开始测量
TR0=1;
while(!capacity_measure_end)if(TVH0>0){scope_select=SCOPE_STOP;LCD_cls();LCD_prints("Error! Please ");LCD_set_position(40);LCD_prints("check input port");key=0;delayXms(2000);while(!key);return;}
scope_select=SCOPE_STOP;
((unsigned char *)&settings_value.zero_offset[i])[0]=TH0;
((unsigned char *)&settings_value.zero_offset[i])[1]=TL0;
Write_a_EEPROM_data(EEPROM_Addr,0x05+i*2,TH0);
Write_a_EEPROM_data(EEPROM_Addr,0x05+i*2+1,TL0);
}
}
void Settings(void)
{
LCD_cls();
LCD_prints(adjust_zero_text[0]);
LCD_set_position(40);
LCD_prints(adjust_zero_text[1]);
while(status==SETTINGS)
{
while(!key);
switch(key)
{
case KEY_MENU: status=MAIN_MENU;break;
case KEY_ENTER: LCD_cls();LCD_prints("Adjustting...");LCD_set_position(40);LCD_prints("Pleas wait...");adjust_zero();status=MAIN_MENU;break;
default: break;
}
key=0;
}
}
unsigned char code help_text[][17]=
{
"About version",
"----V1.1-----",
"About designer",
"Computer-lov",
"QQ:156872359",
"Email:",
"Computer-lov",
"@163.com"
};
void Help(void)
{
unsigned char i=0;
LCD_cls();
LCD_prints(help_text[0]);
LCD_set_position(40);
LCD_prints(help_text[1]);
while(status==HELP)
{
while(!key);
switch(key)
{
case KEY_MENU:
case KEY_ENTER: status=MAIN_MENU;break;
case KEY_UP: if(i>0){i--;LCD_cls();LCD_prints(help_text[i]);LCD_set_position(40);LCD_prints(help_text[i+1]);}break;
case KEY_DOWN: if(i<6){i++;LCD_cls();LCD_prints(help_text[i]);LCD_set_position(40);LCD_prints(help_text[i+1]);}break;
default: break;
}
key=0;
}
}
void main(void)
{
System_initial();
while(1)
{
switch(status)
{
case MEASURE_CAPACITY: Measure_capacity();break;
case MEASURE_FREQUENCY: Measure_frequency();break;
case SQUARE_WAVE_GENERATOR: Square_wave_generator();break;
case SETTINGS: Settings();break;
case HELP: Help();break;
case MAIN_MENU: Main_menu();break;
default: break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -