650 lines
23 KiB
C
650 lines
23 KiB
C
|
//==========================================================================
|
|||
|
// LCR<43><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> V1.0
|
|||
|
// xjw01 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2011.10
|
|||
|
//==========================================================================
|
|||
|
//==========================================================================
|
|||
|
#define uchar unsigned char
|
|||
|
#define uint unsigned int
|
|||
|
#define ulong unsigned long
|
|||
|
#include <reg52.h>
|
|||
|
#include <math.h>
|
|||
|
|
|||
|
//==========================================================================
|
|||
|
// <20><>Ŀ<EFBFBD><C4BF>LCD1602 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD>㣺
|
|||
|
// LCD1602 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ٶȿ죬<C8BF><ECA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ٶȲ<D9B6>
|
|||
|
// ƥ<><C6A5><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD>ʧ<EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD>֮ǰӦȷ<D7BC><C8B7><EFBFBD><EFBFBD>lcd_delay() <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
// ȷ<D7BC><C8B7><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD>е<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>ָ<EFBFBD><D6B8>ָ<EFBFBD>У<EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD>㹻<EFBFBD><E3B9BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ9<D2AA><39><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD>Դ<EFBFBD><D4B4>2<EFBFBD><32><EFBFBD><EFBFBD>7<EFBFBD><37><EFBFBD>ź<EFBFBD><C5BA>ߡ<EFBFBD><DFA1>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĽӿڶ<D3BF><DAB6>塣
|
|||
|
// <20><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>LCD1602<30>ȶԵĵ<D4B5><C4B5>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
|||
|
// <20><><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD>ΰ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,2010.12
|
|||
|
//==========================================================================
|
|||
|
sbit lcd_RS = P0^6; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ,0<><30><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
|
|||
|
sbit lcd_RW = P0^5; //<2F><>дλ,0д1<D0B4><31>
|
|||
|
sbit lcd_EN = P0^4; //ʹ<><CAB9>λ,<2C>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD>
|
|||
|
sbit lcd_D4 = P0^3; //<2F><><EFBFBD>ݶ˿<DDB6>D4
|
|||
|
sbit lcd_D5 = P0^2; //<2F><><EFBFBD>ݶ˿<DDB6>D5
|
|||
|
sbit lcd_D6 = P0^1; //<2F><><EFBFBD>ݶ˿<DDB6>D6
|
|||
|
sbit lcd_D7 = P0^0; //<2F><><EFBFBD>ݶ˿<DDB6>D7
|
|||
|
//==========================================================================
|
|||
|
void lcd_delay(int n){ //LCDר<44><D7A8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
//32MHz<48><7A>Ƶ<EFBFBD>£<EFBFBD>Լѭ<D4BC><D1AD>3000<30><30><EFBFBD>ӳ<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
|
|||
|
int i,j;
|
|||
|
if(n<0) { for(i=0;i< 30;i++); return; } //10us
|
|||
|
if(n== 0) { for(i=0;i<150;i++); return; } //50us
|
|||
|
for(;n;n--){ for (j=0;j<3000;j++); } //n<><6E><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
//==========================================================================
|
|||
|
void lcd_B(char f, uchar c, char t){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ӿ<EFBFBD>LCD<43><44>7<EFBFBD><37><EFBFBD><EFBFBD>
|
|||
|
//f=0д<30><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, f=1дRAM<41><4D><EFBFBD><EFBFBD>, f=2<><32>RAM<41><4D><EFBFBD><EFBFBD>, f=3<><33>RAM<41><4D><EFBFBD><EFBFBD>
|
|||
|
lcd_EN = 0;
|
|||
|
lcd_RS = f%2;
|
|||
|
lcd_RW = f/2%2;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
lcd_D4 = c & 16;
|
|||
|
lcd_D5 = c & 32;
|
|||
|
lcd_D6 = c & 64;
|
|||
|
lcd_D7 = c & 128;
|
|||
|
lcd_EN = 1; lcd_delay(-1); lcd_EN = 0; //ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(f==4) { lcd_delay(t); return; }
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
lcd_D4 = c & 1;
|
|||
|
lcd_D5 = c & 2;
|
|||
|
lcd_D6 = c & 4;
|
|||
|
lcd_D7 = c & 8;
|
|||
|
lcd_EN = 1; lcd_delay(-1); lcd_EN = 0; //ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
lcd_delay(t); //<2F><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ӧʱ<D3A6>䲻ͬ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ2ms
|
|||
|
}
|
|||
|
//==========================================================================
|
|||
|
void lcd_init(){ //LCD1602 <20><>ʼ<EFBFBD><CABC>
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD>裬<EFBFBD><E8A3AC>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD>Լ65ms<6D><73>ʱ<EFBFBD><EFBFBD><DEB2>ɼ<EFBFBD>
|
|||
|
lcd_delay(20); //<2F><><EFBFBD><EFBFBD>lcd֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>15ms<6D><73>ֱ<EFBFBD><D6B1>VDD<44><44><EFBFBD><EFBFBD>4.5V
|
|||
|
lcd_B(4, 0x30, 9); //<2F><>8<EFBFBD><38>ģʽ,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>4.1ms
|
|||
|
lcd_B(4, 0x30, 5); //<2F><>8<EFBFBD><38>ģʽ,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>100us
|
|||
|
lcd_B(4, 0x30, 5); //<2F><>8<EFBFBD><38>ģʽ,<2C>ֲ<EFBFBD><D6B2><EFBFBD>δָ<CEB4><D6B8><EFBFBD><EFBFBD>ʱ
|
|||
|
lcd_B(4, 0x20, 5); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
lcd_B(0, 0x28, 5); //<2F><><EFBFBD><EFBFBD>ģʽ˫<CABD><CBAB><EFBFBD><EFBFBD>ʾ
|
|||
|
lcd_B(0, 0x0C, 5); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
|||
|
lcd_B(0, 0x80, 5); //RAMָ<4D>붨λ
|
|||
|
lcd_B(0, 0x01, 5); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>LCD
|
|||
|
}
|
|||
|
//==========================================================================
|
|||
|
//=========================<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3>ú<EFBFBD><C3BA><EFBFBD>=================================
|
|||
|
void lcd_cls() { lcd_B(0, 0x01+0, 2); } //<2F><><EFBFBD><EFBFBD>
|
|||
|
void lcd_cur0() { lcd_B(0, 0x0C+0, 0); } //<2F><><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>
|
|||
|
void lcd_goto1(uchar x){ lcd_B(0, 0x80+x, 0); } //<2F><><EFBFBD><EFBFBD>DDRAM<41><4D>ַ,<2C><>1<EFBFBD><31>xλ
|
|||
|
void lcd_goto2(uchar x){ lcd_B(0, 0xC0+x, 0); } //<2F><><EFBFBD><EFBFBD>DDRAM<41><4D>ַ,<2C><>2<EFBFBD><32>xλ
|
|||
|
void lcd_putc(uchar d) { lcd_B(1, 0x00+d, 0); } //<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void lcd_puts(uchar *s){ for(; *s; s++) lcd_B(1,*s,0); } //<2F>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//==========================================================================
|
|||
|
//===============================<3D><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>===================================
|
|||
|
void delay(uint loop) { uint i; for(i=0;i<loop;i++); } //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
void delay2(uint k) { for(;k>0;k--) delay(10000); } //<2F><><EFBFBD><EFBFBD>ʱ,k=100<30><30>Լ<EFBFBD><D4BC>Ӧ1<D3A6><31>
|
|||
|
|
|||
|
//==========================================================================
|
|||
|
//=================================ADת<44><D7AA>===================================
|
|||
|
sfr P1ASF = 0x9D; //<2F><>P1<50><31>Ϊģ<CEAA><C4A3><EFBFBD>ڼĴ<DABC><C4B4><EFBFBD>(ʹ<><CAB9>),<2C><>λ<EFBFBD><CEBB>Ϊ1<CEAA><31><EFBFBD><EFBFBD>Ч
|
|||
|
sfr ADC_CONTR = 0xBC; //A/Dת<44><D7AA><EFBFBD><EFBFBD><EFBFBD>ƼĴ<C6BC><C4B4><EFBFBD>
|
|||
|
sfr ADC_res = 0xBD; //A/Dת<44><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
sfr ADC_resl = 0xBE; //A/Dת<44><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
|
|||
|
void set_channel(char channel){
|
|||
|
P1ASF = 1<<channel;
|
|||
|
ADC_CONTR = channel+128; //<2F><><EFBFBD><EFBFBD>λ<EFBFBD>ǵ<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>,<2C><>3λͨ<CEBB><CDA8>ѡ<EFBFBD><D1A1>
|
|||
|
delay(1); //<2F>״δ<CEB4>ԴӦ<D4B4>ӳ٣<D3B3>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>
|
|||
|
}
|
|||
|
uint getAD2(){
|
|||
|
ADC_CONTR |= 0x08; //00001000,<2C><>ADC_START=1<><31><EFBFBD><EFBFBD>A/D ת<><D7AA>
|
|||
|
while ( !(ADC_CONTR & 0x10) ); //<2F>ȴ<EFBFBD>A/Dת<44><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ADC_FLAG==0)
|
|||
|
ADC_CONTR &= 0xE7; //11100111,<2C><>ADC_FLAG=0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ADC_START=0<>ر<EFBFBD>A/D ת<><D7AA>
|
|||
|
return ADC_res*4 + ADC_resl;
|
|||
|
}
|
|||
|
/*
|
|||
|
uchar get_AD(){
|
|||
|
ADC_CONTR |= 0x08; //00001000,<2C><>ADC_START=1<><31><EFBFBD><EFBFBD>A/D ת<><D7AA>
|
|||
|
while( !(ADC_CONTR & 0x10) ); //<2F>ȴ<EFBFBD>A/Dת<44><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ADC_FLAG==0)
|
|||
|
ADC_CONTR &= 0xE7; //11100111,<2C><>ADC_FLAG=0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ADC_START=0<>ر<EFBFBD>A/D ת<><D7AA>
|
|||
|
return ADC_res;
|
|||
|
}
|
|||
|
*/
|
|||
|
uint getAD10() reentrant { //10<31>β<EFBFBD><CEB2><EFBFBD>
|
|||
|
char i;
|
|||
|
uint c = 0;
|
|||
|
for(i=0;i<10;i++) c += getAD2();
|
|||
|
return c;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//==========================================================================
|
|||
|
//==================================EEPROWƫ<57><C6AB>==============================
|
|||
|
sfr IAP_data = 0xC2;
|
|||
|
sfr IAP_addrH = 0xC3;
|
|||
|
sfr IAP_addrL = 0xC4;
|
|||
|
sfr IAP_cmd = 0xC5;
|
|||
|
sfr IAP_trig = 0xC6;
|
|||
|
sfr IAP_contr = 0xC7;
|
|||
|
/********************
|
|||
|
д<EFBFBD>ֽ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>1<EFBFBD><EFBFBD>Ϊ0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>Ϊ1<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ʹ<EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>Ϊ1
|
|||
|
Ӧע<EFBFBD>⣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ὣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*********************/
|
|||
|
void saEEP(){ //EEP<45><50><EFBFBD><EFBFBD>
|
|||
|
IAP_cmd = 0; //<2F>ر<EFBFBD><D8B1><EFBFBD><EEA3AC><EFBFBD><EFBFBD>
|
|||
|
IAP_contr = 0; //<2F><>EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
IAP_trig = 0;
|
|||
|
IAP_addrL = 255; //<2F><><EFBFBD>ö<EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ĵ<EFBFBD><C4B5>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
IAP_addrH = 255; //<2F><><EFBFBD>ö<EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ĸ<EFBFBD><C4B8>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
uchar readEEP(uint k){ //<2F><>ȡ
|
|||
|
IAP_addrL = k; //<2F><><EFBFBD>ö<EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ĵ<EFBFBD><C4B5>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
IAP_addrH = k>>8; //<2F><><EFBFBD>ö<EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ĸ<EFBFBD><C4B8>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
IAP_contr = 0x81; //<2F><><EFBFBD>õȴ<C3B5>ʱ<EFBFBD>䣬1MHz<48><7A><EFBFBD><EFBFBD>ȡ7<C8A1><37>2M<32><4D><EFBFBD><EFBFBD>ȡ6<C8A1><36>3Mȡ5<C8A1><35>6Mȡ4<C8A1><34>12Mȡ3<C8A1><33>20Mȡ2<C8A1><32>24Mȡ1<C8A1><31>30Mȡ0<C8A1><30>ǰ<EFBFBD><C7B0>1<EFBFBD><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>IAP
|
|||
|
IAP_cmd = 1; //<2F><>ȡֵ1<D6B5><31>дȡ2<C8A1><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ3<C8A1><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߥ<EFBFBD><DFA5>
|
|||
|
IAP_trig = 0x5A; //<2F><><EFBFBD><EFBFBD>5A
|
|||
|
IAP_trig = 0xA5; //<2F><><EFBFBD><EFBFBD>5A<35><41><EFBFBD><EFBFBD>A5<41><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
saEEP(); //<2F><><EFBFBD><EFBFBD>
|
|||
|
return IAP_data;
|
|||
|
}
|
|||
|
void writeEEP(uint k, uchar da){ //д<><D0B4>
|
|||
|
IAP_data = da; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
IAP_addrL = k; //<2F><><EFBFBD>ö<EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ĵ<EFBFBD><C4B5>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
IAP_addrH = k>>8; //<2F><><EFBFBD>ö<EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ĸ<EFBFBD><C4B8>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
IAP_contr = 0x81; //<2F><><EFBFBD>õȴ<C3B5>ʱ<EFBFBD>䣬1MHz<48><7A><EFBFBD><EFBFBD>ȡ7<C8A1><37>2M<32><4D><EFBFBD><EFBFBD>ȡ6<C8A1><36>3Mȡ5<C8A1><35>6Mȡ4<C8A1><34>12Mȡ3<C8A1><33>20Mȡ2<C8A1><32>24Mȡ1<C8A1><31>30Mȡ0<C8A1><30>ǰ<EFBFBD><C7B0>1<EFBFBD><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>IAP
|
|||
|
IAP_cmd = 2; //<2F><>ȡֵ1<D6B5><31>дȡ2<C8A1><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ3<C8A1><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߥ<EFBFBD><DFA5>
|
|||
|
IAP_trig = 0x5A; //<2F><><EFBFBD><EFBFBD>5A
|
|||
|
IAP_trig = 0xA5; //<2F><><EFBFBD><EFBFBD>5A<35><41><EFBFBD><EFBFBD>A5<41><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
saEEP(); //<2F><><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
void eraseEEP(uint k){ //<2F><><EFBFBD><EFBFBD>
|
|||
|
IAP_addrL = k; //<2F><><EFBFBD>ö<EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ĵ<EFBFBD><C4B5>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
IAP_addrH = k>>8; //<2F><><EFBFBD>ö<EFBFBD>ȡ<EFBFBD><C8A1>ַ<EFBFBD>ĸ<EFBFBD><C4B8>ֽڣ<D6BD><DAA3><EFBFBD>ַ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
IAP_contr = 0x81; //<2F><><EFBFBD>õȴ<C3B5>ʱ<EFBFBD>䣬1MHz<48><7A><EFBFBD><EFBFBD>ȡ7<C8A1><37>2M<32><4D><EFBFBD><EFBFBD>ȡ6<C8A1><36>3Mȡ5<C8A1><35>6Mȡ4<C8A1><34>12Mȡ3<C8A1><33>20Mȡ2<C8A1><32>24Mȡ1<C8A1><31>30Mȡ0<C8A1><30>ǰ<EFBFBD><C7B0>1<EFBFBD><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>IAP
|
|||
|
IAP_cmd = 3; //<2F><>ȡֵ1<D6B5><31>дȡ2<C8A1><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ3<C8A1><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߥ<EFBFBD><DFA5>
|
|||
|
IAP_trig = 0x5A; //<2F><><EFBFBD><EFBFBD>5A
|
|||
|
IAP_trig = 0xA5; //<2F><><EFBFBD><EFBFBD>5A<35><41><EFBFBD><EFBFBD>A5<41><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
saEEP(); //<2F><><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
|
|||
|
xdata struct Ida{
|
|||
|
char zo[3];//<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
char j1; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>(3<><33><EFBFBD><EFBFBD>)
|
|||
|
char j2; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>(10<31><30><EFBFBD><EFBFBD>)
|
|||
|
char J[4]; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>(V/I<>任<EFBFBD><E4BBBB>)
|
|||
|
char R[4]; //<2F>±۵<C2B1><DBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(20,1k,10k,100k)
|
|||
|
char g1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(3<><33><EFBFBD><EFBFBD>)
|
|||
|
char g2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(10<31><30><EFBFBD><EFBFBD>)
|
|||
|
} cs;
|
|||
|
|
|||
|
void cs_RW(char rw){
|
|||
|
uchar i,*p = &cs;
|
|||
|
if(rw){
|
|||
|
eraseEEP(0);
|
|||
|
for(i=0;i<sizeof(cs);i++) writeEEP(i,p[i]);
|
|||
|
}else{
|
|||
|
for(i=0;i<sizeof(cs);i++) p[i]=readEEP(i);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//==========================================================================
|
|||
|
//==================================LCR<43><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===============================
|
|||
|
//==========================================================================
|
|||
|
sfr P1M1=0x91; //P1<50>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
|||
|
sfr P1M0=0x92; //P1<50>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
|||
|
sfr P0M1=0x93; //P0<50>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
|||
|
sfr P0M0=0x94; //P0<50>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
|||
|
sfr P2M1=0x95; //P2<50>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
|||
|
sfr P2M0=0x96; //P2<50>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
|||
|
sfr P3M1=0xB1; //P3<50>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
|||
|
sfr P3M0=0xB2; //P3<50>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
sbit spk=P2^3; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
sbit Kb=P2^1; //<2F><><EFBFBD>̿<EFBFBD><CCBF><EFBFBD>B
|
|||
|
sbit Ka=P2^2; //<2F><><EFBFBD>̿<EFBFBD><CCBF><EFBFBD>A
|
|||
|
sbit DDS2=P1^2;//<2F><><EFBFBD><EFBFBD><E0B7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
sbit K3=P1^7;
|
|||
|
sbit K4=P1^6;
|
|||
|
sbit K5=P1^5; //7.8kHz<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
sbit K6=P1^4;
|
|||
|
sbit K8=P2^0; //100Hz<48>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
xdata uchar menu=1,menu2=0; //<2F>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//==============<3D>ַ<EFBFBD><D6B7><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>====================
|
|||
|
#define digW 4 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾλ<CABE><CEBB><EFBFBD><EFBFBD>
|
|||
|
void lcd_putp(float a,float b,char bo,char n, float qmin){ //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,n<>ǵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>,qmin<69><6E><EFBFBD><EFBFBD>СλȨֵ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB6><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>)
|
|||
|
code uchar dwB[] = {'p','n','u','m','o','k','M','G'}; //<2F><>λ<EFBFBD><CEBB>
|
|||
|
char i,j, c=0, h=digW-1, fh[2]={' ','+'};
|
|||
|
long d,q,Q=1; //D<><44><EFBFBD><EFBFBD>λȨ
|
|||
|
float f,g=1;
|
|||
|
if(a<0) fh[0] = '-', a = -a;
|
|||
|
if(b<0) fh[1] = '-', b = -b;
|
|||
|
if(a>b) f = a; else f = b;
|
|||
|
if(qmin) {
|
|||
|
a += qmin/2, a -= fmod(a,qmin)-qmin/1000;
|
|||
|
b += qmin/2; b -= fmod(b,qmin)-qmin/1000;
|
|||
|
}
|
|||
|
for(i=1;i<digW;i++) Q *= 10;
|
|||
|
for(i=0;i<3;i++){ if(f*g >= 1000) g/=1000, c++; } //<2F><>3λΪ<CEBB><CEAA>λ<EFBFBD>ƶ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>
|
|||
|
for(i=0;i<n;i++){ if(f*g < 1) g*=1000, c--; } //<2F><>3λΪ<CEBB><CEAA>λ<EFBFBD>ƶ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>
|
|||
|
for(i=1;i<digW && f*g<Q;i++) g*=10,h--; //<2F><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>С<EFBFBD><D0A1><EFBFBD>㣬ʹ֮<CAB9><D6AE><EFBFBD><EFBFBD>
|
|||
|
for(i=0;i<2;i++){
|
|||
|
if(i) d = b*g; //ȡ<><C8A1>ʵ<EFBFBD><CAB5>
|
|||
|
else d = a*g; //ȡ<><C8A1><EFBFBD>鲿
|
|||
|
q = Q;
|
|||
|
lcd_putc(fh[i]); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
for(j=0; j<digW; j++){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
lcd_putc(d/q+48); //<2F><><EFBFBD><EFBFBD>
|
|||
|
if(j==h) lcd_putc('.');//С<><D0A1><EFBFBD><EFBFBD>
|
|||
|
d %= q, q /= 10;
|
|||
|
}
|
|||
|
if(!bo) break; //<2F><><EFBFBD><EFBFBD>ʾ<EFBFBD>鲿
|
|||
|
}
|
|||
|
lcd_putc(dwB[c+4]); //<2F><>λ
|
|||
|
}
|
|||
|
void lcd_putf(float a, char n, float qmin) //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,n<>ǵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
{ lcd_putp(a,0,0,n,qmin); }
|
|||
|
void lcd_int(uint a,char w){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
char i=0, s[5] = {' ',' ',' ',' ',' '};
|
|||
|
for(;a;i++){ s[i] = a%10+48, a /= 10; }
|
|||
|
for(;w;w--) lcd_putc(s[w-1]);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//==============<3D><>Ƶ<EFBFBD>ź<EFBFBD>DDS====================
|
|||
|
//PCA<43><41><EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD>
|
|||
|
sfr CMOD = 0xD9; //<2F><>Դѡ<D4B4><D1A1><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>
|
|||
|
sfr CH = 0xF9; //PCA<43>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
sfr CL = 0xE9; //PCA<43>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
sfr CCON = 0xD8; //PCA<43><41><EFBFBD>ƼĴ<C6BC><C4B4><EFBFBD>
|
|||
|
sfr CCPAM0 = 0xDA; //PCAģ<41><C4A3>0<EFBFBD><30><EFBFBD><EFBFBD>ģʽ<C4A3>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
sfr CCPAM1 = 0xDB; //PCAģ<41><C4A3>1<EFBFBD><31><EFBFBD><EFBFBD>ģʽ<C4A3>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
sfr CCAP0L = 0xEA; //ģ<><C4A3>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
sfr CCAP0H = 0xFA; //ģ<><C4A3>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
|
|||
|
sbit PPCA = IP^7; //PCA<43><41><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
sbit CCF0 = CCON^0; //PCA<43><41>ģ<EFBFBD><C4A3>0<EFBFBD>жϱ<D0B6>־
|
|||
|
sbit CCF1 = CCON^1; //PCA<43><41>ģ<EFBFBD><C4A3>1<EFBFBD>жϱ<D0B6>־
|
|||
|
sbit CR = CCON^6; //PCA<43><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
|
|||
|
void PWM_init(){ //<2F><>PCA<43><41>ΪPWM
|
|||
|
CMOD = 2; //0000 0010 <20><><EFBFBD><EFBFBD>Դѡ<D4B4><D1A1>,<2C><>Դȡfosc/2
|
|||
|
CL = CH = 0;
|
|||
|
CCAP0L = CCAP0H = 192; //ռ<>ձ<EFBFBD>Ϊ25%
|
|||
|
//CCPAM0=0x42;//0100 0010,PCA<43><41>ģ<EFBFBD><C4A3>0<EFBFBD><30><EFBFBD><EFBFBD>ΪPWMģʽ,<2C><><EFBFBD>ж<EFBFBD>
|
|||
|
CCPAM0=0x53;//0101 0011,PCA<43><41>ģ<EFBFBD><C4A3>0<EFBFBD><30><EFBFBD><EFBFBD>ΪPWMģʽ,<2C><><EFBFBD>жϣ<D0B6><CFA3>½<EFBFBD><C2BD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
PPCA = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
//CR = 1; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
EA = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
}
|
|||
|
|
|||
|
uint ph=0, phM=256, feq=1000; //<2F><>λ,phM<68><4D>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ֵ
|
|||
|
xdata float feqX=1000; //ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
uchar code sinB[256]={
|
|||
|
//<2F><>ѯ<EFBFBD><D1AF><EFBFBD>в<EFBFBD><D0B2><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϲ<D0B6><CFB2><EFBFBD>
|
|||
|
255,255,255,255,255,255,254,254,253,252,252,251,250,249,248,247,246,245,243,242,240,239,237,236,234,232,230,229,227,225,222,220,
|
|||
|
218,216,214,211,209,206,204,201,199,196,194,191,188,185,183,180,177,174,171,168,165,162,159,156,153,150,147,144,140,137,134,131,
|
|||
|
128,125,122,119,116,112,109,106,103,100, 97, 94, 91, 88, 85, 82, 79, 76, 73, 71, 68, 65, 62, 60, 57, 55, 52, 50, 47, 45, 42, 40,
|
|||
|
38, 36, 34, 31, 29, 27, 26, 24, 22, 20, 19, 17, 16, 14, 13, 11, 10, 9, 8, 7, 6, 5, 4, 4, 3, 2, 2, 1, 1, 1, 1, 1,
|
|||
|
1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 20, 22, 24, 26, 27, 29, 31, 34, 36,
|
|||
|
38, 40, 42, 45, 47, 50, 52, 55, 57, 60, 62, 65, 68, 71, 73, 76, 79, 82, 85, 88, 91, 94, 97,100,103,106,109,112,116,119,122,125,
|
|||
|
128,131,134,137,140,144,147,150,153,156,159,162,165,168,171,174,177,180,183,185,188,191,194,196,199,201,204,206,209,211,214,216,
|
|||
|
218,220,222,225,227,229,230,232,234,236,237,239,240,242,243,245,246,247,248,249,250,251,252,252,253,254,254,255,255,255,255,255
|
|||
|
};
|
|||
|
uchar code fbB[256]={ //<2F><><EFBFBD><EFBFBD>DDS<44><53>ѯ<EFBFBD><D1AF>
|
|||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|||
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
|||
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
|||
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
|||
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
|||
|
};
|
|||
|
uchar chuX=0; //<2F><><EFBFBD><EFBFBD>DDS<44><53><EFBFBD><EFBFBD>
|
|||
|
void PCAinter(void) interrupt 7 {//PCA<43>ж<EFBFBD>
|
|||
|
uchar x,y;
|
|||
|
CCF0=0; //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ⷴ<EFBFBD><E2B7B4><EFBFBD>ж<EFBFBD>
|
|||
|
x = ph >> 8; //<2F>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD>,ȡ<><C8A1>8λ
|
|||
|
y = x + chuX; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
CCAP0H = sinB[x];//<2F><><EFBFBD><EFBFBD>DDS<44><53><EFBFBD><EFBFBD>
|
|||
|
DDS2 = fbB[y]; //<2F><><EFBFBD><EFBFBD>DDS<44><53><EFBFBD><EFBFBD>
|
|||
|
ph += phM; //<2F><>λ<EFBFBD>ۼ<EFBFBD>
|
|||
|
}
|
|||
|
void setDDS(uint f){ //<2F>ο<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>c=(fosc/2)/256=32000000/2/256=62500,Ƶ<><C6B5>f=c*phM/2^16
|
|||
|
feq = f;
|
|||
|
phM=f*65536.0/62500; //phM=f*2^16/62500
|
|||
|
feqX = 62500.0*phM/65536; //ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
ph = 0; //<2F><>Ƶʱ<C6B5><CAB1>ʹ<EFBFBD><CAB9><EFBFBD>ζԳ<CEB6>
|
|||
|
if(!f) CR=0; else CR=1;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>λ<EFBFBD><CEBB><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>
|
|||
|
xdata char xw=0; //<2F><>λ
|
|||
|
void set90(char k){ //<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
k %= 4;
|
|||
|
if(k<0) k += 4;
|
|||
|
if(k==0) chuX=0; //<2F><><EFBFBD><EFBFBD>0<EFBFBD><30>
|
|||
|
if(k==1) chuX=64; //<2F><><EFBFBD><EFBFBD>90<39><30>
|
|||
|
if(k==2) chuX=128; //<2F><><EFBFBD><EFBFBD>180<38><30>
|
|||
|
if(k==3) chuX=192; //<2F><><EFBFBD><EFBFBD>270<37><30>
|
|||
|
xw = k;
|
|||
|
}
|
|||
|
void set902() { set90(xw+1); } //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//==============<3D><><EFBFBD>̿<EFBFBD><CCBF>ƺ<EFBFBD><C6BA><EFBFBD>====================
|
|||
|
xdata char rng=1; //<2F><><EFBFBD><EFBFBD>
|
|||
|
void setRng(char k){//<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(k==0) Ka=0,Kb=0; //100ŷ
|
|||
|
if(k==1) Ka=0,Kb=1; //1kŷ
|
|||
|
if(k==2) Ka=1,Kb=0; //10kŷ
|
|||
|
if(k==3) Ka=1,Kb=1; //100kŷ
|
|||
|
rng = k;
|
|||
|
}
|
|||
|
void setRng2(){ setRng( (rng+1)%4); } //<2F><><EFBFBD>̲<EFBFBD><CCB2><EFBFBD>
|
|||
|
|
|||
|
//==============<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>====================
|
|||
|
char curGain=1; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void setGain(char k){ //<2F><><EFBFBD>õ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
|
|||
|
if(k>3) k=3;
|
|||
|
if(k<0) k=0;
|
|||
|
if(k==0) K4=0,K6=0; //1<><31>
|
|||
|
if(k==1) K4=0,K6=1; //3<><33>
|
|||
|
if(k==2) K4=1,K6=0; //10<31><30>
|
|||
|
if(k==3) K4=1,K6=1; //30<33><30>
|
|||
|
curGain = k;
|
|||
|
}
|
|||
|
void setGain2(){ setGain((curGain+1)%4); }
|
|||
|
|
|||
|
|
|||
|
//==============LCR<43><52><EFBFBD><EFBFBD>====================
|
|||
|
xdata int Vxy[4]={0,0,0,0}; //Vxy[Vx1,Vy1,Vx2,Vy2]
|
|||
|
xdata char Sxw[4]={0,1,0,1}; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>λ
|
|||
|
xdata char Vga[4]={1,1,1,1}; //<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>
|
|||
|
xdata uchar tim=0,tims=0;
|
|||
|
xdata char pau=0; //<2F><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ת
|
|||
|
#define Vfull 9600
|
|||
|
#define gad (9600/30)
|
|||
|
uchar mT = 6; //<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>,mTȡֵΪ6<CEAA><36>12<31><32>24ʱ<34><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡƽ<C8A1><C6BD>
|
|||
|
//==============<3D><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>====================
|
|||
|
xdata char feqK=1; //Ƶ<><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void setF(char k){
|
|||
|
if(k==-1){ //<2F><><EFBFBD><EFBFBD>
|
|||
|
k = 0;
|
|||
|
if(feq==100) k=1;
|
|||
|
if(feq==1000) k=2;
|
|||
|
if(feq==7813) k=0;
|
|||
|
}
|
|||
|
feqK = k;
|
|||
|
if(k==0) { setDDS(100); K5=0; K8=1; mT=12; } //<2F><>Ϊ100Hz
|
|||
|
if(k==1) { setDDS(1000); K5=0; K8=0; mT=6; } //<2F><>Ϊ1kHz
|
|||
|
if(k==2) { setDDS(7813); K5=1; K8=0; mT=6; } //<2F><>Ϊ7.8125kHz
|
|||
|
TH1 = 47, TL1 = 171; //<2F><>Ϊ20ms
|
|||
|
tims = 0;
|
|||
|
tim = 0;
|
|||
|
ph = 0;
|
|||
|
}
|
|||
|
int absMax(int a,int b){ //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(a<0) a = -a;
|
|||
|
if(b<0) b = -b;
|
|||
|
if(b>a) a = b;
|
|||
|
return a;
|
|||
|
}
|
|||
|
#define avn 4 //<2F><>ƽ<EFBFBD><EFBFBD><DEB8><EFBFBD>
|
|||
|
xdata float vq[3][avn]; //<2F><><EFBFBD>ݻ<EFBFBD><DDBB>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
|
|||
|
void LCRcalc(int *v,char *g){ //LCR<43><52><EFBFBD><EFBFBD>
|
|||
|
code float ga[4] = { 1, 3, 9, 27 }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
code float dwR[4] = { 20, 1e3, 1e4, 1e5 }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
xdata int g12 = (int)cs.g1+cs.g2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
xdata int j12 = (int)cs.j1+cs.j2; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
xdata float JD = 0,cJD, G = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
xdata float a,b,c,e;
|
|||
|
char i;
|
|||
|
a = +( 1.0*v[2]*v[2] + 1.0*v[3]*v[3] );
|
|||
|
b = -( 1.0*v[0]*v[2] + 1.0*v[1]*v[3] );
|
|||
|
c = -( 1.0*v[2]*v[1] - 1.0*v[0]*v[3] );
|
|||
|
a *= ga[g[0]] / ga[g[2]];
|
|||
|
a /= dwR[rng]*(1+cs.R[rng]/10000.0); //<2F><><EFBFBD><EFBFBD><EFBFBD>±۵<C2B1><DBB5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
|||
|
//<2F>ɿ<EFBFBD><C9BF><EFBFBD><EFBFBD>浥Ԫ<E6B5A5><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(g[0] == 1) JD += cs.j1, G += cs.g1;
|
|||
|
if(g[0] == 2) JD += cs.j2, G += cs.g2;
|
|||
|
if(g[0] == 3) JD += j12, G += g12;
|
|||
|
if(g[2] == 1) JD -= cs.j1, G -= cs.g1;
|
|||
|
if(g[2] == 2) JD -= cs.j2, G -= cs.g2;
|
|||
|
if(g[2] == 3) JD -= j12, G -= g12;
|
|||
|
JD -= cs.J[rng];
|
|||
|
JD *= feqX/7813/1000;
|
|||
|
cJD = 1 - JD*JD/2;
|
|||
|
a *= 1+G/10000; //<2F><><EFBFBD>油<EFBFBD><E6B2B9>
|
|||
|
e = b*cJD - c*JD; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
c = b*JD + c*cJD; //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
b = e;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
for(i=1;i<avn;i++){
|
|||
|
vq[0][i] = vq[0][i-1];
|
|||
|
vq[1][i] = vq[1][i-1];
|
|||
|
vq[2][i] = vq[2][i-1];
|
|||
|
}
|
|||
|
vq[0][0]=a, vq[1][0]=b, vq[2][0]=c;
|
|||
|
}
|
|||
|
|
|||
|
void timerInter1(void) interrupt 3 {//T1<54>ж<EFBFBD>,LCR<43><52><EFBFBD>ݲɼ<DDB2>
|
|||
|
char g; int c=0;
|
|||
|
tims++;
|
|||
|
if(tims>=mT) tims = 0, tim++, c = 1;
|
|||
|
if(tim>=4) tim=0;
|
|||
|
if(pau) return;
|
|||
|
if(c){ //tim<69><6D>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
c = getAD10(); //<2F><>ȡ<EFBFBD><C8A1>ѹֵ
|
|||
|
c -= cs.zo[feqK];
|
|||
|
Vxy[tim] = xw<2 ? c : -c; //<2F><><EFBFBD>浱ǰ<E6B5B1><C7B0>ѹ
|
|||
|
Vga[tim] = curGain; //<2F><><EFBFBD>浱ǰ<E6B5B1><C7B0><EFBFBD><EFBFBD>
|
|||
|
Sxw[tim] += c<0 ? 2 : 0; //<2F><>λ<EFBFBD><CEBB>ת(Ԥ<><D4A4><EFBFBD>´ε<C2B4><CEB5><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ֵ)
|
|||
|
Sxw[tim] %= 4;
|
|||
|
if(tim==1||tim==3){ //<2F><><EFBFBD>±<EFBFBD><C2B1>л<EFBFBD>
|
|||
|
//<2F><>ѹģֵ<C4A3><D6B5><EFBFBD>ܷ<EFBFBD>Ӧ<EFBFBD>˷ŵ<CBB7><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB>жϵ<D0B6><CFB5><EFBFBD>ģֵ
|
|||
|
if(tim==1) K3=1, c = absMax(Vxy[2],Vxy[3]), g=Vga[2]; //<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD>±<EFBFBD>
|
|||
|
if(tim==3) K3=0, c = absMax(Vxy[0],Vxy[1]), g=Vga[0]; //<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD>ϱ<EFBFBD>
|
|||
|
if(c>Vfull) g--;
|
|||
|
else if(c<gad*1 ) g += 3; //<2F><><EFBFBD><EFBFBD>27<32><37>
|
|||
|
else if(c<gad*3 ) g += 2; //<2F><><EFBFBD><EFBFBD>9<EFBFBD><39>
|
|||
|
else if(c<gad*9) g++; //<2F><><EFBFBD><EFBFBD>3<EFBFBD><33>
|
|||
|
setGain(g);
|
|||
|
}
|
|||
|
set90( Sxw[ (tim+1)%4 ] ); //<2F><>λ<EFBFBD><CEBB>ת
|
|||
|
LCRcalc(Vxy,Vga);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void showR(char binLian){ //<2F><>ʾLCR
|
|||
|
char i;
|
|||
|
xdata float a=0,b=0,c=0,e,w;
|
|||
|
for(i=0;i<avn;i++)
|
|||
|
a += vq[0][i]/avn,
|
|||
|
b += vq[1][i]/avn,
|
|||
|
c += vq[2][i]/avn;
|
|||
|
|
|||
|
//<2F><>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>ʾ if(!a) { lcd_cls(); lcd_puts("DIV 0"); return; }
|
|||
|
w = 2*3.1415926*feqX;
|
|||
|
lcd_goto2(0); //<2F><>ʾƵ<CABE><C6B5>
|
|||
|
if(feq==100) lcd_putc('A');
|
|||
|
if(feq==1000) lcd_putc('B');
|
|||
|
if(feq==7813) lcd_putc('C');
|
|||
|
lcd_putc(rng+49); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
if(binLian){ //<2F><><EFBFBD><EFBFBD>
|
|||
|
e = (b*b+c*c)/a;
|
|||
|
lcd_goto1(0);
|
|||
|
lcd_puts("Zp");
|
|||
|
lcd_putf(e/b, 1, 1e-4); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>迹,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ŷ
|
|||
|
lcd_putf(e/c, 1, 1e-4); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>迹,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ŷ
|
|||
|
lcd_goto2(2);
|
|||
|
if(c<0) { lcd_putf(-c/e/w, 4, 1e-14); lcd_putc('F'); } //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Cֵ,<2C><>ʾ<EFBFBD><CABE>pF
|
|||
|
else { lcd_putf(+e/c/w, 2, 1e-8 ); lcd_putc('H'); } //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Lֵ,<2C><>ʾ<EFBFBD><CABE>uH
|
|||
|
}else{ //<2F><><EFBFBD><EFBFBD>
|
|||
|
e = a;
|
|||
|
lcd_goto1(0);
|
|||
|
lcd_puts("Zs");
|
|||
|
lcd_putp(b/e, c/e, 1, 1, 1e-4); lcd_putc(244); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>迹,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ŷ
|
|||
|
lcd_goto2(2);
|
|||
|
if(c<0) { lcd_putf(-e/c/w, 4, 1e-14); lcd_putc('F'); } //<2F><>ʾCֵ,<2C><>ʾ<EFBFBD><CABE>pF
|
|||
|
else { lcd_putf(+c/e/w, 2, 1e-8 ); lcd_putc('H'); } //<2F><>ʾLֵ,<2C><>ʾ<EFBFBD><CABE>uH
|
|||
|
}
|
|||
|
if(b){ c = fabs(c/b); if(c>999) c=999; } //<2F><><EFBFBD><EFBFBD>Q
|
|||
|
else c = 999;
|
|||
|
lcd_putf(c,0,0); //<2F><>ʾQ
|
|||
|
}
|
|||
|
//void timerInter(void) interrupt 1 {}//T0<54>ж<EFBFBD>
|
|||
|
|
|||
|
main(){
|
|||
|
uchar i=0,kn=0,key=0;
|
|||
|
uchar dispN=0; //<2F><>ʾɨ<CABE><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
uchar spkN=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
uint nn=0;
|
|||
|
uchar binLian=0;
|
|||
|
|
|||
|
lcd_init(); //<2F><>ʼ<EFBFBD><CABC>LCD
|
|||
|
lcd_cur0(); //<2F><><EFBFBD>ع<EFBFBD><D8B9><EFBFBD>
|
|||
|
lcd_puts("LCR 2.0");
|
|||
|
lcd_goto2(0);
|
|||
|
lcd_puts("XJW Putian,2011");
|
|||
|
delay2(80); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
|
|||
|
cs_RW(0); //<2F><>EEPROM
|
|||
|
|
|||
|
TCON=0, TMOD=0x12; //<2F><>T0<54><30>Ϊ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>װ<EFBFBD><D7B0>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>T1<54><31>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1>
|
|||
|
TH1 = 0, TL1 = 0;
|
|||
|
TR1=1; //T1<54><31>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
TR0=0; //T0<54><30>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
|
|||
|
ET1=1; //T1<54><31><EFBFBD>ж<EFBFBD>
|
|||
|
ET0=1; //T1<54><31><EFBFBD>ж<EFBFBD>
|
|||
|
EA=1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
PT0=1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
|
|||
|
|
|||
|
set_channel(0); //<2F><><EFBFBD><EFBFBD>ADת<44><D7AA>ͨ<EFBFBD><CDA8>
|
|||
|
P2M0 = 0xFF; //P2.01234567<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
P1M0 = 0xFC; //P1.234567<EFBFBD><EFBFBD>Ϊ<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
P1M1 = 0x03; //P1.0<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>迹
|
|||
|
P2 = 0x0F;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
PWM_init();//DDS<44><53>ʼ<EFBFBD><CABC>
|
|||
|
set90(2); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
setRng(1); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
setGain(1); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
setF(1); //DDS<44><53>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ϊ1kHz
|
|||
|
|
|||
|
while(1){
|
|||
|
//<2F><>ʾdisp
|
|||
|
nn++;
|
|||
|
//ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
key = ~P3;
|
|||
|
if(key&&kn<255) kn++; else kn=0;
|
|||
|
for(i=0;key;i++) key/=2; key=i;
|
|||
|
if(kn==4) spkN=10; else key=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>key<65><79><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>spkN<6B><4E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(spkN) spkN--, spk=0; else spk=1; //<2F><><EFBFBD>̷<EFBFBD><CCB7><EFBFBD>
|
|||
|
//<2F>˵<EFBFBD>ϵͳ
|
|||
|
if(key==8){//<2F>˵<EFBFBD><CBB5><EFBFBD>
|
|||
|
lcd_cls(); lcd_puts("Menu: 1 LCR");
|
|||
|
lcd_goto2(0); lcd_puts("3 Test,7 Set");
|
|||
|
menu=0; key=0;
|
|||
|
}
|
|||
|
if(menu>=1 && menu<=4){
|
|||
|
if(key==7) setRng2(); //<2F><><EFBFBD>̲<EFBFBD><CCB2><EFBFBD>
|
|||
|
if(key==6) setF(-1); //<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
}
|
|||
|
if(menu==0){ //<2F><>ʾ<EFBFBD><CABE><EFBFBD>̺Ͳ˵<CDB2>
|
|||
|
if(key) lcd_cls();
|
|||
|
if(key>=1 && key<=7) menu = key, menu2 = 0;
|
|||
|
key = 0;
|
|||
|
}
|
|||
|
if(menu==1){ //LCR<43><52><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)
|
|||
|
pau = 0;
|
|||
|
if(key==1) binLian = (binLian+1)%2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
|||
|
showR(binLian);
|
|||
|
}
|
|||
|
if(menu==2){
|
|||
|
lcd_goto1(0);
|
|||
|
lcd_puts("up:"); lcd_putc(Vga[0]+48);
|
|||
|
lcd_puts(" dw:"); lcd_putc(Vga[2]+48);
|
|||
|
}
|
|||
|
if(menu==3){ //<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
pau = 1;
|
|||
|
if(key==1) setGain2();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(key==2) { };
|
|||
|
if(key==3) K3=~K3; //<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD>±<EFBFBD>
|
|||
|
if(key==4) set902(); //<2F><>λ<EFBFBD><CEBB>ת
|
|||
|
lcd_goto1(0);
|
|||
|
lcd_puts(" xw="); lcd_putc(xw+48); //<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
lcd_puts(" K3="); lcd_putc(K3?49:48); //K3״̬
|
|||
|
lcd_puts(" Ga="); lcd_putc(curGain+48); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
lcd_goto2(0);
|
|||
|
if(nn%32==0) lcd_int(getAD10(),5);
|
|||
|
}
|
|||
|
if(menu==7){ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
|||
|
code char *csR[15] = {
|
|||
|
"Z0 : 20", "Z1 : 20","Z2 : 20",
|
|||
|
"R1X: 20", "R2X: 1k", "R3X:10k", "R4X:.1M", "G1X:3k3", "G2X:10k",
|
|||
|
"R1 : 20", "R2 : 1k", "R3 :10k", "R4 :.1M", "G1 :3k3", "G2 :10k"};
|
|||
|
char *p,bc=1, feqD=1,rngD=1;
|
|||
|
static char kc=0, mo=0;
|
|||
|
if(menu2==0) p = cs.zo+0, feqD=0, rngD=2; //100Hz<48><7A><EFBFBD><EFBFBD>У,<2C><><EFBFBD><EFBFBD>10ŷ<30><C5B7><EFBFBD><EFBFBD>
|
|||
|
if(menu2==1) p = cs.zo+1, feqD=1, rngD=2; //1kHz<48><7A><EFBFBD><EFBFBD>У,<2C><><EFBFBD><EFBFBD>10ŷ<30><C5B7><EFBFBD><EFBFBD>
|
|||
|
if(menu2==2) p = cs.zo+2, feqD=2, rngD=2; //7.8kHz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У,<2C><><EFBFBD><EFBFBD>10ŷ<30><C5B7><EFBFBD><EFBFBD>
|
|||
|
if(menu2==3) p = cs.J+0, feqD=2, rngD=0; //VI<56>任<EFBFBD><E4BBBB><EFBFBD><EFBFBD>λУ,<2C><><EFBFBD><EFBFBD>20<32><30><EFBFBD><EFBFBD>
|
|||
|
if(menu2==4) p = cs.J+1, feqD=2, rngD=1; //VI<56>任<EFBFBD><E4BBBB><EFBFBD><EFBFBD>λУ,<2C><><EFBFBD><EFBFBD>1k<31><6B><EFBFBD><EFBFBD>
|
|||
|
if(menu2==5) p = cs.J+2, feqD=2, rngD=2; //VI<56>任<EFBFBD><E4BBBB><EFBFBD><EFBFBD>λУ,<2C><><EFBFBD><EFBFBD>10k<30><6B><EFBFBD><EFBFBD>
|
|||
|
if(menu2==6) p = cs.J+3, feqD=2, rngD=3; //VI<56>任<EFBFBD><E4BBBB><EFBFBD><EFBFBD>λУ,<2C><><EFBFBD><EFBFBD>100k<30><6B><EFBFBD><EFBFBD>
|
|||
|
if(menu2==7) p = &cs.j1, feqD=2, rngD=1; //<2F>˷<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λУ,<2C><><EFBFBD><EFBFBD>3.3kŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(menu2==8) p = &cs.j2, feqD=2, rngD=1; //<2F>˷<EFBFBD>10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λУ,<2C><><EFBFBD><EFBFBD>10kŷ<6B><C5B7><EFBFBD><EFBFBD>
|
|||
|
if(menu2==9) p = cs.R+0, bc=2, feqD=1, rngD=0; //VI<56>任<EFBFBD><E4BBBB>ģֵУ,<2C><><EFBFBD><EFBFBD>20ŷ
|
|||
|
if(menu2==10) p = cs.R+1, bc=2, feqD=1, rngD=1; //VI<56>任<EFBFBD><E4BBBB>ģֵУ,<2C><><EFBFBD><EFBFBD>1kŷ
|
|||
|
if(menu2==11) p = cs.R+2, bc=2, feqD=1, rngD=2; //VI<56>任<EFBFBD><E4BBBB>ģֵУ,<2C><><EFBFBD><EFBFBD>10kŷ
|
|||
|
if(menu2==12) p = cs.R+3, bc=2, feqD=1, rngD=3; //VI<56>任<EFBFBD><E4BBBB>ģֵУ,<2C><><EFBFBD><EFBFBD>100kŷ
|
|||
|
if(menu2==13) p = &cs.g1, bc=2, feqD=1, rngD=1; //<2F>˷<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У,<2C><><EFBFBD><EFBFBD>2kŷ<6B><C5B7><EFBFBD><EFBFBD>
|
|||
|
if(menu2==14) p = &cs.g2, bc=2, feqD=1, rngD=1; //<2F>˷<EFBFBD>10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У,<2C><><EFBFBD><EFBFBD>10kŷ<6B><C5B7><EFBFBD><EFBFBD>
|
|||
|
if(key==1) *p += bc; //X<><58><EFBFBD><EFBFBD>
|
|||
|
if(key==2) *p -= bc; //R<><52><EFBFBD><EFBFBD>
|
|||
|
if(key==3) { cs_RW(1); setF(feqK); } //L<><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(key==4) *p = 0; //C<><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(key==5) { if(menu2==0) menu2=14; else menu2--; mo=0; }
|
|||
|
if(key==6) { if(menu2==14)menu2=0; else menu2++; mo=0; }
|
|||
|
if(key==7) mo = (mo+1)%2;
|
|||
|
if(key==4){ //<2F>ָ<EFBFBD><D6B8><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
|||
|
if(++kc==5){
|
|||
|
kc = 0;
|
|||
|
cs.j1 = 16, cs.j2 = 18;
|
|||
|
cs.g1 = 0, cs.g2 = 0;
|
|||
|
cs.zo[0] = 20;
|
|||
|
cs.zo[1] = 19;
|
|||
|
cs.zo[2] = 14;
|
|||
|
cs.J[0] = cs.J[1] = cs.J[2] = 0, cs.J[3] = 20;
|
|||
|
cs.R[0] = cs.R[1] = cs.R[2] = cs.R[3] = 0;
|
|||
|
}
|
|||
|
}
|
|||
|
else { if(key) kc=0; }
|
|||
|
//<2F><>ʾ
|
|||
|
if(mo){
|
|||
|
if(feqD!=feqK) setF(feqD);
|
|||
|
if(rngD!=rng) setRng(rngD);
|
|||
|
showR(1);
|
|||
|
}else{
|
|||
|
lcd_cls();
|
|||
|
lcd_goto1(0);
|
|||
|
lcd_puts(csR[menu2]); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
lcd_goto2(0);
|
|||
|
lcd_putf(*p,0,0);
|
|||
|
lcd_puts("X:+ R:-");
|
|||
|
}
|
|||
|
}
|
|||
|
delay(20000);
|
|||
|
}//while end
|
|||
|
}
|
|||
|
//==========================================================================
|
|||
|
|