找回密码
 立即注册
查看: 904|回复: 2

A/D多通道转换请教

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-06-12 09:52:15
已绑定手机

14

主题

29

回帖

232

积分

中级会员

积分
232
发表于 2024-2-27 16:23:18 | 显示全部楼层 |阅读模式
#include <STC8G.H>//#include "STC8G.H"//#include "reg51.h"
#include "intrins.h"
#include<math.h> //包函abs绝对值函数
unsigned char i=0; m1=0; X1=0; L1=0;m4=0; max=0; min=0xff; channel=0;//XIN_SU=0; LAO_SU=0; mX=0;
unsigned int  up_sum=0;/*上升数和*/   down_sum=0; /*下降数和*/
// 函数: u8   Get_ADC8bitResult(u8 channel) // 描述: 查询法读一次ADC结果. // 参数: channel: 选择要转换的ADC. // 返回: 8位ADC结果.
unsigned char Get_ADC8bitResult(unsigned char channel)  //channel = 0~7  ADC初始化
{         ADC_CONTR=0xe0;         //7=1电源开,6=1启动AD转换,5=1转换完成标志软件清0,
                //ADC_RES = 0; ADC_RESL = 0;
                ADC_CONTR=(ADC_CONTR & 0xe0)|channel;//1110 0010 7=1电源开,6=1启动AD转换,5=1转换完成标志软件清0,4与PWM相关,3:0(8G1K08A)ADC通道选择:0000=P3.0/ADC0;0001=P3.1/ADC1;0010=P3.2/ADC2;0011=P3.3/ADC3;0100=P5.4/ADC4;0101=P5.5/ADC5
    _nop_(); _nop_();  _nop_(); _nop_();
                while((ADC_CONTR & 0x20) == 0)   //等AD转换完成
    ADC_CONTR &= ~0x20;           //清完成标志
    return  ADC_RES ;
}
void main()
{         WDT_CONTR = 0x23; //7溢出标志,软件清零 5=1软/硬,启动看门狗定时器。4=1清零看门狗定时器,3=1IDLE 模式时看门狗继续计数,2-0分频系数    使能看门狗,溢出时间约为0.5s
                P3M1 = 0x0C;//0000 1100  改P32/33高阻输入 P30/31推挽输出
                P3M0 = 0x03;//0000 0011  01推挽输出;10高阻输入;00准双向口
                P5M1 = 0x00;//0000 0000                                                                                                        0000 0000
                P5M0 = 0x30;//1100 0000        P55 P54推挽输出                                  0000 0000准双向口
                P5=0;       //P5输出=0;   
                while (1)
                {                /******* m1=Get_ADC8bitResult(2); //P32脚
                                if( m1>30){        P54=1 ;} else{P54=0;}               
               *********/                                
                                X1=Get_ADC8bitResult(3); //P33脚                                
                                if(X1>120){        P55=1 ;} else{P55=0;}               
                                WDT_CONTR |= 0x10;// WDT_CONTR = 0x34; //5=1软/硬,启动看门狗定时器。 4=1清零看门狗定时器  清看门狗,否则系统复位IDLE     WDT_CONTR |= 0x10
}                }
//为何不想取不同通道 P32 P33值,变成了都是P32脚的值了???如下单通道都正常
/*********单独用P33输入 P55输出正常
                {                        // m1=Get_ADC8bitResult(2); //P32脚
                                        //if( m1>30){        P54=1 ;} else{P54=0;}               
                              
                                        X1=Get_ADC8bitResult(3); //P33脚                                
                                        if(X1>120){        P55=1 ;} else{P55=0;}               
                                WDT_CONTR |= 0x10;// WDT_CONTR = 0x34; //5=1软/硬,启动看门狗定时器。 4=1清零看门狗定时器  清看门狗,否则系统复位IDLE     WDT_CONTR |= 0x10
                }                 
******/
/*********单独用P32输入 P54输出正常
                {                        // m1=Get_ADC8bitResult(2); //P32脚
                                        //if( m1>30){        P54=1 ;} else{P54=0;}               
                              
                                        X1=Get_ADC8bitResult(3); //P33脚                                
                                        if(X1>120){        P55=1 ;} else{P55=0;}               
                                WDT_CONTR |= 0x10;// WDT_CONTR = 0x34; //5=1软/硬,启动看门狗定时器。 4=1清零看门狗定时器  清看门狗,否则系统复位IDLE     WDT_CONTR |= 0x10
                }                 
******/

回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8090

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8090
QQ
发表于 2024-2-27 16:41:19 | 显示全部楼层
不应该啊, 建议先看看范例程序,看下来你的adc都没有初始化诶。先好好看看这个
截图202402271641107769.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-06-16 09:26:42
已绑定手机

39

主题

2059

回帖

7072

积分

论坛元老

积分
7072
发表于 2024-2-27 18:02:57 | 显示全部楼层
参考开天斧例程包例子:08-16路ADC轮询-每路16次ADC转换取中间8次求平均值-串口1返回结果
论坛下载地址:
https://www.stcaimcu.com/plugin. ... /~cateid=8&key=
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 10:44 , Processed in 0.208603 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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