当前位置: 首页 > wzjs >正文

建造网站 备案wordpress 3.9中文版

建造网站 备案,wordpress 3.9中文版,百度指数十年,深圳东维亚建设公司Arduino CH552 ADC的使用 📄CH552 ADC 简介 CH552 芯片提供 8 位的模拟数字转换器,包括电压比较器和 ADC 模块。该转换器具有 4 个模拟信号输入通道,可以分时采集,支持 0 到 VCC 模拟输入电压范围。 📗ADC 寄存器 AD…

Arduino CH552 ADC的使用


📄CH552 ADC 简介

CH552 芯片提供 8 位的模拟数字转换器,包括电压比较器和 ADC 模块。该转换器具有 4 个模拟信号输入通道,可以分时采集,支持 0 到 VCC 模拟输入电压范围。

📗ADC 寄存器

在这里插入图片描述

    • ADC 控制寄存器(ADC_CTRL)
      在这里插入图片描述
      在这里插入图片描述
  • ADC 配置寄存器(ADC_CFG):
    在这里插入图片描述
  • ADC 数据寄存器(ADC_DATA):
    在这里插入图片描述

📗ADC 功能

  • 🌿ADC 采样模式配置步骤:
    (1)、设置 ADC_CFG 寄存器中的 ADC_EN 位为 1,开启 ADC 模块,设置 bADC_CLK 选择频率。
    (2)、设置 ADC_CTRL 寄存器中的 ADC_CHAN1/0,选择输入通道。
    (3)、可选的,清零中断标志 ADC_IF。可选的,如果使用中断模式,还需要在此使能中断。
    (4)、设置 ADC_CTRL 寄存器中的 ADC_START,启动一次 ADC 转换。
    (5)、等待 ADC_START 变为 0,或者 ADC_IF 被置 1(如果之前已清零),表示 ADC 转换结束,可通过ADC_DATA 读取结果数据。该数据是输入电压相对于 VCC 电源电压的 255 等份的值,例如,结果数据是 47,说明输入电压接近 VCC 电压的 47/255。如果 VCC 电源电压也不确定,那么可以另测一个确定的参考电压值,再按比例计算出被测的输入电压值和 VCC 电源电压值。
    (6)、如果再次设置 ADC_START 则可启动下一次 ADC 转换。
  • 🌿电压比较器模式配置步骤:
    (1)、设置 ADC_CFG 寄存器中的 CMP_EN 位为 1,开启电压比较器模块。
    (2)、设置 ADC_CTRL 寄存器中的 ADC_CHAN1/0 和 CMP_CHAN,选择正相和反相输入端。
    (3)、可选的,清零标志 CMP_IF。
    (4)、任何时候都可查询 CMPO 位的状态获得当前比较器的结果。
    (5)、如果 CMP_IF 变为 1,表示比较器的结果发生了变化。
    上述被选择的模拟信号输入通道,其所在 GPIO 引脚必须设置为高阻输入模式、或者开漏输出模式并
    且处于输出 1 的状态(相当于高阻输入),Pn_DIR_PU[x]=0,并且建议关闭上拉电阻和下拉电阻。

📝ADC 通道测试代码

✨开启ADC中断,需要在固件:C:\Users\Administrator\AppData\Local\Arduino15\packages\CH55xDuino\hardware\mcs51\0.0.23\cores\ch55xduino\main.c文件中,将PWM中断函数添加进去:void ADCInterrupt( void ) __interrupt(INT_NO_ADC);

/*ADC精度值:0 - 255AIN0(P1.1)
AIN1(P1.4)
AIN2(P1.5)
AIN3(P3.2)
*/
#include <Arduino.h>#define  LED_BUILTIN  17volatile uint16_t count = 0;  // 中断计数器
const uint16_t target = 500;  // 500次中断(每次1ms)
static bool LED_FLAG = 0;
uint16_t UserData;#define ADC_INTERRUPT  1void ADCInit(uint8_t div)
{ADC_CFG = ( ADC_CFG & ~bADC_CLK ) | div;ADC_CFG |= bADC_EN;                                                        //ADC电源使能
#if ADC_INTERRUPTADC_IF = 0;                                                                //清空中断IE_ADC = 1;                                                                //使能ADC中断
#endif
}/*******************************************************************************
* Function Name  : ADC_ChannelSelect(uint8_t ch)
* Description    : ADC采样启用
* Input          : uint8_t ch 采用通道
* Output         : None
* Return         : 成功 1失败 0
*******************************************************************************/
uint8_t ADC_ChannelSelect(uint8_t ch)
{if(ch == 0){ADC_CHAN1 =0;ADC_CHAN0=0;P1_DIR_PU &= ~bAIN0;}                 //AIN0else if(ch == 1){ADC_CHAN1 =0;ADC_CHAN0=1;P1_DIR_PU &= ~bAIN1;}            //AIN1else if(ch == 2){ADC_CHAN1 =1;ADC_CHAN0=0;P1_DIR_PU &= ~bAIN2;}            //AIN2else if(ch == 3){ADC_CHAN1 =1;ADC_CHAN0=1;P3_DIR_PU &= ~bAIN3;}            //AIN3else return 0;return 1;
}/*******************************************************************************
* Function Name  : VoltageCMPModeInit()
* Description    : 电压比较器模式初始化
* Input          : uint8_t fo 正向端口 0\1\2\3uint8_t re 反向端口 1\3
* Output         : None
* Return         : 成功 1失败 0
*******************************************************************************/
bool VoltageCMPModeInit(uint8_t fo,uint8_t re)
{ADC_CFG |= bCMP_EN;                                                        //电平比较电源使能if(re == 1){if(fo == 0) {ADC_CHAN1 =0;ADC_CHAN0=0;CMP_CHAN =0;}                      //AIN0和AIN1else if(fo == 2) {ADC_CHAN1 =1;ADC_CHAN0=0;CMP_CHAN =0;}                 //AIN2和AIN1else if(fo == 3) {ADC_CHAN1 =1;ADC_CHAN0=1;CMP_CHAN =0; }                //AIN3和AIN1			else return 0;}			     else if(re == 3){if(fo == 0) {ADC_CHAN1 =0;ADC_CHAN0=0;CMP_CHAN =0;}                      //AIN0和AIN1else if(fo == 1) {ADC_CHAN1 =0;ADC_CHAN0=1;CMP_CHAN =0;}                 //AIN1和AIN1else if(fo == 2) {ADC_CHAN1 =1;ADC_CHAN0=0;CMP_CHAN =0;}                 //AIN2和AIN1			else return 0;}else return 0;
#if ADC_INTERRUPTCMP_IF = 0;                                                                //清空中断IE_ADC = 1;                                                                //使能ADC中断
#endifreturn 1;
}#if ADC_INTERRUPT
/*******************************************************************************
* Function Name  : ADCInterrupt(void)
* Description    : ADC 中断服务程序
*******************************************************************************/
void ADCInterrupt( void ) __interrupt(INT_NO_ADC) __using(1)                       //ADC中断服务程序,使用寄存器组1
{ if(ADC_IF ==  1)                                                          //ADC完成中断{ UserData = ADC_DATA;                                                    //取走ADC采样数据ADC_IF = 0;		                                                          //清空ADC中断标志
//	  printf(" %d ",UserData);}if(CMP_IF ==  1)                                                          //电压比较完成中断{	
//       UserData = ADC_CTRL&0x80 >> 7);	                                        //保存比较器结果		CMP_IF = 0;		                                                          //清空比较器完成中断}
}
#endif// 定时器2中断服务函数
void Timer2Interrupt(void) __interrupt(INT_NO_TMR2) __using(3) 
{if (TF2) {TF2 = 0;  // 清除定时器2溢出标志count++;if (count >= target) {count = 0;LED_FLAG = !LED_FLAG;// 执行500ms任务digitalWrite(LED_BUILTIN, LED_FLAG);  // 翻转LED}}}void Timer2_init()
{// 配置定时器2T2CON = 0x00;    // 清除T2CON,设置为16位自动重载模式T2MOD = 0x00;    // 时钟=Fsys(24MHz)// 计算定时器初值(24MHz时钟,1ms中断)uint16_t timerValue = 65536 - 1000;//1msRCAP2L = timerValue & 0xFF;   // 低8位RCAP2H = (timerValue >> 8);   // 高8位// 装载初值TL2 = RCAP2L;TH2 = RCAP2H;// 使能定时器2中断ET2 = 1;  // 使能定时器2中断EA = 1;   // 使能全局中断// 启动定时器2TR2 = 1;
}// the setup function runs once when you press reset or power the board
void setup() {// initialize digital pin LED_BUILTIN as an output.pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, LOW);pinMode(LED_PIN, OUTPUT);digitalWrite(LED_PIN, LOW);  // 初始化为低电平(LED熄灭)ADCInit( 0 ); Timer2_init();
}// the loop function runs over and over again forever
void loop() {
#if ADC_INTERRUPT                                                              //ADC中断方式EA = 1;for(uint8_t i=0;i<4;i++){	USBSerial_print("AIN ");USBSerial_flush();USBSerial_print(i);USBSerial_flush();ADC_ChannelSelect( i );                                                //ADC采样电源开启和通道设置,i(0-3)表示采样通道ADC_START = 1;                                                         //开始采样,采样完成进入中断delay(100);  //>=30us等待采集完成才能切换至下一通道USBSerial_print(":");USBSerial_flush();USBSerial_println(UserData);USBSerial_flush();delay(1000);}#else	for(uint8_t i=0;i<4;i++){				USBSerial_print("AIN:");USBSerial_flush();USBSerial_print(i);USBSerial_flush();ADC_ChannelSelect( i );                                                //ADC采样初始化ADC_START = 1;                                                         //开始采样,采样完成进入中断while(ADC_START);                                                      //ADC_START变为0时,表示采样完成USBSerial_println(ADC_DATA);USBSerial_flush();//等待串口数据发送结束(串口数据发送必不可少)delay(100);                                                         //模拟单片机干其他事 }		
#endif//   USBSerial_println("Hello World123!");// USBSerial_flush();delay(1000);                       // wait for a second//   USBSerial_println("perseverance51");// wait for a second//   USBSerial_flush();//等待串口数据发送结束(串口数据发送必不可少)
}

文章转载自:

http://ZtZ73QI5.dxwgn.cn
http://bx6qgcDK.dxwgn.cn
http://5EplnSet.dxwgn.cn
http://uXA1xZC7.dxwgn.cn
http://FjCOUuAI.dxwgn.cn
http://pJ2yscHf.dxwgn.cn
http://4w8vLgBA.dxwgn.cn
http://ZBxll4Gn.dxwgn.cn
http://OE8FADpJ.dxwgn.cn
http://mO9ZPWcA.dxwgn.cn
http://KRVNLBpW.dxwgn.cn
http://TUAkmSB2.dxwgn.cn
http://srplK9rk.dxwgn.cn
http://lXW9XjI2.dxwgn.cn
http://xtAvlHvT.dxwgn.cn
http://aAEWn0VI.dxwgn.cn
http://AqxJswxd.dxwgn.cn
http://eswl5Pt7.dxwgn.cn
http://ad9hmzKn.dxwgn.cn
http://JfMprXmu.dxwgn.cn
http://HOgDJFNp.dxwgn.cn
http://QvoQ1QbD.dxwgn.cn
http://3LcP1hRD.dxwgn.cn
http://VwkyUbr1.dxwgn.cn
http://FNcTqPIs.dxwgn.cn
http://8uaRtO1b.dxwgn.cn
http://62cuz5JG.dxwgn.cn
http://Xn6vAUe1.dxwgn.cn
http://DGWRaVtD.dxwgn.cn
http://2jArZw0m.dxwgn.cn
http://www.dtcms.com/wzjs/757189.html

相关文章:

  • 东莞网站建设 信科网络潍坊市城乡建设局网站
  • 网站设计的工作内容长沙百度公司地址
  • 北京网络电视台网页怎么优化
  • 从事网站建如何注册或购买一个域名使用
  • 如皋网站建设厦门网站推广费用
  • 免费网站空间怎么python零基础教程
  • 网站开发环境与工具免费网站建设ppt模板
  • 中国建设银行官方网站2018年年报辽宁省建设厅科技中心网站
  • 怎么做卖卷网站正保建设工程教育网官网
  • 黄石市下陆区建设管理局网站建站行业乱象完整版
  • 网站的404如何做wordpress中文采集插件
  • 网站功能开发水果网站建设的策划书
  • 可信网站标识宁波创建网站
  • 网站安全证书有问题如何解决怎么样注册自己的网站
  • 孝感网站建设 付款方式 银行中职示范校建设验收网站
  • 电话网站域名到期制作网站培训
  • 南宁网站建设王道下拉強wordpress注册公众号
  • 长沙口碑最好网站建设公司排行榜网站导航作用
  • 网站推广策划公司网站建设与管理就业方向
  • 烫画图案设计网站企业网站上线
  • 深圳手机模板建站怎么做会员自动售卡网站
  • 做网站需要懂什么接广告赚钱的平台
  • 药品和医疗器械网站icp备案前置审批流程wordpress wp rss
  • 做淘客网站要什么样服务器成都建设诚信网站
  • 自学网站开发需要多久建一个c2c网站要多少钱
  • 浙江百度推广高手优化网站
  • h5网站建设h网站栏目设计怎么写
  • 仿网站上的焦点图湖北建设厅网站怎么打不开
  • 怎么开个网站wordpress删除无分类文章
  • 门户网站首页设计网站开发管理系统有哪些