找回密码
 立即注册

QQ登录

只需一步,快速开始

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

能帮我看看我这8位的AD采集单片机程序为什么不成功吗

[复制链接]
跳转到指定楼层
楼主
本帖最后由 如痴百感生 于 2019-9-28 16:58 编辑

计算部分弄错了 ,,应该是v=b*5/256;但结果还是不对,,没问题了   自己把自己弄混了   抱歉
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2019-9-28 22:33 | 只看该作者
能自己马上发现错误并改正,真厉害!
回复

使用道具 举报

板凳
ID:251061 发表于 2020-2-29 16:42 | 只看该作者
#include ”stc15w4k.h"
#include <stdio.h>                // 为使用KEIL自带的库函数printf而加入

加入串口可以在PC端实时查看电压数据
unsigned int ADC_P11()                  //   ADC转换函数
{
        unsigned int i;                    // 用于软件延时程序
        unsigned char status;        // 用于判断AD转换结束的标志
        unsigned int AD_Dat=0;  // 10位AD转换值
        unsigned char Tmp;            // 临时变量用于将AD转换出来的2个字节合成一个字节               
        ADC_CONTR|=0x80;              // 开AD转换电源,第一次使用时要打开内部模拟电源
    for (i=0;i<10000;i++);  // 适当延时等待AD转换供电稳定,一般延时1ms以内即可,为了缩短AD
                            // 调用时间,可把这2行剪切到主程序中去。
        P1ASF|=0x02;                        // 选择P1.1作为AD转换通道,0x02= 0000 0010       
        ADC_CONTR=0xE1;         // 选择P1.1作为AD转换通道,最高转换速度,清转换完成标志。
        //for (i=0;i<1000;i++);   // 如果是多通道模拟量进行AD转换,则更换AD转换通道后要适当延时,
                            // 使输入电压稳定,延时量取20μs~200μs即可,与输入电压源的内阻有关,如果输入电压信号源的内
                            // 阻在10K以下,可不加延时,如果是单通道模拟量转换,则不需要更换AD转换通道,也不需要加延时。
        ADC_CONTR|=0x08;        // 启动 A/D 转换,ADC_START=1。
        status=0;
        while(status==0)              // 等待AD转换结束。
        {
            status=ADC_CONTR&0x10;   // 判断ADC_FLAG是否等于1,0x10=0001 0000B。
        }
        ADC_CONTR&=0xE7;             // 将ADC_FLAG清0, 0xE7=1110 0111B,ADC_FLAG=0,ADC_START=0。       
        AD_Dat = ADC_RES;                // 默认高字节高8位。
        AD_Dat <<= 2;
        Tmp = ADC_RESL;         // 默认低字节低2位。
        Tmp &= 0x03;            // 屏蔽无关位
        AD_Dat |= Tmp;                // 高低字节拼接成一个10位数。
        return AD_Dat;
}

mian函数下
float Vin;                                   // 存放计算出来的外部输入电压
unsigned int ADvalue;          // 存放AD转换返回的结果
ADvalue=ADC_P11();                   // 采样P1.1口模拟输入电压  电瓶正极电压
Vin=VCC*ADvalue/1023;      // 注意是1023才正确
printf("%.3f     ",Vin);          //输出电压显示。
回复

使用道具 举报

地板
ID:93224 发表于 2020-2-29 17:07 | 只看该作者
什么ADC也不说清楚
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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