Anda di halaman 1dari 5

4BitinterfazLCDyprogramacinconel

microcontroladorPIC
Gadgetronicx>Microcontroladores>PIC>PICtutoriales>LCDde4bitsdeinterfazyprogramacinconelmicrocontroladorPIC

l FrankDonald } 19dedefebrerode,elao2015 v 0comentarios

m tutorialesPIC LCD

frequencyconverter
100%QCInspectionBeforeShippment.GoodService&10Years
Experience.Gotoen.kinco.cn/Converter

LaspantallasLCDfuncionanendosmodosde4bitsyelmodode8bits.todo lo que podramos haber estado familiarizado


conelmodode8bitsqueseutilizaampliamenteenvariossistemas.Peroelmodode4bitsesalgoquemuchosdenosotros
noesconscientede.Este modo tiene algunas ventajas sobre el modo de 8 bits, de los cuales la reduccin de los pines de
datosdedicadasesmsimportante.EstetutorialteensearLCDde4bitsdeinterfazde4bitsconelcontrolador,ascomo
laprogramacindelamisma.

QUES4MODODEBITS:
Todos sabamos que LCD consta de 8 pines de datos D0D7 para recibir los datos y comandos del microcontrolador. Sin
embargo, cuando el desarrollo de un complejo de sistemas de dedicar un puerto completo, es decir 8 pines podra ser un
inconveniente.ParasuperarestecontroladordelapantallaLCDescapazdefuncionarendosmodosde8bitsyelmodode4
bits.

Adsby Google PIC16F877A LCD16X2 AVRLCD PicLCD

8 Bit modo es un modo normal, que utiliza las lneas de datos, 8 rs y habilitar para el funcionamiento del lcd, ver la
programacindeLCDenelmodode8bits.Sinembargo,enelmodode4bitsslo4lneasD4D7,juntoconRS,seutilizan
pasadoresRWyEN.Estonosahorrar4pinesdenuestrocontroladorquepodramosemplearparaotrosfines.

Enelmodode4bitslosbytesdedatossecortanendoscuatrobitsysetransfierenenformadeunmordisco.Yelrestode
las funciones de los terminales, tales como RS, RW y ES sigue siendo igual. El diseo anterior ilustra el diagrama de
conexionesdeunLCDde162conmicrocontroladorPICenelmodode4bits.

INICIALIZACINDELALCD:
ElprimerpasoenlacodificacindelapantallaLCDestinicializandoelLCDconectadoaldarloscomandoscomoentradaa
travsdelalneadedatosD4D7enelFOMdeRoa.ParainicializarelLCDdespusdeunasecuenciaderestablecimiento
debeprestarparticularatencinyluegoinicializadoaseguirelmodode4bits.

1.ColoqueelbytedepinesD4D7deLCDyfijarelpasadorESdealtayluegohacerqueseabajaconretardodetiempode
10msentreellos.
2.Enviarcomando28Husar2lneasdemodo5x7matrizde4bits.
3.Enviar0FHparalafabricacindelapantallaLCD,elcursoryelcursorparpadeanteen.
4.Enviar06Hparaincrementarlaposicindelcursor.
5.Finalmente01y02paralapantalladecompensacinyvolveracasa.

DATOS/COMANDOtransmisinalapantallaLCD:
LatransmisindedatosaunLCDdebeserrealizadopormediodelaasignacindeestadoslgicosdetrespinesyelpinRS/
WE.Rnoesnecesariaparaquepodamostierracomosemuestraeneldiagramaesquemtico.Losdatosseenvaalmdulo
siguiendoestospasos.

1.pinRSdebeseraltoparatransmitirunLCDdetransmisindedatossevaatenerlugar.
2.Coloqueelbytesuperiorenloscuatrobitsinferioresdelpuerto2pormediodedesplazamientodebitsylamscaradelos
cuatrobitssuperiores.
3.PulsoEnpasadordemayoramenorconciertoretardodetiempoparalatransmisinsecomplete.
4.Ahoracoloqueelinferioryenmascararelrestodelosbits,acontinuacin,repitaelpaso3.

CDIGO:
EstecdigofueconstruidausandoelcompiladorCCSparaelmicrocontroladorPIC.
01. #include<4_bit_lcd.h>
02. #byteLCD=0x08
03. #byteTRIS_LCD=0x88
04. #defineHABILITAR0x20
05. #defineREG_SL0x10
06. voidlcd_reset()//PonersecuenciacomoseindicaenlahojadedatosdelLCD
07. {
08. LCD=0xFF
09. LCD=0x03|ACTIVAR
10. Delay_ms(2)
11. LCD=0x03
12. Delay_ms(2)
13. LCD=0x03|ACTIVAR
14. Delay_ms(2)
15. LCD=0x03
16. Delay_ms(2)
17. LCD=0x03|ACTIVAR
18. Delay_ms(2)
19. LCD=0x03
20. Delay_ms(2)
21. LCD=0x02|ACTIVAR
22. Delay_ms(2)
23. LCD=0x02
24. Delay_ms(2)
25. }
26. voidlcd_cmd(carbonillacmd)//Subrutinaparaenviarcomandos
27. {
28. LCD=((cmd>>4)y0x0F)|ACTIVAR//Envodemayormordiscodesplazandoconsincronizacin,permitenunalto
retardo()
29. Delay_ms(2)
30. LCD=((cmd>>4)y0x0F)
31. Delay_ms(2)
32. LCD=(cmdy0x0F)|ACTIVAR//EnvodemenornibblebajoACTIVAR
33. Delay_ms(2)
34. LCD=(cmdy0x0F)
35. Delay_ms(2)
36. }
37. voidlcd_data(Char*dat)//Subrutinaparaenviardatos
38. {
39. mientrasque(*dat!='')
40. {
41. LCD=((*dat>>4)y0x0F)|0x30
42. Delay_ms(2)
43. LCD=(((*dat>>4)y0x0F)|REG_SL)
44. Delay_ms(2)
45. LCD=((*daty0x0F)|ACTIVAR|REG_SL)
46. Delay_ms(2)
47. LCD=((*daty0x0F)|REG_SL)
48. Delay_ms(2)
49. dat++
50. }
51. Delay_ms(2)
52. }
53. voidlcd_init()
54. {
55. lcd_cmd(0x28)2lneasfuente5x7//modode4bits.
56. lcd_cmd(0x0F)//Muestrauncursorconunabrirycerrar.
57. lcd_cmd(0x06)//IncrementoAutomticoSincambiodevisualizacin.
58. lcd_cmd(0x01)
59. lcd_cmd(0x02)//Borrarpantallayvolveracasa
60. lcd_cmd(0x80)//Primerafilaprimeracolumna
61. }
62. voidprincipal()
63. {
64. Charmsg[]="GADGETRONICX"
65. TRIS_LCD=0x00
66. lcd_reset()
67. lcd_init()
68. lcd_data(msg)
69. mientrasque(TRUE)
70. }

NOTA:
ElretardorequeridoporelLCDparaelprocesamientodedatosycomandosdependedelapantallaLCD.Asqueencaso
si se enfrentan a problemas en la visualizacin de caracteres en la pantalla LCD intente aumentar el retardo entre la
habilitacindeimpulsos.

EasyEDA:HerramientadediseodecircuitosylibredePCB
prototipodebajocoste
Regstreseahoraparautilizarlodeformagratuita.Unmontndeproyectosdehardwaredecdigoabiertoytutorialespasoa
paso

SeleccionaIdiomadeEasyEDA
Ingls()francsportugusespaoltailandsrabeholands

HebreovietnamitarusoitalianopolacoAfrikaansPersaalemn

Losdiseosyesquemasrelacionados

CreacindePac Transmitiryrecibir Tecladoylapantalla InterfazLCDcon


patrones datosmediante LCDdeinterfazcon ARM7
personalizados protocoUART... ARM7MIcrocontroll microcontrolador
hombreyla ...
animacinen...
Bio ltimaspublicaciones

FrankDonald
JuniorEngineerRedenTataCommunications

FrankDonaldesuningenieroelectrnicoycomunicacinqueesmuyapasionadode
sutema.Lectura,Surfybitcorassonlascosasqueama.

Publicacinanterior Siguientepost

Pregnteleasuconsulta

Selprimeroencomentar!

notificarle Notifiquetodaslasnuevasobservacionesdeseguimiento
Email >

Startthediscussion

Anda mungkin juga menyukai