找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1064|回复: 3
收起左侧

单片机+ADC0832采集不了数据?返回0

[复制链接]
ID:1076956 发表于 2023-5-13 22:32 来自手机 | 显示全部楼层 |阅读模式
下面是程序,程序编译没问题但是仿真就是读取不了数据,两个数据都是0

*********************************************************/// ADC0832的时钟脉冲/*********************************************************/void WavePlus(){        _nop_();        ADC_CLK = 1;        _nop_();        ADC_CLK = 0;}/*********************************************************/// 获取指定通道的A/D转换结果/*********************************************************/uchar Get_ADC0832(){         uchar i;        uchar dat1=0;        uchar dat2=0;                ADC_CLK = 0;                                // 电平初始化        ADC_DAT = 1;        _nop_();        ADC_CS = 0;        WavePlus();                                        // 起始信号         ADC_DAT = 1;        WavePlus();                                        // 通道选择的第一位        ADC_DAT = 1;                for(i=0;i<8;i++)                // 第一次读取        {                dat1<<=1;                WavePlus();                if(ADC_DAT)                        dat1=dat1|0x01;                else                        dat1=dat1|0x00;        }                for(i=0;i<8;i++)                // 第二次读取        {                dat2>>= 1;                if(ADC_DAT)                        dat2=dat2|0x80;                else                        dat2=dat2|0x00;                WavePlus();        }                _nop_();                                                // 结束此次传输        ADC_DAT = 1;        ADC_CLK = 1;        ADC_CS  = 1;           if(dat1==dat2)                        // 返回采集结果                return dat1;        else                return 0;} uchar Get_ADC08322(){         uchar i;        uchar dat1=0;        uchar dat2=0;                ADC_CLK = 0;                                // 电平初始化        ADC_DAT = 1;        _nop_();        ADC_CS = 0;        WavePlus();                                        // 起始信号         ADC_DAT = 1;        WavePlus();                                        // 通道选择的第一位        ADC_DAT = 1;                for(i=0;i<8;i++)                // 第一次读取        {                dat1<<=1;                WavePlus();                if(ADC_DAT)                        dat1=dat1|0x01;                else                        dat1=dat1|0x00;        }                for(i=0;i<8;i++)                // 第二次读取        {                dat2>>= 1;                if(ADC_DAT)                        dat2=dat2|0x80;                else                        dat2=dat2|0x00;                WavePlus();        }                _nop_();                                                // 结束此次传输        ADC_DAT = 1;        ADC_CLK = 1;        ADC_CS  = 1;           if(dat1==dat2)                        // 返回采集结果                return dat1;        else                return 0;}

        light=Get_ADC08322();                        // 读取光照强度
                sd=Get_ADC0832();
                sd=sd/2.5;
                light=light/2.5;                                        // 缩小光照检测结果(在0-99)
                if(light>99)                                                        // 如果大于99
                        light=99;                                                                // 则依然保持99
                LcdGotoXY(1,14);                                        // 光标定位
                LcdPrintNum(light);                                // 显示光照强度
                LcdGotoXY(1,9);                                        // 光标定位
                LcdPrintNum(sd);                                // 显示湿度
188{}~D3CAS7AB$XT8(SX[B.png
Z{~{U8)(FRE5D63T8QA(`MO.png
回复

使用道具 举报

ID:332444 发表于 2023-8-4 10:17 | 显示全部楼层
对832驱动单独调试如
20230803315517.gif 驱动正确后再调试其他部分,驱动正常就像演示一样调节电位器数据相应发生变化.
回复

使用道具 举报

ID:332444 发表于 2023-8-4 16:17 | 显示全部楼层
调试好驱动示波器观察读到数据后送去显示,并调节电位器观察数据变化。
20230804160453.gif
回复

使用道具 举报

ID:332444 发表于 2023-8-4 16:21 | 显示全部楼层
这是驱动代码
ADC0832驱动.png
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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