00001 #include "hc4led.h"
00002 #include "pic_serial.h"
00003
00004 void hc4led_setup() {
00005 spi_setup();
00006 }
00007
00008 uns8 hc4led_convert(uns8 digit) {
00009 switch (digit) {
00010 case ' ': return 0;
00011 case '0': return 126;
00012 case '1': return 24;
00013 case '2': return 109;
00014 case '3': return 61;
00015 case '4': return 27;
00016 case '5': return 55;
00017 case '6': return 115;
00018 case '7': return 28;
00019 case '8': return 127;
00020 case '9': return 31+32;
00021 case '\'': return 15;
00022 }
00023 }
00024
00025 void hc4led_write_str(char *data) {
00026
00027 uns8 count, digit;
00028 char converted[5];
00029
00030 count = 4;
00031 do {
00032 digit = data[count-1];
00033 converted[count-1] = hc4led_convert(digit);
00034 count--;
00035 } while (count > 0);
00036 count = 4;
00037 do {
00038 digit = converted[count-1];
00039 spi_write(digit);
00040 count--;
00041 } while (count > 0);
00042
00043 }
00044