Caractère en ascii

Fermé
messii57 - 9 févr. 2012 à 13:24
 hilpert - 9 févr. 2012 à 14:01
Bonjour,

Mon but est d'afficher le pourcentage d'une tension TTL (0-5V) sur un afficheur qui ne comprends que des caractères ascii. Voici la déclaration qui permet d'afficher un chiffre ou une lettre:


void OLED_GRAPHICVOLTAGE(unsigned char x, unsigned char y, unsigned char font, unsigned int16 color, unsigned char width, unsigned char height, unsigned char string, unsigned char terminator)


j'ai déclaré une variable à l'emplacement du "string" après le unsigned char, mais je ne peux que mettre une valeur hexadécimale correspondant à un chiffre :

exemple: 9 en ascii = 0x39 mais 20 en ascii = 0x3230
de plus je veux compter de 0% a 100% et le code ascii n'est pas quelque chose de croissant pour passer de 9 à 10 ce n'est pas 0x39 à 0x40 mais 0x39 à 0x3130 31 pour le 1 et 30 pour le 0
Ce n'est pas proportionnel donc impossible avec une variable :(

Si quelqu'un as une idée de quelques lignes qui permettent de convertir directement un caractère en ascii ce serait plutôt cool pour la poursuite de mon projet BTS.

A voir également:

1 réponse

Il faut que tu fasse comme ca:

#include <18F4580.h>
#device *=8 //permet de renvoyer que les 8bits de poids fort de la conversion
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include <MonLCD.c>
#define bp PIN_A4
#define led1 PIN_B1


float CONV;
float volt;




void main()
{
SET_TRIS_B(0b00000000);
SET_TRIS_A(0b00010001);

setup_adc_ports(AN0); //seul la broche RA0 est analogique
setup_adc(ADC_CLOCK_INTERNAL); // l'horloge interne est utilisée pour le CAN
set_adc_channel(0); // le CAN effectuera une lecture sur le channel 0 (AN0)

lcd_init();

while(1)
{
delay_ms(20);
CONV= READ_ADC();
volt=CONV*5/255;
lcd_gotoxy(6,1);


if (Volt>2.5)
{
output_high(led1);
lcd_gotoxy (4,2);
LCD_PUTC("feux allumees");

}
else
output_low(led1);
lcd_gotoxy (5,2);
LCD_PUTC("feux eteint");
}
0