versÃo 2 - inf.furb.brmaw/asm51/vgamanual.pdf · (modo microcontrolador). kbd string +...
Post on 24-Sep-2018
219 Views
Preview:
TRANSCRIPT
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Módulo ser2VGA O módulo ser2VGA é um módulo embarcado que habilita seu micro controlador
através da USART, ter acesso aos dados retornados de um teclado PS2 e mouse PS2.
Também permite você enviar comandos ou dados para um monitor VGA. Basta apenas
conectar o mouse, teclado e monitor com entrada VGA, definir algumas configurações
padrões (via teclado) e pronto.
Características
� USART TTL 3.3V ou 5V (divisor);
� Alimentação principal 5V;
� Barrapinos;
� Furos 4mm para fixação da placa;
� Pino de RESET;
� Fácil de instalar;
� Reconhece os comandos padrão VT100 (pode ser um terminal burro para LINUX
EMBARCADO).
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Interface com o monitor VGA – Configuração Conecte o módulo ao monitor VGA, o teclado PS2 e o mouse PS2, então alimente em
5V e você verá a seguinte tela:
O quadrado à esquerda corresponde ao cursor e o quadrado à direita corresponde ao
ponteiro do mouse. Há teclas que permitem configurar o uso do ser2VGA, segue
descrição da seqüência de teclas:
• CTRL_F3 = define a cor do texto (incrementa);
DEFAULT: BRANCO
• CTRL_SHIFT_F3 =define a cor de texto (decrementa);
DEFAULT: BRANCO
• CTRL_ALT_F3= define a cor de background do VGA (incrementa);
DEFAULT: PRETO
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
• CTRL_SHIFT_ALT_F3= define a cor background do VGA (decrementa);
DEFAULT: BRANCO
• CTRL_F4 = define o tipo do cursor (HIDDEN, BLINK, UNDERLINE...);
DEFAULT: BLOCK, BLINK LENTO
• CTRL_F6 = desabilita BACKSPACE para linguagem BASIC;
DEFAULT: TRUE
• CTRL_F8 = salva as configurações selecionadas;
• CTRL_F9 = habilite ou desabilita modo LINE WRAP (continuar texto na linha
seguinte quando atinge a última coluna);
DEFAULT: HABILITADO
• CTRL_ALT_F9 = adiciona LF ou não quando pressionar tecla CR;
DEFAULT: DESABILITADO
• CTRL_F11 = exibe linha e coluna do ponteiro do mouse na linha última linha;
DEFAULT: DESABILITADO
• CTRL_F12 = libera o módulo entre comunicação com um sistema operacional com
terminal (SHELL) padrão VT100 ou micro controlador;
DEFAULT: DESABILITADO
• CTRL_ALT_F10 = permite alterar o baud rate de comunicação entre o micro
controlador e o módulo (são eles, 300, 1200, 2400, 4800, 9600, 19200, 38400,
57600, 115200);
DEFAULT: 9600
Observações:
• Após alterar uma configuração não esqueça em salvar na memória não volátil,
utilize a seqüência de teclas CTRL_F8, então resete o módulo;
• Para efeitos de localização do ponteiro do mouse, você pode habilitar na parte
inferior do monitor a exibição das coordenadas do ponteiro do mouse, utilize
a seqüência de teclas CTRL_F11.
• Caso tenhas liberado o módulo para comunicação com um sistema
operacional que utilize terminal (SHELL) padrão VT100, você não verá a
posição da linha e coluna onde se encontra o ponteiro do mouse e também o
mouse será desabilitado;
• A primeira linha é 00 e a última é 39;
• A primeira coluna é 00 e a última é 79;
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
• Mude o tipo de cursor para não confundir com o ponteiro de mouse;
• O cursor é posicionado na linha 00 e coluna 00;
• Ao mexer na configuração do ser2VGA, você verá o texto no monitor VGA.
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Interface com o teclado PS2 - Protocolo
Ao ligar o módulo, o teclado PS2 inicializará e acenderá o LED NUM-LOCK. Toda vez
que você pressionar uma tecla, o módulo mandará para o seu micro controlador o código
da tecla no seguinte formato. (MODO MICROCONTROLADOR).
kbd String + códigoTeclaString + byte 0 (NULL)
Exemplo:
Digamos que se você pressionar a tecla ‘a’, na serial do módulo (TXD) será enviada a
seguinte sequência:
kbd000061 pelo byte 0
Onde kbd identifica que a mensagem veio do teclado PS2 e 000061 são os códigos que
você deve monitorar segundo a tabela abaixo:
códigoTeclaString Tecla Correspondente
Kbd000061+ byte 0 a
kbd000062+ byte 0 b
kbd000063+ byte 0 c
kbd000064+ byte 0 d
kbd000065+ byte 0 e
kbd000066+ byte 0 f
kbd000067+ byte 0 g
kbd000068+ byte 0 h
kbd000069+ byte 0 i
kbd00006A+ byte 0 j
kbd00006B+ byte 0 k
kbd00006C+ byte 0 l
kbd00006D+ byte 0 m
kbd00006E+ byte 0 m
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
kbd00006F+ byte 0 o
kbd000070+ byte 0 p
kbd000071+ byte 0 q
kbd000072+ byte 0 r
kbd000073+ byte 0 s
kbd000074+ byte 0 t
kbd000075+ byte 0 u
kbd000076+ byte 0 v
kbd000077+ byte 0 w
kbd000078+ byte 0 x
kbd000079+ byte 0 y
kbd00007A+ byte 0 z
kbd000041+ byte 0 A
kbd000042+ byte 0 B
kbd000043+ byte 0 C
kbd000044+ byte 0 D
kbd000045+ byte 0 E
kbd000046+ byte 0 F
kbd000047+ byte 0 G
kbd000048+ byte 0 H
kbd000049+ byte 0 I
kbd00004A+ byte 0 J
kbd00004B+ byte 0 K
kbd00004C+ byte 0 L
kbd00004D+ byte 0 M
kbd00004E+ byte 0 N
kbd00004F+ byte 0 O
kbd000050+ byte 0 P
kbd000051+ byte 0 Q
kbd000052+ byte 0 R
kbd000053+ byte 0 S
kbd000054+ byte 0 T
kbd000055+ byte 0 U
kbd000056+ byte 0 V
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
kbd000057+ byte 0 W
kbd000058+ byte 0 X
kbd000059+ byte 0 Y
kbd00005A+ byte 0 Z
kbd0000D0+ byte 0 F1
kbd0000D1+ byte 0 F2
kbd0000D2+ byte 0 F3
kbd0000D3+ byte 0 F4
kbd0000D4+ byte 0 F5
kbd0000D5+ byte 0 F6
kbd0000D6+ byte 0 F7
kbd0000D7+ byte 0 F8
kbd0000D8+ byte 0 F9
kbd0000D9+ byte 0 F10
kbd0000DA+ byte 0 F11
kbd0000DB+ byte 0 F12
kbd1B5B44+ byte 0 FLECHA ESQUERDA
kbd1B5B43+ byte 0 FLECHA DIREITA
kbd1B5B41+ byte 0 FLECHA CIMA
kbd1B5B42+ byte 0 FLECHA BAIXO
kbd00007E+ byte 0 ~
kbd000021+ byte 0 !
kbd000040+ byte 0 @
kbd000023+ byte 0 #
kbd000024+ byte 0 $
kbd000025+ byte 0 %
kbd00005E+ byte 0 ^
kbd000026+ byte 0 &
kbd00002A+ byte 0 *
kbd000028+ byte 0 (
kbd000029+ byte 0 )
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
kbd00005F+ byte 0 _
kbd00002B+ byte 0 +
kbd00007C+ byte 0 |
kbd00007B+ byte 0 {
kbd00007D+ byte 0 }
kbd000022+ byte 0 "
kbd00003C+ byte 0 <
kbd00003E+ byte 0 >
kbd00003F+ byte 0 ?
kbd000060+ byte 0 ̀
kbd00002C+ byte 0 ,
kbd00002E+ byte 0 .
kbd00002F+ byte 0 /
kbd00002D+ byte 0 -
kbd00003D+ byte 0 =
kbd00005C+ byte 0 \
kbd00005B+ byte 0 [
kbd00005D+ byte 0 ]
kbd000027+ byte 0 '
kbd000031+ byte 0 1
kbd000032+ byte 0 2
kbd000033+ byte 0 3
kbd000034+ byte 0 4
kbd000035+ byte 0 5
kbd000036+ byte 0 6
kbd000037+ byte 0 7
kbd000038+ byte 0 8
kbd000039+ byte 0 9
kbd000030+ byte 0 0
kbd000009+ byte 0 TAB
kbd0000CA+ byte 0 INSERT
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
kbd00007F+ byte 0 DELETE
kbd0000C4+ byte 0 HOME
kbd0000C5+ byte 0 END
kbd00005F+ byte 0 BACK
kbd0000C6+ byte 0 PG UP
kbd0000C7+ byte 0 PG DOWN
kbd0000DC+ byte 0 PRINTSCREEN
kbd0002DF+ byte 0 PAUSE BREAK
kbd00000D+ byte 0 ENTER
kbd001310+ byte 0 ENTER (COM LF HABILITADO =
CRTL_ALT_F9)
Observações:
• Alguns teclados podem apresentar configurações diferentes, então abra um
emulador de terminal e tecle, então você verá os códigos de cada tecla;
• Nunca ligue o teclado após o módulo ser ligado, o mesmo na será inicializado;
• O software de seu micro controlador preferido deve aguardar pelo delimitador 0
(NULL) e então identificar a tecla pressionada;
• Este protocolo foi criado para facilitar a interação com o seu micro controlador,
você pode optar pelo protocolo VT100 (MODO SISTEMA OPERACIONAL) de
envio de códigos de teclas, ou seja, o código ASCII da tecla é enviado.
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Interface com o mouse PS2 - Protocolo
Ao ligar o módulo, o mouse PS2 inicializará somente se a opção F3 (S.O) estiver como
“NÃO”. Toda vez que você clicar um botão do mouse, ele mandará para o seu micro
controlador, o código do mouse no seguinte formato:
ASCII mseString + 13 + 10 (opcional)
Exemplo:
Digamos que se você click o botão esquerdo do mouse, estando o ponteiro do mouse
na linha 03 e coluna 04, na serial do módulo (TXD) vai ser enviada a seguinte sequência:
String mse000304 seguido do byte 13 e opcionalmente pelo byte 10
Onde mse identifica que mensagem veio do mouse PS2 e 000304 são os códigos
correspondem:
• 00 = botão esquerdo do mouse; (01 caso seja o botão direito)
• 03 = linha do ponteiro do mouse; (HEXADECIMAL)
• 04 = coluna do ponteiro do mouse. (HEXADECIMAL)
Observações:
• Não confundir ponteiro do cursor do mouse com o cursor de posicionamento de
impressão;
• Nunca ligue o mouse após o módulo ser ligado, o mesmo na será inicializado;
• A primeira linha é 00 e a última é 35;
• A primeira coluna é 00 e a última é 79.
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Interface com o monitor VGA - Protocolo
Ao ligar o módulo, você verá o cursor na linha 00 e coluna 00. A partir desta posição,
tudo o que você mandar para o módulo (RXD), será impresso no monitor. Exemplo, se
você mandar o byte 65 (ver tabela ASCII) para o módulo, verá o “A” ser impresso e o
cursor avançar automaticamente para a posição seguinte.
Se o cursor estiver na última posição da tela e você imprimir um caractere, o monitor
fará um SCROOL.
Você pode mandar um comando em vez de caractere para o monitor, neste caso, deve
começar com o byte 27 (ESC – ver tabela ASCII). Abaixo há a tabela para que você possa
conhecer os comandos, no caso, do padrão VT100.
ESCc Reset terminal to initial state
ESC[?5h Swap foreground/background colors
No swap is done if mode already set
ESC[?6h Set cursor origin mode to relative
ESC[?7h Turns on line wraparound mode
ESC[?20h New line mode causes LF to imply movement
to the first position of next line.
ENTER key sends the two codes CR and LF
ESC[?5l Swap foreground/background colors
No swap is done if mode already reset
ESC[?6l Set cursor origin mode to absolute
ESC[?7l Turns off line wraparound mode
ESC[?20h Line feed mode causes LF to imply only vertical
movement and ENTER sends only CR
ESC[m Turn off character attributes
ESC[0m Turn off character attributes
ESC[1m Turn bold character on (reverse video)
ESC[7m Turn reverse video on
ESC[t;br Set top and bottom scrolling region limits
ESCH Set tabstop at current column position
ESC[g or ESC[0g Clear tabstop at current column position
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
ESC[3g Clear all tab stops
ESC[nA Move cursor up n lines
ESC[nB Move cursor down n lines
ESC[nC Move cursor right n columns
ESC[nD Move cursor left n columns
ESC[H or ESC[;H Move cursor to upper left corner
ESC[line;column Move cursor to screen location line, column
ESC[f or ESC[;f Move cursor to upper left corner
ESC[line;column Move cursor to screen location line, column
ESCD Move/scroll window up one line
ESCM Move/scroll window down one line
ESCE Move to start of next line
ESC[K or ESC[0K Clear line from cursor right
ESC[1K Clear line from cursor left
ESC[2K Clear entire line
ESC[J or ESC[0J Clear screen from cursor down
ESC[1J Clear screen from cursor up
ESC[2J Clear entire screen
Esc[nP Delete n characters, default = 1
Esc[n@ Insert n blank characters at cursor, default = 1
ESC[c or ESC[0c Terminal sends "No options" response: ESC[?1;0c
Esc[0n Response: terminal is OK
Esc[5n Report device status
Esc[6n Report cursor position
Esc[Line;ColumnR Response: cursor is at v,h
ESC#8 Screen alignment display
Se o usuário quiser imprimir a mensagem “OLA ” na linha 03, coluna 03 deve mandar
uma palavra de controle para o monitor e logo após a mensagem desejada.
Olhando para tabela VT100, você vê o comando para posicionar o cursor:
ESC[line;columnH
Logo, envie para o módulo (RXD) a seguinte sequência de bytes:
27 91 48 51 59 48 51 72
ESC [ 0 3 ; 0 3 H
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Com isto, você pode observar que o cursor vai se posicionar na linha 03 e coluna 03,
então mande:
79 76 65
O L A
Observações:
• Ao enviar a coordenada da linha 03, veja como uma string, ou seja, o caractere
‘0’ seguido do caractere ‘3’ e não o byte 03;
• O dado impresso sempre será a partir da posição do cursor, mesmo que esteja
HIDDEN.
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
EXEMPLO EM ‘C’ – POSICIONAMENTO DO CURSOR NA LINHA 11, COLUNA 11 E CONSEQUENTEMENTE A
IMPRESSÃO DE UM CONTADOR.
unsigned char TXT[6];
unsigned int contador;
unsigned short i;
void main() {
Usart_Init(9600);
//Aguarda START UP do controlador VGA
delay_ms(3000);
While(1)
{ //Posiciona cursor na linha 11, coluna 11
//40x80 - Resolucao video
//ESC[line;columnH Move cursor to screen location v,h (VT100)
Usart_Write(27);
Usart_Write('[');
//Linha
//11 = 49 ASCII "1"
Usart_Write(49);
Usart_Write(49);
//Separador
Usart_Write(';');
//Coluna
//11 = 49 ASCII "1"
Usart_Write(49);
Usart_Write(49);
//Finalizador
Usart_Write('H');
//Imprime Contador
inttostr(contador,TXT);
for(i=0;i<=5;i++)
Usart_Write(TXT[i]);
contador++;
delay_ms(100);
}
}
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
EXEMPLO EM ‘C’ – LEITURA DE UMA STRING DO TECLADO E CONSEQUENTEMENTE A IMPRESSÃO DA MESMA
– MODO SISTEMA OPERACIONAL
unsigned char Mensagem[80];
unsigned char dado_lido;
unsigned char received_byte;
void Usart_Write_Text(unsigned char *Texto)
{
while(!(*Texto == 0))
{
Usart_Write(*Texto++);
}
}
//Nova Rotina Leitura Usart que mostra dado lido
//Parametro = numero de caracteres maximo
void Usart_Read_Text_New(unsigned int tam)
{ unsigned char index_caractere;
//Ponteiro dentro do Registro
index_caractere = 0;
//Indica que nenhuma tecla foi pressionada
received_byte = 0;
//Buffer Recepcao
strcpy(Mensagem,"");
//Espera pressionar a tecla Enter para finalizar
while(!(received_byte == 13))
{
//Aguarda pressionar uma tecla
while(Usart_Data_Ready() == 0);
//Le Tecla
received_byte = Usart_Read();
//Se for Backspace
if(received_byte == 8)
{
if(index_caractere > 0)
{
//Se sim, volta
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
index_caractere = index_caractere - 1;
//E poe NULL no final
Mensagem[index_caractere] = 0;
//Imprime
Usart_Write(received_byte);
}
}
else
{
if(!(received_byte == 13))
{
//Nao deixa digitar mais que Tam caracteres
if(!(index_caractere==tam))
{
//Transforma em string
//Txt_Cat[0] = received_byte;
//Concatena
//strcat(Mensagem,Txt_Cat);
Mensagem[index_caractere] = received_byte;
//Imprime
index_caractere = index_caractere + 1;
Mensagem[index_caractere] = 0;
//Caso contrario avanca indice
Usart_Write(received_byte);
}
}
}
}
}
void main(){
Usart_Init(9600);
//Indice DB
while(1)
{
Usart_Write_Text("Entre com um texto");
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Usart_write(13);
Usart_write(10);
Usart_Read_Text_New(30);
Usart_write(13);
Usart_write(10);
Usart_Write_Text("Voce digitou");
Usart_write(13);
Usart_write(10);
Usart_Write_Text(mensagem);
Usart_write(13);
Usart_write(10);
}
}
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Interface com o com a USART
A tensão de trabalho do módulo VGA DEVE ser de 5V, o mesmo é utilizado para
alimentação do teclado PS2 e mouse PS2. Para alimentar o módulo, ligue pino 5 do
header PR1 em +5V e o pino 3 do header PR1 em GND. Veja imagem acima.
Antes de você conectar o seu micro controlador preferido, é necessário respeitar a
tensão dos pinos TXD e RXD do módulo.
Se seu micro controlador estiver trabalhando com TXD e RXD em 3.3V:
• Ligue o TXD do seu micro controlador no RXD do módulo (pino 2 do header
PR1)
• Ligue o RXD do seu micro controlador no TXD do módulo (pino 1 do header
PR1)
• Ligue o GND do seu micro controlador no GND do módulo (pino 3 do header
PR1)
Veja a imagem abaixo.
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Se seu micro controlador estiver trabalhando com TXD e RXD em 5V:
• Ligue o TXD do seu micro controlador no RXD do módulo (pino 2 do header
PR2) (há um divisor de tensão para baixar para tensão para 3.3V) (OPCIONAL)
• Ligue o RXD do seu micro controlador no TXD do módulo (pino 1 do header
PR2)
• Ligue o GND do seu micro controlador no GND do módulo (pino 3 do header
PR2)
Veja a imagem abaixo:
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Para resetar o módulo, o seu micro controlador deve jogar nível HIGH por alguns
milisegundos no pino 4 do header PR1 e então voltar a LOW. Você pode resetar
manualmente também, colocando um jumper e no header PR3 e então removê-lo.
Veja imagem abaixo:
tcpipchip@hotmail.com
WWW.BASIC4EVER.COM
Esquema elétrico
VIN3
AD
J1
VOUT 2
LM317
U4
10uF C1410uF
390R/1%/0RR13
240R/1%
R6
10uFC1510uF
VCC33
330RR7
D2
ADJ_1
VCC
12
X1
5Mhz
240R
R100
470
R101
240
R102
470
R103
240
R104
470
R105
240
R106
240
R107
12345678 9101112131415
1716
DB1D Connector 15
GND1k
R108
VCC
GND
11
22
3 344
55
66
K1
10K
R109
10K
R110
VCC33
GND
0.1uF
C200
VCC33 GNDA01 A12 A23
4
SCL6
SDA 5
8
WP7
Array
EEPRO
M
MN200
24LC128P
LOCAL_SCL
LOCAL_SDA
LOCAL_SCLLOCAL_SDA
12345
PR1
TX_PRORX_PRO
TX_PRORX_PRO
10KR111
10KR112
VCC33
VCC33
VCC
GND
0.1uFC201
0.1uFC202
0.1uFC203
0.1uFC204
GND
VCC33
BOE/6
P041
P142
P243
P344
P41
P52
P63
P74
P89
P910
P1011
P1112
P1213
P1314
P1415
P1516 P16 19P17 20P18 21P19 22P20 23P21 24P22 25P23 26P24 31P25 32P26 33P27 34P28 35P29 36P30 37P31 38
RES/7 XI 28
XO 29
GND5
GND17
GND27
GND39
VDD1 8
VDD1 18
VDD1 30
VDD1 40
U12
LPC2138
GND
VCC33
CC
B B
EE
Q807BCR135 DTR_PRO
GND
RESET_PRO
RESET_PRO
12
PR3
GND
P0_PRO
P1_PRO
P0_PROP1_PRO
CLK
DATA
11
22
3 344
55
66
K2
10KR811
10KR812
VCC33
VCC33
VCC
GND
P2_PRO
P3_PROCLK
DATA
P2_PROP3_PRO
GND
VCC
DTR_PRO
47KR113
10nF
C205
GND
20K
R66
39K
R55
RX_PRO (5V)
GND
RX_PRO
123
PR2
GNDRX_PRO (5V)TX_PRO
top related