📄 backup.txt
字号:
#include "SPCE061V004.H"
#include "lab_parameter.h"
char b0="0",b1="1",b2="2",b3="3",b4="4",b5="5",b6="6",b7="7",b8="8",b9="9",b=".";
char bb ,*p=0;
unsigned int k0=0,u=0;
extern shu; //数
extern kong; //控
extern heng; //恒
extern liu; //流
extern yuan; //源
extern shi; //实
extern ji; //际
extern ce; //测
extern liang; //量
extern yu; //预
extern xian; //先
extern she; //设
extern ding; //定
unsigned int key_value=0,ooo=0,tm0=0,tm1=0,tm2=0,tm3=0,tm[4]={0};
int key=0,i=0,value_h=0,j=0,k=0;
unsigned long int key_in_value=1000,j0=0,binary=0;
unsigned int key_in[10]={0},key_i=0;
unsigned int Da_data1=0x7ee0,Da_data2=0x7ee0,Da_data_flag=0,Ad_data=0;
float Ad_data_f=0,Data_f=0,Data_i_f=0;
float n=3.513,Ns=2.7285,Nb=30,R=0.3157;
/////////////////////////////////////////////////
unsigned int get_key_value(void)
{
SP_Init_IOB(0x0f00,0x0f00,0x0f00); //设置IOA8—IOA11为高电平输出,设置IOA12—IOA15为低电平输入
for(i=0;i<3;i++) //在时钟频率为49M时,延时1us使IO口能反应过来
*P_Watchdog_Clear = 1;
if(*P_IOB_Data & 0xf000 ) //如果有键值
{
for(i=0;i<0x3c00;i++) //在时钟频率为49M时,延时15ms去抖
*P_Watchdog_Clear = 1;
if(*P_IOB_Data & 0xf000) //如果真有键值
{
value_h = *P_IOB_Data & 0xf000 ;
SP_Init_IOB(0xf000,0xf000,0xf000); //设置IOA8—IOA11为低电平输入,设置置IOA12—IOA15为高电平输出
for(i=0;i<3;i++) //在时钟频率为49M时,延时1us使IO口能反应过来
*P_Watchdog_Clear = 1;
key = *P_IOB_Data & 0x0f00 ;
key = value_h | key;
while( *P_IOB_Data & 0x0f00)
*P_Watchdog_Clear = 1; //等待弹起
return key;
}
return 0x0000;
}
return 0x0000;
*P_Watchdog_Clear = 1;
}
/////////////////////////////////////////////////////////////////
void key_scan(void)
{
ooo = get_key_value();
switch( ooo )
{
case 0x8100: key_value = 0;//0
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x4100: key_value = 1;//1
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x2100: key_value = 2;//2
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x1100: key_value = 3;//3
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x8200: key_value = 4;//4
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x4200: key_value = 5;//5
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x2200: key_value = 6;//6
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x1200: key_value = 7;//7
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x8400: key_value = 8;//8
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x4400: key_value = 9;//9
key_in[key_i] = key_value;
key_i += 1;
break;
case 0x2400: key_value = 10;//10 输入数值确认功能键
key_in_value=0;
for(j=0,j0=1;j<key_i;j++,j0*=10)
key_in_value += key_in[key_i-j-1]*j0;
Da_data1 = 32.283*key_in_value*1.012; //0xffc0/2160=30.283
Da_data2 = 32.283*key_in_value*1.013;
if(key_in_value>1600)
{
Da_data1 += 20;
Da_data2 += 20;
}
if(key_in_value>1800)
{
Da_data1 += 10;
Da_data2 += 10;
}
key_i = 0;
break;
case 0x1400: key_value = 11;//11
break;
case 0x8800: key_value = 12;//12 步进 "+"
if(Da_data_flag)
{
if(Da_data1<0xfd40) //0xfd40=0xffc0-64*10
Da_data1 += 64*10;
Da_data_flag = 0;
}
else
{
if(Da_data2<0xfd40) //0xfd40=0xffc0-64*10
Da_data2 += 64*10; //第七位加1步进1mv;临时乘10方便调试步进10mv
Da_data_flag = 1;
}
break;
case 0x4800: key_value = 13;//13 步进 "-"
if(Da_data_flag)
{
if(Da_data1>0x0280)
Da_data1 -= 64*10;
Da_data_flag = 0;
}
else
{
if(Da_data2>0x0280)
Da_data2 -= 64*10; //第七位加1步进1mv;临时乘10方便调试步进10mv
Da_data_flag = 1;
}
break;
case 0x2800: key_value = 14;//14
break;
case 0x1800: key_value = 15;//15
break;
default:
break;
}
}
/////////////////////////////////////////////////////////////////
void LCD_ini(void)
{
Init_sys();
FG_InitGraphic();
FG_ClearScreen(0);
FG_SetBMPMode(DG_BMP_COVER); //设置位图模式 函数定义在Splc501sys.asm
FG_PutBitmap(&shu,127-24,48); //显示汉字 函数定义在Splc501sys.asm
FG_PutBitmap(&kong,127-24-16,48); //显示汉字 函数定义在Splc501sys.asm
FG_PutBitmap(&heng,127-24-16*2,48);
Clear_Watch_Dog();
FG_PutBitmap(&liu,127-24-16*3,48);
FG_PutBitmap(&yuan,127-24-16*4,48);
FG_PutStr("--HuaQiao university",0,105,20);
for(j=0;j<=30;j++) //延时
for(i=0;i<0xffff;i++)
Clear_Watch_Dog();
//FG_ClearScreen(0);
//FG_PutStr(".",0,128-x,y);
}
/////////////////////////////////////////////////////////////////
void fenli(void)
{
tm3=(binary/1000)%10;
tm2=(binary/100)%10;
tm1=(binary/10)%10;
tm0=binary%10;
tm[0]=tm0;
tm[1]=tm1;
tm[2]=tm2;
tm[3]=tm3;
}
//////////////////////
void show(void)
{
FG_PutBitmap(&yu,127,64);
FG_PutBitmap(&xian,127-16,64);
FG_PutBitmap(&she,127-16*2,64);
FG_PutBitmap(&ding,127-16*3,64);
for(i=0;i<4;i++)
{
bb=*(&b0 + tm[i]);
FG_PutStr(bb,3,i*10,64);
}
}
main()
{
*P_SystemClock = C_Fosc + C_32K_Work + C_StrongMode + C_Fosc_49M;
LCD_ini();
*P_IOA_Dir = 0xfff0;
*P_IOA_Attrib = 0xfff0;
*P_IOA_Data = 0x0000;
*P_IOB_Dir = 0xffff;
*P_IOB_Attrib = 0xffff;
*P_IOB_Data = 0x0000;
*P_DAC_Ctrl = C_DA1_Direct;
*P_ADC_Ctrl = 1;
*P_ADC_MUX_Ctrl = 1;
Ad_data = *P_ADC_LINEIN_Data;
///////////////////
while(1)
{
key_scan();
*P_DAC1 = Da_data1;
*P_DAC2 = Da_data2;
/////////////////////
while(!(*P_ADC_MUX_Ctrl&0x8000))
*P_Watchdog_Clear = 1;
Ad_data = *P_ADC_LINEIN_Data;
Ad_data_f = (float)Ad_data/0xffc0*3.472;
////////////////////////////////////////
Data_f = Ad_data_f / n;
Data_i_f = Data_f / R;
if(Data_i_f < 1)
Data_i_f = Data_f / R - 0.006;
/////////////////////////////////////////
binary = key_in_value;
fenli();
show();
/////////////////////
*P_Watchdog_Clear = 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -