{"id":40,"date":"2013-04-02T15:48:05","date_gmt":"2013-04-02T13:48:05","guid":{"rendered":"http:\/\/pila.fr\/wordpress\/?p=40"},"modified":"2015-05-06T14:32:51","modified_gmt":"2015-05-06T12:32:51","slug":"utilisation-des-afficheurs-lcd-hd44780-sur-pic-avec-le-compilateur-hi-tech-picc","status":"publish","type":"post","link":"https:\/\/pila.fr\/wordpress\/archives\/40","title":{"rendered":"Librairie pour afficheurs LCD hd44780 sur PIC avec le compilateur Microchip XC8"},"content":{"rendered":"<h1>\/!\\ Nouvelle version dispo <a href=\"http:\/\/pila.fr\/wordpress\/?p=931\">ICI<\/a><\/h1>\n<p>Permettant la mise en place d&rsquo;interfaces simples et lisibles avec l&rsquo;utilisateur, les afficheurs LCD comptent parmi les p\u00e9riph\u00e9riques les plus souvent utilis\u00e9s en association avec les micro-contr\u00f4leurs. Cependant, sans \u00eatre d&rsquo;une grande complexit\u00e9, leur contr\u00f4le n&rsquo;est pas des plus \u00e9vidents. De plus, passer du temps \u00e0 faire fonctionner un afficheur LCD sur un projet bien plus grand est souvent frustrant, et l&rsquo;utilisation de fonctions pr\u00e9-existantes permet de grandement simplifier le code \u00e9crit.<\/p>\n<div id=\"attachment_758\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/pila.fr\/wordpress\/wp-content\/uploads\/exempleAfficheur.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-758\" class=\"wp-image-758\" src=\"http:\/\/pila.fr\/wordpress\/wp-content\/uploads\/exempleAfficheur.jpg\" alt=\"example afficheur\" width=\"500\" height=\"375\" srcset=\"https:\/\/pila.fr\/wordpress\/wp-content\/uploads\/exempleAfficheur.jpg 960w, https:\/\/pila.fr\/wordpress\/wp-content\/uploads\/exempleAfficheur-300x225.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><p id=\"caption-attachment-758\" class=\"wp-caption-text\">Afficheur LCD alphanum\u00e9rique 4 lignes 20 colonnes pilot\u00e9 par un PIC.<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>J&rsquo;ai donc cod\u00e9 une petite librairie regroupant les fonctions essentielles \u00e0 l&rsquo;utilisation d&rsquo;un afficheur LCD utilisant le protocole hd44780 (la grande majorit\u00e9 des afficheurs alphanum\u00e9riques).<\/p>\n<p><!--more--><\/p>\n<p><del>Une archive contenant les fichiers n\u00e9cessaires est disponible ici : <a href=\"http:\/\/pila.fr\/wordpress\/wp-content\/uploads\/LCDhd44780lib1.zip\">LCDhd44780lib1<\/a><\/del>. Nouvelle version disponible : <a href=\"http:\/\/pila.fr\/wordpress\/wp-content\/uploads\/LCDhd44780lib2.zip\">LCDhd44780lib2<\/a>.Au programme quelques optimisation, clarification du code,\u00a0 correction de bug, et portage sous XC8.<\/p>\n<p>L&rsquo;afficheur est ici interfac\u00e9 en mode 4 bits (n\u00e9cessite d&rsquo;envoyer 2 fois 4 bits de donn\u00e9es\/commande au lieu de 8 en une seule fois) et sans tenir compte du drapeau<em> busy <\/em>de l&rsquo;afficheur, pour minimiser le nombre de broches d&rsquo;entr\u00e9e\/sortie n\u00e9cessaires.<\/p>\n<p>Celle ci contient 3 fichiers :<\/p>\n<ul>\n<li><strong>config.h<\/strong> : contient les param\u00e8tres relatifs au mat\u00e9riel utilis\u00e9.<\/li>\n<li><strong>hd44780.h<\/strong> : contient les en-t\u00eates des fonctions disponibles.<\/li>\n<li><strong>hd44780.c<\/strong> : contient toutes les fonctions disponibles.<\/li>\n<\/ul>\n<p>Les param\u00e8tres disponibles dans le fichier param.h sont les suivants :<\/p>\n<ul>\n<li>_XTAL_FREQ : doit correspondre \u00e0 la fr\u00e9quence de l&rsquo;oscillateur utilis\u00e9. Permet d&rsquo;assurer les valeurs des temporisations quelque soit la fr\u00e9quence de l&rsquo;oscillateur utilis\u00e9.<\/li>\n<li>LCD_E : correspond \u00e0 la broche du PIC qui pilote la broche E (validation) de l&rsquo;afficheur.<\/li>\n<li>LCD_RS : correspond \u00e0 la broche du PIC qui pilote la broche RS (s\u00e9lection instruction ou donn\u00e9e) de l&rsquo;afficheur.<\/li>\n<li>LCD_PORT : correspond au port du PIC sur lequel l&rsquo;afficheur est connect\u00e9. Seules les 4 broches de poids fort ( par exemple, RB7 RB6 RB5 et RB4 si c&rsquo;est PORTB qui est choisi) sont utilis\u00e9es, car l&rsquo;afficheur est interfac\u00e9 en mode 4 bits.<\/li>\n<li>LCD_WIDTH : correspond au nombre de caract\u00e8res affichables par le LCD sur un ligne.<\/li>\n<\/ul>\n<p>Les fonctions disponibles sont ( les fonctions les plus importantes\/utilis\u00e9es sont en gras ) :<\/p>\n<ul>\n<li><strong>LCDinit()<\/strong> : permet l&rsquo;initialisation de l&rsquo;afficheur. Doit \u00eatre appel\u00e9e avant tout autre fonction, sans quoi le LCD n&rsquo;affichera rien, ou n&rsquo;importe quoi.<\/li>\n<li>LCDwrite(char,char) : permet d&rsquo;envoyer un octet de donn\u00e9e (premier param\u00e8tre = LCD_DATA) ou de commande (LCD_COMMAND) \u00e0 l&rsquo;afficheur. .<\/li>\n<li><strong>LCDprint(char *)<\/strong> : permet d&rsquo;afficher un suite de caract\u00e8re.<\/li>\n<li>LCDvalue(char) : affiche la valeur d\u00e9cimale d&rsquo;un octet.<\/li>\n<li><strong>LCDpos(char line, char row) <\/strong>: permet de d\u00e9placer manuellement le curseur (attention : les num\u00e9ros de ligne \/ colonne commencent \u00e0 z\u00e9ro)<\/li>\n<li><strong>LCDclear()<\/strong> : efface l&rsquo;\u00e9cran et ramene le curseur en haut \u00e0 gauche de l&rsquo;\u00e9cran.<\/li>\n<li>LCDcustomCar(char carnumber, char * car) : permet de stocker des caract\u00e8res personnalis\u00e9s dans l&rsquo;afficheur. <em>carnumber<\/em> correspond au num\u00e9ro du caract\u00e8re, et le tableau d&rsquo;octet <em>car<\/em> contient chaque ligne de pixel du caract\u00e8re.<\/li>\n<\/ul>\n<p>Le code fonctionne avec le compilateur gratuit XC8 de microchip, mais il doit \u00eatre possible de le porter rapidement vers d&rsquo;autres compilateurs. J&rsquo;ai utilis\u00e9es cette librairie sans encombre pour tous mes projets utilisant un afficheur LCD pilot\u00e9 par un PIC, mais si jamais vous d\u00e9couvrez un bug, n&rsquo;h\u00e9sitez par \u00e0 me le signaler.<\/p>\n<h1>\/!\\ Nouvelle version dispo <a href=\"http:\/\/pila.fr\/wordpress\/?p=931\">ICI<\/a><\/h1>\n","protected":false},"excerpt":{"rendered":"<p>\/!\\ Nouvelle version dispo ICI Permettant la mise en place d&rsquo;interfaces simples et lisibles avec l&rsquo;utilisateur, les afficheurs LCD comptent parmi les p\u00e9riph\u00e9riques les plus souvent utilis\u00e9s en association avec les micro-contr\u00f4leurs. Cependant, sans \u00eatre d&rsquo;une grande complexit\u00e9, leur contr\u00f4le n&rsquo;est pas des plus \u00e9vidents. De plus, passer du temps \u00e0 faire fonctionner un afficheur &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/pila.fr\/wordpress\/archives\/40\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,8],"tags":[26,28,24,25,21,27,23,22],"class_list":["post-40","post","type-post","status-publish","format-standard","hentry","category-electronique","category-prog","tag-afficheur","tag-alphanumerique","tag-bibliotheque","tag-fonctions","tag-hd44780","tag-lcd","tag-mcu","tag-pic","item-wrap"],"_links":{"self":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":42,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/40\/revisions"}],"predecessor-version":[{"id":953,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/40\/revisions\/953"}],"wp:attachment":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}