求大神帮我编个三位半电压表的单片机程序

ADC0832
量程0-5V

三位半,是什么意思,楼主知道吗?


量程0-5V,即使,保留两位小数,也不过是 0.00~5.00V。

顶多,也就是用了三位。


参考:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-02
/******************数码管显示三位电压表C程序*******************/
/******************作者:风过酒温******************************/
/************ADC0832转换部分代码来自网络,稍作修改*************/

#include<reg52.h>

//******************adc0832****************************//
sbit CS=P3^4; //使能。

sbit CLK=P1^0;//时钟

sbit Do=P1^1; // 数据输出

sbit Di=P1^1;//数据输入

unsigned char CH=0x02; //通道的选择:0x02就是单通道0;0x03就是单通道1;

unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40};//数码管显示0~9、-,的段码表

sbit d_3=P2`4;

sbit d_2=P2`5;

sbit d_1=P2`6;

sbit d_0=P2`7;

//*****************************************************//
unsigned char ADconv(void)
{

unsigned char i;

unsigned char data_f=0,data_c=0;

Di=1;

CS=1;

_nop_();

CS=0;

Di=1; //芯片使能之前的初始化。第一个下降沿

CLK=1;

_nop_();
_nop_();

CLK=0; // 确定通道模式、第2个下降沿

_nop_();
_nop_();

CLK=1;

Di=(bit)(0x02&CH); //设定通道初始化

_nop_();

CLK=0;

_nop_();
_nop_();

CLK=1;

Di=(bit)(0x01&CH); //设定通道初始化 .第3个下降沿

_nop_();
_nop_();

CLK=0; //AD转化的初始化完成。

Di=1;

CLK=1;

_nop_();
_nop_();

CLK=0;

_nop_();

CLK=1;

for(i=8;i>0;i--)//得到一个正常排序的8位数据
{

data_f|=Do;

data_f<<=1;

CLK=1;

_nop_();
_nop_();

CLK=0;

_nop_();

}

for(i=8;i>0;i--)//得到一个反序排列的8位数据
{

data_c<<=1;

data_c|=Do;

_nop_();

CLK=1;

_nop_();
_nop_();

CLK=0;

_nop_();
}

CLK=0;

_nop_();
_nop_();

CLK=1;

_nop_();
_nop_();

CLK=0;

_nop_();
_nop_();

CLK=1;

_nop_();

CS=1;

_nop_();
_nop_();

return data_f;

}

void display(unsigned char x)//转换值输出
{
unsigned char i,j,k,m;

unsigned int x=*500;

x=/255;//将AD转换数据换算为电压值,8位AD精度为0.02V。

i=x/100;

j=x%100/10;

k=x%10;

d_3=1;

d_2=0;

m=tab[i];

m=m&0x7f;//百位后带小数点

P1=m;//显示三位电压,百位

d_2=1;

d_1=0;

P1=tab[j];//显示三位电压,十位

d_1=1;

d_0=0;

P1=tab[k];//显示三位电压,个位

d_0=1;

}

void main(void)
{
unsigned char value=0;

while(1)
{

unsigned char i=200,j=200;

value=ADconv();

while(j--)//取0.5s延时,稳定显示
{

while(i--)display(value);

}

}

}

我电脑上没有编译软件你试试,有问题给我留言。本回答被提问者采纳
第2个回答  2015-10-16
你好!你测量范围是多少呢追问

0-5V

相似回答