Centro Tecnolgico de Mecatrnica / Centro Tecnolgico Automotivo
Disciplina PROGRAMAO Instrutor DANIEL CORTELETTI
SADA DE DADOS FORMATADA NO LCD Sada de dados quando enviamos uma informao qualquer para um perifrico de sada : Vdeo, impressora, disco. Para usar o LCD (padro HD!"#, $% colunas, & lin'as, modo (e)(o* como perifrico de sada, nes(e ma(erial ado(aremos a +i+lio(eca LCD.C includa no ca+eal'o dos nossos pro,ramas, e u(ili-aremos como padro a se,uin(e li,ao en(re o LCD e o ./C01C12301L4D10 P/C : PINOS PIC PINOS LCD B0 -- enable B1 -- rs B2 -- rw B4 -- D4 B5 -- D5 B6 -- D6 B7 -- D7 5s(a li,ao u(ili-a um displa6 de carac(eres em modo 7 fios8. 1+serve que so u(ili-adas ! li,a9es para enviar dados ao LCD, sendo que : so para con(role (5., 0; e 0<*, e so para os dados (um ni++le por ve-*. 2o en(an(o, para que o D/;PL4= acei(e es(e modo de li,ao, ele deve sofrer um processo de iniciali-ao. 5s(e processo implica no envio de al,uns sinais em seq>?ncia e (empos pr@de(erminados. Para reali-ar es(a iniciali-ao, podemos usar a funo lcd_init(), que es(A presen(e na +i+lio(eca lcd.c. 4o se enviar um dado ao LCD, u(ili-aremos a funo lcd_putc(CHAR). 1+serve que en(re os par?n(eses des(a funo, serA colocado o (e)(o ou o carac(ere a ser enviado ao LCD. Por(an(o, se e)ecu(armos a funo lcd_putc(!")# serA enviado ao LCD o carac(ere 7)8. ;e e)ecu(armos a funo lcd_putc($Ola %%%&)' serA enviada a mensa,em en(re as aspas duplas ao LCD. Caracteres especiais do lcd_putc : 4l,uns carac(eres podem ser enviados ao LCD pra promover con(role de posio, apa,ar ou re(roceder o cursor. 1 cursor um pon(o que pode ou no es(ar 'a+ili(ado, e que iden(ifica onde serA escri(o o prB)imo carac(ere. ;o carac(eres especiais do LCD : () limpe-a do displa6. 5s(a opo reinicia o displa6, limpando@o e posicionando o cursor na lin'a $ coluna $. (* re(orno de um carac(ere. 5s(a opo fa- com que o cursor re(roceda uma posio. (n 2ova lin'a. Posiciona o cursor na primeira coluna da se,unda lin'a do LCD. VeCa al,uns e)emplos de uso : Impresso em !/""/#$ ""%&#% AM' P(gina " Centro Tecnolgico de Mecatrnica / Centro Tecnolgico Automotivo Disciplina PROGRAMAO Instrutor DANIEL CORTELETTI +osicionando o cu,so, Para posicionar o cursor no LCD, podemos usar a funo lcd_-oto!.(!'.), onde ) e 6 so, respec(ivamen(e, a coluna e a lin'a onde o cursor deve ser reposicionado. Des(a forma, caso deseCe escrever al,o na primeira lin'a do displa6, sem apa,ar a se,unda lin'a, +as(a inserir o comando lcd_-oto!.(/'/). /sso irA posicionar o cursor na primeira lin'a, e primeira coluna. 2o en(an(o, (ome cuidado, pois uma ve- que o displa6 no foi apa,ado, as informa9es an(i,as permanecero na primeira lin'a, a menos que voc? as so+rescreva. Out,as )un01es pa,a o LCD Para rolar o con(eDdo do LCD um carac(ere para a direi(a, u(ili-e o comando lcd_send_*.te(2'2!/C*, ou caso es(eCas usando a +i+lio(eca LCD.C modificada, u(ili-e o comando lcd_s3i)t_,i-3t(). Para rolar o con(eDdo do LCD um carac(ere para a esquerda, u(ili-e o comando lcd_send_*.te(2'2!/4)' ou caso es(eCas usando a +i+lio(eca LCD.C modificada, u(ili-e o comando lcd_s3i)t_le)t(). 5)emplo de uso do recurso de rola,em do displa6: 4 se,uin(e seq>?ncia de comandos, ,era o efei(o de uma mensa,em rolando no displa6. Para isso, serA necessArio declarar uma variAvel do (ipo /23 c'amada E. int x; // essa varivel usada na rolage !!! l"d#$ut"%&'()*+,-).), /0D*1+2/)3 4 -5.)+2,0/.)67; (or %x 8 0; x 9 :5; x ;;7 // re$ete o blo"o abaixo $or :5 ve<es = dela>#s%:007; // te$o l"d#send#b>te%0?0x1@7; // rola dis$la> u "ara"tere $ara esAuerda B Para a(ivar o cursor, u(ili-e o comando lcd_send_*.te(2'2!2E)% Para a(ivar o cursor piscan(e, u(ili-e o comando lcd_send_*.te(2'2!2F)' e para desa(ivar o cursor, use lcd_send_*.te(2'2!2C)# Impresso em !/""/#$ ""%&#% AM' P(gina # Centro Tecnolgico de Mecatrnica / Centro Tecnolgico Automotivo Disciplina PROGRAMAO Instrutor DANIEL CORTELETTI 5so do +R6NTF 1 prin(f um comando +as(an(e con'ecido por pro,ramadores de lin,ua,em C. ;ua funo ,erar uma sada forma(ada, permi(indo Cun(ar (e)(o e informa9es con(idos em variAveis, ,erando uma seq>?ncia de carac(eres que podes ser enviada a qualquer funo de en(rada e sada de dados. ;ua u(ilidade clara quando precisamos reali-ar opera9es como a de escri(a de um valor numrico no LCD, ou enviar es(e valor via sada serial. 5)emplo de uso com o LCD : #include <16f877.h> #use delay (clock=4000000) #define use_por!_lcd rue #include <lcd.c> "oid #ain() $ in %&'() = 0* lcd_ini()* +hile(1) $ prinf(lcd_puc,-.fconando /> 0u-, %&'())* %&'() = %&'() 1 1* delay_#s(200)* 3 3 1 pro,rama acima reali-a uma con(a,em pro,ressiva, iniciando pelo valor -ero, e mos(rando um nDmero a cada :## milsimos de se,undo. Para se u(ili-ar o prin(f, devemos o+servar sua sin(a)e : Den(ro dos par?n(eses da funo prin(f, deve@se dispor os se,uin(es elemen(os, separados por vr,ulas : / 7 )un08o de sada. F a funo que irA rece+er a seq>?ncia de carac(eres cons(ruda pelo prin(f. 2es(a posio, e para o compilador em ques(o, voc? pode u(ili-ar qualquer funo que acei(e carac(eres como parGme(ros. Hsando@se a funo lcdIpu(c, o+(m@se a sada de dados no displa6 LCD. ;e es(e elemen(o for suprimido, a sada serA enviada ao disposi(ivo padro, que ,eralmen(e a por(a serial do microcon(rolador. 9 7 STR6N: ; F o (rec'o de carac(eres delimi(ado por aspas duplas, que irA definir como serA a seq>?ncia de carac(eres a ser ,erada. Den(ro das aspas, podem ser inseridos carac(eres de (e)(o, carac(eres especiais e especificadores de forma(o. 2o caso dos ca,acte,es especiais, por no possurem uma represen(ao impressa, so compos(os por uma +arra inver(ida se,uida de um sm+olo, ,eralmen(e uma le(ra. 5)emplo de carac(eres especiais : () (limpar displa6*, (n (nova lin'a*, (* (vol(ar um carac(ere*, (, (re(orno de carro*, (- (+eep*, e(c... 1+s: al,uns carac(eres especiais somen(e resul(aro efei(o em (erminais seriais. Impresso em !/""/#$ ""%&#% AM' P(gina ) Centro Tecnolgico de Mecatrnica / Centro Tecnolgico Automotivo Disciplina PROGRAMAO Instrutor DANIEL CORTELETTI JA os especi)icado,es de )o,<ato so os locais, em meio ao (e)(o, onde sero inseridas as variAveis que aparecero apBs a ;30/2K. Des(a forma, es(es especificadores devem o+edecer al,umas re,ras, de acordo com o (ipo da variAvel a ser impressa. 1+serve a se,uin(e (a+ela : Tipo de =a,i>=el Especi)icado, de )o,<ato e e!e<plos de uso s'or( ou in( ?u valor decimal (e): :#* ?! valor em 'e)adecimal (e): $D* ?@u valor decimal alin'ado com (r?s d,i(os (e): I:#* ?2@u valor decimal alin'ado : di,i(os cL -ero (e): #:#* si,ned in( ?i valor decimal com sinal. (e): @&* ?29i decimal com sinal, & casas e -eros a esq. (e): @#&* lon, in(:& ?lu valor decimal (e): $###*M ?2Alu valor decimal N casas cL -eros a esquerda. (e): #$###* si,ned lon, si,ned in(:& ?li valor decimal cL sinal (e): @N##* ?Bli valor decimal cL sinal alin'ado a esquerda (e): @IN##* floa( ?) valor real. 5): (&:.:$:N$* ?9%@) valor real cL & casas in(eiras, : decimais. 5): (&:.:$:* c'ar ?c carac(ere. 5): (4* @ 7 CAR6DCE6S : Deve ser u(ili-ada uma variAvel para cada especificador de forma(o da ;30/2K. 4s variAveis indicaro qual o valor que serA impresso no lu,ar de cada especificador de forma(o encon(rado. VeCa ao lado al,uns e)emplos de prin(f, e seus efei(os : 5)erccios : $* 1 pro,rama a+ai)o ,era um relB,io, que con(a 'oras, minu(os e se,undos. 2o en(an(o, al,umas lacunas devem se preenc'idas para que es(e pro,rama funcione. Complemen(e@as e e)ecu(e o pro,rama. Cin"lude 916(@77!DE Cuse dela> %"lo"F 8 ###############7 Cde(ine use#$ortb#l"d true // de(ine Aue o 3.D usar o G,2+B Cin"lude ############# // in"lui a bibliote"a 3.D!. void ain%7 = ##### H,2)80? -/0*+,80? 15I*0D,80; // de"lara variveis inteiras de @ bits ###########; // ini"iali<a"ao do dis$la> wDile%17 // laJo in(inito = dela>#s%####7; // te$o de 1 segundo 15I*0D, ;;; // auenta varivel 15I*0D, e ua unidade i( %15I*0D, ## 5K7 // se a varivel 15I*0D, (or aior Aue 5K = 15I*0D, 8 0; // <era a varivel 15I*0D, ########### // auenta a varivel -/0*+, e ua unidade B i( %##############7 // se a varivel -/0*+, (or aior Aue 5K = ############### // <era a varivel -/0*+, H,2) ;;; // auenta H,2) e ua unidade B $rint(%l"d#$ut"?6######################6? H,2)? ########? ##########7; B // ostra no dis$la> no (orato HHL--L11 B Impresso em !/""/#$ ""%&#% AM' P(gina * Centro Tecnolgico de Mecatrnica / Centro Tecnolgico Automotivo Disciplina PROGRAMAO Instrutor DANIEL CORTELETTI &* 4l(ere o pro,rama an(erior de forma que seCa emi(ido um aler(a sonoro sempre que um minu(o for incremen(ado. :* ;u,es(o de implemen(ao: 4 par(ir do pro,rama an(erior, crie um con(ador que, quando um de(erminado +o(o for pressionado, irA aumen(ar o valor e)i+ido no displa6 a cada um se,undo, e que com ou(ro +o(o pressionado, irA diminuir es(e valor. Impresso em !/""/#$ ""%&#% AM' P(gina &