找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stc12系列单片机自带AD问题

[复制链接]
跳转到指定楼层
楼主
ID:187640 发表于 2017-4-9 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void main()
{
        AD_init();    //A/D转换初始化
        serial_init();   //串口初始化
        while(1)
        {
                 {
                        TI=1;    //使用printf函数前须先将发送标志位TI置1
                        printf("%f",AD_get() );
                        TI=0;
                        delay(1000); //延时约1s
                  }
        }
}

uint AD_get(void)
{
        ADC_CONTR=0xe8;           //开启AD转换
        _nop_(); _nop_(); _nop_(); _nop_();//要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR 寄存器
        while(!(ADC_CONTR&0x10));    //等待转换完成
        ADC_CONTR&=0xe7;      //关闭AD转换,ADC_FLAG位由软件清0
        return(ADC_RES*4+ADC_RESL);   //返回AD转换完成的10位数据(16进制)
}

void AD_init()
{
        P1ASF=0xff; //P1口全部作为模拟功能AD使用
        ADC_RES=0;   //清零转换结果寄存器高8位
        ADC_RESL=0; //清零转换结果寄存器低2位
        ADC_CONTR=0xe0;//开启AD电源
        delay(2);   //等待1ms,让AD电源稳定


这个程序串口返回的一直是9F FA,外面电压变了也是这个值
求大佬救救小白
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:187640 发表于 2017-4-9 15:12 | 只看该作者
求助
回复

使用道具 举报

板凳
ID:161477 发表于 2017-4-10 16:53 | 只看该作者
检查一下程序  ADC_CONTR=0xe8;           //开启AD转换
回复

使用道具 举报

地板
ID:189699 发表于 2017-4-14 23:46 | 只看该作者
这个是单片机自带的ad转换调用程序吗?完整的?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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