标题: 单片机+ADC0832采集不了数据?返回0 [打印本页]

作者: 13132341427    时间: 2023-5-13 22:32
标题: 单片机+ADC0832采集不了数据?返回0
下面是程序,程序编译没问题但是仿真就是读取不了数据,两个数据都是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 (11.44 KB, 下载次数: 17)

188{}~D3CAS7AB$XT8(SX[B.png

Z{~{U8)(FRE5D63T8QA(`MO.png (187.8 KB, 下载次数: 13)

Z{~{U8)(FRE5D63T8QA(`MO.png

作者: xianfajushi    时间: 2023-8-4 10:17
对832驱动单独调试如
驱动正确后再调试其他部分,驱动正常就像演示一样调节电位器数据相应发生变化.

作者: xianfajushi    时间: 2023-8-4 16:17
调试好驱动示波器观察读到数据后送去显示,并调节电位器观察数据变化。


作者: xianfajushi    时间: 2023-8-4 16:21
这是驱动代码






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1