Autor Tema: lectura adc en lcd pero representado en barras  (Leído 6616 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re: lectura adc en lcd pero representado en barras
« Respuesta #15 en: 05 de Abril de 2014, 19:34:01 »
Hola que tal amigos :) !!! bueno me surgio otro problema con este programita :( les cuento a ver si alguien me puede ayudar lo que por ahi para uds es muy facil o sencillo se ve que para mi es todo lo contrario ja ja .Al grano: como ya les conte, el programa marca el angulo que se mueve el timon de un barco, mediante un potenciometro entro en el canal adc del pic y represento tanto en simbolos como en grados la posicion del cursor del potenciometro hasta aca todo funciona perfectamente el problema surge  que aunque el potenciometro no llegue de 0 a 5 volts (osea de 0 a 1023 en el adc )  la escala representada en la pantalla si tiene que llegar a los maximos para los dos lados ( la escala esta representada con un 0 al centro y aumentando cada 5º hasta un maximo de 35º tanto a un lado como al otro ) el tema es que al instalar esto yo tengo que colocar el potenciometro al centro donde me marcara el 0 y luego tendria que poder elegir una escala que cumpla con las condiciones de llegar tanto a un extremo como al otro marcando los 35º finales  y lo tengo que poder hacer con el programa y este es el desafio para mi , espero haberme expresado correctamente sino preguntenme a ver si los puedo orientar mas a mi problema y ojala me puedan ayudar  desde ya muchas gracias a todos,Saludos!!!!!
adujunto el programa
Código: C
  1. #include<16f88.h>
  2. #device adc =10
  3. #use delay (clock=4M)
  4. #fuses XT,NOWDT
  5. #include <lcd.c>
  6.  
  7.  
  8.  
  9. void main()
  10. {
  11.  
  12.  
  13. //***************************************
  14. int16 q;
  15.  
  16.   setup_adc_ports(sAN0|sAN1|sAN2|VSS_VDD);// habilitacion de canales adc >
  17.   setup_adc(ADC_CLOCK_DIV_2);            // solo para pic 16f88
  18.   set_adc_channel(0); //habilitacion canal 0
  19.   delay_us(20);
  20.  
  21. lcd_init();
  22.  
  23. while(1){
  24.  
  25. q = read_adc();     //lectura canal 0
  26.  
  27.  
  28. if (q==0)
  29. {
  30. output_high(PIN_a3);//led************************
  31. lcd_gotoxy(6,1);
  32. printf(lcd_putc,"35\337er   top");
  33.  
  34.  
  35. lcd_gotoxy(8,2);
  36. printf(lcd_putc,"|>>>>>>>>");
  37.  
  38. }
  39.  
  40. if (q<96&&q>0)
  41. {
  42. output_low(PIN_a3);//led************************
  43. lcd_gotoxy(6,1);
  44. printf(lcd_putc,"35\337er      ");
  45.  
  46. lcd_gotoxy(8,2);
  47. printf(lcd_putc,"|>>>>>>>>");
  48.  
  49. }
  50.  
  51. if (q<160&&q>96)
  52. {
  53.  
  54. lcd_gotoxy(6,1);
  55. printf(lcd_putc,"30\337er");
  56.  
  57. lcd_gotoxy(8,2);
  58. printf(lcd_putc,"|>>>>>>> ");
  59.  
  60. }
  61.  
  62. if (q<224&&q>160)
  63. {
  64.  
  65. lcd_gotoxy(6,1);
  66. printf(lcd_putc,"25\337er");
  67.  
  68. lcd_gotoxy(8,2);
  69. printf(lcd_putc,"|>>>>>>  ");
  70.  
  71. }
  72.  
  73. if (q<288&&q>224)
  74. {
  75.  
  76. lcd_gotoxy(6,1);
  77. printf(lcd_putc,"20\337er");
  78.  
  79. lcd_gotoxy(8,2);
  80. printf(lcd_putc,"|>>>>>   ");
  81.  
  82. }
  83.  
  84. if (q<352&&q>288)
  85. {
  86.  
  87. lcd_gotoxy(6,1);
  88. printf(lcd_putc,"15\337er");
  89.  
  90.  
  91. lcd_gotoxy(8,2);
  92. printf(lcd_putc,"|>>>    ");
  93.  
  94. }
  95. if (q<416&&q>352)
  96. {
  97.  
  98. lcd_gotoxy(6,1);
  99. printf(lcd_putc,"10\337er");
  100.  
  101.  
  102. lcd_gotoxy(8,2);
  103. printf(lcd_putc,"|>>     ");
  104.  
  105.  
  106.  
  107. }
  108.  
  109. if (q<480&&q>416)
  110. {
  111.  
  112. lcd_gotoxy(7,1);
  113. printf(lcd_putc,"5\337er");
  114.  
  115.  
  116. lcd_gotoxy(8,2);
  117. printf(lcd_putc,"|>      ");
  118.  
  119.  
  120.  
  121. }
  122. //**************a la via**************
  123. if  (q>480&&q<544)
  124. {
  125.  
  126. lcd_gotoxy(1,1);
  127. printf(lcd_putc,"       0        ");
  128.  
  129.  
  130.  
  131. lcd_gotoxy(1,2);
  132. printf(lcd_putc,"       |        ");
  133.  
  134. }
  135. //*****************************************
  136. if (q>544&&q<608)
  137. {
  138.  
  139.  
  140. lcd_gotoxy(7,1);
  141. printf(lcd_putc,"5\337br");
  142.  
  143.  
  144. lcd_gotoxy(1,2);
  145. printf(lcd_putc,"      <|       ");
  146.  
  147. }
  148.  
  149. if (q>608&&q<672)
  150. {
  151.  
  152.  
  153. lcd_gotoxy(6,1);
  154. printf(lcd_putc,"10\337br");
  155.  
  156.  
  157. lcd_gotoxy(1,2);
  158. printf(lcd_putc,"     <<|        ");
  159.  
  160. }
  161. if (q>672&&q<736)
  162. {
  163.  
  164.  
  165. lcd_gotoxy(6,1);
  166. printf(lcd_putc,"15\337br");
  167.  
  168.  
  169. lcd_gotoxy(1,2);
  170. printf(lcd_putc,"    <<<|        ");
  171.  
  172. }
  173. if (q>736&&q<800)
  174. {
  175.  
  176.  
  177. lcd_gotoxy(6,1);
  178. printf(lcd_putc,"20\337br");
  179.  
  180.  
  181. lcd_gotoxy(1,2);
  182. printf(lcd_putc,"   <<<<|        ");
  183.  
  184. }
  185.  
  186. if (q>800&&q<864)
  187. {
  188.  
  189.  
  190. lcd_gotoxy(6,1);
  191. printf(lcd_putc,"25\337br");
  192.  
  193.  
  194. lcd_gotoxy(1,2);
  195. printf(lcd_putc,"  <<<<<|        ");
  196.  
  197. }
  198.  
  199. if (q>864&&q<928)
  200. {
  201.  
  202.  
  203. lcd_gotoxy(6,1);
  204. printf(lcd_putc,"30\337br");
  205.  
  206.  
  207. lcd_gotoxy(1,2);
  208. printf(lcd_putc," <<<<<<|        ");
  209.  
  210. }
  211.  
  212. if (q>928&&q<992)
  213. {
  214. output_low(PIN_a4);//led************************
  215.  
  216. lcd_gotoxy(1,1);
  217. printf(lcd_putc,"     35\337br      ");
  218.  
  219.  
  220. lcd_gotoxy(1,2);
  221. printf(lcd_putc,"<<<<<<<|        ");
  222.  
  223. }
  224.  
  225. if (q>992&&q<1023)
  226. {
  227. output_high(PIN_a4);//led************************
  228.  
  229. lcd_gotoxy(1,1);
  230. printf(lcd_putc,"top  35\337br      ");
  231.  
  232.  
  233. lcd_gotoxy(1,2);
  234. printf(lcd_putc,"<<<<<<<|        ");
  235.  
  236. }
  237. }
  238. }
El tiempo es una ilusión ,solo existe el presente................

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: lectura adc en lcd pero representado en barras
« Respuesta #16 en: 05 de Abril de 2014, 19:51:21 »
Porque habrias de calibrar justo al centro tu potenciometro, con lo dificil que es??

Mejor hacer una rutina de calibracion que contemple calibracion del cero y del tope.
Aclaracion: El pote debe ser de escala lineal!!

seria mas o menos asi:
  • Pones el potenciometro en su punto cero del recorrido, y tomas varias muestras del conversor A/D, las promedias y guardas ese valor.
  • Pones el potenciometro en su punto maximo del recorrido, y tomas varias muestras del conversor A/D, las promedias y guardas ese valor.
  • Haces la resta entre este ultimo valor y el anterior (maximo - cero) y consigues el valor que tendra tu punto medio, lo guardas para usarlo en otra variable.
  • Le asignas a cada variacion de grados el valor que corresponde segun la escala.

En tu programa muestreas el conversor A/D y para representar los grados solo buscas el valor al cual corresponden, y muestras tantas barras como debas hacerlo. :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re: lectura adc en lcd pero representado en barras
« Respuesta #17 en: 06 de Abril de 2014, 11:46:29 »
Hola MGLSOFT  te agradezco mucho tu respuesta :lol: pero estoy demasiado verde para hacer lo que me propones ,entiendo que  debe ser la mejor opcion para hacerlo pero hasta ahora solo me doy cuenta de como leer el adc y poder representarlo en la lcd ; por eso pensaba que tal vez se podian hacer un par de tablas y seleccionar la que mas se acercaba al rango de escala que necesitaba ya que no necesito tanta presicion , bueno soy conciente de todo lo que me falta aprender asi que  seguire leyendo y tratare de hacer algun curso  personalizado o algo asi . Muchas gracias por tu ayuda  :)   Saludos desde mar del plata !!!
El tiempo es una ilusión ,solo existe el presente................

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re: lectura adc en lcd pero representado en barras
« Respuesta #18 en: 17 de Abril de 2014, 08:35:11 »
Hola amigos !!! vulevo al tema ya que estuve trabajando bastante en el y lo eh modificado bastante , tanto que lo de la representacion de la lectura en barras ya no es un problema por que decidi usar un caracter convencional  .
Bueno el tema ahora es que decidi hacer regulaciones a las escalas, es decir usar 4 canales adc: con uno fijar el parametro de uno de los topes, con otro regular el centro, con otro el otro tope y con el ultimo el cursor que es el que lee los datos e imprime en pantalla , pero lo que me esta sucediendo es que me lee solo los datos de un tope y el del centro, es como si no se estuviese cumpliendo la funcion que hace las cuentas no le encuentro cual puede ser el error . Adjunto el nuevo programa a ver si alguien me puede ayudar .Desde ya muchas gracias !!!!  :)
PD: solo para reducir el programa y sea mas entendible, puse la lectura de un solo lado
Código: C
  1. #include<16f88.h>
  2. #device adc =10
  3. #use delay (clock=4M)
  4. #fuses XT,NOWDT
  5. #include <lcd.c>
  6.  
  7.                      
  8. int16 a=0,b=0,c=0,d=0,e=0,f=0;
  9. int16 cursor=0,toper=0,topbr=0,cero=0;
  10. int16 resultadoEr =0;
  11. int16 calculoBandaEr(int16 cero,int16 toper);
  12.  
  13.  
  14. void main()
  15. {
  16.    
  17.      setup_adc_ports(sAN0|sAN1|sAN2|VSS_VDD);// habilitacion de canales adc >
  18.      setup_adc(ADC_CLOCK_DIV_2);            
  19.    
  20.      lcd_init();
  21.    
  22. while(1){
  23.  
  24.     set_adc_channel(0);
  25.    delay_us(20);
  26.    cero=read_adc();//varlable que se ajustara solo cuando se calibre el instrumento
  27.  
  28.    //****************************************************************
  29.  
  30.    set_adc_channel(1);
  31.    delay_us(20);
  32.    toper=read_adc(); //varlable que se ajustara solo cuando se calibre el instrumento
  33.    
  34.    int16 resultadoEr= calculoBandaEr(cero,toper);// funcion que hace las cuentas para representar la escala
  35.    
  36.    a=resultadoEr*2;
  37.    b=resultadoEr*3;
  38.    c=resultadoEr*4;
  39.    d=resultadoEr*5;  
  40.    e=resultadoEr*6;  
  41.    f=resultadoEr*7;
  42.    
  43.    //*********************************************************
  44.    set_adc_channel(2); //habilitacion canal 2
  45.    delay_us(20);
  46.    cursor=read_adc();     //lectura canal 2 a variable cursor
  47.    
  48.    //*********************************************
  49.  
  50.  
  51. if(cursor==toper)
  52.   {
  53.   output_high(PIN_a3);//led************************
  54.   lcd_gotoxy(1,1);
  55.   printf(lcd_putc,"      35\337er  top ");
  56.   lcd_gotoxy(1,2);
  57.   printf(lcd_putc,"       |>>>>>>>>");
  58.  
  59.   }
  60.  
  61. if (cursor==a)
  62. {
  63.  
  64. lcd_gotoxy(1,1);
  65. printf(lcd_putc,"      30\337er     ");
  66. lcd_gotoxy(1,2);
  67. printf(lcd_putc,"       |>>>>>>> ");
  68.  
  69. }
  70. if(cursor==b)
  71. {
  72. lcd_gotoxy(1,1);
  73. printf(lcd_putc,"      25\337er     ");
  74. lcd_gotoxy(1,2);
  75. printf(lcd_putc,"       |>>>>>>  ");
  76. }
  77. if (cursor==c)
  78. {
  79. lcd_gotoxy(1,1);
  80. printf(lcd_putc,"      20\337er     ");
  81. lcd_gotoxy(1,2);
  82. printf(lcd_putc,"       |>>>>>   ");
  83. }
  84.  
  85. if (cursor==d)
  86. {
  87. lcd_gotoxy(1,1);
  88. printf(lcd_putc,"      15\337er    ");
  89. lcd_gotoxy(1,2);
  90. printf(lcd_putc,"       |>>>    ");
  91. }
  92. if (cursor==e)
  93. {
  94.  
  95. lcd_gotoxy(1,1);
  96. printf(lcd_putc,"      10\337er    ");
  97. lcd_gotoxy(1,2);
  98. printf(lcd_putc,"       |>>     ");
  99. }
  100. if(cursor==f)
  101. {
  102. lcd_gotoxy(1,1);
  103. printf(lcd_putc,"       5\337er    ");
  104. lcd_gotoxy(1,2);
  105. printf(lcd_putc,"       |>       ");
  106. }
  107.  
  108. if (cursor==cero)
  109. {
  110.   lcd_gotoxy(1,1);
  111.   printf(lcd_putc,"       0        ");
  112.   lcd_gotoxy(1,2);
  113.   printf(lcd_putc,"       |        ");
  114. }
  115.  
  116.  
  117.  
  118. }
  119.  
  120. }
  121.   int16 calculoBandaEr(int16 cero, int16 toper){
  122. int16 resultadoEr =0;
  123.  
  124.     resultadoEr=(cero-toper)/7;
  125.    return resultadoEr;
  126.    
  127.  }
El tiempo es una ilusión ,solo existe el presente................

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 112
Re: lectura adc en lcd pero representado en barras
« Respuesta #19 en: 18 de Abril de 2014, 13:18:00 »
lo primero que veo es el clok adc es muy rapido

ADC_CLOCK_DIV_2      1.25Mhz
ADC_CLOCK_DIV_4       2.5Mhz
ADC_CLOCK_DIV_8      5Mhz en este caso seria este
"La curiosidad mato al gato, pero murio sabiendo"

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re: lectura adc en lcd pero representado en barras
« Respuesta #20 en: 19 de Abril de 2014, 16:04:34 »
Gracias Allennet por tu respuesta , lo acabo de probar pero tampoco funciona le he sacado las cuentas de dentro del while y funciona mejor osea me imprime los resultados pero me hace fallas tanto en el centro como en el tope bueno seguire probando , gracias por tu aporte .Saludos !!!
El tiempo es una ilusión ,solo existe el presente................

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 112
Re: lectura adc en lcd pero representado en barras
« Respuesta #21 en: 20 de Abril de 2014, 11:25:18 »
lo revise otra vez, tomaste los valores de la resta de toper - cero invertido y se desbordaba dando numeros cercanos a 65000
le agrege un goto tambien esta funvcionando  :-/
"La curiosidad mato al gato, pero murio sabiendo"

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re: lectura adc en lcd pero representado en barras
« Respuesta #22 en: 21 de Abril de 2014, 08:17:47 »
Si ahi funciona , muchas gracias ALLENNET si estaba teniendo un problema en las cuentas y ademas poniendo el conversor como me dijiste funciona correctamente , te agradezco mucho por tu ayuda y dedicacion  ((:-)) aca subo la parte del codigo y cuando lo termine lo subo completo SALUDOS!!!
Código: C
  1. #include<16f88.h>
  2. #device adc =10
  3. #use delay (clock=4M)
  4. #fuses XT,NOWDT
  5. #include <lcd.c>
  6.                      
  7. int16 calculoBandaEr(int16 cero,int16 toper);
  8. int16 z=0, a=0,b=0,c=0,d=0,e=0,f=0;
  9.  
  10. //int16 calculoBandaBr(int16 cero, int16 topbr);
  11. //int16 g=0,h=0,i=0,j=0,k=0,l=0,m=0;
  12.  
  13. int16 cursor=0,toper=0,topbr=0,cero=0;
  14. int16 resultadoEr =0;
  15.  
  16.  
  17. void main()
  18. {
  19.    
  20.    setup_adc_ports (sAN0|sAN1|sAN2|sAN3|VSS_VDD); // habilitacion de canales adc >
  21.    setup_adc (ADC_CLOCK_DIV_8); // ayuda Allennet
  22.    
  23.    
  24.    
  25.    set_adc_channel (0);
  26.    delay_us (20);
  27.   topbr = read_adc ();
  28. //resultadoBr = calculoBandaBr(topbr,cero);
  29.  
  30.    set_adc_channel (3);
  31.    delay_us (20);
  32.    cero = read_adc();
  33.  
  34.    set_adc_channel (1);
  35.    delay_us (20);
  36.    toper = read_adc ();
  37.    
  38.    resultadoEr = calculoBandaEr (cero, toper);
  39.    z=  resultadoEr + toper;
  40.    a = (resultadoEr * 3)+toper;
  41.    b =( resultadoEr * 4)+toper;
  42.    c =( resultadoEr * 5)+toper;
  43.    d =( resultadoEr * 6)+toper;
  44.    e =( resultadoEr * 7)+toper;
  45.    f =( resultadoEr * 8)+toper;
  46.  
  47.     lcd_init ();
  48.    
  49.    WHILE (1) {        
  50.      
  51.        
  52.       //*********************************************************
  53.       set_adc_channel (2); //habilitacion canal 0
  54.       delay_us (20);
  55.       cursor = read_adc (); //lectura canal 2 a variable cursor
  56.      
  57.       //*********************************************
  58.         IF (cursor >0 && cursor<= toper)
  59.       {
  60.    
  61.          output_high (PIN_a3); //led************************
  62.          lcd_gotoxy (1,1) ;
  63.          printf (lcd_putc, "      40\337er top ");
  64.          lcd_gotoxy (1, 2) ;
  65.          printf (lcd_putc, "       |>>>>>>>>");
  66.       }
  67.         IF (cursor > toper && cursor <=z)
  68.       {
  69.          lcd_gotoxy (1,1) ;
  70.          printf (lcd_putc, "      35\337er     ");
  71.          lcd_gotoxy (1, 2) ;
  72.          printf (lcd_putc, "       |>>>>>>>>");
  73.       }
  74.  
  75.       IF (cursor >z && cursor <a)
  76.       {
  77.      
  78.          lcd_gotoxy (1, 1) ;
  79.          printf (lcd_putc, "      30\337er     ") ;
  80.          lcd_gotoxy (1, 2) ;
  81.          printf (lcd_putc, "       |>>>>>>> ");
  82.       }
  83.    
  84.       IF (cursor >a &&cursor<b)
  85.       {
  86.    
  87.          lcd_gotoxy (1, 1) ;
  88.          printf (lcd_putc, "      25\337er     ") ;
  89.          lcd_gotoxy (1, 2) ;
  90.          printf (lcd_putc, "       |>>>>>> ");
  91.       }
  92.  
  93.       IF (cursor >b && cursor<c)
  94.       {
  95.      
  96.          lcd_gotoxy (1, 1) ;
  97.          printf (lcd_putc, "      20\337er     ") ;
  98.          lcd_gotoxy (1, 2) ;
  99.          printf (lcd_putc, "       |>>>>>   ");
  100.       }
  101.  
  102.       IF (cursor >c && cursor<d)
  103.       {
  104.    
  105.          lcd_gotoxy (1, 1) ;
  106.          printf (lcd_putc, "      15\337er     ");
  107.          lcd_gotoxy (1, 2) ;
  108.          printf (lcd_putc, "       |>>>        ");
  109.       }
  110.  
  111.       IF (cursor >d && cursor<e)
  112.       {
  113.    
  114.          lcd_gotoxy (1, 1) ;
  115.          printf (lcd_putc, "      10\337er     ");
  116.          lcd_gotoxy (1, 2) ;
  117.          printf (lcd_putc, "       |>>         ") ;
  118.       }
  119.  
  120.       IF (cursor>e&&cursor<f)
  121.       {
  122.    
  123.          lcd_gotoxy (1, 1) ;
  124.          printf (lcd_putc, "       5\337er     ");
  125.          lcd_gotoxy (1, 2) ;
  126.          printf (lcd_putc, "       |>         ");
  127.       }
  128.  
  129.       IF (cursor == cero)
  130.       {
  131.    
  132.          lcd_gotoxy (1, 1) ;
  133.          printf (lcd_putc, "       0        ");
  134.          lcd_gotoxy (1, 2) ;
  135.          printf (lcd_putc, "       |        ");
  136.       }
  137.    }
  138. }
  139.  
  140. //funcion
  141. int16 calculoBandaEr(INT16 cero, int16 toper)
  142. {
  143.    
  144.    RETURN (cero - toper) / 8;
  145. }
  146. int16 calculoBandaBr(INT16 cero, int16 topbr)
  147. {
  148.    
  149.    RETURN ( topbr -cero ) / 8;
  150. }
« Última modificación: 21 de Abril de 2014, 19:03:03 por arielmdq »
El tiempo es una ilusión ,solo existe el presente................

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re: lectura adc en lcd pero representado en barras
« Respuesta #23 en: 21 de Abril de 2014, 19:22:05 »
Bueno solucionados los inconvenientes,ya esta el programa funcionando :-/, al menos en la simulacion, ahora lo voy a hacer fisico espero salga todo bien y despues les cuento ,AGRADEZCO  a todos los que me ayudaron  :) aqui va el codigo completo Sauldos !!!
Código: C
  1. #include<16f88.h>
  2. #device adc =10
  3. #use delay (clock=4M)
  4. #fuses XT,NOWDT
  5. #include <lcd.c>
  6.                      
  7. int16 calculoBandaEr(int16 cero,int16 toper);
  8. int16 z=0, a=0,b=0,c=0,d=0,e=0,f=0;
  9.  
  10. int16 calculoBandaBr(int16 cero, int16 topbr);
  11. int16 g=0,h=0,i=0,j=0,k=0,l=0,m=0;
  12.  
  13. int16 cursor=0,toper=0,topbr=0,cero=0;
  14. int16 resultadoEr =0,resultadoBr =0;
  15.  
  16.  
  17. void main()
  18. {
  19.    
  20.    setup_adc_ports (sAN0|sAN1|sAN2|sAN3|VSS_VDD);
  21.    setup_adc (ADC_CLOCK_DIV_8);
  22.    set_tris_a(0b00001111);
  23.     //*************************************************************************
  24.  
  25.    set_adc_channel (3);
  26.    delay_us (20);
  27.    cero = read_adc();
  28. //***************************************************************************
  29.        
  30.    set_adc_channel (0);
  31.    delay_us (20);
  32.    topbr = read_adc ();
  33.    resultadoBr = calculoBandaBr(topbr,cero);//( topbr -cero ) / 8;
  34.    g = resultadoBr + cero;
  35.    h =cero+resultadoBr+resultadoBr;
  36.    i =cero+(resultadoBr*3);
  37.    j =cero+(resultadoBr*4);
  38.    k =cero+(resultadoBr*5);
  39.    l =cero+(resultadoBr*6);
  40.    m =cero+(resultadoBr*7);
  41.    
  42.  
  43.    set_adc_channel (1);
  44.    delay_us (20);
  45.    toper = read_adc ();
  46.    
  47.    resultadoEr = calculoBandaEr (cero, toper);
  48.    z=  resultadoEr + toper;
  49.    a = (resultadoEr * 3)+toper;
  50.    b =( resultadoEr * 4)+toper;
  51.    c =( resultadoEr * 5)+toper;
  52.    d =( resultadoEr * 6)+toper;
  53.    e =( resultadoEr * 7)+toper;
  54.    f =( resultadoEr * 8)+toper;
  55.  
  56.        
  57.    lcd_init ();
  58.    
  59.    WHILE (1) {    
  60.        
  61.       //*********************************************************
  62.       set_adc_channel (2);
  63.       delay_us (20);
  64.       cursor = read_adc ();
  65.      
  66.       //*********************************************
  67.         IF (cursor >0 && cursor<= toper)
  68.       {
  69.    
  70.         // output_high (PIN_a3); //led************************
  71.          lcd_gotoxy (1,1) ;
  72.          printf (lcd_putc, "      40\337er top ");
  73.          lcd_gotoxy (1, 2) ;
  74.          printf (lcd_putc, "       |>>>>>>>>");
  75.       }
  76.         IF (cursor > toper && cursor <=z)
  77.       {  
  78.          lcd_gotoxy (1,1) ;
  79.          printf (lcd_putc, "      35\337er     ");
  80.          lcd_gotoxy (1, 2) ;
  81.          printf (lcd_putc, "       |>>>>>>>>");
  82.       }
  83.  
  84.       IF (cursor >z && cursor <a)
  85.       {
  86.      
  87.          lcd_gotoxy (1, 1) ;
  88.          printf (lcd_putc, "      30\337er     ") ;
  89.          lcd_gotoxy (1, 2) ;
  90.          printf (lcd_putc, "       |>>>>>>> ");
  91.       }
  92.    
  93.       IF (cursor >a &&cursor<b)
  94.       {
  95.    
  96.          lcd_gotoxy (1, 1) ;
  97.          printf (lcd_putc, "      25\337er     ") ;
  98.          lcd_gotoxy (1, 2) ;
  99.          printf (lcd_putc, "       |>>>>>> ");
  100.       }
  101.  
  102.       IF (cursor >b && cursor<c)
  103.       {
  104.      
  105.          lcd_gotoxy (1, 1) ;
  106.          printf (lcd_putc, "      20\337er     ") ;
  107.          lcd_gotoxy (1, 2) ;
  108.          printf (lcd_putc, "       |>>>>>   ");
  109.       }
  110.  
  111.       IF (cursor >c && cursor<d)
  112.       {
  113.    
  114.          lcd_gotoxy (1, 1) ;
  115.          printf (lcd_putc, "      15\337er     ");
  116.          lcd_gotoxy (1, 2) ;
  117.          printf (lcd_putc, "       |>>>        ");
  118.       }
  119.  
  120.       IF (cursor >d && cursor<e)
  121.       {
  122.    
  123.          lcd_gotoxy (1, 1) ;
  124.          printf (lcd_putc, "      10\337er     ");
  125.          lcd_gotoxy (1, 2) ;
  126.          printf (lcd_putc, "       |>>         ") ;
  127.       }
  128.  
  129.       IF (cursor>e&&cursor<f)
  130.       {
  131.    
  132.          lcd_gotoxy (1, 1) ;
  133.          printf (lcd_putc, "       5\337er     ");
  134.          lcd_gotoxy (1, 2) ;
  135.          printf (lcd_putc, "       |>         ");
  136.       }
  137. //*****************************************************************************
  138.       IF (cursor == cero)
  139.       {
  140.    
  141.          lcd_gotoxy (1, 1) ;
  142.          printf (lcd_putc, "       0        ");
  143.          lcd_gotoxy (1, 2) ;
  144.          printf (lcd_putc, "       |        ");
  145.       }
  146. //*****************************************************************************      
  147.    if (cursor>cero&&cursor<g)
  148.        {
  149.    lcd_gotoxy(1,1);
  150.    printf(lcd_putc,"       5\337br  ");
  151.    lcd_gotoxy(1,2);
  152.    printf(lcd_putc,"      <|       ");
  153.  
  154.    }
  155.  
  156.    if (cursor>g&&cursor<h)
  157.    {
  158.    lcd_gotoxy(1,1);
  159.    printf(lcd_putc,"      10\337br   ");
  160.    lcd_gotoxy(1,2);
  161.    printf(lcd_putc,"     <<|        ");
  162.  
  163.    }
  164.    if (cursor>h&&cursor<i)
  165.    {
  166.    lcd_gotoxy(1,1);
  167.    printf(lcd_putc,"      15\337br   ");
  168.    lcd_gotoxy(1,2);
  169.    printf(lcd_putc,"    <<<|        ");
  170.  
  171.    }
  172.    if (cursor>i&&cursor<j)
  173.    {
  174.    lcd_gotoxy(1,1);
  175.    printf(lcd_putc,"      20\337br    ");
  176.    lcd_gotoxy(1,2);
  177.    printf(lcd_putc,"   <<<<|        ");
  178.  
  179.    }
  180.    if (cursor>j&&cursor<k)
  181.    {
  182.    lcd_gotoxy(1,1);
  183.    printf(lcd_putc,"      25\337br    ");
  184.    lcd_gotoxy(1,2);
  185.    printf(lcd_putc,"  <<<<<|        ");
  186.  
  187.    }
  188.  
  189.    if (cursor>k&&cursor<l)
  190.    {
  191.    lcd_gotoxy(1,1);
  192.    printf(lcd_putc,"      30\337br    ");
  193.    lcd_gotoxy(1,2);
  194.    printf(lcd_putc," <<<<<<|        ");
  195.  
  196.    }
  197.  
  198.    if (cursor>l&&cursor<m)
  199.    {
  200.    lcd_gotoxy(1,1);
  201.    printf(lcd_putc,"      35\337br      ");
  202.    lcd_gotoxy(1,2);
  203.    printf(lcd_putc,"<<<<<<<|        ");
  204.  
  205.    }
  206.  
  207.    if (cursor>m&&cursor<=topbr)
  208.    {
  209.  //  output_high(PIN_a4);//led************************
  210.  
  211.    lcd_gotoxy(1,1);
  212.    printf(lcd_putc,"top   40\337br      ");
  213.    lcd_gotoxy(1,2);
  214.    printf(lcd_putc,"<<<<<<<|        ");
  215.  
  216. }
  217.      
  218.    }
  219. }
  220.  
  221.  
  222. //funciones*********************************************
  223.  
  224. int16 calculoBandaEr(int16 cero, int16 toper)
  225. {
  226.    
  227.    RETURN (cero - toper) / 8;
  228. }
  229. int16 calculoBandaBr(int16 topbr,int16 cero )
  230. {
  231.    
  232.    RETURN ( topbr -cero ) / 8;
  233. }
 
« Última modificación: 21 de Abril de 2014, 20:16:33 por arielmdq »
El tiempo es una ilusión ,solo existe el presente................