Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
php
/
Sources
:
lcd_ancien.c
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
//---------------------------------------------------------------------- // LCD.C // Ce programme realise la fonction "print" sur un ecran LCD en // mode 8-bits d'une chaine de caractere (sur 1 ligne) // // Auteur: Zlati Lambov //---------------------------------------------------------------------- #include <string.h> //Ce fichier contient des declarations pour les registres du 68HC908GP32. #include <iogp32.h> //Le fichier "pll_init.c" se trouve dans le paquet des fichiers du compilateur. #include "pll_init.c" // definition des fonctions: void delay_5ms(void); // programmation d'un delay de 5 ms. void enable_data(void); // commande l'entree de validation de l'afficheur(E) void initlcd(void); // initialisation de l'ecran. char printlcd(char *p); // Affichage d'une chaine de caractere. // ************************ // ** Fonction principal ** // ************************ void main (void) { CONFIG1=0x01; //watchdog interdit. DDRA=0xff; //PTA en sortie. DDRC=0xff; //PTC en sortie. PTC=0x00; pll_init(2); //determine la frequence du bus // 1 32.768 kHz // 2 2.4576 MHz // 3 4.9152 MHz // 4 7.3728 MHz initlcd(); PTA=printlcd("1X16 CARACTERES"); //La chaine de caractere entre les parentheses while(1); //est affichee sur l'ecran(16 symboles au maximum). } void delay_5ms(void) // 15*(255*3) =11475 Cycles { // Dans le cas de 2.4576 MHz // le delay est presque 5ms. // __r0 est un "pseudo register" // defini par le compilateur. asm("\ mov #15,*__r0 \n\ psha \n\ del: lda #255 \n\ decr:dbnza decr \n\ dbnz *__r0,del \n\ pula \n\ "); } void enable_data(void) { PTC|=0x10; // E=1;(PTC bit 4). PTC&=~0x10; // E=0; } void initlcd(void) { char init[7]={0x38 ,0x38, 0x38, 0x0C ,0x06 ,0x01}; char i; PTC=0x00; // R/W=0;(0 = ecriture ,1 = lecture). // RS=0; (0 = instruction ,1 = caractere). for(i=0;i<6;i++) // 0x38-trois fois-mode 8 bits ,2 lignes validee. { // 0x0C-le curseur ne clignote pas. PTA=init[i]; enable_data(); // 0x06-l'affichage hors fonction. delay_5ms(); // 0x01-met le curseur en position "home",l'affichage } // est remis a sa position d'origine. PTC|=0x04; // RS=1(PTC bit 2)-operations avec des donnees. } char printlcd(char *p) // Pointeur vers la chaine de caractere � afficher. { char i; char string[17]; //La taille est fixe � 17 pour avoir 16 caracteres strcpy(string,p); //plus le caractere nul de fin de chaine. for(i=0;i<string[i];i++) { //La chaine de caractere � afficher est copiee PTA=string[i]; //dans le tableau "string"et puis element par enable_data(); //element vers l'afficheur(en utilisant PTA). delay_5ms(); } return PTA; }