Bonjour,
Pour mon projet de fin d'études, je dois réaliser un programme qui reçoit des données via un module Xbee et l'afficher sur un écran LCD 16*2. A côté de cela, pour apprendre à mieux gérer le LCD, j'essai d'afficher un caractère sur cette écran. Seulement, la fonction " lcd_putch(); " n'est pas reconnue, et je ne sais pas comment la déclarer et comment l'adapter à mon programme. De plus, je ne parvient pas à écrire sur la deuxième ligne de mon LCD, uniquement sur la première et c'est assez gênant. Je souhaiterais obtenir votre aide pour l'affichage d'un caractere sur l'écran. Je vous joint mon code. Je veux qu'un caractère aléatoire s'affiche à côté du message "Caractere : " , là où il y'a un H, mais le H fait partie d'une chaîne de caractère et non pas un caractère envoyé par lcd_putch; ... Comment envoyer un véritable caractère généré aléatoirement ? Merci d'avance
Code:/****************************************** * Fichier : ABK PROJECT FILE.c * * Auteur : Abkouu * * * * *** CARACTERE *** * * * ******************************************/ /*************************************** ****** Fichiers Header & Defines ****** ***************************************/ #include <stdio.h> #include <stdlib.h> #include <htc.h> #include <pic.h> #include <pic16f876a.h> #include <lcd.h> #define _XTAL_FREQ 4000000 //Fréquence du quartz 4 MHz //---------- Définitions entrées sorties ----------------// #define LCD_DATA PORTB #define LCD_EN RB5 #define LCD_RS RB4 #define LCD_CLEAR 0x1 int c ; /*************************************** ******** Mots de configuration ******** ***************************************/ __CONFIG(FOSC_XT & WDTE_OFF & PWRTE_OFF & BOREN_OFF & LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF & CP_OFF); //-------------------------------Déclaration des fonctions ------------------------- void init_PIC(void); void lcd_init(); void lcd_enable(char c); void lcd_send(char RegSelect, char c); void lcd_puts(const char *buffer); void lcd_putch(unsigned char c); /*************************************** **** Début du programme principale **** ***************************************/ void main(void) { init_PIC(); __delay_ms(500); lcd_init(); LCD_RS = 1 ; LCD_EN = 1 ; lcd_puts("Abk's XBProject"); __delay_us(1); LCD_RS = 1 ; LCD_EN = 1 ; __delay_ms(2500); lcd_init(); LCD_RS = 1 ; LCD_EN = 1 ; lcd_puts("Test CARACTERE !"); __delay_us(1); LCD_RS = 1 ; LCD_EN = 1 ; __delay_ms(1500); lcd_init(); LCD_RS = 1 ; LCD_EN = 1 ; lcd_puts("Waiting..."); __delay_ms(1); LCD_RS = 1 ; LCD_EN = 1 ; while(1) { __delay_ms(500); //CARACTERE : lcd_init(); LCD_RS = 1 ; LCD_EN = 1 ; lcd_puts(" Caractere : H"); __delay_ms(100); LCD_RS = 1 ; LCD_EN = 1 ; for(;;) {} }} void init_PIC(void) { ADCON1 = 0x07; // Définition des PINS INTCON = 0x80; // Pas d'interruption PORTB = 0x00; TRISB = 0x00; TRISC = 0x80; } void lcd_enable(char c) //Mise de la DATA dans la DDRAM LCD { LCD_DATA = (LCD_DATA &0xFFF0) |(c); LCD_EN = 1; __delay_us(230); // delai de 230 us LCD_EN = 0; __delay_ms(1); } void lcd_send(char RegSelect, char c){ // RS=1 Pour une donnée LCD_RS = RegSelect; // RS=0 Pour une instruction lcd_enable((c & 0xF0) >> 4); //Envoie des 4 bits MSB lcd_enable(c & 0x0F); //Envoie des 4 bits LSB } void lcd_puts(const char *buffer) { while(*buffer != '\0') lcd_send(1,*buffer++); } void lcd_init() // Fonction initialisation LCD { LCD_RS = 0; //0 LCD_EN = 0; //0 lcd_enable(2); //Envoi des DATA LCD_DATA = 0x38; lcd_send(0,0x28); __delay_ms(10); lcd_send(0,0x0C); __delay_ms(10); lcd_send(0,0x01); __delay_ms(10); lcd_send(0,0x02); __delay_ms(10); }
-----