利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,精度越高越好

作者&投稿:关厚 (若有异议请与网页底部的电邮联系)
利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,测量结果用4为数码显示~

建议 去 我的领地 5d6d 的 proteus 论坛看看

那里有很多 单片机仿真实例,包括仿真图 和 源码
搜 5d6d 和 proteus 2个关键词

百度文库里 搜搜

很多文档的

祝你顺利

本文介绍了用ADC0808集成电压转换芯片和AT89C51单片机设计制作的数字直流电压表。在测量仪器中,电压表是必须的,而且电压表的好坏直接影响到测量精度。具有一个精度高、转换速度快、性能稳定的电压表才能符合测量的要求。为此,我们设计了数字电压表,此作品主要由A/D0808转换器和单片机AT89C51构成,A/D转换器在单片机的控制下完成对模拟信号的采集和转换功能,最后由数码管显示采集的电压值。此设计通过调试完全满足设计的指标要求。电路设计简单,设计制作方便有较强的实用性。
关键词:
ADC0808;单片机AT89C51;数字电压表
Abstract:
In this paper, with ADC0808 voltage converter integrated chips and microcontroller designed AT89C51 the number of DC voltage table. In measuring instruments, voltage meter is necessary, and voltage meter will have a direct impact on measurement accuracy. With a high precision, the conversion speed and stable performance of the voltage meter to conform to the requirements of measurement. To this end, we design a digital voltage meter, this works mainly by A/D0808 converter and a microcontroller AT89C51, A / D converter under the control of the MCU to complete the acquisition and analog signal conversion functions, from the final Acquisition of the digital display voltage value. This design through debugging to fully meet the design requirements of the target. Circuit design simple, designed to facilitate a more practical.
Key words:
ADC0808; SCM AT89C51; Digital Voltmeter
目 录
1.设计方案……………………………………………………………………………………1
2. 系统硬件设计……………………………………………………………………………2
2.1单片机芯片……………………………………………………………………………2
2.1.1.单片机芯片选择……………………………………………………………2
2.1.2.单片机管脚说明……………………………………………………………3
2.2.A/D转换器……………………………………………………………………………5
2.2.1.A/D转换器芯片选择………………………………………………………5
2.2.2.A/D转换器管脚说明………………………………………………………6
2.3.电压显示电路…………………………………………………………………………7
3.系统程序设计……………………………………………………………………………………8
3.1.软件总体框架设计……………………………………………………………………8
4.系统总图及程序…………………………………………………………………………………9
5.参考文献………………………………………………………………………………………………12
6.结束语……………………………………………………………………………………………………13
1.设计方案
在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。本设计从各个角度分析了由单片机组成的数字电压表的设计过程及各部分电路的组成及其原理,并且分析了程序如何驱动单片机进而使系统运行起来的原理及方法。框图如下:
本设计主要分为两部分:硬件电路及软件程序。而硬件电路又大体可分为A/D转换电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用汇编语言编程,利用WAVE和PROTEUS 软件对其编译和仿真,详细的设计算法将会在程序设计部分详细介绍。
2.系统硬件电路设计
2.1 单片机芯片
2.1.1.单片机芯片选择
AT89C51简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示
图2.1_1 AT89C51引脚图
2.1.2.单片机管脚说明
主要特性:
?与MCS-51 兼容
?4K字节可编程闪烁存储器
?寿命:1000写/擦循环
?数据保留时间:10年
?全静态工作:0Hz-24Hz
?三级程序存储器锁定
?128×8位内部RAM
?32可编程I/O线
?两个16位定时器/计数器
?5个中断源
?可编程串行通道
?低功耗的闲置和掉电模式
?片内振荡器和时钟电路
管脚接法说明:
VCC:供电电压我们接+5V。
GND:接地。
P0口:在这个设计中我们将AT89C51做为BCD码的输出口与LED显示器相连。由于P0口输出驱动电路中没有上拉电阻,所以我们在外接电路上接上拉电阻。
P1口:把AT89C51中的P1口与ADC0808的输出端相连,做为数字信号的接收端。
P2口:我们把P2口做为位码输出口,以P2.0—2.3输出位控线与LED显示器相连.
P3口:利用P3.0,P3.1,P3.2,P3.4,P3.5,P3.6分别与ADC0808的OE,EOC,START/ALE,A,B,C端相连。
XTAL1 ,XTAL2:外接一振荡电路。
图2.1.2 振荡电路
RST:在此端接一复位电路。
图2.1.3 复位电路
2.2 A/D转换器与单片机接口电路
2.2.1.A/D转换器芯片选择
A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。
随着大规模集成电路的发展,目前不同厂家已经生产出了多种型号的A/D转换器,以满足不同应用场合的需要。如果按照转换原理划分,主要有3种类型,即双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。目前最常用的是双积分和逐次逼近式。
双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点,比如ICL71XX系列等,它们通常带有自动较零、七段码输出等功能。与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0808、ADC0809等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送入单片机进行分析和显示。
本设计中,由于对精度没做很大要求,我们采用逐次逼近式A/D转换ADC0808,精度为0.02,所以四位LED显示中的最后一位我们设置为V。
图2.2.1 ADC0808引脚图
2.2.2.A/D转换器ADC0808的管脚说明:
IN0~IN7:为模拟量的输入口,我们选取IN3口为入口,外接可变电阻,通过改变阻值来控制模拟量的输入。
A、B、C:3位地址输入,2个地址输入端的不同组合选择八路模拟量输入。这里我们将A,B接高电平,C为低电平。
ALE:地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。
D0~D7:八位数据输出线,A/D转换结果由这8根线传送给单片机。
OE:允许输出信号。当OE=1时,即为高电平,允许输出锁存器输出数据。
START:启动信号输入端,START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。
EOC:转换完成信号,当EOC上升为高电平时,表明内部A/D转换已完成。
CLK:时钟输入信号,选用频率500KHZ。
图2.2.2 时钟信号
2.3 电压显示电路:
设计中采用的是4段LED数码管来显示电压值。LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命长等优点,它由4个发光二极管组成,其中3个按‘8’字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点。把4个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反,公共端接低电平的叫共阴极接法,我们采用共阴极接法。当发光二极管导通时,相应的一段笔画或点就发亮,从而形成不同的发光字符。其8段分别命名为dp g f e d c b a。例如,要显示“0”,则dp g f e d c b a分别为:00111111B;若要显示多个数字,只要让若干个数码管的位码循环为高电平就可以了。
根据设计要求,显示电路需要至少4位LED数码管来显示电压值,我们再多加一位用来显示电压单位“V”,则有7位LED循环显示。利用单片机的I/O口驱动LED数码管的亮灭,设计中由P0口驱动LED的段码显示,即显示字符,由P2口选择LED位码,即选择点
亮哪位LED来显示。
图2.3 LED管
另外,一般I/O接口芯片的驱动能力是很有限的,在LED显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED,此时就需要增加LED驱动电路。驱动电路有多种,常用的是TTL或MOS集成电路驱动器,在本设计中采用了ADC0808芯片驱动电路。
3.系统程序设计
3.1软件总体框架设计
在编写汇编语言时,先存放数码管的段码,再存放转换后的数据,选取通道并设值.再将AD转换结果转换成BCD码,通过换算LED上显示.
再换算中,利用关系得到LED上个位,十位,百位的显示,然后设置小数点:
开始
预设初值
选取通道3
启动A/D转换


数码显示子程序
延时显示结果
结束
在系统上电开始测量前,要用万用表的电压档对被测电压进行估测,然后再测。
4.系统总图及程序
LED_0 EQU 30H;
LED_1 EQU 31H;
LED_2 EQU 32H;
LED_3 EQU 33H;
ADC EQU 35H;
ST BIT P3.2;
OE BIT P3.0;
EOC BIT P3.1;
ORG 00H;
START: MOV LED_0,#00H;
MOV LED_1,#00H;
MOV LED_2,#00H;
MOV LED_3,#00H;
MOV DPTR,#TABLE;
SETB P3.4;
SETB P3.5;
CLR P3.6;
WAIT: CLR ST;
SETB ST;
CLR ST;
JNB EOC,$;
SETB OE;
MOV ADC,P1;
CLR OE;
MOV A,ADC;
MOV B,#51;
DIV AB;
MOV LED_3,A;
MOV A,B;
MOV B,#5;
DIV AB;
MOV LED_2,A;
MOV LED_1,B;
LCALL DISP;
SJMP WAIT;
DISP: MOV A,#3EH;
CLR P2.3;
MOV P0,A;
LCALL DELAY;
SETB P2.3;
MOV A,LED_1;
MOVC A,@A+DPTR;
CLR P2.2;
MOV P0,A;
LCALL DELAY;
SETB P2.2;
MOV A,LED_2;
MOVC A,@A+DPTR;
CLR P2.1;
MOV P0,A;
LCALL DELAY;
SETB P2.1;
MOV A,LED_3;
MOVC A,@A+DPTR;
ORL A,#80H;
CLR P2.0;
MOV P0,A;
LCALL DELAY;
SETB P2.0;
RET;
DELAY: MOV R6,#10;
D1: MOV R7,#250;
DJNZ R7,$;
DJNZ R6,D1;
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,
END
数字直流电压表的总图

发个程序大家看看:

#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#include <string.h>
#include <math.h>
bit flag;
unsigned int tt;
unsigned int ftt;
int bains;
float temp;

sbit pwm0 = P3^1;
sbit rs = P2^0;
sbit rw = P2^1;
sbit ep = P2^2;
sbit speak = P2^5;
sbit kg = P2^7;
sbit key1 = P1^3;
sbit key2 = P1^4;
sbit key3 = P3^2;
sbit key4 = P3^3;

delay(unsigned char ms)
{ // 延时子程序
unsigned char i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

bit lcd_bz()
{ // 测试LCD忙碌状态
bit result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0 & 0x80);
ep = 0;
return result;
}

lcd_wcmd(unsigned char cmd)
{ // 写入指令数据到LCD
while(lcd_bz());
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}

lcd_pos(unsigned char pos)
{ //设定显示位置
lcd_wcmd(pos | 0x80);
}

lcd_wdat(unsigned char dat)
{ //写入字符显示数据到LCD
while(lcd_bz());
rs = 1;
rw = 0;
ep = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}

lcd_init()
{ //LCD初始化设定
lcd_wcmd(0x38); //
delay(1);
lcd_wcmd(0x0c); //
delay(1);
lcd_wcmd(0x06); //
delay(1);
lcd_wcmd(0x01); //清除LCD的显示内容
delay(1);
}

void display_str(char *p)
{
int k;
signed char i;
k=strlen(p);
for(i=0;i<k;i++)
lcd_wdat(*(p+i));
}
/********************************************************************
函 数 名:maketime(float pwm_time)
功 能: 将时间调制成脉宽
说 明:
入口参数:float pwm_time 每个周期内高电平时间
返 回 值:无
设 计:陈磊 日 期:2009年9月26日
修 改: 日 期:
***********************************************************************/
void maketime(float pwm_time)
{
tt=pwm_time*922;
ftt=18432-tt;
tt=-tt;
ftt=-ftt;
}

void display_temp(void)
{
unsigned char x[5];
maketime(temp);
if(bains<10)
{
x[0]=' ';
x[1]='0';
x[2]='.';
x[3]='0'+bains;
x[4]='\0';
}
else
if(bains<100)
{
x[0]=' ';
x[1]='0'+bains/10;
x[2]='.';
x[3]='0'+bains%10;
x[4]='\0';
}
else
{
x[0]='0'+bains/100;
x[1]='0'+bains/10%10;
x[2]='.';
x[3]='0'+bains%10;
x[4]='\0';
}

lcd_pos(0x04);
display_str(x);
bains*=25;
if(bains<1000)
{
x[0]='0';
x[1]='.';
x[2]=bains/100+'0';
x[3]=bains/10%10+'0';
x[4]='\0';
}
else
{
x[0]=bains/1000+'0';
x[1]='.';
x[2]=bains/100%10+'0';
x[3]=bains/10%10+'0';
x[4]='\0';
}

lcd_pos(0x44);
display_str(x);
}

void main(void)
{
kg=0;
lcd_init();
lcd_pos(0x00);
display_str("PWM:");
lcd_pos(0x08);
display_str("ms");
lcd_pos(0x40);
display_str("VOL:");
lcd_pos(0x48);
display_str("V");
EA=1;
ET0=1; //开启定时器1中断,产生pwm波
ES=1; //开启串行中断
IT1=1; //外部中断1下降沿触发
EX1=1; //开启外部中断1
IT0=1;
EX0=1;
TMOD=0x21; // /* T0方式1计时0.01秒 */
TH0=0xB9;
TL0=0xB0;
TR0=1;
pwm0=0;
flag=0;
temp=19;
bains=(unsigned char)(temp*10);
display_temp();
while(1)
{
if(key1==0)
{
key1=1;
while(key1==0)
{
delay(30);
}
temp+=1;
if(temp>19)
temp=19;
bains=(unsigned char)(temp*10);
display_temp();
}
else
if(key2==0)
{
key2=1;
while(key2==0)
{
delay(30);
}
temp-=1;
if(temp<1)
temp=1;
bains=(unsigned char)(temp*10);
display_temp();
}
}
/* 开中断,启动定时器 */
}

/* 定时计数器0的中断服务子程序 */
void intserv1(void) interrupt 1 using 1
{
if(flag==0)
{
TH0=tt/256; // 20ms
TL0=tt%256;
pwm0=1;
flag=1;
}
else
{
TH0=ftt/256; // 20ms
TL0=ftt%256;
pwm0=0;
flag=0;
}

}

void init1() interrupt 2 using 1
{
ET0=0;
kg=1;

}

void init0() interrupt 0 using 1
{
ET0=1;
kg=0;

}

我有过c的,你可以看一下嘛,希望能够帮上你。

6. C语言源程序
#include <AT89X52.H>

unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsigned char dispbuf[8]={10,10,10,10,0,0,0,0};
unsigned char dispcount;
unsigned char getdata;
unsigned int temp;
unsigned char i;

sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;

void main(void)
{
ST=0;
OE=0;
ET0=1;
ET1=1;
EA=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
TR1=1;
TR0=1;
ST=1;
ST=0;
while(1)
{
if(EOC==1)
{
OE=1;
getdata=P0;
OE=0;
temp=getdata*235;
temp=temp/128;
i=5;
dispbuf[0]=10;
dispbuf[1]=10;
dispbuf[2]=10;
dispbuf[3]=10;
dispbuf[4]=10;
dispbuf[5]=0;
dispbuf[6]=0;
dispbuf[7]=0;
while(temp/10)
{
dispbuf[i]=temp%10;
temp=temp/10;
i++;
}
dispbuf[i]=temp;
ST=1;
ST=0;
}
}
}

void t0(void) interrupt 1 using 0
{
CLK=~CLK;
}

void t1(void) interrupt 3 using 0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==7)
{
P1=P1 | 0x80;
}
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}

0

我做过这个课程设计,有程序和仿真图
http://blog.sina.com.cn/s/blog_4a3ab18b0100iezg.html

我有用Proteus设计的数字电压表,完全满足你的要求,你给我发个邮箱我发给你……


at89 c52单片机各引脚功能
1、XTAL1、XTAL2引脚。这类引脚属于外接时钟引脚。前者为片内震荡电路的输入,后者为片内震荡电路的输出。2、RST引脚。这类引脚属于复位引脚,连续输入两个机器周期以上高电平就可以触发机制,完成单片机的复位初始化的工作,单片机就可以从头开始执行程序了。3、PSEN引脚。这类引脚的全称是程序存储器允许...

AT89C单片机能不能外接24c的存储器
可以,一点问题都没有。24C的寻址与单片机PC指针没有关系,只需要用I\/O模拟好IIC总线。一般教科书都有 例程 的。

AT89C51芯片怎么解密?
AT89C系列单片机擦除操作的时序为:擦除开始--->擦除操作硬件初始化(10微秒)--->擦除加密锁定位(50---200微秒)--->擦除片内程序存储器内的数据(10毫秒)--->擦除结束。如果用程序监控擦除过程,一旦加密锁定位被擦除就终止擦除操作,停止进一步擦除片内程序存储器,加过密的单片机就变成没加...

at89c51和at89c52有什么区别啊?
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C52简介:AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置...

请教如何利用单片机(AT89C205)改变PWM的占空比?
首先要看你的PWM是怎么产生的,如果是定时器产生,就将计数器的装载值设置成可调的,那么在定时器的中断里的取反操作就会产生变化的高低方波脉冲;如果使用延时产生高低电平,那就更改延时参数

at89c205 1-24pu 是单片机吗
是单片机 他是由爱特梅尔公司生产的一个全51内核的简易单片机,他只有P1和P3的一部分功能,因为没有P0,P2口所以不能扩展。P3口只有P3.0~3.5、P3.7这15个I\/O口,内部有128*8的RAM和2K的PEROM做程序存储~AT89C2051-24PU是指工作频率最高到0~24MHZ 的DIP双列直插型 ...

单片机 89C51
89系列单片机的型号编码由三个部分组成,它们分别是前缀,型号、后缀。它们的格式如下:AT89C;××× ××× 其中:AT是前缀;89C×××是型号;×××是后缀。下面分别对这三个部分进行说明,并且对其中有关参数的表示和意义作出相应的解释。1.前缀 前缀由字母“AT”组成,它表示该器件是ATMEL公司...

AT89C205单片机的设计目的以及原理是什么
AT89C2051是一个低电压,高性能CMOS 8位单片机,片内含2k bytes的可反复擦写的只读Flash程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C2051单片机可为您提供许多高性...

AT89C55单片机详细介绍
AT89C51简介:单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C051是它的一种精简版本。AT89C51单片机为很多嵌入式控制...

利用AT89C51单片机实现两个共阳数码管倒数计时99秒,求程序!!要求是C...
include <AT89X51.H> unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};unsigned char second;unsigned char keycnt;unsigned int tcnt;void main(void){ unsigned char i,j;TMOD=0x02;ET0=1;EA=1;s...

寿光市15032675830: 利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,测量结果用
超儿敏使: 和不用stc单片机来做?可以不用ADC0808,内部就有AD转换.在其AD输入端输入一个经过分压的待测量电压,单片机内部通过运算,最后用I/O带动数码管显示电压值.

寿光市15032675830: 简易数字电压表设计 -
超儿敏使: 摘要:设计采用AT89C51单片机、A/D转换器ADC0808和共阳极数码管为主要硬件,分析了数字电压表Proteus软件仿真电路设计及编程方法.将单片机应用于测量技术中,采用ADC0808将模拟信号转化为数字信号,用AT89C51实现数据的处...

寿光市15032675830: at89c51单片机与adc0808频率如何匹配 -
超儿敏使: 作为ADC0808的时钟典型应用为640kHz,可以用定时器来完成.初始值设置为 TH1=256-2; voidtime1() interrupt 3 { CLK=~CLK; } 然后把这个时钟送入ADC0808的时钟

寿光市15032675830: 单片机AT89C51 ADC 七段数码管编程题 比如实现手机声音的模拟信号逐渐增大,然后用七段数码管显示数字信号
超儿敏使: 以单片机为中心,首先考虑ADC及数码管与MCU的接口方式(ADC是SPI接口还是IIC接口等,数码管是并行数据接口等..);然后 设计MCU的IO口与它们两连接.再接上电,硬件就好了. 编程:根据ADC的数据手册中其接口的时序取从模拟转换为数字后的数据;MCU做相应处理;第三步,了解下数码管的接口时序,按时序将要显示的数据送到数码管接口上

寿光市15032675830: AT89C51和ADC0809连接,AT89C51和PC机连接,如何编程实现单片机控制adc0809完成A/D转换后传给PC机? -
超儿敏使: 童鞋,恕我直言,您这个是再简单不过的设计了,你用1小时,上网找找资料,用点心,一定可以解决.程序我建议你还是自己编,毕竟你是学这个专业的.如果连这么基础的东西都搞不定,我觉得给你程序代码,恐怕你也烧不到单片机里去吧...

寿光市15032675830: 哪位大神告诉我.我现在用AT89C51单片机做电路,想用ADC0832做A/D转换,我看见资料上说 -
超儿敏使: 51单片机的晶振不能超过4MHz,这说法没有根据,错误的.因为0832的CLK,DI,DO,CS是要接单片机引脚的,CLK是由引脚模拟的,所以,CLK的频率是由程序决定的,可以在每个CLK中加NOP来延时就行了. 0832的时钟脉冲输入理论是可以...

寿光市15032675830: 用AT89C51单片机设计利用AD590传感器和ADC0809转换器的温度计.现在用keil编译C程序出现missing';'before -
超儿敏使: Unsigned char numb[]={0x3f,0x30,0x5b,0x79,0x74,0x6d,0x6f,0x38,0x7f,0x7d,0x8f,0x40,0xff,0x00}; 改成:unsigned char numb[]={0x3f,0x30,0x5b,0x79,0x74,0x6d,0x6f,0x38,0x7f,0x7d,0x8f,0x40,0xff,0x00}; void InitIO()//你写成Void了 { PinData = 0...

寿光市15032675830: 英语翻译基于电涡流传感器的微小位移测量 摘 要 本文提出了一种由AT89C51单片机、电涡流传感器位移采集电路、ADC0832A/D转换电路、1602液晶显示... -
超儿敏使:[答案] 下面的都是上google网上在线翻译的,不准确,你需要对下面的答案修改一下!

寿光市15032675830: 基于AT89C51单片机的数字电压表的设计,不能使用AD转换芯片,AD转换电路只能自己搭. -
超儿敏使: 设一系列的参考电压,用比较器采样电压比较,然后通过优先编码器选择送给单片机.《电子技术基础数字部分》康华光-第五版--P448

寿光市15032675830: 基于单片机与AD590的温度测量报警系统 -
超儿敏使: 我认为 基于51单片机的温度测量系统摘 要: 单片机在检测和控制系统中得到广泛的应用, 温度则是系统常需要测量、控制和保持的一个量. 本文从硬件和软件两方面介绍了AT89C2051单片机温度控制系统的设计,对硬件原理图和程...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网