#include "lcdDrv.h" //This code demostrates how to write characters on the LCD of PICDEM LCD board. //Below is the mapping between segments on the LCD and registers in the microcontroller ///////////////////////////////////////////////////////////////////////////////////////// // LCD Configuration // ///////////////////////////////////////////////////////////////////////////////////////// // Digit segments A B C D E F G H I J K L M N DP CA // b7 b6 b5 b4 b3 b2 b1 b0 #define DIGIT1 COM0+29, COM1+29, COM2+29, COM2+30, COM3+30, COM3+29, COM3+28, COM0+31, COM0+28, COM1+28, COM2+28, COM3+31, COM2+31, COM1+31, COM1+30, COM0+30 #define DIGIT2 COM0+25, COM1+25, COM2+25, COM2+26, COM3+26, COM3+25, COM3+24, COM0+27, COM0+24, COM1+24, COM2+24, COM3+27, COM2+27, COM1+27, COM1+26, COM0+26 #define DIGIT3 COM0+21, COM1+21, COM2+21, COM2+22, COM3+22, COM3+21, COM3+20, COM0+23, COM0+20, COM1+20, COM2+20, COM3+23, COM2+23, COM1+23, COM1+22, COM0+22 #define DIGIT4 COM0+17, COM1+17, COM2+17, COM2+18, COM3+18, COM3+17, COM3+16, COM0+19, COM0+16, COM1+16, COM2+16, COM3+19, COM2+19, COM1+19, COM1+18, COM0+18 #define DIGIT5 COM0+13, COM1+13, COM2+13, COM2+14, COM3+14, COM3+13, COM3+12, COM0+15, COM0+12, COM1+12, COM2+12, COM3+15, COM2+15, COM1+15, COM1+14, COM0+14 #define DIGIT6 COM0+9, COM1+9, COM2+9, COM2+10, COM3+10, COM3+9, COM3+8, COM0+11, COM0+8, COM1+8, COM2+8, COM3+11, COM2+11, COM1+11, COM1+10, COM0+10 #define DIGIT7 COM0+5, COM1+5, COM2+5, COM2+6, COM3+6, COM3+5, COM3+4, COM0+7, COM0+4, COM1+4, COM2+4, COM3+7, COM2+7, COM1+7, COM1+6, COM0+6 #define DIGIT8 COM0+1, COM1+1, COM2+1, COM2+2, COM3+2, COM3+1, COM3, COM0+3, COM0, COM1, COM2, COM3+3, COM2+3, COM1+3, COM1+2, COM0+2 ///////////////////////////////////////////////////////////////////////////////////////// //counter for the FOR loop int16 x; // character 0 1 2 3 4 5 6 7 8 9 long const Digit_Map[10] = {0xFC00,0x6040,0xDA20,0xF220,0x6620,0xB620,0xBE20,0xE000,0xFE20,0xE620}; void main() { //Initialization code from CCS compiler. setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_OFF|ADC_TAD_MUL_0); setup_spi(SPI_SS_DISABLED); setup_lcd(LCD_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); //initialize the lcd. First parameter indicates that we will use all 4 COMS. setup_lcd(LCD_MUX14,2); lcd_symbol(Digit_Map[0],DIGIT1); //write '0' on digit 1 lcd_symbol(Digit_Map[1],DIGIT2); //write '1' on digit 2 lcd_symbol(Digit_Map[2],DIGIT3); //write '2' on digit 3 lcd_symbol(0x154,DIGIT4); //write 'X' on digit 4 delay_ms(2000); //On every digit, cycle each segment from A to I one by one for(x=0x8000;x>=1;x/=2){ lcd_symbol(x,DIGIT8); lcd_symbol(x,DIGIT7); lcd_symbol(x,DIGIT6); lcd_symbol(x,DIGIT5); lcd_symbol(x,DIGIT5); lcd_symbol(x,DIGIT4); lcd_symbol(x,DIGIT3); lcd_symbol(x,DIGIT2); lcd_symbol(x,DIGIT1); delay_ms(500); } }