用358做一个加法器,通过ADC0831 AD转换,51单片机控制,可以测量正2.5V至负的2.5V电压值。可以扩展到大电压的测量 加分压电阻即可
电路原理图如下:
单片机源程序如下:
- /*******************
- 程序功能:AD转换显示。被测电压范围-2.5V至+2.5V
- 版本:Vre1.0
- *******************/
- #include<reg51.h>
- #include<intrins.h> //头文件
- #define uchar unsigned char
- #define uint unsigned int
- sbit cs = P1^0; //IO定义
- sbit clk = P1^1;
- sbit dat = P1^2;
- sbit dian= P2^7;
- uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; //数码管
- uchar code bc[]={0x01,0x02,0x04,0x08}; //数码管位选(共阳)
- uint huancun[]={0,0,0,0}; //数据缓存
- uchar adc0831(); //读取AD值
- void display(); //数码管显示
- void delay(uint time) //延时
- {
- for(time;time>0;time--);
- }
- void main()
- {
- uint date,date1;
- uchar i;
- P1=0xff;
- P2=0xff;
- P3=0xff;
- while(1)
- {
- i++;
- if(i==100)
- {
- i=0;
- //P2=adc0831(); //测试用
- date=adc0831(); //读取AD值
- date*=2; //基准电压5.1V,乘以2刚好是测得的电压值的100倍(date=120,就是1.2V)
- if(date>250) //如果测得的值大于2.5V,说明加法器上的被测电压是正电压
- {
- date-=250; //转换到2.5V电压范围内
- huancun[0]=11; //符号位不显示,表示正电压
- }
- else if(date==250) //如果测到的值是2.5V,说明加法器上的被测电压是0V
- {
- date=0;
- huancun[0]=11;
- }
- else //如果测得的值小于2.5V说明加法器上的电压是负电压
- {
- date1=250-date;//250是加法器上的偏置电压,date是测到的电压
- date=date1; //date1就是被测的电压值
- huancun[0]=10; //显示负号
- }
- //date=date/51;
- huancun[1]=date/100;
- huancun[2]=date%100/10;
- huancun[3]=date%10;
- }
- display(); //显示
- }
- }
- void display()
- {
- uchar i;
- for(i=0;i<4;i++)
- {
- P3=bc[i];
- P2=tab[huancun[i]];
- if(i==1) //显示百位的小数点
- dian=0;
- else
- dian=1;
- delay(100);
- }
- }
- uchar adc0831()//AD转换程序 就没什么说的了 网上大把
- {
- uchar i,temp;
- dat=1;
- _nop_();
- _nop_();
- _nop_();
- cs=0;
- _nop_();
- _nop_();
- _nop_();
- clk=1;
- _nop_();
- _nop_();
- _nop_();
- clk=0;
- _nop_();
- _nop_();
- _nop_();
- clk=1;
- _nop_();
- _nop_();
- _nop_();
- clk=0;
- for(i=0;i<8;i++)
- {
- temp<<=1;
- if(dat)
- {
- temp++;
- }
- clk=1;
- _nop_();
- _nop_();
- _nop_();
- clk=0;
- _nop_();
- _nop_();
- _nop_();
- }
- cs=1;
- _nop_();
- _nop_();
- return temp;
- }
复制代码
所有资料51hei提供下载:
ADC0831负电压检测.zip
(21.87 KB, 下载次数: 89)
|