ADC0809数字电压表数码管显示出错,求解释!设计图如下源代码如下//---------------------------------------//---------------------------------------#include "reg51.h"sbit ST_ALE=P3^0;//START and ALE both connect to P3.0sbi

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 22:11:26

ADC0809数字电压表数码管显示出错,求解释!设计图如下源代码如下//---------------------------------------//---------------------------------------#include "reg51.h"sbit ST_ALE=P3^0;//START and ALE both connect to P3.0sbi
ADC0809数字电压表数码管显示出错,求解释!

设计图如下

源代码如下

//---------------------------------------

//---------------------------------------

#include "reg51.h"

sbit ST_ALE=P3^0;//START and ALE both connect to P3.0

sbit EOC=P3^1;//EOC connect to P3.1

sbit OE=P3^2;//OE conect to P3.2

sbit CLK=P3^3;//CLK connect to P3.3

unsigned char CHANNEL;//AD channel variable

unsigned char LED[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

//common cathode LED code

unsigned char CHECK[4]={0xFE,0xFD,0xFB,0xF7};//choose LED channel

 

void delay(unsigned char time)

{

unsigned char i,j;

for(i=time;i>0;i--)

for(j=250;j>0;j--)

;

}

void display()

{

unsigned long temp;

unsigned char DATA,digit[4];

unsigned int k,l;

DATA=P1;//save AD data

temp=DATA;//the temporary variable

    temp=temp*1000/51;//AD formula:D=A*5/255

digit[0]=temp/1000;//the thousands place

digit[1]=temp%1000/100;   //the hundreds place

digit[2]=temp%1000%100/10; //the tens place

digit[3]=temp%1000%100%10;//the ones place

DATA=P2;  //save P2

for(k=0;k<1000;k++)

{

/*lighten each LED and equal the below for loop

P1=LED[digit[0]]+0x80;

P2_4=0;

P2_4=1;

P1=LED[digit[1]];

P2_5=0;

P2_5=1;

P1=LED[digit[2]];

P2_6=0;

P2_6=1;

P1=LED[digit[3]];

P2_7=0;

P2_7=1;

*/

for(l=0;l<4;l++)

{

P2=P2|0x0F;//avoid LED residual

P0=LED[digit[l]]+0x80*(l==0);//LED code

P2=DATA&CHECK[l];//choose LED channel

}

}

P2=DATA;//restore P2

void main()

{

ST_ALE=0;//START and ALE default

OE=0;//OE default

TMOD=0x02;//T0 operate in mode 2 

EA=1;//all interrupt enable

ET0=1;//T0 interrupt enable

TR0=1;//T0 run

while(1)

{

ST_ALE=1;//lock the AD channel address

ST_ALE=0;//AD run

while(EOC==0);//wait until AD over

OE=1;//enable to transmit AD data

display();//view the AD result and diaplay LED 

}

}

void T1_TIME() interrupt 1 using 0

{

CLK=~CLK;//CLK 500 kHz

设计已经硬件实现了,但是数码管显示和滑动变阻器的数着完全不符,求大神帮助啊!


ADC0809数字电压表数码管显示出错,求解释!设计图如下源代码如下//---------------------------------------//---------------------------------------#include "reg51.h"sbit ST_ALE=P3^0;//START and ALE both connect to P3.0sbi
有可能是 0808 的数据线 D7~D0,次序,全接反了.
在我的百度空间里面,有一个正确的电路,可供参考.
另外,你的电压表,没有接地.
这样一来,它显示的数值,并非是 ADC 的电压.

ADC0809数字电压表数码管显示出错,求解释!设计图如下源代码如下//---------------------------------------//---------------------------------------#include "reg51.h"sbit ST_ALE=P3^0;//START and ALE both connect to P3.0sbi 用ADC0809和单片机STC12C5A60S2设计一个简易数字电压表,要求四位共阳极数码管显示0到5V电压,数码管是595串并联的,求大神帮帮忙这个的C程序,财富值多多的…… 求数字电压表,三位数码管显示(1)采用ADC0809,测量0~5V(2)汇编语言(3)有原理图(4)程序有必要的注释希望各位大哥帮忙啊.怎么没有原理图啊,55 求一简易数字电压表的电路原理图要求主要采用AT89S51芯片和ADC0809芯片来完成,4位一体的7段LED数码管进行显示,测量误差约为0.02 V. icl7107数字电压表用一位显示数码管怎么接线 用ADC0809做A/D转换器,编制程序,将模拟量变成数字量,并用数码管显示其结果.用汇编语言. 数字电压表设计 单片机 C语言用C语言编写的单片机数字电压表设计,用数码管显示 简单的数码管显示电压表怎么做 ADC0809作用数字电压表的设计里用的 数字电压表设计论文怎么写利用51单片机与ADC0809 测量0-5V之间的直流电压值,四位数码显示. 最近我用ICL7107做了个电压表,检查后电路正常,接通电源数码管的显示数字为什么总是跳(显示不稳定)? 用ADC0809制作数字电压表不测量时屏幕数字乱跳测量范围是0~5V,测量的时候还蛮准的,但不测量时总会显示不同的数值,求解释以及解决方法 急求!设计数字电压表,要求能够测量0-5V电压能够通过数码管显示被测量的值.谢谢啦~~ 利用ADC0809和STC89C52制作个测量DC0~30V的数字电压表, proteus仿真 数码管 0.5秒显示数字 为什么只显示第一个数字其他不显示 简易数字电压表的设计一道题的答案,简易数字电压表的设计要求:简易数字电压表可以测量0~5V的8路输入电压值,并在四位LED数码管上轮流显示或单路选择显示.测量最小分辨率为0.019V,测最 数码管显示时钟 怎么做个数显电压表要求能测1-50V直流电压,两位数码管显示.我不要芯片是7107的.我想要求高一点,两个两位数码管显示,两个数码管能显示小数