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