Você está na página 1de 14

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS

CURSO TCNICO EM ELETRNICA

Projeto senha

Alunos: Adriel, Geraldo, Luciano, Marcus e Pedro


Turma: Eletrnica 2a
Disciplina: Introduo programao
Professor: Joel Santos

Belo Horizonte, Fevereiro de 2014

Projeto dos dispositivos externos do teclado


Para o projeto da fonte de tenso, levou-se em conta a facilidade de se encontrar seu valor e o
impacto de possveis variaes de seu mdulo: uma bateria de 12V com uma variao de 11,5V a
12,5V.
No caso das resistncias, necessrio que se obtenha no divisor de tenso produzido por elas um
valor diferente para cada tecla pressionada, levando-se em conta sua tolerncia de +-5% e a
variao da fonte. Por isso para seu clculo utilizou-se a situao extrema em que a fonte com
11,5V e a resistncia menor dever produzir uma queda superior da fonte com 12,5V e uma
resistncia maior:
11,5*0,95*Rf/(0,95*Rf+1,05*Rn) > 12,5*1,05*Rf/(1,05*Rf+0,95*Rn+1)
11,47*Rf+10,38*Rn+1 > 12,47*Rf+13,78*Rn

Rn+1 > (Rf+13,78Rn)/10,38


12,5*1,05*Rf/(1,05*Rf+0,95*R1) 1,5
13,125*Rf 1,575*Rf+1,425*R1
Rf 1,425*R1/11,55

=>

=>

Fixando-se R1 como 100, tem-se Rf = 12 e podemos preencher uma tabela com os valores das
resistncias, e os valores mximos e mnimos lidos pelo conversor A/D:
Valor ()

Rn+1 mnimo calculado

Leitura mnima

Leitura Mxima

R1

100

133,91

3074

3996

R2

150

200,28

2119

2773

R3

220

293,22

1476

1941

R4

330

439,25

1000

1319

R5

470

625,11

708

937

R6

680

903,89

493

653

R7

1K

1K329

337

447

R8

1K5

1K992

225

300

R9

2K2

2K922

154

205

R10

3K3

4K382

102

137

R11

4K7

72

97

Rf

12

No traz nenhum prejuzo ao projeto multiplicar todos os valores por potncias de 10, o que pode
ser til em situaes em que no se encontram seus valores.
A leitura mnima segue a equao:
Mnima: 4095*(11.5*0.95*12/(0.95*12+1.05*R))/1.5
Mxima: 4095*(12.5*1.05*12/(1.05*12+0.95*R))/1.5

Circuito externo

12V
+V
R1
100

S0

R2
150

S1

R3
220

S2

R4
330

S3

R5
470

S4

R6
680

S5

R7
1k

S6

R8
1k5

S7

R9
2k2

S8

R10
3k3

S9

R11
4k7

SENTER

U1
OPAMP5

R13
1k5

A0

+
R12
12

C1
100nF

Programa
#include"io430.h"
intKEY(void);
//Lteclaapertada
intRD_ADC(void);
//Converteparadigitalaentradaanalgica
voidLCDN(int);
//Nmeros,pontoseespaoLCD
voidLCDC(int);
//ControlaoLCD
voidLCDL(char);
//LetrasLCD
voidLCDF(int);
//FrasesLCD
voidDELAY(int);
//Atrasaoprograma

intmain()
{
unsignedintk,ka,mode=1,d,senha[5],entrada[5];
/*'k'controlaateclaapertadanaquelemomento;
'ka'controlaaltimateclaapertada;
Quando'mode'iguala0oprogramalerasenhaeperguntaraousurio
sedeseja
abriroudefinirnovasenha;
Quando'mode'iguala1omicrocontroladorabreaporta;
Quando'mode'iguala2ousuriocapazdedefinirnovasenha;
Ovetor'senha'armazenaasenha;
Ovetor'entrada'armazenaoqueousurioestdigitando.*/
WDTCLT=WDTPW|WDTHOLD; //Travaocodeguarda
P1DIR=0XFE;
//P1.0aentradaanalgica0
P2DIR=0XEF;
//P2.4recebeabusyflag
P1OUT=0X00;
P2OUT=0X00;
while(1)
{
while(mode!=1)
{
LCDC(2);
//CLEAR
if(mode==0)
LCDF(0);//Entrecomasenha
elseif(mode==2)
LCDF(1);
//Definasenha
DELAY(10000);//Esperaparaqueousurioleiaamensagem
LCDC(2);
for(d=0,k=0,ka=10;d<4;d++)
{
while(1)
{
LCDN(ka); //10equivaleabranco
k=KEY();
DELAY(500);
//Aguardaousuriotirarodedo
datecla
if(ka!=10&k==10)
break;
elseka=k;

}
LCDC(1);
//Passaparaoprximonmero
if(mode==0)
entrada[d]=ka;
elseif(mode==2)
senha[d]=ka;
ka=k;
}
LCDC(2);
LCDF(2);
//Confirmaasenha?
if(KEY()!=10) break;
elseif(mode==2)
{
mode=0;
break;
}
elseif(mode==0&entrada==senha)
{

do
{
LCDC(2);
LCDF(3);
//1)Abrir
2)Redefinirsenha
DELAY(10000);
LCDC(2);
while(1)
{
LCDN(ka);
k=KEY();
DELAY(500);
if(ka!=10&k==10)
break;
elseka=k;
}
LCDC(1);
}
while(ka!=0&ka!=1);
mode=ka;
ka=k;
break;
}
elseif(mode==0&entrada!=senha)
{
LCDC(2);
LCDF(4);
//SENHAINCORRETA
DELAY(10000);
}
}
while(mode==1)
{
LCDC(2);
LCDF(5);
//PressioneENTERparatravar
P1OUT|=0X08;
while(KEY()!=10);
P1OUT&=0XF7;
mode=0;
}
}
intKEY(void)

{
intn;
n=RD_ADC();
while(1)
{
if(n>3073&n<3997)
{

return(0);
break;
}
elseif(n>2118&n<2774)
{

return(1);
break;
}
elseif(n>1475&n<1942)
{

return(2);
break;
}
elseif(n>999&n<1318)
{

return(3);
break;
}
elseif(n>707&n<938)
{

return(4);
break;
}
elseif(n>492&n<654)
{

return(5);
break;
}
elseif(n>336&n<448)
{

return(6);
break;
}
elseif(n>224&n<301)
{

return(7);
break;
}
elseif(n>153&n<206)
{

return(8);
break;
}
elseif(n>101&n<138)
{

return(9);
break;
}
elseif(n>71&n<98)
{

return(10);
//ENTER
break;
}

}
}
intRD_ADC(void)
{
P6SEL|=0X01;
//HabilitaocanalA0paraconverso
ADC12CTL0=ADC12ON+SHT0_2;
//LigaADC12edefinetempodeamostragem
ADC12CTL1=SHP;
//Usarsamplingtimer
ADC12MCTL0=SREF_0;
//Vr+=1.5Vinterno
ADC12CTL0|=ENC;
//Habilitaconverso
ADC12CTL0|=ADC12SC; //Iniciaconverso
while((ADC12IFG&SIT0)==0);
return(ADC12MEM0);
}
voidLCDN(intn)
{
switch(n)
{

case0:

P2OUT=0X03;
P1OUT=0X06;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case1:

P2OUT=0X03;
P1OUT=0X16;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case2:

P2OUT=0X03;
P1OUT=0X26;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case3:

P2OUT=0X03;
P1OUT=0X36;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case4:

P2OUT=0X03;
P1OUT=0X46;
DELAY(100);
LCDC(0);
DELAY(100);
break;


case5:

P2OUT=0X03;
P1OUT=0X56;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case6:

P2OUT=0X03;
P1OUT=0X66;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case7:

P2OUT=0X03;
P1OUT=0X76;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case8:

P2OUT=0X03;
P1OUT=0X86;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case9:

P2OUT=0X03;
P1OUT=0X96;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case10:
//[ESPAO]
P2OUT=0X02;
P1OUT=0X06;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case11:
//[DOISPONTOS]
P2OUT=0X03;
P1OUT=0XA6;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case12:
//[PONTOFINAL]
P2OUT=0X02;
P1OUT=0XE6;

DELAY(100);
LCDC(0);
DELAY(100);
break;
case13:
//[EXCLAMAO]
P2OUT=0X02;
P1OUT=0X16;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case14:
//[INTERROGAO]
P2OUT=0X03;
P1OUT=0XF6;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case15:
//[Fechaparntese]
P2OUT=0X02;
P1OUT=0X96;
DELAY(100);
LCDC(0);
DELAY(100);
break;
}
}
voidLCDC(intc)
{
switch(c)
{
case0:
//Travar,ENABLEnvelbaixo
P1OUT&=0XFB;
break;
case1:
//Movecursorparaadireita
P1OUT=0X44;

P2OUT=0X01;
break;
case2:
//CLEAR
P2OUT=0X00;
P1OUT=0X14;
break;
}
}
voidLCDL(charl)
{
switch(l):
{
case'A':
P2OUT=0X04;
P1OUT=0X16;
DELAY(100);
LCDC(0);

DELAY(100);
break;
case'C':
P2OUT=0X04;
P1OUT=0X36;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'D':
P2OUT=0X04;
P1OUT=0X46;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'E':
P2OUT=0X04;
P1OUT=0X56;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'H':
P2OUT=0X04;
P1OUT=0X86;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'I':
P2OUT=0X04;
P1OUT=0X96;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'N':
P2OUT=0X04;
P1OUT=0XE6;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'O':
P2OUT=0X04;
P1OUT=0XF6;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'R':

P2OUT=0X05;
P1OUT=0X26;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'S':
P2OUT=0X05;
P1OUT=0X36;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'T':
P2OUT=0X05;
P1OUT=0X46;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'a':
P2OUT=0X06;
P1OUT=0X16;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'b':
P2OUT=0X06;
P1OUT=0X26;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'c':
P2OUT=0X06;
P1OUT=0X36;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'd':
P2OUT=0X06;
P1OUT=0X46;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'e':
P2OUT=0X06;
P1OUT=0X56;
DELAY(100);
LCDC(0);

DELAY(100);
break;
case'f':
P2OUT=0X06;
P1OUT=0X66;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'h':
P2OUT=0X06;
P1OUT=0X86;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'i':
P2OUT=0X06;
P1OUT=0X96;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'm':
P2OUT=0X06;
P1OUT=0XD6;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'n':
P2OUT=0X06;
P1OUT=0XE6;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'o':
P2OUT=0X06;
P1OUT=0XF6;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'p':
P2OUT=0X07;
P1OUT=0X06;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'r':

P2OUT=0X07;
P1OUT=0X26;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case's':
P2OUT=0X07;
P1OUT=0X36;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case't':
P2OUT=0X07;
P1OUT=0X46;
DELAY(100);
LCDC(0);
DELAY(100);
break;
case'v':
P2OUT=0X07;
P1OUT=0X66;
DELAY(100);
LCDC(0);
DELAY(100);
break;
}
}
voidLCDF(intf)
{
intcont;
charstr[32];

switch(f)
{
case0:
str="Entre0com0a0senha333";
break;

case1:
str="Defina0senha333";
break;

case2:
str="Confirma0senha4";
break;
case3:
str="15Abrir333025Redefinir0senha333";
break;
case4:
str="SENHA0INCORRETA6";
break;
case5:

str="ENTERparatravar333";
break;
}
for(cont=0;str[cont]!='\0';cont++)
{
if(str[cont]=='0')
LCDN(10);
elseif(str[cont]=='1')
LCDN(1);
elseif(str[cont]=='2')
LCDN(2);
elseif(str[cont]=='3')
LCDN(12);
elseif(str[cont]=='4')
LCDN(14);
elseif(str[cont]=='5')
LCDN(15);
elseif(str[cont]=='6')
LCDN(13);
elseLCDL(str[cont]);
LCDC(1);
}
}
voidDELAY(intd)
{
for(;d>0;d);
}

Você também pode gostar