STC32G单片机内置ADC及应用编程

50 篇文章 17 订阅
订阅专栏
48 篇文章 20 订阅
订阅专栏
47 篇文章 22 订阅
订阅专栏

一  STC32G单片机内置ADC模块简介

      STC32G单片机内部集成了一个12位高速ADC转换器,ADC的最高时钟频率为系统频率的1/2。其输入通道多达15个(第15通道为专门测量内部1.19V参考信号源的通道),可分时切换使用。

      STC15系列单片机内置ADC模块以电源电源作为ADC参考电压,STC32G的ADC模块则与之不同,它有单独的参考电压源引脚,可以接入精准的参考电压(0~5V皆可),以获得稳定的ADC值;参考电源引脚也可直接与MCU供电电源连接,不过AD转换结果可能会收到电源电源波动的影响。注意:STC32GADC模块的参考电压输入引脚不可悬空。

       STC32G单片机的内置ADC模块转换结果存储在两个8位寄存器中,可配置为左对齐(高8位存储在高位寄存器ADC_RES中,低四位存储在低位寄存器ADC_REL的高四位中),可配置为右对齐(高4位存储在高位寄存器ADC_RES的低4位中,低8位存储在低位寄存器ADC_REL中)。

二  STC32G单片机内置ADC模块的相关寄存器

STC32G单片机内置ADC模块的相关寄存器包含控制寄存器ADC_CONTR、转换结果高位寄存器ADC_RES、转换结果低位寄存器ADC_RESL、配置寄存器ADCCFG、时序控制寄存器ADCTIM。下面是STC用户手册对这几个寄存器的功能介绍。

寄存器ADC_CONTR

配置寄存器ADCCFG

 时序控制寄存器ADCTIM

 

三  ADC模块函数库编程

       ADC模块应用离不开相关寄存器编程,先将常用的寄存器配置操作编写成库函数供以后调用。

      头文件

/*STC32G_ADC.h
  Designed by Bill Liu
  Version 0.0 
  Modified last by Bill Liu,7/21/2022
/enum//
STC32G_ADC_CHN         //STC32G ADC channel
STC32G_ADC_SPEED       //STC32G ADC clock frequency
	
/Macro function
STC32G_ADCPOWERON(); 				//adc power on
STC32G_ADCPOWEROFF();			  //adc power off
STC32G_ADCSTART();          //adc start
STC32G_ADCSTOP();					  //adc stop
STC32G_ADCCLEARFLAG():      //clear flag
STC32G_ADCPWMTRIENBLE();    //PWM trigger adc enable
STC32G_ADCPWMTRIDISBLE();		//PWM trigger adc disable

STC32G_ADCSELCH0();  				//selected ADC_CH0
STC32G_ADCSELCH1();  			  //selected ADC_CH1
STC32G_ADCSELCH2();			    //selected ADC_CH2
STC32G_ADCSELCH3();   	    //selected ADC_CH3
STC32G_ADCSELCH4();			    //selected ADC_CH4
STC32G_ADCSELCH5();         //selected ADC_CH5
STC32G_ADCSELCH6();			    //selected ADC_CH6
STC32G_ADCSELCH7();         //selected ADC_CH7
STC32G_ADCSELCH8();         //selected ADC_CH8
STC32G_ADCSELCH9();         //selected ADC_CH9
STC32G_ADCSELCH10();        //selected ADC_CH10
STC32G_ADCSELCH11();        //selected ADC_CH11
STC32G_ADCSELCH12();        //selected ADC_CH12
STC32G_ADCSELCH13();        //selected ADC_CH13
STC32G_ADCSELCH14();        //selected ADC_CH14
STC32G_ADCSELCH15();				//selected ADC_CH15 at inner band gap voltage

STC32G_ADCRESLALIG();				//adc result left alignment
STC32G_ADCRESRALIG():  			//adc result right alignment

//fuanction/
STC32G_AdcSelChn(STC32G_ADC_CHN chn); 					       //return void
STC32G_AdcSelSpeed(STC32G_ADC_SPEED selSpeed);         //return void
STC32G_AdcStructInitDef(STC32G_ADC_TypeDef* pStruct);  //return void
STC32G_AdcInit(STC32G_ADC_TypeDef mStruct);						 //return void
STC32G_AdcGetRes(ui16* pResult);											 //return ui16
*/

#ifndef	__STC32G_ADC_H
#define	__STC32G_ADC_H

#include	"config.h"
#include  "STC32G_GPIO.h"

#define STC32G_ADCPOWERON()          {ADC_POWER = 1;} 				//adc power on
#define STC32G_ADCPOWEROFF() 				 {ADC_POWER = 0;}				  //adc power off
#define STC32G_ADCSTART()            {ADC_START = 1;}         //adc start
#define STC32G_ADCSTOP()             {ADC_START = 0;}					//adc stop
#define STC32G_ADCCLEARFLAG()        {ADC_FLAG = 0;}	        //clear flag
#define STC32G_ADCPWMTRIENBLe()      {ADC_EPWMT = 1;}         //PWM trigger adc enable
#define STC32G_ADCPWMTRIDISBLE()     {ADC_EPWMT = 0;}					//PWM trigger adc disable

#define  STC32G_ADCSELCH0()   {STC32G_P1MODE_HIIN(PIN0); ADC_CONTR &= 0xF0;}  										 //selected ADC_CH0
#define  STC32G_ADCSELCH1()   {STC32G_P1MODE_HIIN(PIN1); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x01;}   //selected ADC_CH1
#define  STC32G_ADCSELCH2()   {STC32G_P1MODE_HIIN(PIN2); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x02;}   //selected ADC_CH2
#define  STC32G_ADCSELCH3()   {STC32G_P1MODE_HIIN(PIN3); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x03;}   //selected ADC_CH3
#define  STC32G_ADCSELCH4()   {STC32G_P1MODE_HIIN(PIN4); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x04;}   //selected ADC_CH4
#define  STC32G_ADCSELCH5()   {STC32G_P1MODE_HIIN(PIN5); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x05;}   //selected ADC_CH5
#define  STC32G_ADCSELCH6()   {STC32G_P1MODE_HIIN(PIN6); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x06;}   //selected ADC_CH6
#define  STC32G_ADCSELCH7()   {STC32G_P1MODE_HIIN(PIN7); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x07;}   //selected ADC_CH7
#define  STC32G_ADCSELCH8()   {STC32G_P0MODE_HIIN(PIN0); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x08;}   //selected ADC_CH8
#define  STC32G_ADCSELCH9()   {STC32G_P0MODE_HIIN(PIN1); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x09;}   //selected ADC_CH9
#define  STC32G_ADCSELCH10()  {STC32G_P0MODE_HIIN(PIN2); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x10;}   //selected ADC_CH10
#define  STC32G_ADCSELCH11()  {STC32G_P0MODE_HIIN(PIN3); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x11;}   //selected ADC_CH11
#define  STC32G_ADCSELCH12()  {STC32G_P0MODE_HIIN(PIN4); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x12;}   //selected ADC_CH12
#define  STC32G_ADCSELCH13()  {STC32G_P0MODE_HIIN(PIN5); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x13;}   //selected ADC_CH13
#define  STC32G_ADCSELCH14()  {STC32G_P0MODE_HIIN(PIN6); ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x14;}   //selected ADC_CH14
#define  STC32G_ADCSELCH15()  { ADC_CONTR &= 0xF0;  ADC_CONTR |= 0x15;}  															 //selected  band gap voltage

#define STC32G_ADCRESLALIG()  {RESFMT = 0;} //adc result left alignment
#define STC32G_ADCRESRALIG()  {RESFMT = 1;} //adc result right alignment


//******************************************************
typedef enum
{
	ADC_CH0 =	0,  //ADC channel 0 at P10
	ADC_CH1,  		//ADC channel 1 at P11
	ADC_CH2,  		//ADC channel 2 at P54
	ADC_CH3,  		//ADC channel 3 at P13
	ADC_CH4,  		//ADC channel 4 at P14
	ADC_CH5,  		//ADC channel 5 at P15
	ADC_CH6,  		//ADC channel 6 at P16
	ADC_CH7,  		//ADC channel 7 at P17
	ADC_CH8,  		//ADC channel 8 at P00
	ADC_CH9,  		//ADC channel 9 at P01
	ADC_CH10,  		//ADC channel 10 at P02
	ADC_CH11,  		//ADC channel 11 at P03
	ADC_CH12,  		//ADC channel 12 at P04
	ADC_CH13,  		//ADC channel 13 at P05
	ADC_CH14,  		//ADC channel 14 at P06
	ADC_CH15,  		//ADC channel 15 at inner band gap voltage
}STC32G_ADC_CHN; //STC32G ADC channel

//******************************************************
typedef enum
{
	FOSC_DIV_2X1 = 0,  // FOSC / (2 * 1)
	FOSC_DIV_2X2,      // FOSC / (2 * 2)
	FOSC_DIV_2X3,      // FOSC / (2 * 3)
	FOSC_DIV_2X4,      // FOSC / (2 * 4)
	FOSC_DIV_2X5,      // FOSC / (2 * 5)
	FOSC_DIV_2X6,      // FOSC / (2 * 6)
	FOSC_DIV_2X7,      // FOSC / (2 * 7)
	FOSC_DIV_2X8,      // FOSC / (2 * 8)
	FOSC_DIV_2X9,      // FOSC / (2 * 9)
	FOSC_DIV_2X10,     // FOSC / (2 * 10)
	FOSC_DIV_2X11,     // FOSC / (2 * 11)
	FOSC_DIV_2X12,     // FOSC / (2 * 12)
	FOSC_DIV_2X13,     // FOSC / (2 * 13)
	FOSC_DIV_2X14,     // FOSC / (2 * 14)
	FOSC_DIV_2X15,     // FOSC / (2 * 15)
	FOSC_DIV_2X16,     // FOSC / (2 * 16)
}STC32G_ADC_SPEED; //STC32G ADC clock frequency

//******************************************************
typedef struct
{
	BOOL adcPowerOn;								//ADC power on enable/disable, 0-disable, 1-enable  
	STC32G_ADC_CHN adcChn;             //slected adc channel
	BOOL pwmTrigAble;
	STC32G_ADC_SPEED adcSpeed;			//STC32G_ADC_SPEED
	BOOL	adcResultRA;							//adc result_data style,0:left alignment(default), 1:right alignment
	BOOL	adcSetupTime;									//ADC channel select setup time control congigure, 0: 1 system clock cycles(default), 1: 2 system clock cycles
	u8	adcHoldTime;									//ADC channel select hold time control congigure.  0: 1 ADC clock cycle time, 1:2 ADC clock cycle times
	u8	adcSampleTime;								//analog signal sampling control time. 10 min. recommended 0x1F
	
}STC32G_ADC_TypeDef;

/******************************************************
Function: STC32G_AdcSelChn(STC32G_ADC_CHN chn);
return value: void
chn:adc channel
description: select adc channel
Example:
	STC32G_AdcSelChn(ADC_CH0);
******************************************************/
void STC32G_AdcSelChn(STC32G_ADC_CHN chn);

/******************************************************
Function: STC32G_AdcSelSpeed(STC32G_ADC_SPEED selSpeed);
return value: void
selSpeed:selected speed
description: configure adc speed
Example:
	STC32G_AdcSelSpeed(FOSC_DIV_2X16);
******************************************************/
void STC32G_AdcSelSpeed(STC32G_ADC_SPEED selSpeed);

/******************************************************
Function: STC32G_AdcInitDef(STC32G_ADC_TypeDef* pStruct);
return value: void
pStruct: STC32G_ADC_TypeDef struct address to be inited to default
description: Init STC32G_ADC_TypeDef struct to default value
Example:
	STC32G_ADC_TypeDef mStruct;
	STC32G_AdcInitDef(&mStruct);
******************************************************/
void STC32G_AdcInitDef(STC32G_ADC_TypeDef* pStruct);

/******************************************************
Function: STC32G_AdcInit(STC32G_ADC_TypeDef mStruct);
return value: void
mStruct: configure STC32G by mStruct
description: init adc
Example:
	STC32G_ADC_TypeDef mStruct;
	STC32G_AdcInit(mStruct);
******************************************************/
void STC32G_AdcInit(STC32G_ADC_TypeDef mStruct);

/******************************************************
Function: STC32G_AdcGetRes(ui16* pResult);	
return value: ui16
pResult: address to store got result
description: get adc result
Example:
	ui16 mReult;
	STC32G_AdcGetRes(&mReult);
******************************************************/
u16	 STC32G_AdcGetRes(ui16* pResult);	

#endif

源文件

/*STC32G_ADC.c
  Designed by Bill Liu
  Version 0.0 
  Modified last by Bill Liu, 07/21/2022
*/

#include	"STC32G_ADC.h"


//******************************************************
void STC32G_AdcSelChn(STC32G_ADC_CHN chn)
{
	switch(chn)
	{
		case ADC_CH0:
			STC32G_ADCSELCH0()
			break;
		case ADC_CH1:
			STC32G_ADCSELCH1()
			break;
		case ADC_CH2:
			STC32G_ADCSELCH2()
			break;
		case ADC_CH3:
			STC32G_ADCSELCH3()
			break;
		case ADC_CH4:
			STC32G_ADCSELCH4()
			break;
		case ADC_CH5:
			STC32G_ADCSELCH5()
			break;
		case ADC_CH6:
			STC32G_ADCSELCH6()
			break;
		case ADC_CH7:
			STC32G_ADCSELCH7()
			break;
		case ADC_CH8:
			STC32G_ADCSELCH8()
			break;
		case ADC_CH9:
			STC32G_ADCSELCH9()
			break;
		case ADC_CH10:
			STC32G_ADCSELCH10()
			break;
		case ADC_CH11:
			STC32G_ADCSELCH11()
			break;
		case ADC_CH12:
			STC32G_ADCSELCH12()
			break;
		case ADC_CH13:
			STC32G_ADCSELCH13()
			break;
		case ADC_CH14:
			STC32G_ADCSELCH14()
			break;
		case ADC_CH15:
			STC32G_ADCSELCH15()
			break;
	}
}
//End of STC32G_AdcSelChn(STC32G_ADC_CHN chn)


//******************************************************
void STC32G_AdcSelSpeed(STC32G_ADC_SPEED selSpeed)
{
	ADCCFG &= 0xF0;
	ADCCFG |= selSpeed;
}
//End of STC32G_AdcSelSpeed(STC32G_ADC_SPEED selSpeed)


//******************************************************
void STC32G_AdcInitDef(STC32G_ADC_TypeDef* pStruct)
{
	pStruct -> adcPowerOn = 0;
	pStruct -> adcChn = ADC_CH0;
	pStruct -> pwmTrigAble = 0;         //PWM trigger disable
	pStruct -> adcSpeed = FOSC_DIV_2X1; //adc clk is sclok/2
	pStruct -> adcResultRA = 0;         //adc result left align
	pStruct -> adcSetupTime = 0;        //Tadcsetup a adc clk
	pStruct -> adcHoldTime = 0x01;      //adc hold time 2 adc clk
	pStruct -> adcSampleTime = 0x0A;    //adc sampling time: 11 adc clk, 0x0A <= adcSampleTime <= 0x1F 
}
//End of STC32G_AdcInitDef(STC32G_ADC_TypeDef* pStruct)

//******************************************************
void STC32G_AdcInit(STC32G_ADC_TypeDef mStruct)
{
	STC32G_AdcSelChn(mStruct.adcChn);

	ADC_EPWMT = mStruct.pwmTrigAble;
	
	ADCCFG &= 0xF0;
	ADCCFG |= mStruct.adcSpeed;
	
	RESFMT = mStruct.adcResultRA;
	
	ADCTIM &= 0x7F;
	ADCTIM |= mStruct.adcSetupTime;
	
	ADCTIM &= 0x9F;
	ADCTIM |= mStruct. adcHoldTime;
	
	ADCTIM &= 0xE0;
	ADCTIM |= mStruct. adcSampleTime;
	
	ADC_POWER = mStruct.adcPowerOn;
}
//End of STC32G_AdcInit(STC32G_ADC_TypeDef mStruct)

//******************************************************
u16	 STC32G_AdcGetRes(ui16* pResult)
{
	*pResult = 0;
	STC32G_ADCSTART();
	_nop_();
	_nop_();
	while(!ADC_FLAG);
	STC32G_ADCCLEARFLAG()
	*pResult = ADC_RES;
	if(RESFMT)
	{
		*pResult <<= 8;
		*pResult += ADC_RESL;
	}
	else
	{
		*pResult <<= 4;
		*pResult += ADC_RESL >> 4;
	}
	return 	*pResult;
}
//End of STC32G_AdcGetRes(ui16* pResult)

四 应用编程示例

   下面写段示例程序,演示ADC库文件的使用。

    头文件:

/*main.h
  Designed by Bill Liu
  Version 0.0 
  Modified last by Bill Liu ,04/18/2023
*/

#ifndef     __MAIN_H__
#define     __MAIN_H__

//#include "myport.h"
#include "mtype.h"
#include "config.h"
#include "STC32G_GPIO.h"
#include "STC32G_Delay.h"
#include "STC32G_UART.h"
//#include "STC32G_EEPROM.h"
//#include "STC32G_PWM.h"
#include "STC32G_ADC.h"
//#include "STC32G_EEPROM.H"
//#include "STC32G_SPI.h"
//#include "STC32G_PWM.h"
//#include "STC32G_Timer.h"
//#include "STC32G_comparator.h"

STC32G_ADC_TypeDef mstruct;

 
#endif

  源文件:

/*main.c
  Designed by Bill Liu
  Version 0.0 
  Modified last by Bill Liu, 03/25/2023
*/

#include "main.h"

ui8 str[30] = {0};
ui16 ADCRes = 0;
f32 TestVoltage = 0;



void main()
{
	SysInit();
	Uart1_Init(VBAUD_8BITS,G1, 0, 9600);
	
	
	STC32G_AdcInitDef(&mstruct);
	mstruct.adcPowerOn = 1;
	mstruct.adcChn = ADC_CH0;
	mstruct.pwmTrigAble = 0;
	mstruct.adcSpeed = FOSC_DIV_2X16;
	mstruct.adcHoldTime = 0x01;
	mstruct.adcSampleTime = 0x1F;
	
	STC32G_AdcInit(mstruct);
	
	while(1)
	{	
		STC32G_AdcGetRes(&ADCRes);
		Uart1_SendString("ADCRes = ");
		LongToString(ADCRes,str);	
		Uart1_SendString(str);
		Uart1_SendString("\r\n"); 
		
		
		TestVoltage = 5000.0/4096*ADCRes;
		FloatString(TestVoltage,str,2);
		Uart1_SendString("TestVoltage = ");
		Uart1_SendString(str);
		Uart1_SendString("mV");
		Uart1_SendString("\r\n");
		
		/*
		STC32G_ADCSELCH15()
		
		STC32G_AdcGetRes(&ADCRes);
		Uart1_SendString("ADCRes = ");
		LongToString(ADCRes,str);	
		Uart1_SendString(str);
		Uart1_SendString("\r\n"); 
		
		
		TestVoltage = 5000.0/4096*ADCRes;
		FloatString(TestVoltage,str,2);
		Uart1_SendString("Inner Bandgap Voltage = ");
		Uart1_SendString(str);
		Uart1_SendString("mV");
		Uart1_SendString("\r\n");
		
		STC32G_ADCSELCH0()
		*/
		
		Uart1_SendString("This a ADC Test Program!");
		Uart1_SendString("\r\n");
		Uart1_SendString("\r\n");
		Uart1_SendString("\r\n");
	  
		Delayxms(1000);
	}
}
//End of main()

    测试板的参考电压为基准电压芯片AD586提供的5V电压。下面用一个10K的电位器将5V电源电压分压,将分压接到P1.0做AD输入,用ADC来测试分得电压的大小。

测得基准电压值:

测得分压值:

 

将程序编译,下载到单片机,在串口助手上看到的结果如下:

将源文件中的注释去掉,再获取内部Bandgap的ADC值,并将其转换为电压,结果如下:

从结果可以看出,获得的Bandgap电压并不是手册上所说的1.19V,至于为什么,不是此处讨论的范围。本例已完整演示了,如何调用ADC库函数,实现ADC值获取及如何用ADC测量电压。

相关库函数及示例源代码下载链接:

https://download.csdn.net/download/billliu66/87701680

STC单片机内置ADC的使用方法
07-12
STC系列单片机中的STC89LE516AD/X2提供了8路8位精度的高速A/D转换器,位于 P1口上,从而省去了片外ADC的麻烦。这8路ADC电压输入型,可做按键扫描,电池电压 检测,频谱检测等。ADC转换过程需要17个机器周期。通过对相关功能寄存器的适当配置, 就可以控制其工作
STC16F、STC32F、 STC32G单片机编程环境C251 version5.59
02-01
STC16位及32位8051单片机STC16F、STC32F、 STC32G单片机编程环境:C251 version5.59
STC8H单片机利用 ADC 第 15 通道测量外部电压或电池电压
最新发布
qq_61705610的博客
09-06 902
STC8H 系列 ADC 的第 15 通道用于测量内部参考信号源,由于内部参考信号源很稳定,约为 1.19V, 且不会随芯片的工作电压的改变而变化,所以可以通过测量内部 1.19V 参考信号源,然后通过 ADC 的 值便可反推出外部电压或外部电池电压
Atmel三款带10位ADC的AVR单片机
mybirdsky的专栏
01-21 714
2007-12-24 15:49:04 Atmel宣布推出针对电池充电器、传感器终端和低端马达控制应用的 AVR(R) 闪存微控制器系列的三个新成员。 三款最新14管脚 tinyAVR(R) 产品加入到广泛的 AVR 闪存微控制器系列中。三款设备都具有管脚兼容的特点,仅在闪存、EEPROM 和静态随机存取存储器 (SRAM) 的存储容量上有所不同。ATtiny24 的
单片机ADC编程
03-11
单片机ADC编程,有很多编程的思想,是C8051F041单片机
STC32系列单片机ADC自定义函数
qq_62503791的博客
08-13 1812
本文是针对STC32G系列单片机12位高速A/D 转换器两种代码总结,一种是直接读取ADC值,一种是采用ADC_DMA先存取再读,代码中包括如何使能ADC模数转换、定义端口采集。
学习笔记|模数转换器|ADC原理|STC32G单片机视频开发教程(冲哥)|第十七集:ADC采集
Medlar_CN的博客
09-20 1412
学习笔记|模数转换器|ADC原理|STC32G单片机视频开发教程(冲哥)|第十七集:ADC采集
STC32G单片机ADC库函数及示例源代码
04-18
本文件包含STC32G GPIO、定时器、软硬件延时函数库、串口通信、ADC库函数(非官方库函数)源代码及ADC示例函数源代码,经简单的拷贝粘贴即可实现STC32G定时器设置、串口通信设置、数据接收及发送、ADC值获取及电压...
stc32G单片机技术参考手册
06-09
该系列单片机还支持FreeRTOS操作系统,官方已移植了针对STC32G12K128的高效稳定版,这为开发实时操作系统和多任务应用提供了便利。配合KEIL C251编译器,开发者可以充分利用STC32G系列的硬件资源进行高级编程。 ...
1_STC32G 系列单片机技术参考手册.pdf
02-28
* 更多的 STC32G 单片机产品:了解 STC32G 单片机的其他产品的特点、价格和应用 5. 编程开发 * KEIL C251 编译器:了解 KEIL C251 编译器的使用方法和特点 * FreeRTOS for STC32G12K128:了解 FreeRTOS for STC32G...
注意单片机内置AD的使用
08-03
今天的主题是单片机内部AD,其结构可以用以下的图来表示。想写问题源于关于设计经验的杂谈。
单片机与DSP中的MSP430 MCU eZ430 开发工具新添高速ADC与高精度FIR滤波器目标板
11-25
德州仪器 (TI) 宣布推出两款针对 eZ430 开发工具的全新目标板 T2012 与 MSP-Mojo,为从事便携式应用的电池供电设计人员提供了更高灵活性与增强的功能,构建了功能齐备的低成本开发环境。T2012采用 MSP430F2012 超低功耗 MCU,并集成了高性能 200 ksps 10 位 ADC,包含三个目标板,而售价仅为 10 美元。大受欢迎的 eZ430 评估与开发工具采用超小型 U 盘形状设计,该产品不仅使新用户能够在数分钟内快速评估 MSP430 MCU架构,而且还能自始至终为经验丰富的开发人员提供完成整个 MSP430F20xx 项目所需的全部资源。 MSP430
C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)
06-14
C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)C语言33-P1.3做ADC-使用内部基准计算外部电压STC32G-DEMO-CODE-220311kw)C语言33-P1.3做ADC
C语言24-利用PWM做DAC输出ADC做正极输入源,内部1.19V或P3.6口做负极输入源(STC32G-DEMO-CODE-
06-14
C语言24-利用PWM做DAC输出ADC做正极输入源,内部1.19V或P3.6口做负极输入源(STC32G-DEMO-CODE-220311kw)C语言24-利用PWM做DAC输出ADC做正极输入源,内部1.19V或P3.6口做负极输入源(STC32G-DEMO-CODE-220311kw)C语言24-利用PWM做DAC输出ADC做正极输入源,内部1.19V或P3.6口做负极输入源(STC32G-DEMO-CODE-220311kw)C语言24-利用PWM做DAC输出ADC做正极输入源,内部1.19V或P3.6口做负极输入源(STC32G-DEMO-CODE-220311kw)C语言24-利用PWM做DAC输出ADC做正极输入源,内部1.19V或P3.6口做负极输入源(STC32G-DEMO-CODE-220311kw)C语言24-利用PWM做DAC输出ADC做正极输入源,内部1.19V或P3.6口做负极输入源(STC32G-DEMO-CODE-220311kw)C语言24-利用PWM做DAC输出ADC做正极输入源,内部1.19V或P3.6口做负极输入源(STC32G-DEMO-COD
STC32G12K128单片机CAN程序
09-14
1、基于艾克姆科技的STC32G12K128开发板+CAN转TTL模块,提供CAN通信的测试程序,程序是库函数版本。 2、CAN总线通信肯定不能只有一个节点,所以用户还需电脑端连接个USB转CAN的转换器方便测试。USB转CAN转换器的CANH...
STC32G
m0_59165107的博客
10-25 118
/延时1000毫秒(低电平延时,由delay1延时)//unsigned int 类型用u16表示。void delay1(u16 ms) //简单延时函数,自适应主频,1毫秒*ms。void delay2(u16 ms) //简单延时函数,自适应主频,1毫秒*ms。//LED1使用P2.0。//LED1使用P2.1。//LED1使用P2.2。//LED1使用P2.3。//LED1使用P2.4。
STC15单片机-ADC获取环境温度(NTC热敏电阻)
weixin_46251230的博客
09-03 8386
然后想着去查看STC-ISP串口助手那一块是否有可以设置的地方,猜测自己的串口助手与教程的某项设置不一样,导致乱码,后来完全没发现STC-ISP烧录工具有可以设置串口相关参数的地方,除了波特率,校验位和停止位,其他没得设置,波特率对应了,乱码的问题与校验位和停止位关系应该也不大,如果校验位和停止位有错,应该整个通信都有问题,而不只是这一个℃单位。后来猜测到,既然烧录教程的代码没问题,烧录自己的代码有问题,而内容却一样,那我把教程代码串口打印输出这一块的全部内容复制到自己的代码中,是否还有乱码现象呢?
Java语言基础与Stc单片机内置ADC应用解析
"该资源主要介绍了Java语言的基础知识以及其在STC单片机内置ADC(模拟数字转换器)使用方法的程序实例,主要针对自考和编程学习者,涉及04747课程的相关内容。" 在Java编程领域,了解语言的基本特性和应用场合至关...
写文章

热门文章

  • 更改Ansys Workbench的语言的方法 36028
  • C与C++中的常用符号与标点用法详解及实例 30380
  • 常用的RS485芯片简介 24936
  • 51 单片机实战教程(13 外围芯片驱动程序之CS1237芯片驱动) 17841
  • STC 32位8051单片机来了 16641

分类专栏

  • C++ 43篇
  • 机器视觉 28篇
  • 设计与仿真 32篇
  • 硬件工程 47篇
  • C语言 50篇
  • Keill C 48篇
  • 常见电子连接器信号完整性仿真实例 1篇
  • MFC 21篇

最新评论

  • 接触分析在电子连接器设计中的应用:三 连接器插入/拔出力分析

    chinyu1030: 太厲害了,我終於解套了

  • 电子连接器接触电阻仿真教程

    Bill66: 仿真是不管接触力的,仿真前需保证接触良好,如果一个端子是球面,另一个端子是平面,如果将模型调到刚好接触,理论上接触面积为0,为点接触,此时仿真可能会出错,如果将两端子调到微干涉,用平面去切球面后,就变成了面接触,仿真出错的问题就可解决,其实接触力可使球面的点接触变成面接触,面的大小就与接触力大小联系起来了,这个面要调多大合透,这需要经验数据,没法一句话说清。

  • 电子连接器接触电阻仿真教程

    Weiweixiner: 博主,请教一下,公母端子接触电阻跟正向力有关,在分析前将母端干涉调整到刚好与公端接触。是不考虑此触点处阻值的发热功率及发热量吗? 谢谢!

  • 接触分析在电子连接器设计中的应用:三 连接器插入/拔出力分析

    Weiweixiner: 大佬非常棒,先学习中!

  • OpenCV绘图函数详解及其用法示例

    CSDN-Ada助手: 推荐 OpenCV 技能树:https://edu.csdn.net/skill/opencv?utm_source=AI_act_opencv

大家在看

  • 母婴行业的新玩法,在小红书搭建一个Ai萌娃账号,30天获利13万
  • 未来智慧城市发展的四大引领方向
  • 如何在TikTok上脱颖而出?六个小技巧告诉你
  • 好消息!!!快速高效调用API接口商品详情数据
  • C#学习笔记(十一)

最新文章

  • 用OpenCV写一个简单的尺寸检测程序
  • OpenCV的常用与形状形状描述相关函数及用法示例
  • HFSS 教程之材料添加
2024
10月 6篇
09月 12篇
08月 7篇
07月 4篇
06月 4篇
05月 5篇
04月 6篇
03月 4篇
02月 6篇
01月 1篇
2023年18篇
2022年38篇
2021年60篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bill66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家福建玻璃钢花盆哪家好梅州玻璃钢动物雕塑推荐厂家浙江走廊商场美陈报价南宁玻璃钢雕塑价位贵阳玻璃钢雕塑加工厂室内玻璃钢雕塑寿命揭阳玻璃钢卡通雕塑材质永川玻璃钢雕塑玻璃钢景观雕塑系列玻璃钢动物动漫雕塑四川周边商场美陈辽宁花钵玻璃钢雕塑加工玻璃钢雕塑定额依据五华区玻璃钢雕塑设计公司哪里有广东人物玻璃钢卡通雕塑费用罗山玻璃钢雕塑设计玻璃钢雕塑招兼职商场特色美陈禄劝彝族苗族玻璃钢雕塑岳阳玻璃钢雕塑公司无锡玻璃钢人物雕塑定制安徽欧式玻璃钢雕塑市场玻璃钢大象雕塑摆件太原景区玻璃钢雕塑生产厂家天津户内玻璃钢雕塑多少钱玻璃钢动物鹿雕塑商场玻璃钢雕塑加工厂开封玻璃钢浮雕雕塑定制多少钱淮北卡通玻璃钢雕塑公司玻璃钢雕塑凳子哪家好香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化