• Nenhum resultado encontrado

elt024-08-displayLCD

N/A
N/A
Protected

Academic year: 2021

Share "elt024-08-displayLCD"

Copied!
37
0
0

Texto

(1)

Universidade Federal de Itajub´a

rodrigomax@unifei.edu.br

(2)

Revis˜

ao

(3)

Problema de bouncing

Causado pela oscila¸

ao mecˆ

anica da chave

Pode gerar acionamentos indevidos no sistema

Solu¸c˜

oes

Via hardware atrav´

es de circuito dedicado

Via software atrav´

es de confirma¸

ao temporal

(4)

http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted

(5)

1 v o i d m a i n (v o i d) {

2 u n s i g n e d c h a r valTemp , v a l A t u a l , t e m p o ; 3 // i n s e r i r a s c o n f i g u r a ¸c ˜o e s n e c e s s ´a r i a s a q u i

4 f o r( ; ; ) {

5 w h i l e( v a l A t u a l==PORTB ) ; // a g u a r d a uma mudan¸ca

6 v a l T e m p = P O R T B ; // a g u a r d a um tempo 7 t e m p o = 2 2 ; 8 w h i l e ( tempo > 0 ) { // s e n˜ao mudar c o n t i n u a a c o n t a r 9 i f ( v a l T e m p == PORTB ) { 10 tempo −−; 11 } e l s e { // s e mudar , a t u a l i z a e r e i n i c i a 12 v a l T e m p = P O R T B ; 13 t e m p o = 2 2 ; 14 } 15 } 16 v a l A t u a l = v a l T e m p ; // v a l o r a t u a l i z a d o 17 // A q u i a v a r i ´a v e l e s t ´a p r o n t a p a r a s e r u s a d a 18 } 19 }

(6)
(7)

1 // p r o c e s s o de v a r r e d u r a 2 3 f o r( i = 0 ; i < 2 ; i++){ 4 P O R T B = 0 xff ; // l i g a t o d a s a s c o l u n a s 5 f o r( j = 0 ; j < 1 0 0 ; j++) ; 6 B i t C l r ( PORTB , i ) ; // d e s l i g a c o l u n a a s e r t e s t a d a 7 f o r( j = 0 ; j < 1 0 0 ; j++) ; // g a s t a tempo 8 f o r( j = 0 ; j < 4 ; j++){ 9 i f ( ! BitTst ( PORTB , j+4) ) { // r e a l i z a o t e s t e p a r a c a d a b i t 10 c h a v e [ i ] [ j ] = 1 ; // a t u a l i z a a m a t r i z 11 B i t S e t ( PORTD , j+4∗i ) ; // m o s t r a na p o r t a D 12 }e l s e{ 13 c h a v e [ i ] [ j ] = 0 ; 14 B i t C l r ( PORTD , j+4∗i ) ; 15 } 16 } 17 }

(8)

Display de LCD

(9)
(10)

Display de LCD

Utiliza-se do conceito de polariza¸

ao da luz para formar a imagem

Os pixels s˜

ao formados por reten¸

ao de luz

1

Geralmente possui um microcontrolador integrado

ao encontrados em formato de 7 segmentos ou matricial

2

No formato matricial ´

e poss´ıvel representar as letras, n´

umeros e

diversos simbolos

1

No caso dos displays com leds, os pixels s˜

ao formados por emiss˜

ao de luz.

2

Os formatos matriciais mais comuns s˜

ao 5x7 e 5x8

(11)

Este tipo de display pode ser visto como uma solu¸

ao de exibi¸

ao

completa:

O microcontrolador faz o papel da placa de v´ıdeo

O display faz o papel do monitor

A comunica¸

ao ´

e feita atrav´

es de um barramento paralelo

O barramento ´

e comandado por 3 sinais de controle

(12)
(13)

1

Terra

2

VCC (+5V)

3

Ajuste do contraste

4

Sele¸c˜

ao de registro(RS)

5

Read/Write (RW)

6

Clock, Enable (EN)

7

Bit 0

8

Bit 1

9

Bit 2

10

Bit 3

11

Bit 4

12

Bit 5

13

Bit 6

14

Bit 7

15

Backlight +

16

Backlight Gnd

(14)

Aten¸

ao

Cuidado com a pinagem do display. O que est´

a em uso na aula ´

e 15, 16,

1, 2, ... 14. Os pinos n˜

ao est˜

ao em ordem. A troca/substitui¸

ao do display

tem que ser realizada com aten¸

ao pois a placa est´

a pronta para receber

apenas esse tipo de display.

(15)
(16)

Rotina para envio de dados/comando para o LCD

Para comando RS = 0; Para dados RS = 1;

Habilitar a escrita (RW=1) ou leitura (RW=0)

Acionar terminal EN (enable)

Delay para o LCD entender o comando

Desabilita o terminal EN

Retorna os terminais (RW e RS) para n´ıvel baixo

3

3

Para melhor uso ´

e interessante retornar os terminais para o valor que tinham antes

de chamar a rotina, j´

a que eles est˜

ao multiplexados com outros dispositivos

(17)

http://www.sparkfun.com/datasheets/LCD/HD44780.pdf - Datasheet Hitachi

(18)

http://www.sparkfun.com/datasheets/LCD/HD44780.pdf - Datasheet Hitachi

(19)

Forma¸c˜

ao dos comandos para controle do LCD:

Instru¸c˜

ao

RS

RW

Dados (bit)

Tempo

(m´

ax.)

7

6

5

4

3

2

1

0

Limpa

0

0

0

0

0

0

0

0

0

1

37 us

Reset

0

0

0

0

0

0

0

0

1

-

1.5ms

Config.

0

0

0

0

0

0

0

1

ID

S

37 us

Config.

0

0

0

0

0

0

1

D

C

B

37 us

Movim.

0

0

0

0

0

1

SC RL -

-

37 us

Config.

0

0

0

0

1

DL N

F

-

-

37 us

Move(l,c)

0

0

1

X

0

0

Coluna

37 us

Ocup.

0

1

BF -

-

-

-

-

-

-

10 us

http://www.sparkfun.com/datasheets/LCD/HD44780.pdf - Datasheet Hitachi (Modificado)

(20)

Defini¸c˜

oes:

ID: 1 – Incrementa, 0 – Decrementa

S: 1 – O display acompanha o deslocamento

SC: 1 – Desloca o display, 0 – Desloca o cursor

RL: 1 – Move para direita, 0 – Move para esquerda

DL: 1 – 8 bits, 0 – 4 bits

N: 1 – 2 linhas, 0 – 1 linha

F: 1 – 5x10 pontos, 0 – 5x8 pontos

BF: 1 – Ocupado, 0 – Dispon´ıvel

X: 1 – 2a linha, 0 – 1a linha

Coluna: nibble indicativo da coluna

(21)

Desenvolvimento da biblioteca

Cria¸

ao de rotinas de delay (2ms e 40us)

Fun¸

ao para enviar comandos

Fun¸

ao para enviar dados

Fun¸

ao de inicializa¸c˜

ao

(22)

3 #define RS 0 4 #define EN 1 5 #define RW 2 6 7 v o i d D e l a y 4 0 u s (v o i d) { 8 // p a r a um c r i s t a l de 8MHz c a d a i n s t r u ¸c ˜a o 9 // g a s t a 0 , 5 u s : 4 0 / 0 , 5 = 80 i n s t r u ¸c ˜o e s 10 u n s i g n e d c h a r i ; 11 // 3 + 3 ∗ 25 = 78 12 f o r( i =0; i < 2 5 ; i++) ; 13 } 14 15 v o i d D e l a y 2 m s (v o i d) { 16 u n s i g n e d c h a r i ; 17 f o r( i =0; i < 5 0 ; i++) 18 { 19 D e l a y 4 0 u s ( ) ; 20 } 21 }

(23)

2 B i t C l r ( PORTE , RS ) ; // comando 3 B i t C l r ( PORTE , RW ) ; // h a b i l i t a e s c r i t a 4 P O R T D = cmd ; 5 B i t S e t ( PORTE , EN ) ; // h a b i l i t a l e i t u r a 6 D e l a y 2 m s ( ) ; 7 B i t C l r ( PORTE , EN ) ; // t e r m i n a l e i t u r a 8 B i t C l r ( PORTE , RS ) ; // d e i x a em n´ıv e l b a i x o 9 B i t C l r ( PORTE , RW ) ; // d e i x a em n´ıv e l b a i x o 10 D e l a y 2 m s ( ) ; 11 } 12 v o i d E n v i a D a d o s (u n s i g n e d c h a r v a l o r ) { 13 B i t S e t ( PORTE , RS ) ; // d a d o s 14 B i t C l r ( PORTE , RW ) ; // h a b i l i t a e s c r i t a 15 P O R T D = v a l o r ; 16 B i t S e t ( PORTE , EN ) ; // h a b i l i t a l e i t u r a 17 D e l a y 4 0 u s ( ) ; 18 B i t C l r ( PORTE , EN ) ; // t e r m i n a l e i t u r a 19 B i t C l r ( PORTE , RS ) ; // d e i x a em n´ıv e l b a i x o 20 B i t C l r ( PORTE , RW ) ; // d e i x a em n´ıv e l b a i x o 21 D e l a y 4 0 u s ( ) ; 22 }

(24)

3 D e l a y 2 m s ( ) ; 4 D e l a y 2 m s ( ) ; 5 D e l a y 2 m s ( ) ; 6 D e l a y 2 m s ( ) ; 7 // c o n f i g u r a ¸c ˜o e s de d i r e ¸c ˜a o d o s t e r m i n a i s 8 B i t C l r ( TRISE , RS ) ; //RS 9 B i t C l r ( TRISE , EN ) ; //EN 10 B i t C l r ( TRISE , RW ) ; //RW 11 T R I S D = 0 x00 ; // d a d o s 12 A D C O N 1 = 0 b 0 0 0 0 1 1 1 0 ; 13 // c o n f i g u r a o d i s p l a y 14 E n v i a C o m a n d o ( 0 x38 ) ; // 8 b i t s , 2 l i n h a s , 5 x8 15 E n v i a C o m a n d o ( 0 x06 ) ; // modo i n c r e m e n t a l 16 E n v i a C o m a n d o ( 0 x0F ) ; // d i s p l a y , c u r s o r e b l i n k i n g ON 17 E n v i a C o m a n d o ( 0 x03 ) ; // z e r a c o n t a d o r e s i n t e r n o s 18 E n v i a C o m a n d o ( 0 x01 ) ; // l i m p a r d i s p l a y 19 E n v i a C o m a n d o ( 0 x80 ) ; // p o s i ¸c ˜a o i n i c i a l 20 }

(25)

1 #ifndef LCD_H 2 #define LCD_H 3 v o i d E n v i a C o m a n d o (u n s i g n e d c h a r cmd ) ; 4 v o i d E n v i a D a d o s (u n s i g n e d c h a r v a l o r ) ; 5 v o i d I n i c i a l i z a L C D (v o i d) ; 6 #endif //LCD H

(26)

2 #i n c l u d e " c o n f i g . h " 3 #i n c l u d e " lcd . h " 4 5 // i n i c i o do p r o g r a m a 6 v o i d m a i n (v o i d) 7 { 8 u n s i g n e d i n t i , j ; 9 c h a r msg [ ] = " H e l l o W o r l d ! "; 10 I n i c i a l i z a L C D ( ) ; 11 f o r( i =0; i <11; i++) 12 { 13 E n v i a D a d o s ( msg [ i ] ) ; 14 f o r( j = 0 ; j < 6 5 0 0 0 ; j++) ; 15 } 16 f o r( ; ; ) ; 17 }

(27)

Desenhando imagens no LCD

(28)

A maioria dos LCD’s permite a cria¸

ao de caracteres customizados

Para os displays compat´ıveis com a controladora HD44780:

8 caracteres dispon´ıveis

Formato bin´

ario e matricial de 8*5

Armazenados a partir do endere¸co 0x40

Os valores s˜

ao salvos por linha de caracter

(29)

Caracter 0

Caracter 2

...

Caracter 1

0x40

0x47

0x50

0x57

0x48

0x4F

Caracter 6

Caracter 7

0x70

0x77

0x78

0x7F

1a linha 3a linha 2a linha 4a linha 6a linha 5a linha 7a linha 8a linha 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x04 0x0E 0x0E 0x0E 0x1F 0x0E 0x00 0x04

Apenas 5 bits por linha!

(30)

1

2 // Cada l i n h a ´e r e p r e s e n t a d a p o r um c a r a c t e r

3 c h a r s i n o [ 8 ] =

4 {0 x04 , 0 x0E , 0 x0E , 0 x0E , 0 x0E , 0 x1F , 0 x00 , 0 x04 } ; 5 6 // C o n f i g u r a p a r a a p r i m e i r a p o s i ¸c ˜a o de mem´oria 7 E n v i a C o m a n d o ( 0 x40 ) ; 8 9 // E n v i a c a d a uma d a s l i n h a s em ordem 10 f o r( i =0; i <8; i++){ 11 E n v i a D a d o s ( s i n o [ i ] ) ; 12 }

(31)

´

E poss´ıvel criar um desenho/imagem de at´

e 40*16 pixels (4*2

caracteres)

A imagem ser´

a bin´

aria, apenas pixels brancos ou pretos

Existe uma separa¸c˜

ao entre os caracteres, que pode prejudicar de

certa maneira a imagem em quest˜

ao

(32)

Passos para gera¸c˜

ao de uma imagem:

1 - Criar uma imagem bin´

aria com o desenho desejado;

2 - Segmentar a imagem em retˆ

angulos de 8x5;

3 - Transcrever cada linha em bin´

ario/hexadecimal;

4 - Gerar o c´

odigo fonte.

(33)
(34)
(35)

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0x01 0x01 0x03 0x03 0x03 0x03 0x01 0x0E 0x0E 0x0E 0x0E 0x08 0x08 0x08 0x08 0x1F 0x1F 0x1F 0x1F 0x18 0x18 0x18 0x18 0x18 0x18 0x1C 0x1C 0x11 0x11 0x00 0x00 0x00 0x00 0x00 0x1F 0x12 0x14 0x12 0x14 0x03 0x03 0x02 0x02 0x02 0x10 0x10 0x07 0x07

(36)

1 2 // Cada l i n h a ´e r e p r e s e n t a d a p o r um c a r a c t e r 3 c h a r u n i f e i [ 4 8 ] = { 4 0 x01 , 0 x03 , 0 x03 , 0 x0E , 0 x1C , 0 x18 , 0 x08 , 0 x08 , // 0 , 0 5 0 x11 , 0 x1F , 0 x00 , 0 x01 , 0 x1F , 0 x12 , 0 x14 , 0 x1F , // 0 , 1 6 0 x10 , 0 x18 , 0 x18 , 0 x0E , 0 x07 , 0 x03 , 0 x02 , 0 x02 , // 0 , 2 7 0 x08 , 0 x18 , 0 x1C , 0 x0E , 0 x03 , 0 x03 , 0 x01 , 0 x00 , // 1 , 0 8 0 x12 , 0 x14 , 0 x1F , 0 x08 , 0 x00 , 0 x1F , 0 x11 , 0 x00 , // 1 , 1 9 0 x02 , 0 x03 , 0 x07 , 0 x0E , 0 x18 , 0 x18 , 0 x10 , 0 x00 // 1 , 2 10 } ; 11 12 E n v i a C o m a n d o ( 0 x40 ) ; // C o n f i g u r a p a r a a p r i m e i r a p o s i ¸c ˜a o de mem´oria 13 // E n v i a c a d a uma d a s l i n h a s em ordem 14 f o r( i =0; i <48; i++){ 15 E n v i a D a d o s ( u n i f e i [ i ] ) ; 16 }

(37)

Referências

Documentos relacionados

psicológicos, sociais e ambientais. Assim podemos observar que é de extrema importância a QV e a PS andarem juntas, pois não adianta ter uma meta de promoção de saúde se

II - os docentes efetivos, com regime de trabalho de 20 (vinte) horas semanais, terão sua carga horária alocada, preferencialmente, para ministrar aulas, sendo o mínimo de 8 (oito)

Para o Planeta Orgânico (2010), o crescimento da agricultura orgânica no Brasil e na América Latina dependerá, entre outros fatores, de uma legislação eficiente

Para aprofundar a compreensão de como as mulheres empreendedoras do município de Coxixola-PB adquirem sucesso em seus negócios, aplicou-se uma metodologia de

Chora Peito Chora Joao Bosco e Vinicius 000 / 001.. Chão De Giz Camila e

O presente estudo confirma que a vitrectomia pode melho­ rar a acuidade visual nos pacientes pseudofácicos portadores de ECM, principalmente naqueles casos onde há comprometi­ mento

Neste sentido, os resultados permitiram alcançar a seguinte conclusão, o modelo de gestão adotado pelo MPPE, utilizando a metodologia BSC como sistema de gestão estratégica, está

As reformas citadas acima são parte do projeto pombalino para toda a América Portuguesa, mas as mudanças nessa esfera empreendidas pelo Marquês na capitania de