📄 user_jiekou.c
字号:
#include<spce061a_chf.h>
#include"bit.h"
#include"V20celiang.h"
//////////////////////////////////////////
//定义相应的标号
//////////////////////////////////////////
#define ALE P0_3
#define START P0_0
#define EOC P0_1
#define OE P0_2
#define ADDA P0_4
#define ADDB P0_5
#define ADDC P0_6
int fu_flag=0;
//////////////////////////////////////////
//函数:void init_IO_AD(void)
//描述:AD采集时候用到的IO口初始化
//参数:无
//返回:无
//////////////////////////////////////////
void init_IO_AD(void)
{
*P_IOA_Dir=0x00ff;
*P_IOA_Attrib=0x00ff;
*P_IOA_Data=0x0000;//高8位为数字量输入,低8位为控制线端口
}
///////////////////////////////////////////
//函数:float read_AD_zheng(void)
//描述:读取0通道的正电压值
//参数:Line_num相应的通道号
//返回:返回相应的电压值
///////////////////////////////////////////
float read_AD_zheng(void)
{
float AD_fvloatge=0.0;
unsigned int jj=0;
unsigned int AD_uiData=0;
unsigned int kk=0;
for(;jj<30;jj++)
{
ADDA=0;
ADDB=0;
ADDC=0;
ALE=1;
asm("nop");
asm("nop");
ALE=0;
START=1;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
START=0;//启动AD转换
PA_Dir->bit.bit1=0;//改成输入方式
delay();
while(EOC==0);
OE=1;
asm("nop");
asm("nop");
AD_uiData=PA->byte.byteh;
kk=AD_uiData;
if(kk&0x01)
{
AD_uiData=AD_uiData|0x08;
}
else
{
AD_uiData&=0xf7;
}
if(kk&0x08)
{
AD_uiData|=01;
}
else
{
AD_uiData&=0xfe;
}
AD_fvloatge+=AD_uiData*5.0/255;
}
return (AD_fvloatge/30);
}
///////////////////////////////////////////
//函数:float read_AD_fu(void)
//描述:读取1通道的负电压值
//参数:无
//返回:返回相应的电压值
///////////////////////////////////////////
float read_AD_fu(void)
{
float AD_fvloatge=0.0;
unsigned int AD_uiData=0;
unsigned int kk=0;
unsigned int jj=0;
for(jj=0;jj<30;jj++)
{
ADDA=1;
ADDB=0;
ADDC=0;
ALE=1;
asm("nop");
asm("nop");
ALE=0;
START=1;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
START=0;//启动AD转换
PA_Dir->bit.bit1=0;//改成输入方式
delay();
while(EOC==0);
OE=1;
asm("nop");
asm("nop");
AD_uiData=PA->byte.byteh;//读取数据????????可以多加几句测试读数是否一样
kk=AD_uiData;
if(kk&0x01)
{
AD_uiData=AD_uiData|0x08;
}
else
{
AD_uiData&=0xf7;
}
if(kk&0x08)
{
AD_uiData|=01;
}
else
{
AD_uiData&=0xfe;
}
AD_fvloatge+=AD_uiData*5.0/255;
}
return (AD_fvloatge/30);
}
///////////////////////////////////////////
//函数:float read_AD_zhijie(void)
//描述:读取2通道的0-5V电压值
//参数:无
//返回:返回相应的电压值
///////////////////////////////////////////
float read_AD_zhijie(void)
{
float AD_fvloatge=0.0;
unsigned int AD_uiData=0;
unsigned int kk=0;
unsigned int jj=0;
for(jj=0;jj<30;jj++)
{
ADDA=0;
ADDB=1;
ADDC=0;
ALE=1;
asm("nop");
asm("nop");
ALE=0;
START=1;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
START=0;//启动AD转换
PA_Dir->bit.bit1=0;//改成输入方式
delay();
while(EOC==0);
OE=1;
asm("nop");
asm("nop");
AD_uiData=PA->byte.byteh;//读取数据????????可以多加几句测试读数是否一样
kk=AD_uiData;
if(kk&0x01)
{
AD_uiData=AD_uiData|0x08;
}
else
{
AD_uiData&=0xf7;
}
if(kk&0x08)
{
AD_uiData|=01;
}
else
{
AD_uiData&=0xfe;
}
AD_fvloatge==AD_uiData*5.0/255;
}
return (AD_fvloatge/30);
}
///////////////////////////////////////////
//函数:void do_fu(void)
//描述:负电压的采集和显示
//参数:无
//返回:无
///////////////////////////////////////////
void do_fu(void)
{
unsigned char a[]="error";
float volatge2=0.0;
unsigned int temp;
unsigned int jiyi_value;
fu_flag=1;
volatge2=read_AD_fu();
temp=volatge2*100;
jiyi_value=temp/10;
if((temp>374)&(temp<501))
{
volatge2=volatge2*4;
v_data_to(volatge2);//-20---15就显示
goto lab;
}
else
{
lcd_display(a,sizeof(a));
do
{
volatge2=read_AD_fu();
temp=volatge2*100;
}while((temp/10)==jiyi_value);//说明没有换挡
}
volatge2=read_AD_fu();//换挡后再读
temp=volatge2*100;
jiyi_value=temp/10;
if((temp>332)&(temp<501))
{
volatge2=volatge2*3;
v_data_to(volatge2);//-20---15就显示
goto lab;
}
else
{
lcd_display(a,sizeof(a));
do
{
volatge2=read_AD_fu();
temp=volatge2*100;
}while((temp/10)==jiyi_value);//说明没有换挡
}
volatge2=read_AD_fu();//换挡后再读??????负电压没有-5~0档
v_data_to(volatge2);
lab:asm("nop");
}
///////////////////////////////////////////
//函数:void do_zheng(void)
//描述:正电压的采集和显示
//参数:无
//返回:无
///////////////////////////////////////////
void do_zheng(void)
{
unsigned char a[]="error";
unsigned temp;
float volatge2=0.0;
unsigned int jiyi_value;
fu_flag=0;
volatge2=read_AD_zheng();
temp=volatge2*100;
jiyi_value=temp/10;
if((temp>374)&(temp<501))
{
volatge2=volatge2*4;
v_data_to(volatge2);//-20---15就显示
goto lab1;
}
else
{
lcd_display(a,sizeof(a));
do
{
volatge2=read_AD_zheng();
temp=volatge2*100;
}while((temp/10)==jiyi_value);//说明没有换挡
}
volatge2=read_AD_zheng();//换挡后再读
temp=volatge2*100;
jiyi_value=temp/10;
if((temp>332)&(temp<501))
{
volatge2=volatge2*3;
v_data_to(volatge2);//-20---15就显示
goto lab1;
}
else
{
lcd_display(a,sizeof(a));
do
{
volatge2=read_AD_zheng();
temp=volatge2*100;
}while((temp/10)==jiyi_value);//说明没有换挡
}
volatge2=read_AD_zheng();//换挡后再读
v_data_to(volatge2);
temp=volatge2*100;
jiyi_value=temp/10;
if((temp>199)&(temp<501))
{
volatge2=volatge2*2.5;
v_data_to(volatge2);//-20---15就显示
goto lab1;
}
else
{
lcd_display(a,sizeof(a));
do
{
volatge2=read_AD_zheng();
temp=volatge2*100;
}while((temp/10)==jiyi_value);//说明没有换挡
}
volatge2=read_AD_zhijie();//换挡后再读,已经换到0~5档
v_data_to(volatge2);//
lab1:asm("nop");
}
///////////////////////////////////////////
//函数:void delay(void)
//描述:延时函数
//参数:无
//返回:无
///////////////////////////////////////////
void delay(void)
{
unsigned int i=100;
while(i--)
{
asm("nop");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -