Electgpl

8051 - LCD Ejemplo

Oct 26th, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.42 KB | None | 0 0
  1. #include<reg52.h>
  2. //*********************************************************************************************************
  3. // Configuracion de pines del LCD
  4. //*********************************************************************************************************
  5. extern bit RS;                                                                  
  6. extern bit EN;                          
  7. extern bit D4;
  8. extern bit D5;
  9. extern bit D6;
  10. extern bit D7;
  11. sbit RS = P2^0;                                                                  
  12. sbit EN = P2^1;                            
  13. sbit D4 = P2^4;
  14. sbit D5 = P2^5;
  15. sbit D6 = P2^6;
  16. sbit D7 = P2^7;
  17. //*********************************************************************************************************
  18. // Delay Bloqueante Mili Segundos (con cristal externo de 12MHz @ 1MIPS)
  19. //*********************************************************************************************************
  20. void delay(int a){
  21.    int i, j;
  22.    for(i=0;i<a;i++){
  23.       for(j=0;j<50;j++);
  24.    }
  25. }
  26. //*********************************************************************************************************
  27. // Funcion que escribe en puerto
  28. //*********************************************************************************************************
  29. void lcdPort(char a){
  30.    if(a & 1) D4 = 1;
  31.      else D4 = 0;
  32.    if(a & 2) D5 = 1;
  33.      else D5 = 0;
  34.    if(a & 4) D6 = 1;
  35.      else D6 = 0;
  36.    if(a & 8) D7 = 1;
  37.      else D7 = 0;
  38. }
  39. //*********************************************************************************************************
  40. // Funcion que envia comando
  41. //*********************************************************************************************************
  42. void lcdCmd(char a){
  43.    RS = 0;
  44.    lcdPort(a);
  45.    EN = 1;
  46.    delay(5);
  47.    EN = 0;
  48. }
  49. //*********************************************************************************************************
  50. // Borrado de LCD
  51. //*********************************************************************************************************
  52. lcdClear(){
  53.    lcdCmd(0);
  54.    lcdCmd(1);
  55. }
  56. //*********************************************************************************************************
  57. // Funcion para ir a la posicion especifica
  58. //*********************************************************************************************************
  59. void lcdGotoxy(char a, char b){
  60.    char temp,z,y;
  61.    if(a==1){
  62.      temp = 0x80 + b;
  63.       z = temp>>4;
  64.       y = temp & 0x0F;
  65.       lcdCmd(z);
  66.       lcdCmd(y);
  67.    }else{
  68.       if(a==2){
  69.          temp = 0xC0 + b;
  70.          z = temp>>4;
  71.          y = temp & 0x0F;
  72.          lcdCmd(z);
  73.          lcdCmd(y);
  74.       }
  75.    }       
  76. }
  77. //*********************************************************************************************************
  78. // Inicializa LCD
  79. //*********************************************************************************************************
  80. void lcdInit(){
  81.    lcdPort(0x00);
  82.    delay(200);
  83.    lcdCmd(0x03);
  84.    delay(50);
  85.    lcdCmd(0x03);
  86.    delay(110);
  87.    lcdCmd(0x03);
  88.    lcdCmd(0x02);    
  89.    lcdCmd(0x02);
  90.    lcdCmd(0x08);    
  91.    lcdCmd(0x00);
  92.    lcdCmd(0x0C);    
  93.    lcdCmd(0x00);    
  94.    lcdCmd(0x06);  
  95. }
  96. //*********************************************************************************************************
  97. // Funcion para escribir caracter
  98. //*********************************************************************************************************
  99. void lcdWriteChar(char a){
  100.    char temp,y;
  101.    temp = a&0x0F;
  102.    y = a&0xF0;  
  103.    RS = 1;
  104.    lcdPort(y>>4);
  105.    EN = 1;
  106.    delay(5);
  107.    EN = 0;
  108.    lcdPort(temp);
  109.    EN = 1;
  110.    delay(5);
  111.    EN = 0;
  112. }
  113. //*********************************************************************************************************
  114. // Funcion para escribir string
  115. //*********************************************************************************************************
  116. void lcdWriteString(char *a){
  117.    int i;
  118.    for(i=0;a[i]!='\0';i++)
  119.       lcdWriteChar(a[i]);
  120. }
  121. //*********************************************************************************************************
  122. // Funcion principal
  123. //*********************************************************************************************************
  124. void main(){
  125.    lcdinit();                                  
  126.    while(1){                                  
  127.       lcdGotoxy(1,1);
  128.       lcdWriteString("   UTN INSPT   ");
  129.       lcdGotoxy(2,1);
  130.       lcdWriteString(" LCD con 8051  ");
  131.    }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment