AD转换实验电压值在数码管上显示

本文介绍了一种使用51单片机控制数码管显示电压值的方法。通过代码实现了电压值的读取与显示,包括小数点的处理,并提供Proteus仿真截图验证结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  电压值在数码管显示器上显示,两位数码管直接显示数值,带小数点。由自己学号末位两位数标记(在刚开始的时候在数码管上显示,稍等消失)。

代码如下

#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仿真截屏如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值