Bonjour,
Je suis actuellement en BTS SE et je débute depuis peu à la programmation des Pic18 en C avec le logiciel Mplab.
Je fais en ce moment un voltmètre à partir d'un Pic 18f4520, avec un potentiomètre, et qui affiche la valeur en Volt sur l'hyperterminal de windows.
Jusque là tout se déroule comme prévu, sauf que la valeur affichée sur l'hyperterminal de windows est un entier alors que je souhaiterais plutôt la voir en décimale.
J'ai tripoté mon code dans tout les sens. J'ai cherché un peu partout sur google en vain. C'est donc pourquoi je sollicite votre aide sur le forum.
Tout m'a l'air pourtant bon, j'ai sûrement raté quelque chose...
Voici le code en question :
#include <p18f4520.h>
#include <stdlib.h>
#include <usart.h>
#include <adc.h>
#include <delays.h>
char str_n[30];
unsigned double valeur; // Déclaration de la variable en décimale qui m'affichera la valeur en Volt.
void Send_CR_LF(void)
{
while (BusyUSART());
WriteUSART( 0x0D );
while (BusyUSART());
WriteUSART( 0x0A );
}
void main (void) // Programme principale.
{
TRISCbits.TRISC6=0; //RX Définit la sortie RS232
TRISCbits.TRISC7=1; //TX Définit l'entrée RS232
OpenUSART( USART_TX_INT_ON & // Initialisation d'USART. "Ouverture" du MAX3232
USART_RX_INT_ON &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_SINGLE_RX &
USART_BRGH_HIGH, 25);
OpenADC( ADC_RIGHT_JUST & // Initialisation du CAN
ADC_4_TAD &
ADC_FOSC_32, ADC_CH0 &
ADC_VREFPLUS_VDD &
ADC_VREFMINUS_VSS &
ADC_INT_ON, ADC_1ANA);
Delay10KTCYx(10);
ConvertADC();
while(BusyADC());
valeur=ReadADC();
valeur=valeur/204.6; // Pour que la valeur soit comprise entre 0 et 5V selon l'alpha du potard.
itoa(valeur,str_n); // Conversion de la valeur en hexa
putsUSART(str_n); // Envoi de l'hexa au PC (RS232)
Send_CR_LF();
Send_CR_LF();
Delay10TCYx(1);
}
-----