STC8H8K64U单片机

编程入门 行业动态 更新时间:2024-10-23 23:33:14

STC8H8K64U<a href=https://www.elefans.com/category/jswz/34/1769836.html style=单片机"/>

STC8H8K64U单片机

配置单片机的ADC时一定要将IO口配置成高阻输入模式,

以下是单片机引脚对应的ADC通道

 

u16 temp_adc_value = 0;/*
* 描述: 配置ADC引脚
* 参数: 无
* 返回: 无*/
void ADC_GPIO_Init(void)
{	//注意:配置ADC引脚必须配置为高阻态输入P0M1 |= (GPIO_BIT5);	P0M0 &= (~GPIO_BIT5);	  
}/*
* 描述: ADC初始化
* 参数: 无
* 返回: 无*/
void ADC_Init(void)
{ADC_GPIO_Init();P_SW2 |= 0x80;ADCTIM = 0x3f;		//设置 ADC 内部时序,ADC采样时间建议设最大值P_SW2 &= 0x7f;ADCCFG = 0x2f;		//设置 ADC 时钟为系统时钟/2/16ADC_CONTR = 0x80;   //使能 ADC 模块
}/*
* 描述: 查询法读一次ADC结果.
* 参数: channel:将要读取的通道,channel = 0~15
* 返回: 读取到对应通道的数据*/
u16 Get_ADC12bitResult(u8 channel)
{u16 adc_res = 0;//清除ADC数据缓存区ADC_RES = 0;ADC_RESL = 0;//启动 AD 转换ADC_CONTR = (ADC_CONTR & 0xF0) | 0x40 | channel;    _nop_();_nop_();_nop_();_nop_();//wait for ADC finishwhile((ADC_CONTR & 0x20) == 0)  ;   //清除ADC结束标志ADC_CONTR &= ~0x20;     adc_res = ADC_RES;adc_res = (adc_res<<8) | ADC_RESL;return  adc_res;
}/*
* 描述:  获取电池电压ADC
* 参数:  无
* 返回值:0按下 1没按下*/
void Get_ADC_Value(void)
{u8 maopao_i = 0,maopao_j = 0;u16 adc_temp , adcarr_temp[5] = {0};  for(maopao_i = 0;maopao_i<5;maopao_i++){adcarr_temp[maopao_i] = Get_ADC12bitResult(13);}for(maopao_i=0;maopao_i<4;maopao_i++){for(maopao_j=0;maopao_j<4-maopao_i;maopao_j++){if(adcarr_temp[maopao_j]> adcarr_temp[maopao_j+1]) {adc_temp= adcarr_temp[maopao_j]; adcarr_temp[maopao_j]=adcarr_temp[maopao_j+1];adcarr_temp[maopao_j+1]=adc_temp;}}}temp_adc_value = (adcarr_temp[1]+adcarr_temp[2]+adcarr_temp[3])/3;
}

更多推荐

STC8H8K64U单片机

本文发布于:2024-03-10 14:05:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1728185.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单片机   STC8H8K64U

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!