Blame | Last modification | View Log | Download | RSS feed
#include "maindefs.h"#include "led_driver.h"#include "delays.h"/* Output Pins:* RA0 - LED Display Latch Enable (PPS)* RA1 - LED Display CLK (PPS)* RA2 - LED Display DIN (PPS)* RA3 - LED Display Output Enable (PPS)*/void led_driver_init() {TRISAbits.TRISA0 = 0; // LETRISAbits.TRISA1 = 0; // CLKTRISAbits.TRISA2 = 0; // DATTRISAbits.TRISA3 = 0; // OELATAbits.LATA0 = 0; // LELATAbits.LATA1 = 0; // CLKLATAbits.LATA2 = 0; // DATLATAbits.LATA3 = 0; // OEled_driver_data(0,0);}void led_driver_clock() {LATAbits.LATA1 = 0x1; // Simple clock output toggleNop();LATAbits.LATA1 = 0x0;Nop();}void led_driver_data(char left, char right) {int i;LATAbits.LATA0 = 0x0; // Set latch low to pause displayfor (i = 0; i < 8; i++) {LATAbits.LATA2 = right & 0x1; // Shift out right character firstled_driver_clock();right >>= 1;}for (i = 0; i < 8; i++) {LATAbits.LATA2 = left & 0x1; // Then shift out left characterled_driver_clock();left >>= 1;}LATAbits.LATA0 = 0x1; // Set latch high to resume display}void led_driver_num(unsigned char data) {unsigned char left = 0;unsigned char right = 0;unsigned char tmp = 0;// if (data > 99) {// led_driver_data(0,0);// return;// }// Determine right character (1s digit)tmp = data % 10;switch (tmp) {case 0:right = LED_CHAR_0;break;case 1:right = LED_CHAR_1;break;case 2:right = LED_CHAR_2;break;case 3:right = LED_CHAR_3;break;case 4:right = LED_CHAR_4;break;case 5:right = LED_CHAR_5;break;case 6:right = LED_CHAR_6;break;case 7:right = LED_CHAR_7;break;case 8:right = LED_CHAR_8;break;case 9:right = LED_CHAR_9;break;}// Determine left character (10s digit)tmp = data / 10;switch (tmp) {case 0:left = LED_CHAR_0;break;case 1:left = LED_CHAR_1;break;case 2:left = LED_CHAR_2;break;case 3:left = LED_CHAR_3;break;case 4:left = LED_CHAR_4;break;case 5:left = LED_CHAR_5;break;case 6:left = LED_CHAR_6;break;case 7:left = LED_CHAR_7;break;case 8:left = LED_CHAR_8;break;case 9:left = LED_CHAR_9;break;}led_driver_data(left, right);// if (data <= 25) {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_0);// } else if (data > 25 && data <= 50) {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_1);// } else if (data > 50 && data <= 75) {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_2);// } else if (data > 75 && data <= 100) {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_3);// } else if (data > 100 && data <= 125) {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_4);// } else if (data > 125 && data <= 150) {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_5);// } else if (data > 150 && data <= 175) {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_6);// } else if (data > 175 && data <= 200) {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_7);// } else if (data > 200 && data <= 225) {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_8);// } else {// led_driver_data(LED_CHAR_BLANK,LED_CHAR_9);// }}