main.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #include <msp430g2553.h>
  2. #include "char.c"
  3. // 74HC Pins
  4. #define DATA BIT0 //DS 1.0
  5. #define CLOCK BIT4 // SH_CP 1.4
  6. #define LATCH BIT5 // ST_CP 1.5
  7. //4017 Pins
  8. #define CLOCKCP BIT6 // Clock 1.2
  9. #define RESET BIT3 // Reset 1.3
  10. //Declaration des prototypes de fonctions
  11. void pushRegister(int val);
  12. void pinWrite(int bit, int val);
  13. void clearAll(void);
  14. //Declaration des vaiables
  15. unsigned int DisplayBuffer[]={0,0,0,0,0,0,0,0};
  16. unsigned int speed;
  17. short i, l, k, ShiftAmount, scroll, temp, shift_step=1;
  18. char message[]="Powered by MSP430";
  19. char index;
  20. void clearAll(void) {
  21. int i;
  22. P1OUT |= RESET;
  23. P1OUT &= ~RESET;
  24. P1OUT &= ~LATCH;
  25. for(i=0; i<8; i++) {
  26. pinWrite(DATA, 0);
  27. P1OUT |= CLOCK;
  28. P1OUT &= ~CLOCK;
  29. }
  30. P1OUT |= LATCH;
  31. }
  32. void main(void) {
  33. WDTCTL = WDTPW + WDTHOLD; //stop watchdog
  34. P1DIR |= (DATA + CLOCK + LATCH + CLOCKCP + RESET); //mise en sortie
  35. clearAll();
  36. while(1) {
  37. for(k=0; k<strlen(message); k++) {
  38. for(scroll=0; scroll<(8/shift_step); scroll++) {
  39. for(ShiftAmount=0; ShiftAmount<8; ShiftAmount++) {
  40. index = message[k];
  41. temp = CharData[index-32][ShiftAmount];
  42. DisplayBuffer[ShiftAmount] = (DisplayBuffer[ShiftAmount] << shift_step) | (temp >> ((8-shift_step)-scroll*shift_step));
  43. }
  44. speed = 15;
  45. for(l=0; l<speed; l++) {
  46. for(i=0; i<8; i++) {
  47. pushRegister(DisplayBuffer[i]);
  48. }
  49. P1OUT |= RESET;
  50. P1OUT &= ~RESET;
  51. }
  52. }
  53. }
  54. }
  55. }
  56. void pushRegister(int val) {
  57. P1OUT &= ~LATCH;
  58. int i;
  59. for(i=8; i>0; i--) {
  60. pinWrite(DATA, (val & (1 << i)));
  61. P1OUT |= CLOCK; //clock 74HC
  62. P1OUT &= ~CLOCK;
  63. }
  64. P1OUT |= LATCH;
  65. P1OUT &= ~LATCH;
  66. for(i=0; i<8; i++) {
  67. pinWrite(DATA, 0);
  68. P1OUT |= CLOCK; //clock 74hc
  69. P1OUT &= ~CLOCK;
  70. }
  71. P1OUT |= LATCH;
  72. P1OUT |= CLOCKCP; //clock 4017
  73. P1OUT &= ~CLOCKCP;
  74. }
  75. void pinWrite(int bit, int val) {
  76. if(val) P1OUT |= bit;
  77. else P1OUT &= ~bit;
  78. }