int lcd_init(lcd_t *lcd, ssp_port_t ssp_port, pin_t cs, pin_t rs, pin_t rw, pin_t e) { lcd->ssp = ssp_port.ssp; lcd->cs = cs; lcd->rs = rs; lcd->rw = rw; lcd->e = e; //lcd->type = COM8BITS; gpio_config(cs, pin_dir_write, pull_up); gpio_set(cs, 1); gpio_config(rs, pin_dir_write, pull_down); gpio_set(rs, 0); gpio_config(rw, pin_dir_write, pull_down); gpio_set(rw, 0); gpio_config(e, pin_dir_write, pull_down); gpio_set(e, 0); ssp_config(ssp_port, 8 * 1000 * 1000); delay(lcd, 1000); lcd_clear_display(lcd); lcd_return_home(lcd); lcd_set_display(lcd,1, 1, 1); return 1; }
void speakjet_phrase_random_select(void) { /* Wait for Speakjet to finish speaking */ loop_until_bit_is_clear(PINB, SPEAKJET_SPEAKING); uint8_t i = rand() % PHRASE_COUNT; phrase_speak(phrase[i], phrase_length[i]); lcd_return_home(); lcd_clear(); lcd_puts(phrase_text[i]); }
/** * Lousy function for automatic LCD initialization */ void lcd_initialize(void) { unsigned char i; // set relevant pins as outputs LCD_DATA_DDR = ~DATA_MASK; LCD_RS_DDR = 0; LCD_RW_DDR = 0; LCD_EN_DDR = 0; LCD_BL_DDR = 0; // initialize the display_config for (i = 0; i < 6; i++) { display_config[i] = 0x00; } LCD_RS = 0; LCD_RW = 0; // set 4-bit mode _send_nibble(0b0010); // function set lcd_flags_set(FUNCTION_SET, DATA_LENGTH | CHAR_FONT, 0); lcd_flags_set(FUNCTION_SET, DISPLAY_LINES, 1); lcd_backlight_on(); lcd_display_on(); lcd_cursor_off(); lcd_blinking_off(); lcd_flags_set(ENTRY_MODE, CURSOR_INCREMENT, 1); lcd_flags_set(ENTRY_MODE, ENABLE_SHIFTING, 0); lcd_clear(); lcd_return_home(); }