电压值在数码管显示器上显示,两位数码管直接显示数值,带小数点。由自己学号末位两位数标记(在刚开始的时候在数码管上显示,稍等消失)。
代码如下
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define led P0
#define out P1
sbit start=P2^1;
sbit oe=P2^7;
sbit eoc=P2^3;
sbit clock=P2^0;
sbit add_a=P2^4;
sbit add_b=P2^5;
sbit add_c=P2^6;
uchar L[2]={0};
uchar A[2]={1,2};
uchar z[2]={4,9};
uchar code x[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
void delay(uchar n){
uchar t;
while(n--)
for(t=0;t<100;t++);
}
void main(void){
uchar i;
uint j;
uchar temp;
for(j=0;j<800;j++){
for(i=0;i<2;i++){
P3=A[i];
led=x[z[i]];
delay(1);
led=0;
}
}
P3=0xff;
add_a=0;add_b=0;add_c=0; //选择ADC0808的通道0
while(1){
start=0;
start=1;
start=0; //启动转换
while(1){clock=!clock;if(eoc==1)break;}//等待转换结束
oe=1; //允许输出
temp=50*out/256; //暂存转换结果
L[1]=temp/10+10;
L[0]=temp%10;
oe=0;//关闭输出
for(i=0;i<2;i++){
P3=A[i];
led=x[L[i]]; //采样结果输出到LED
delay(5);
}
}
}
代码第15行,uchar z[2]={4,9}; 这一行代表了数码管上显示的数字94。如果想要数码管显示8.3,可把此行代码改为{3,8}即可。
Proteus仿真截屏如下: