Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
NAVETTE
:
programme.c
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
#include <68hc11.h> #include <stdio.h> /******************************************************************/ #define _IO_BASE 0x4000 #define LCD_CMD *(unsigned char volatile*)(_IO_BASE+0x60) /* registre de controle */ #define LCD_DATA *(unsigned char volatile*)(_IO_BASE+0x61)/* registre de donn�es */ #define LIGNE_1 0x80 // position de la ligne 1 #define LIGNE_2 0xC0 // position de la ligne 2 #define LIGNE_3 0x94 // position de la ligne 3 #define LIGNE_4 0xD4 // position de la ligne 4 /* * Commands that can be sent to the LCD */ #define LCD_CLEAR 0x01 #define LCD_HOME 0x02 #define LCD_ENTRY_MODE 0x04 #define LCD_ENTRY_CURSOR_RIGHT 0x02 #define LCD_ENTRY_DISPLAY_SCROLL 0x01 #define LCD_CTRL_ON 0x0C #define LCD_CTRL_CURSOR 0x0A #define LCD_CTRL_BLINK 0x09 #define LCD_SCROLL_CURSOR 0x10 #define LCD_SCROLL_DISPLAY 0x18 #define LCD_SCROLL_RIGHT 0x04 #define LCD_SCROLL_LEFT 0x00 /* for completeness */ #define LCD_FCN_8BIT 0x30 #define LCD_FCN_4BIT 0x20 #define LCD_FCN_DUTY 0x08 #define LCD_FCN_BIG 0x04 #define LCD_CHAR_ADDR 0x40 #define LCD_CHAR_MASK 0x3F #define LCD_DISP_ADDR 0x80 #define LCD_DISP_MASK 0x7F #define LCD_16X1 0 #define LCD_16X2 1 #define LCD_20X1 2 #define LCD_20X2 3 #define LCD_20X4 4 #define LCD_40X2 5 // Passage en mode 4 bits $20 // 8 bits // Effacement $01 // Retour au d�but de ligne $02 // Pas de curseur $0C // Curseur se d�place vers la droite $06 // Passage en ligne suivante $C0 // Retour en premi�re ligne $80 // Curseur clignotant 0F pokeb(LCD_CMD,0x38); /* get attn */ pokeb(LCD_CMD,0x38); /* set 2 line disp */ pokeb(LCD_CMD,0x06); /* character entry right */ pokeb(LCD_CMD,0x0E); /* display control on, cursor on */ pokeb(LCD_CMD,0x01); /* set cursor home */ /******************************************************************/ void lcd_initisalise(void); void lcd_retour_home(void); void lcd_retour_home(void); void lcd_on(void); void lcd_off(void); /////// void lcd_decalage_caractere(char nb); void lcd_tempo(int cnt); void lcd_status(void); void lcd_efface(void); void lcd curseur_on(void); void lcd_curseur_off(void); void lcd_affiche_caractere(unsigned char valeur_a_afficher); void lcd_affiche_chaine(unsigned char *chaine_de_caractere); void lcd_decale_gauche(unsigned char Nbr_de_decalage); void lcd_decale_droite(unsigned char Nbr_de_decalage) void beep(int cnt); /******************************************************************/ void lcd_status(void) { /* boucle de test : attente du changement de l'�tat du bit busy */ while ((LCD_CMD & 0x80)==0x80); return; } /* autre possibilit� while ((control_aff & 0x80) != 0x00) ; mais aussi if(LCD_CMD & 0x80) == 0 ) return 1; else return 0; } */ /******************************************************************/ void lcd_initisalise() { LCD_CMD=0x38; /* mode 8 bits */ lcd_tempo(3); LCD_CMD=0x06; /* mode */ lcd_efface(); /* efface le display */ lcd_retour_home(); /*(0x38) (0x14) (0x0e) (0x06) (0x01)*/ } /******************************************************************/ void lcd_tempo(int cnt) { int i; for(;cnt;cnt--) for(i=0;i<1000;i++); } /******************************************************************/ void lcd_cls(void) { lcd_status(); LCD_CMD=0x01; } /******************************************************************/ void lcd_retour_home(); { lcd_status(); LCD_CMD=0x02; } /******************************************************************/ void lcd_on(void) { lcd_status(); LCD_CMD=0x0C; } /******************************************************************/ void lcd_off(void) { lcd_status(); LCD_CMD=0xB; } /******************************************************************/ void curseur_on(void) { lcd_status(); LCD_CMD=0x0F; } /******************************************************************/ void curseur_off(void) { lcd_status(); LCD_CMD=0x0C; } /******************************************************************/ void curseur_clignotant(void) { /* blink */ lcd_status(); ///////////////////////////// a implementer LCD_CMD=; } /******************************************************************/ void lcd_decalage_caractere(char nb) { lcd_tempo(10); if(nb) { lcd_status(); LCD_CMD=0x18; /* shift � gauche */ } else { lcd_status(); LCD_CMD=0x1F; /* shift � droite */ } } /******************************************************************/ void beep( int cnt) { do { PORTG ^=01; wait(7); PORTG ^=01; wait(4); } while(--cnt); } /******************************************************************/ void lcd_affiche_caractere(unsigned char valeur_a_afficher) { lcd_status(); LCD_DATA = valeur_a_afficher ; } /******************************************************************/ void lcd_affiche_caractere(unsigned char valeur_a_afficher) { lcd_status(); LCD_DATA = valeur_a_afficher ; } /******************************************************************/ void lcd_affiche_chaine(unsigned char *chaine_de_caractere) { unsigned char nbr = 0; while (chaine_de_caractere[nbr] != 0x00) { lcd_affiche_caractere(chaine_de_caractere[nbr]) ; nbr ++ ; } } /******************************************************************/ void lcd_decale_gauche(unsigned char Nbr_de_decalage) { do { lcd_status(); LCD_CMD= 0x10; Nbr_de_decalage -- ; } while (Nbr_de_decalage > 0) ; } /******************************************************************/ void lcd_decale_droite(unsigned char Nbr_de_decalage) { do { lcd_status(); LCD_CMD= 0x14; Nbr_de_decalage -- ; } while (Nbr_de_decalage > 0) ; } /******************************************************************/