Advertisement
RuiViana

Untitled

Jun 28th, 2015
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. /* Código de exemplo de ligação dois displays de 7 segmentos com PIC16F877A *
  2. * multiplexados. Para ser compilada com o PICC-CCS *
  3. * Autor: Nelson Camilo de Almeida *
  4. * www.pictronics.com.br *
  5. * Data 04/03/2011 */
  6.  
  7. #include <16F877A.h>
  8. #device adc=10
  9.  
  10. #FUSES NOWDT //No Watch Dog Timer
  11. #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
  12. #FUSES NOPUT //No Power Up Timer
  13. #FUSES NOPROTECT //Code not protected from reading
  14. #FUSES NODEBUG //No Debug mode for ICD
  15. #FUSES NOBROWNOUT //No brownout reset
  16. #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  17. #FUSES NOCPD //No EE protection
  18. #FUSES NOWRT //Program memory not write protected
  19.  
  20. #use delay(clock=20000000)
  21.  
  22. #define Display1 pin_c6 // Display 1 ligado ao pino pin_c6
  23. #define Display2 pin_c7 // Display 2 ligado ao pino pin_c7
  24.  
  25. byte const digito[] = { 0b10111111, // 0 Define cada segmento
  26. 0b10000110, // 1 dos valores mostrados
  27. 0b11011011, // 2 no display de LEDs
  28. 0b11001111, // 3 em binário para ficar
  29. 0b11100110, // 4 mais fácil de codificar
  30. 0b11101101, // 5 cada dígito dos valores
  31. 0b11111101, // 6 mostrados no display.
  32. 0b10000111, // 7
  33. 0b11111111, // 8
  34. 0b11100111};// 9
  35.  
  36. void main() // Função principal
  37. {
  38. int contador; // variável de contagem
  39. int unidade, dezena; // unidades da variável contador
  40.  
  41. setup_adc_ports(NO_ANALOGS); // Configura analógicos
  42. setup_adc(ADC_OFF); // ADC desligado
  43. setup_psp(PSP_DISABLED); // PSP desligado
  44. setup_spi(SPI_SS_DISABLED); // SPI delsigado
  45. setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Configura Timer 0
  46. setup_timer_1(T1_DISABLED); // Configura Timer 1
  47. setup_timer_2(T2_DISABLED,0,1); // Configura Timer 2
  48.  
  49.  
  50. while (true) // Loop infinito
  51. {
  52. for (contador = 0; contador != 100; contador++) // Contagem de 00 até 99
  53. {
  54. unidade = contador / 10; // Calcula a unidade
  55. dezena = contador - (unidade * 10); // Calcula a dezena
  56. output_b (digito[unidade]); // Apresenta Digito[unidade_do_contador]
  57. output_high (Display1); // Habilita display 1
  58. delay_ms (50); // Aguarda 50ms para dar uma pausa no PIC
  59. output_low (Display1); // Desabilita display 1
  60. output_b (digito[dezena]); // Apresenta Digito[dezena_do_contador]
  61. output_high (Display2); // Habilita display 2
  62. delay_ms (50); // Aguarda 50ms para dar uma pausa no PIC
  63. output_low (Display2); // Desabilita display 2
  64. }
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement