?? system.c
字號:
#include<reg51.h>
#include"Config.h"
#include"IOCfg.c"
#include"TimeDLY.h"
#include"Key.h"
#include"ADC.h"
#include"LCD.h"
#include"ISD1420.h"
#include"DAC.h"
#define DAC_REF 5.0
INT16U Temp1=0;
FP32 Measure_Current=0;
INT8U Enter_Flag=0;
FP32 DAC_Data=0;
INT16U Temp=0; //存儲設(shè)定值
INT16U ADC_Data=0;//ADC數(shù)字量
INT8U data1[]={0,0,0,0};//當(dāng)前值顯示數(shù)組
INT8U data2[]={0,0,0,0};//設(shè)定值顯示數(shù)組
INT8U data3[]={0,0,0,0};//測量值顯示數(shù)組
INT16U CurrentData[]={0xa3b0,0xa3b1,0xa3b2,0xa3b3,0xa3b4,0xa3b5,0xa3b6,0xa3b7,0xa3b8,0xa3b9};
//0x00~0x09 對應(yīng)數(shù)字0~~9, 0x0a對應(yīng)"點(diǎn)",0x0b對應(yīng)"毫安",0x0c對應(yīng)"電流設(shè)定值"
INT8U Voice_data[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c};
void InitIO()
{
DACDIN = 0;
DACSCLK = 0;
DACCS = 0;
ADCPWRD = 0;
ADCBUSY = 1;
ADCRC = 0;
ADCDATA = 1;
ADCSCLK = 0;
ADCSYN = 1;
ADCSBTC = 0;
ADCEXINT = 0;
ZLG7289CS = 1;
ZLG7289CLK = 0;
ZLG7289DIO = 1;
ZLG7289INT = 1;
LCDRW = 0;
LCDRS = 0;
LCDRST = 0;
LCDE = 0;
LCDData = 0x00;
PLAYL = 0;
A4 = 0;
A3 = 0;
A2 = 0;
A1 = 0;
}
void process(INT16U i,INT8U *p)
{
p[0]=i/1000;
i=i%1000;
p[1]=i/100;
i=i%100;
p[2]=i/10;
i=i%10;
p[3]=i;
}
//放音數(shù)組函數(shù):Sound_Play_A()
void Sound_Play_A(INT8U *Data)
{
INT8U i;
Sound_Play(Voice_data[12]);
LDelay(50);
if(Data[0]>0)
{for(i=0;i<4;i++) {Sound_Play(Voice_data[Data[i]]);}}
else
{
if(Data[1]>0)
{for(i=1;i<4;i++) {Sound_Play(Voice_data[Data[i]]);}}
else
{
if(Data[2]>0)
{for(i=2;i<4;i++) {Sound_Play(Voice_data[Data[i]]);}}
else
{
if(Data[3]>0)
{for(i=3;i<4;i++) {Sound_Play(Voice_data[Data[i]]);}}
}
}
}
LDelay(50);
Sound_Play(Voice_data[11]);
LDelay(100);
}
void main()
{
INT8U key;
InitIO();
PLAYL = 1;
InitLCD();
SetDAC_B(FASTSP,EXTERNAL,DAC_REF,DAC_Data);
//以下是電流源輸出顯示
DispOneWord(0,2,0xb5e7); //"電"
DispOneWord(0,3,0xc1f7); //"流"
DispOneWord(0,4,0xd4b4); //"源"
DispOneWord(1,0,0xc9e8); //"設(shè)"
DispOneWord(1,1,0xb6a8); //"定"
DispOneWord(1,2,0xd6b5); //"值"
DispTwoCharacter(1,6,0xa3ed,0xa3c1);//"mA"
DispOneWord(2,0,0xb5b1); //"當(dāng)"
DispOneWord(2,1,0xc7b0); //"前"
DispOneWord(2,2,0xd6b5); //"值"
DispTwoCharacter(2,6,0xa3ed,0xa3c1);//"mA"
//以下是測量數(shù)值顯示
DispOneWord(3,0,0xb2e2); //"測"
DispOneWord(3,1,0xc1bf); //"量"
DispOneWord(3,2,0xd6b5); //"值"
DispTwoCharacter(3,6,0xa3ed,0xa3c1);//"mA"
while(1)
{
if(!ZLG7289INT) //如果有按鍵按下
{
key=ZLG7289_ReadKey(); //取得按鍵數(shù)值
switch(key)
{
case 1://復(fù)位
{ DAC_Data=0;
Temp=0;
Temp1=0;
break;}
case 2://取消,刪除
{ Temp=Temp/10;
break;}
case 3://確認(rèn)
{ Temp1=Temp;
DAC_Data=Temp1*0.0025;
Temp=0;
Enter_Flag=1;
break;}
case 4://UP
{ Temp1+=1;
DAC_Data=Temp1*0.0025;
Temp=0;
Enter_Flag=1;
break;}
case 5://DOWN
{ Temp1-=1;
DAC_Data=Temp1*0.0025;
Temp=0;
Enter_Flag=1;
break;}
case 6://0
{ Temp=Temp*10;
break;}
case 7://1
{ Temp=Temp*10+1;
break;}
case 8://2
{ Temp=Temp*10+2;
break;}
case 9://3
{ Temp=Temp*10+3;
break;}
case 10://4
{ Temp=Temp*10+4;
break;}
case 11://5
{ Temp=Temp*10+5;
break;}
case 12://6
{ Temp=Temp*10+6;
break;}
case 13://7
{ Temp=Temp*10+7;
break;}
case 14://8
{ Temp=Temp*10+8;
break;}
case 15://9
{ Temp=Temp*10+9;
break;}
default:break;
}
while(!ZLG7289INT);
}
if(Temp>0) process(Temp,data2);
else process(Temp1,data2);
DispOneWord(0,2,0xb5e7); //"電"
DispOneWord(0,3,0xc1f7); //"流"
DispOneWord(0,4,0xd4b4); //"源"
DispOneWord(1,0,0xc9e8); //"設(shè)"
DispOneWord(1,1,0xb6a8); //"定"
DispOneWord(1,2,0xd6b5); //"值"
DispTwoCharacter(1,4,CurrentData[data2[0]],CurrentData[data2[1]]);
DispTwoCharacter(1,5,CurrentData[data2[2]],CurrentData[data2[3]]);
DispTwoCharacter(1,6,0xa3ed,0xa3c1);//"mA"
SetDAC_B(FASTSP,EXTERNAL,DAC_REF,DAC_Data);
process(Temp1,data1);
DispOneWord(2,0,0xb5b1); //"當(dāng)"
DispOneWord(2,1,0xc7b0); //"前"
DispOneWord(2,2,0xd6b5); //"值"
DispTwoCharacter(2,4,CurrentData[data1[0]],CurrentData[data1[1]]);
DispTwoCharacter(2,5,CurrentData[data1[2]],CurrentData[data1[3]]);
DispTwoCharacter(2,6,0xa3ed,0xa3c1);//"mA"
ADC_Data = nSample(EXDCLK_RDNOW,BTC);
Measure_Current = 0.15*ADC_Data;
process((INT16U)Measure_Current,data3);
DispOneWord(3,0,0xb2e2); //"測"
DispOneWord(3,1,0xc1bf); //"量"
DispOneWord(3,2,0xd6b5); //"值"
DispTwoCharacter(3,4,CurrentData[data3[0]],CurrentData[data3[1]]);
DispTwoCharacter(3,5,CurrentData[data3[2]],CurrentData[data3[3]]);
DispTwoCharacter(3,6,0xa3ed,0xa3c1);//"mA"
//語音播報(bào)
if(Enter_Flag==1)
{
Sound_Play_A(data1);
Enter_Flag=0;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -