中级会员
 
- 积分
- 274
- 金钱
- 274
- 注册时间
- 2016-7-15
- 在线时间
- 88 小时
|
2金钱
我的温度传感器实验显示到串口助手上是乱码怎么办,怎么修改!显示部分表示有点懵逼啊!ADC设置部分,参考原子哥的
[mw_shl_code=c,true]/*ADC3õê¼»ˉ*/
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure; //3õê¼»ˉoˉêyìå
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1,ENABLE ); //ê1ÄüGPIOA,ADC1í¨μàê±Öó
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //·ÖÆμòò×ó6ê±ÖóÎa72M/6=12MHz
ADC_DeInit(ADC1); //½«íaéè ADC1 μÄè«2¿¼Ä′æÆ÷ÖØéèÎaè±ê¡Öμ
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC1¤×÷Ä£ê½:ADC1oíADC21¤×÷Ôú¶àá¢Ä£ê½
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //Ä£êy×a»»1¤×÷Ôúμ¥í¨μàÄ£ê½
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //Ä£êy×a»»1¤×÷Ôúμ¥′Î×a»»Ä£ê½
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //×a»»óéèí¼t¶ø2»êÇía2¿′¥·¢Æô¶ˉ
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADCêy¾Yóò¶ÔÆë
ADC_InitStructure.ADC_NbrOfChannel = 1; //Ë3Dò½øDD1æÔò×a»»μÄADCí¨μàμÄêyÄ¿
ADC_Init(ADC1, &ADC_InitStructure); //¸ù¾YADC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèADCxμļÄ′æÆ÷
ADC_TempSensorVrefintCmd(ENABLE); //¿aÆôÄú2¿Î¶è′«¸DÆ÷
ADC_Cmd(ADC1, ENABLE); //ê1ÄüÖ¸¶¨μÄADC1
ADC_ResetCalibration(ADC1); //ê1Äü¸′λD£×¼
while(ADC_GetResetCalibrationStatus(ADC1)); //μè′yD£×¼½áêø
ADC_StartCalibration(ADC1); //¿aÆôADD£×¼
while(ADC_GetCalibrationStatus(ADC1)); //μè′yD£×¼½áêø
}
/*»ñè¡ADCμÄÖμ*/
u16 get_ADC(u8 tongdao)
{
//éèÖÃÖ¸¶¨ADCμÄ1æÔò×éí¨μ࣬ò»¸öDòáD£¬2éÑùê±¼ä
ADC_RegularChannelConfig(ADC1, tongdao, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADCí¨μà,2éÑùê±¼äÎa239.5ÖüÆú
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //ê1ÄüÖ¸¶¨μÄADC1μÄèí¼t×a»»Æô¶ˉ1|Äü
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//μè′y×a»»½áêø
return ADC_GetConversionValue(ADC1); //·μ»Ø×î½üò»′ÎADC11æÔò×éμÄ×a»»½á1û
}
/*»ñè¡ADCμÄÆ½¾ùÖμÔö¼ó׼跶è*/
u16 Get_ADC_Average(u8 tongdao,u8 cisu)
{
u32 tsc_val=0;
u8 t;
for(t=0;t<cisu;t++)
{
tsc_val+=get_ADC(tongdao);
delay_ms(5);
}
return tsc_val/cisu;
}
/* ½«ADCÖμ×a»ˉÎaζèÖμ1«ê½ÎaT={(1.43-adc)/0.0043}+25 */
short Get_Temprate(void)
{
u32 adc;
short TSC;
double temperate;
adc=Get_ADC_Average(ADC_Channel_16,10); //¶áè¡í¨μà16,10′Îè¡Æ½¾ù
temperate=(float)adc*(3.3/4096); //μçÑ1Öμ
temperate=(1.43-adc)/0.0043+25; //×a»»ÎaζèÖμ
TSC=temperate*=100; //à©′ó100±¶.
return TSC;
}
[/mw_shl_code]
主函数显示部分,显示到串口上
[mw_shl_code=c,true]xtern u8 Res;
int main(void)
{
short temp;
delay_init(); //Ñóê±oˉêy3õê¼»ˉ
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÖD¶ÏóÅÏè¼¶·Ö×éÎa×é2£o2λÇàÕ¼óÅÏè¼¶£¬2λÏìó|óÅÏè¼¶
uart_init(115200); //′®¿ú3õê¼»ˉÎa115200
Adc_Init(); //ADC3õê¼»ˉ
while(1)
{
if(Res == 'a')
{
Res = 0;
temp=Get_Temprate();
/*while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
USART_SendData(USART1 , 0x30+temp/1000);*/
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
USART_SendData(USART1 , temp/100);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
USART_SendData(USART1 , '.');
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
USART_SendData(USART1 , temp%100);
/*while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
USART_SendData(USART1 , 0x30+temp%10);*/
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
USART_SendData(USART1 , 'C');
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
USART_SendData(USART1 , '\r');
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
USART_SendData(USART1 , '\n');
delay_ms(250);
}
}
}
[/mw_shl_code]
串口显示图片是乱码
|
-
显示乱码
|