最近很懶,要完成的幾個(gè)實(shí)物,一直沒動(dòng)手。今天又多了一項(xiàng),ICL7135制作的高精度電壓表。程序完成,仿真也正常了,就等實(shí)物制作了。
關(guān)于ICL7135制作的電壓表,網(wǎng)上資料不少,但內(nèi)容都差不多,不懂處仍然不懂。7135測(cè)電壓有2種方法,一種是并口輸出,接線繁多。另一種是利用BUSY信號(hào)得到電壓,這方法簡(jiǎn)單,接線只用了一條。

基本原理如下:
ICL7135是以雙積分方式進(jìn)行A/D轉(zhuǎn)換的電路。每個(gè)轉(zhuǎn)換周期分為三個(gè)階段
[1].自動(dòng)調(diào)零階段 [2].被測(cè)電壓積分階段 [3].對(duì)基準(zhǔn)電壓進(jìn)行反積分階段
以輸入電壓Vx為例,其積分器輸出端(ICL7135的4腳)的波形如圖1所示。“busy”輸出端(ICL7135的21腳)高電平的寬度等于積分和反積分時(shí)間之和。ICL7135內(nèi)部規(guī)定積分時(shí)間固定為10001個(gè)時(shí)鐘脈沖時(shí)間,反積分時(shí)間與被測(cè)電壓的大小成比例。如果利用單片機(jī)內(nèi)部的計(jì)數(shù)器對(duì)ICL7135的時(shí)鐘脈沖計(jì)數(shù),利用“busy”作為計(jì)數(shù)器門控信號(hào),控制計(jì)數(shù)器只能在busy為高電平時(shí)計(jì)數(shù),將這段busy高電平時(shí)間內(nèi)計(jì)數(shù)器的內(nèi)容減去10001,其余數(shù)便等于被測(cè)電壓的數(shù)值。

注:U2的CLOCK端接125K方波信號(hào)
//2012 02 26 E:\DPJ_C\ICL7135\7135LED.C
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab[]={
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
};
uint V;
sbit P0_7=P0^7;
void delay(uint ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void display()
{
uchar temp=0xfe,a[5],i;
a[0]=V/10000;
a[1]=V%10000/1000;
a[2]=V%1000/100;
a[3]=V%100/10;
a[4]=V%10;
for(i=0;i<5;i++)
{
P0=tab[a[i]];
if(i==0)
P0_7=0x01; //最高位顯示小數(shù)點(diǎn)
P1=temp;
delay(1);
P1=0xff;
temp=_crol_(temp,1);
}
}
void main()
{
TMOD=0X0d;//00001101
TL0=0;
TH0=0;
ET0=1;
EX0=1;
IT0=1;
EA=1;
TR0=1;
while(1)
display();
}
void ADC_7135() interrupt 0
{
V=TH0;
V<<=8;
V+=TL0;
V-=10001;
TL0=0;
TH0=0;
}

多頁設(shè)計(jì),加了一個(gè)用7135的BCD輸出的信號(hào)加到數(shù)碼管顯示,小2個(gè)字。