📄 lcd_fuza_yemiam_kongzhi.c
字号:
g=1.41536; //由截止频率计算公式:"g=sqrt((1/(2*1.42*1.42))*(1/(2*1.42*1.42))+1); g=g+1+1/(2*1.42*1.42);g=sqrt(g);"计算所得
g=fasong[0]/g;
g=3000000/(g*1.57*1000)-64;
g=g*10;
data_convert[3]=g;
data_convert[4]=data_convert[3]/10;
data_convert[5]=data_convert[3]%10;
if(data_convert[5]>=5)
{data_convert[4]=data_convert[4]+1;} //含有浮点数据的浮点数组成员可以直接给整形变量传值,不过只能传递整数部分!
m[3]=data_convert[4];
data_convert[9]= data_convert[4]; //数组元素给单一的变量传值
//程控放大的数据计算!
fasong[1]=fasong[2];
fasong[1]= fasong[1]/1000;
fasong[1]=sqrt(fasong[1]); //直接应用"math.h"中的库函数即可
fasong[1]= fasong[1]*256;
//把浮点数据可以直接传递给字符型变量,而且只是将浮点型数据的整数部分传递给过去!!!
//浮点数据不能进行"fasong[1]=fasong[1]%10'这样的运算!!
data_convert[1]=fasong[1]*10; //局部变量不能给全局变量赋值
data_convert[0]= data_convert[1]/10;
data_convert[2]= data_convert[1]%10;
if(data_convert[2]>=5)
{data_convert[0]=data_convert[0]+1;} //含有浮点数据的浮点数组成员可以直接给整形变量传值
m[2]=data_convert[0]; //数组元素给单一的变量传值
data_convert[8]=data_convert[0];
}
//******************************************************
//显示出最终发送出去的频率的控制数据的"BCD"码和程控放大的"BCD"码BCD控制代码
void BCD_jisuan(void)
{
uchar i=0,j=0,k=0;
// uint data_convert[4];
for(i=6;i<=7;i++)
{
data_convert[i]=data_convert[i+2];
if((data_convert[i]>0)&&(data_convert[i]<10))
{
j=0;
jieguo_BCD[i][j++]=data_convert[i];
}
if((data_convert[i]>=10)&&(data_convert[i]<=63))
{
j=0;
jieguo_BCD[i][j++]=data_convert[i]/10;
jieguo_BCD[i][j++]=data_convert[i]%10;
}
if((data_convert[i]>=26)&&(data_convert[i]<100))
{
j=0;
jieguo_BCD[i][j++]=data_convert[i]/10;
jieguo_BCD[i][j++]=data_convert[i]%10;
}
if((data_convert[i]>100)&&(data_convert[i]<256))
{
j=0;
jieguo_BCD[i][j++]=data_convert[i]/100;
jieguo_BCD[i][j++]=data_convert[i]%100/10;
jieguo_BCD[i][j++]=data_convert[i]%10;
}
for(k=0;k<j;k++)
{ if(jieguo_BCD[i][k]==0)jiguo_BCD_Ma[i][k]=s0;
if(jieguo_BCD[i][k]==1)jiguo_BCD_Ma[i][k]=s1;
if(jieguo_BCD[i][k]==2)jiguo_BCD_Ma[i][k]=s2;
if(jieguo_BCD[i][k]==3)jiguo_BCD_Ma[i][k]=s3;
if(jieguo_BCD[i][k]==4)jiguo_BCD_Ma[i][k]=s4;
if(jieguo_BCD[i][k]==5)jiguo_BCD_Ma[i][k]=s5;
if(jieguo_BCD[i][k]==6)jiguo_BCD_Ma[i][k]=s6;
if(jieguo_BCD[i][k]==7)jiguo_BCD_Ma[i][k]=s7;
if(jieguo_BCD[i][k]==8)jiguo_BCD_Ma[i][k]=s8;
if(jieguo_BCD[i][k]==9)jiguo_BCD_Ma[i][k]=s9;
}
}
}
/*
void measure(void) //测量并将测量的数据转化为能显示的字符串
{ uchar i=0,j=0,k=0;
for(i=1;i<=3;i++)
{ celiang[i]=celiang[i]*1000/0x0fff*5;//长整形变量是不会带小数点的呀!
if(celiang[i]>=100000)
{ j=0;
jieguo[i][j++]=celiang[i]/100000;
jieguo[i][j++]=celiang[i]%100000/10000;
jieguo[i][j++]=celiang[i]%10000/1000;
jieguo[i][j++]=12;
jieguo[i][j++]=celiang[i]%1000/100;
jieguo[i][j++]=celiang[i]%100/10;
jieguo[i][j++]=celiang[i]%10; }
if((celiang[i]>=10000)&&(celiang[i]<100000))
{ j=0;
jieguo[i][j++]=celiang[i]/10000;
jieguo[i][j++]=celiang[i]%10000/1000;
jieguo[i][j++]=12;
jieguo[i][j++]=celiang[i]%1000/100;
jieguo[i][j++]=celiang[i]%100/10;
jieguo[i][j++]=celiang[i]%10; }
if((celiang[i]>=1000)&&(celiang[i]<10000))
{ j=0;
jieguo[i][j++]=celiang[i]/1000;
jieguo[i][j++]=12;
jieguo[i][j++]=celiang[i]%1000/100;
jieguo[i][j++]=celiang[i]%100/10;
jieguo[i][j++]=celiang[i]%10; }
if(celiang[i]<1000)
{ j=0;
jieguo[i][j++]=0;
jieguo[i][j++]=12;
jieguo[i][j++]=celiang[i]%1000/100;
jieguo[i][j++]=celiang[i]%100/10;
jieguo[i][j++]=celiang[i]%10; }
for(k=0;k<j;k++)
{ if(jieguo[i][k]==0)cel[i][k]=s0;
if(jieguo[i][k]==1)cel[i][k]=s1;
if(jieguo[i][k]==2)cel[i][k]=s2;
if(jieguo[i][k]==3)cel[i][k]=s3;
if(jieguo[i][k]==4)cel[i][k]=s4;
if(jieguo[i][k]==5)cel[i][k]=s5;
if(jieguo[i][k]==6)cel[i][k]=s6;
if(jieguo[i][k]==7)cel[i][k]=s7;
if(jieguo[i][k]==8)cel[i][k]=s8;
if(jieguo[i]556[k]==9)cel[i][k]=s9;
if(jieguo[i][k]==12)cel[i][k]=s; }
}
}
*/
//*****************************************************
void warning_page(void)
{ //输入错误提示界面
clsr(); // clear screen
delayms(100);
prl0(0x3f);prr0(0x3f); //开显示
delayms(100);
if((fasong[2]<10)&&(fasong[3]<15))
{
hzw_pr(0x00,0x00,fang);//放
hzw_pr(0x00,0x10,da);//大
hzw_pr(0x00,0x20,bei_shu);//倍
hzw_pr(0x00,0x30,shu);//数
hzw_pr(0x00,0x40,he);//和
hzw_pr(0x00,0x50,pin); //频
hzw_pr(0x00,0x60,lv);//率
hzw_pr(0x00,0x70,dou);//都
hzw_pr(0x02,0x30,guo);//过
hzw_pr(0x02,0x40,xiao);//小
}
else if((fasong[2]>1000)&&(fasong[3]>29))
{
hzw_pr(0x00,0x00,fang);//放
hzw_pr(0x00,0x10,da);//大
hzw_pr(0x00,0x20,bei_shu);//倍
hzw_pr(0x00,0x30,shu);//数
hzw_pr(0x00,0x40,he);//和
hzw_pr(0x00,0x50,pin); //频
hzw_pr(0x00,0x60,lv);//率
hzw_pr(0x00,0x70,dou);//都
hzw_pr(0x02,0x30,guo);//过
hzw_pr(0x02,0x40,da);//大
}
else if((fasong[2]>1000)&&(fasong[3]<15))
{
hzw_pr(0x00,0x10,fang);//放
hzw_pr(0x00,0x20,da);//大
hzw_pr(0x00,0x30,bei_shu);//倍
hzw_pr(0x00,0x40,shu);//数
hzw_pr(0x00,0x50,guo);//过
hzw_pr(0x00,0x60,da);//大
hzw_pr(0x02,0x10,jie);//截
hzw_pr(0x02,0x20,jiezhi);//止
hzw_pr(0x02,0x30,pin);//频
hzw_pr(0x02,0x40,lv);//率
hzw_pr(0x02,0x50,guo);//过
hzw_pr(0x02,0x60,xiao);//小
}
else if((fasong[2]<10)&&(fasong[3]>29))
{
hzw_pr(0x00,0x10,fang);//放
hzw_pr(0x00,0x20,da);//大
hzw_pr(0x00,0x30,bei_shu);//倍
hzw_pr(0x00,0x40,shu);//数
hzw_pr(0x00,0x50,guo);//过
hzw_pr(0x00,0x60,xiao);//小
hzw_pr(0x02,0x10,jie);//截
hzw_pr(0x02,0x20,jiezhi);//止
hzw_pr(0x02,0x30,pin);//频
hzw_pr(0x02,0x40,lv);//率
hzw_pr(0x02,0x50,guo);//过
hzw_pr(0x02,0x60,da);//大
}
else if(fasong[2]<10)
{
hzw_pr(0x00,0x10,fang);//放
hzw_pr(0x00,0x20,da);//大
hzw_pr(0x00,0x30,bei_shu);//倍
hzw_pr(0x00,0x40,shu);//数
hzw_pr(0x00,0x50,she);//设
hzw_pr(0x00,0x60,she_zhi);//置
hzw_pr(0x02,0x30,guo);//过
hzw_pr(0x02,0x40,xiao);//小
}
else if(fasong[2]>1000)
{
hzw_pr(0x00,0x10,fang);//放
hzw_pr(0x00,0x20,da);//大
hzw_pr(0x00,0x30,bei_shu);//倍
hzw_pr(0x00,0x40,shu);//数
hzw_pr(0x00,0x50,she);//设
hzw_pr(0x00,0x60,she_zhi);//置
hzw_pr(0x02,0x30,guo);//过
hzw_pr(0x02,0x40,da);//大
}
else if(fasong[3]<15)
{
hzw_pr(0x00,0x20,pin); //频
hzw_pr(0x00,0x30,lv);//率
hzw_pr(0x00,0x40,she);//设
hzw_pr(0x00,0x50,she_zhi);//置
hzw_pr(0x02,0x30,guo);//过
hzw_pr(0x02,0x40,xiao);//小
}
else if(fasong[3]>29)
{
hzw_pr(0x00,0x20,pin); //频
hzw_pr(0x00,0x30,lv);//率
hzw_pr(0x00,0x40,she);//设
hzw_pr(0x00,0x50,she_zhi);//置
hzw_pr(0x02,0x30,guo);//过
hzw_pr(0x02,0x40,da);//大
}
hzw_pr(0x04,0x10,qing);//请
hzw_pr(0x04,0x20,chong);//重
hzw_pr(0x04,0x30,xinjiu);//新
hzw_pr(0x04,0x40,shu_ru);//输
hzw_pr(0x04,0x50,ru);//入
hzw_pr(0x04,0x60,tan_1); //!!!
p=1;
}
//***************************************************
void transmit(void)//发送输入的数值
{
uchar i;
jisuan();
BCD_jisuan();
if((fasong[2]<10)||(fasong[2]>1000)||(fasong[3]<15)||(fasong[3]>29))
{ warning_page();}
else { sending_page();
P4DIR=0xff; //从P4管脚输出控制D/A模数转换的放大倍数控制的数据!
P3DIR|=0XFF;
P2DIR|=0XFF;
P2OUT=0XFF;
P2OUT&=~MAX_313;//现在进行放大,就选择"输入*1000"的数据!!
P2OUT&=~LPA; //选择低通滤波器!
P2OUT&=~LPB;
P4OUT=m[2];
P3OUT&=~DA_CP;
P3OUT|=DA_CP;
//发送滤波器A的工作模式"1"
P6DIR=0x03f;
P6OUT=0xb0;
P2DIR|=0XFF;
P2OUT=0XFF; //当我们处理这个位为"0"会不会在干扰的情况下使别的管脚也为"0",所以全部先输出"高电平"
P2OUT&=~LPA; //选择低通滤波器!
P2OUT&=~LPB;
P3OUT&=~MAX_CP; //从74HC374的输出数据!
P3OUT|=MAX_CP;
i=m[3];
i&=0x03;i<<=4;i|=0x01;i|=0xb0;
P6OUT=i;
P3OUT&=~MAX_CP; //从74HC374的输出数据!
P3OUT|=MAX_CP;
i=m[3];
i&=0x0b;i<<=2;i|=0x02;i|=0xb0;
P6OUT=i;
P3OUT&=~MAX_CP; //从74HC374的输出数据!
P3OUT|=MAX_CP;
i=m[3];
i&=0x30;i|=0x03;i|=0xb0;
P6OUT=i;
P3OUT&=~MAX_CP; //从74HC374的输出数据!
P3OUT|=MAX_CP;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -