找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 455|回复: 4
打印 上一主题 下一主题
收起左侧

单片机比例电压变换器程序问题 电压到3.95就无法继续增加了?

[复制链接]
跳转到指定楼层
楼主
ID:1082140 发表于 2023-6-5 17:01 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
要求:利用A/D和D/A实现将A/D的输入电压反向变换的功能,即A/D的输入电压从0~+5V变化时,D/A的输出电压相应的从+5V~0V变化。
控制功能:将单片机实验箱上的电位器W1产生0~5V电压输入到ADC0809的通道0,利用数字万用表测量DAC0832输出的电压,看其是否随ADC0809的输入电压反向变化。利用74HC4040将8MHz晶振产生的脉冲信号十六分频后做为ADC0809的时钟信号。
使用的主要元器件:89C51、11.0592MHz晶振、74LS373、74LS138、8MHz晶振、74HC04、74HC4040、ADC0809、DAC0832、LM741、10k电位器W1等。

结果验证:①用示波器检查ADC0809的时钟频率是否为500kHz。②旋动电位器W1产生0~+5V的电压,用数字万用表测量D/A的输出是否从+5→0V变化。③使W1的输出电压从0V开始,以0.5V为增量,测量D/A的输出电压并记录。试分析误差产生的原因。
程序如下:
#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
#define DAC0832 XBYTE[0x7FFF]
uchar temp,i,a;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^7;
uchar getdata=0x0000;
void main(void)
{
        ET0=1;
        EA=1;
        TMOD=0x02;
        TH0=246;
        TL0=246;
        TR0=1;
        while(1)
        {
                ST=0;
                ST=1;
                ST=0;
                while(EOC==0){;}
                OE=1;
                getdata=P0;
                OE=0;
                temp=getdata;
                P1=temp;
                DAC0832=P1;
                }          }
void T0X(void) interrupt 1 using 0
{
        CLK=~CLK;
}

现在遇到的问题是电压到3.95就无法继续增加了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1082140 发表于 2023-6-5 17:03 来自手机 | 只看该作者
现在是运放那里5V的电压调成10就差不多,可是这明显是有问题的
回复

使用道具 举报

板凳
ID:123289 发表于 2023-6-6 15:49 | 只看该作者
输出的电压范围,是受运放的电源电压的限制的。
举例来说,运放电压是10V,你想让它输出12V,是办不到的。
同理,你需要输出5V,运放电压至少为……,明白了吗?
要学会看元件手册,如果你读通了运放手册,就明白了。
回复

使用道具 举报

地板
ID:1034262 发表于 2023-6-6 18:06 | 只看该作者
用了运放,那么仅仅用运放就可以实现了,带偏置的反相输出。
回复

使用道具 举报

5#
ID:883242 发表于 2023-6-7 00:01 | 只看该作者
有一种运放叫R2R运放。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表