基于51单片机的8路电压检测(8路)原理图、流程图、物料清单、仿真图、源代码

请添加图片描述

基于51单片机的电压检测(8路)

多路电压测量
1、测量8路电压,0-5V
2、数码管循环显示各通道电压请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

#include "reg51.h"		
#include"ADC0809.h"
sbit L1=P2^0;
sbit L2=P2^1;
sbit L3=P2^2;
sbit L4=P2^3;
uint press=0;//压力
uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点
uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//显示0~9,有小数点
uchar time=0;
uint flag=0;

void delay_us(uint i)//延时us
{
	uint k;
	for(k=0;k<i;k++);
}

void Timer0Init()//T0初始化
{
	TMOD=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;
	EA=1;
	TR0=1;			
}

void main()
{	
	Timer0Init();  //定时器0初始化
	adc0809_init();
	while(1)
	{					
		P1=smgduan0[press/1000];//显示第一个
		L4=0;
		delay_us(50);
		L4=1;
		P1=smgduan1[press%100/10];//显示第三个
		L2=0;
		delay_us(50);
		L2=1;
		P1=smgduan0[press%10];//显示第四个
		L1=0;
		delay_us(50);
		L1=1;		
	}		
}

void Timer0() interrupt 1 //T0中断,读取ADC值
{	 
	uint i=0;
	if(time<20)
		time++;
	else
	{
		time=0;
		i=adc0809_read();
		i=i*50/255;
		press=i+flag;
		if(flag<7000)
			flag+=1000;
		else
			flag=0;
		switch(flag)
		{
			case 0:	  adc0809_A=0;adc0809_B=0;adc0809_C=0;break;
			case 1000:adc0809_A=1;adc0809_B=0;adc0809_C=0;break;
			case 2000:adc0809_A=0;adc0809_B=1;adc0809_C=0;break;
			case 3000:adc0809_A=1;adc0809_B=1;adc0809_C=0;break;
			case 4000:adc0809_A=0;adc0809_B=0;adc0809_C=1;break;
			case 5000:adc0809_A=1;adc0809_B=0;adc0809_C=1;break;
			case 6000:adc0809_A=0;adc0809_B=1;adc0809_C=1;break;
			case 7000:adc0809_A=1;adc0809_B=1;adc0809_C=1;
		}
	}	
	TH0=0X3C;
	TL0=0XB0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cqtianxingkeji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值