Dernière mise à jour le 13/03/16

Présentation


L’Afficheur électronique présenté dans cette article permet via une interface développé en C# sous Visual Studio d’écrire le nom de mon site “DJelectro71.com” sur un écran LCD 2×16 caractères à l’aide d’un clavier virtuelle, vous y trouverez l’exemple dans le prototype un peu plus bas qui a été entierrement développé et testé dans l’environnement MikroPascal sur platine EasyPic 7 . Le but était d’arriver à envoyer une chaine de caractères via le port USB afin que le logiciel du PIC 18F4550 puisse faire tout le travail pour décoder et d’envoyer directement les valeurs reçus sur l’afficheur LCD. Vous pourrez aborder la partie programmation un peu plus bas.

Schéma


Le schéma ci-dessous n’a rien de bien compliquer il suffit de raccorder l’écran LCD 2×16 sur les bonnes broches du PIC 18F4550.

Afficheur UsbHid 001

Programmation de l’interface


Pour que cela fonctionne il faut bien sûr mettre en place le driver disponible sur ce lien usbhiddriver

Programme du PIC


 program Afficheur_UsbHid_001;
  var
  ReadBuff: array[64] of byte; absolute 0x500;
  WriteBuff: array[64] of byte; absolute 0x500;
  i:byte;
  iValueColomnLcd:byte;
  ConverCharByte:byte;
  LCD_RS : sbit at RB0_bit;
  LCD_EN : sbit at RB1_bit;
  LCD_D4 : sbit at RB2_bit;
  LCD_D5 : sbit at RB3_bit;
  LCD_D6 : sbit at RB4_bit;
  LCD_D7 : sbit at RB5_bit;
  LCD_RS_Direction : sbit at TRISB0_bit;
  LCD_EN_Direction : sbit at TRISB1_bit;
  LCD_D4_Direction : sbit at TRISB2_bit;
  LCD_D5_Direction : sbit at TRISB3_bit;
  LCD_D6_Direction : sbit at TRISB4_bit;
  LCD_D7_Direction : sbit at TRISB5_bit;
  procedure Main_Init;
    begin
     TRISB:=%00000000;
     LATB:=$00;
     Lcd_Init;
     Lcd_Cmd(_LCD_CURSOR_OFF)
    end;
  procedure Interrupt;
   begin
   USB_Interrupt_Proc;
   end;
  procedure Write_LCD;
   begin
   if (HID_Read()<>0) then
    begin
    for i:=0 to 63 do
      begin
      if (ReadBuff[i]<>0) then      
         begin
          ConverCharByte:=Chr(readBuff[i]);
          inc(iValueColomnLcd); //incrémente les conlonnes du LCD 
          Lcd_Chr(1,iValueColomnLcd,ConverCharByte); // converti la valeur lue en un caractère 

          begin
           if (ReadBuff[i]=1) then 
            begin
             iValueColomnLcd:=0;
             Lcd_Cmd(_LCD_CLEAR) ; // on efface l'écran LCD
            end;
          end;
        end;
      end;
    end;
  end;
   Begin
    Main_Init;
    HID_Enable(@Readbuff,@WriteBuff);
    While true do
     begin
     Write_LCd;
     end;
   end.

Prototype


Aucun, mais vous pouvez essayer l’interface Afficheur UsbHid 001, à vous de rentrer le programme en MikroPascal dans votre PIC et de créer le Vid/Pid

Proto_1

Juste une petite photo pour le plaisir des yeux…

Historiques


13/03/16
– Première mise à disposition