电池组单体电压测量程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{;}
gn++;
if(gn==2)
{
gn=0;
}
}
}
}
}
case 5:zhjq5=wzq;q=3*zhjq5-2*zhjq4;break;
case 6:zhjq6=wq;q=4*zhjq7-3*zhjq6;break;
case 8:zhjq8=wzzq;q=3*zhjq6-3*zhjq5;break;
case 7:zhjq7=wzq;q=4*zhjq8-4*zhjq7;break;
sbit p35=P3^5;
sbit p34=P3^4;
sbit p32=P3^2;
sbit p31=P3^1;
sbit p30=P3^0;
sbit gnaj=P1^0;
sbit zjaj=P1^1;
sbit jsaj=P1^2;
sbit dian = P2^0;//点
uint q,d;
uint n=0;
void ADcsh()
{பைடு நூலகம்
P1_ASF=0xf0;
m=0x8f;
ADC_RES=0;
ADC_RESL=0;
}
void main()
{
ADcsh();
while(1)
{
AD_CONTR=m;
Delay_1ms(5);
p++;//调节显示速度
if(p==100)
{wzq=((ADC_RES*100)+(ADC_RESL&0x03)*1)/51.2;
switch(zhdy) //转换电压
{
case 1:zhjq1=wzq;q=zhjq1;break;
case 2:zhjq2=wzq;q=zhjq2-zhjq1;break;
case 3:zhjq3=wzq;q=2*zhjq3-zhjq2;break;
case 4:zhjq4=wzq;q=2*zhjq4-2*zhjq3;break;
sfr CLK_DIV=0x97;//结果存储选择寄存器地址97h,选择8位或2位的存储位置.置0
sfr ADC_RES=0xbd;//结果地址高位地址BDh,高八位数据存放
sfr ADC_RESL=0xbe;//结果地址低位地址BEh,低二位数据存放
sbit p37=P3^7;
sbit p36=P3^6;
for(x=0;x<=148;x++);
}
void weixuan(uchar m)
{
switch (m)
{
case 8:p32=0;p31=0;p30=0;break;
case 7:p32=0;p31=0;p30=1;break;
case 6:p32=0;p31=1;p30=0;break;
case 5:p32=0;p31=1;p30=1;break;
P2=table[d];
shumawx(3) ;
Delay_1ms(2);
P2=0xef;
P2=table[smj];
shumawx(0);
Delay_1ms(3);
weixuan(wxj);
gns(gn);
if(gnaj == 0)
{
Delay_1ms(10);
if(gnaj==0)
{
while(!gnaj)
uchar m,p,wxj=1,smj=1,zhdy=1,gn=0;
uint zhjq1, zhjq2, zhjq3, zhjq4, zhjq5, zhjq6, zhjq7, zhjq8, wzq;
/**********************************************************8
default:break;
}
}
void zjgn()//自检功能
{
n++;
if(n==1500)
{n=0;
smj++;
wxj++;
zhdy++;
if(smj==9)
{
smj=1;
wxj=1;
zhdy=1;
}
}
}
void xzgn()//选择功能
{
{
if(zjaj == 0)
{
Delay_1ms(10);
毕业设计题目:
《基于单片机的电池组单体电压测量》
程序完全正确;请放心下载;
想具体了解加本人qq984514922.将有详细的软硬件资料。
单片机为:STC15F408AD
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
case 4:p32=1;p31=0;p30=0;break;
case 3:p32=1;p31=0;p30=1;break;
case 2:p32=1;p31=1;p30=0;break;
case 1:p32=1;p31=1;p30=1;break;
default:break;
}
}
void shumawx(uchar m)
{
switch(m)
{
case 0:p37=1;p36=1;p35=1;p34=0;break;
case 1:p37=1;p36=1;p35=0;p34=1;break;
case 2:p37=1;p36=0;p35=1;p34=1;break;
case 3:p37=0;p36=1;p35=1;p34=1;break;
{
while(!jsaj)
{;}
smj--;
wxj--;
zhdy--;
if(smj==0)
{
smj=8;
wxj=8;
zhdy=8;
}
}
}
}
}
void gns(gn)
{
switch(gn)
{
case 0:zjgn();break;
case 1:xzgn();break;
default:break;
}
}
default:break;
}
p=0;
}
d=q%1000/100;
P2=0xef;
P2=table[d];
dian=0;
shumawx(1) ;
Delay_1ms(3);
d=q%100/10;
P2=0xef;
P2=table[d];
shumawx(2) ;
Delay_1ms(3);
d=q%10 ;
P2=0xef;
if(zjaj==0)
{
while(!zjaj)
{;}
smj++;
wxj++;
zhdy++;
if(smj==9)
{
smj=1;
wxj=1;
zhdy=1;
}
}
}
//////////////////////////////////////减少1
if(jsaj == 0)
{
Delay_1ms(10);
if(jsaj==0)
*函数名:ADcsh
*功能:初始化AD
*注释:P1.6电压检测P1.7电流检测
***********************************************************/
void Delay_1ms(uint i)//1ms延时
{
uchar x,j;
for(j=0;j<i;j++)
uchar code table[10] = {0x81,0xf3,0x49,0x61,0x33,0x25,0x05,0xf1,0x01,0x21};
sfr P1_ASF=0x9d; //模拟通道选择不能位寻址地址9DH,置1则选通该通道,
sfr AD_CONTR=0xbc;//控制寄存器写入控制字地址BCh,开始控制,转换速度控制,转换标志位,转换开始,通道选择
gn++;
if(gn==2)
{
gn=0;
}
}
}
}
}
case 5:zhjq5=wzq;q=3*zhjq5-2*zhjq4;break;
case 6:zhjq6=wq;q=4*zhjq7-3*zhjq6;break;
case 8:zhjq8=wzzq;q=3*zhjq6-3*zhjq5;break;
case 7:zhjq7=wzq;q=4*zhjq8-4*zhjq7;break;
sbit p35=P3^5;
sbit p34=P3^4;
sbit p32=P3^2;
sbit p31=P3^1;
sbit p30=P3^0;
sbit gnaj=P1^0;
sbit zjaj=P1^1;
sbit jsaj=P1^2;
sbit dian = P2^0;//点
uint q,d;
uint n=0;
void ADcsh()
{பைடு நூலகம்
P1_ASF=0xf0;
m=0x8f;
ADC_RES=0;
ADC_RESL=0;
}
void main()
{
ADcsh();
while(1)
{
AD_CONTR=m;
Delay_1ms(5);
p++;//调节显示速度
if(p==100)
{wzq=((ADC_RES*100)+(ADC_RESL&0x03)*1)/51.2;
switch(zhdy) //转换电压
{
case 1:zhjq1=wzq;q=zhjq1;break;
case 2:zhjq2=wzq;q=zhjq2-zhjq1;break;
case 3:zhjq3=wzq;q=2*zhjq3-zhjq2;break;
case 4:zhjq4=wzq;q=2*zhjq4-2*zhjq3;break;
sfr CLK_DIV=0x97;//结果存储选择寄存器地址97h,选择8位或2位的存储位置.置0
sfr ADC_RES=0xbd;//结果地址高位地址BDh,高八位数据存放
sfr ADC_RESL=0xbe;//结果地址低位地址BEh,低二位数据存放
sbit p37=P3^7;
sbit p36=P3^6;
for(x=0;x<=148;x++);
}
void weixuan(uchar m)
{
switch (m)
{
case 8:p32=0;p31=0;p30=0;break;
case 7:p32=0;p31=0;p30=1;break;
case 6:p32=0;p31=1;p30=0;break;
case 5:p32=0;p31=1;p30=1;break;
P2=table[d];
shumawx(3) ;
Delay_1ms(2);
P2=0xef;
P2=table[smj];
shumawx(0);
Delay_1ms(3);
weixuan(wxj);
gns(gn);
if(gnaj == 0)
{
Delay_1ms(10);
if(gnaj==0)
{
while(!gnaj)
uchar m,p,wxj=1,smj=1,zhdy=1,gn=0;
uint zhjq1, zhjq2, zhjq3, zhjq4, zhjq5, zhjq6, zhjq7, zhjq8, wzq;
/**********************************************************8
default:break;
}
}
void zjgn()//自检功能
{
n++;
if(n==1500)
{n=0;
smj++;
wxj++;
zhdy++;
if(smj==9)
{
smj=1;
wxj=1;
zhdy=1;
}
}
}
void xzgn()//选择功能
{
{
if(zjaj == 0)
{
Delay_1ms(10);
毕业设计题目:
《基于单片机的电池组单体电压测量》
程序完全正确;请放心下载;
想具体了解加本人qq984514922.将有详细的软硬件资料。
单片机为:STC15F408AD
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
case 4:p32=1;p31=0;p30=0;break;
case 3:p32=1;p31=0;p30=1;break;
case 2:p32=1;p31=1;p30=0;break;
case 1:p32=1;p31=1;p30=1;break;
default:break;
}
}
void shumawx(uchar m)
{
switch(m)
{
case 0:p37=1;p36=1;p35=1;p34=0;break;
case 1:p37=1;p36=1;p35=0;p34=1;break;
case 2:p37=1;p36=0;p35=1;p34=1;break;
case 3:p37=0;p36=1;p35=1;p34=1;break;
{
while(!jsaj)
{;}
smj--;
wxj--;
zhdy--;
if(smj==0)
{
smj=8;
wxj=8;
zhdy=8;
}
}
}
}
}
void gns(gn)
{
switch(gn)
{
case 0:zjgn();break;
case 1:xzgn();break;
default:break;
}
}
default:break;
}
p=0;
}
d=q%1000/100;
P2=0xef;
P2=table[d];
dian=0;
shumawx(1) ;
Delay_1ms(3);
d=q%100/10;
P2=0xef;
P2=table[d];
shumawx(2) ;
Delay_1ms(3);
d=q%10 ;
P2=0xef;
if(zjaj==0)
{
while(!zjaj)
{;}
smj++;
wxj++;
zhdy++;
if(smj==9)
{
smj=1;
wxj=1;
zhdy=1;
}
}
}
//////////////////////////////////////减少1
if(jsaj == 0)
{
Delay_1ms(10);
if(jsaj==0)
*函数名:ADcsh
*功能:初始化AD
*注释:P1.6电压检测P1.7电流检测
***********************************************************/
void Delay_1ms(uint i)//1ms延时
{
uchar x,j;
for(j=0;j<i;j++)
uchar code table[10] = {0x81,0xf3,0x49,0x61,0x33,0x25,0x05,0xf1,0x01,0x21};
sfr P1_ASF=0x9d; //模拟通道选择不能位寻址地址9DH,置1则选通该通道,
sfr AD_CONTR=0xbc;//控制寄存器写入控制字地址BCh,开始控制,转换速度控制,转换标志位,转换开始,通道选择