// ******************************************************************** // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<< // ******************************************************************** // File name : step_test // Author : PulseRain Technology LLC & STEP FPGA // Description : This program is developed by Arduino IDE, runninng on the STEP-MAX10 board embedded a PulseRain FP51-1T MCU core. // Web : www.stepfpga.com www.pulserain.com // // -------------------------------------------------------------------- // Code Revision History : // -------------------------------------------------------------------- // Version: |Mod. Date: |Changes Made: // V1.0 |2018/03/20 | // -------------------------------------------------------------------- // #include "M10PWM.h" #include "M10SevenSeg.h" #define LCD_CSR_CMD 0 #define LCD_CSR_DAT 1 #define LCD_CSR_RST 2 static void lcd_write_cmd (uint8_t data) __reentrant { LCD_CSR = LCD_CSR_CMD; LCD_DATA = data; nop_delay (5); while(LCD_CSR == 0); } static void lcd_write_dat (uint8_t data) __reentrant { LCD_CSR = LCD_CSR_DAT; LCD_DATA = data; nop_delay (5); while(LCD_CSR == 0); } static void lcd_reset () __reentrant { LCD_CSR = LCD_CSR_RST; delay(50); LCD_CSR = 0; delay(50); } static void lcd_init() __reentrant { lcd_reset(); lcd_write_cmd (0x11); delay(50); lcd_write_cmd(0xB1); lcd_write_dat(0x05); lcd_write_dat(0x3C); lcd_write_dat(0x3C); lcd_write_cmd(0xB2); lcd_write_dat(0x05); lcd_write_dat(0x3C); lcd_write_dat(0x3C); lcd_write_cmd(0xB3); lcd_write_dat(0x05); lcd_write_dat(0x3C); lcd_write_dat(0x3C); lcd_write_dat(0x05); lcd_write_dat(0x3C); lcd_write_dat(0x3C); lcd_write_cmd(0xB4); //Column inversion lcd_write_dat(0x03); lcd_write_cmd(0xC0); lcd_write_dat(0x28); lcd_write_dat(0x08); lcd_write_dat(0x04); lcd_write_cmd(0xC1); lcd_write_dat(0xC0); lcd_write_cmd(0xC2); lcd_write_dat(0x0D); lcd_write_dat(0x00); lcd_write_cmd(0xC3); lcd_write_dat(0x8D); lcd_write_dat(0x2A); lcd_write_cmd(0xC4); lcd_write_dat(0x8D); lcd_write_dat(0xEE); lcd_write_cmd(0xC5); //VCOM lcd_write_dat(0x1A); lcd_write_cmd(0x36); //MX, MY, RGB mode lcd_write_dat(0xC0); lcd_write_cmd(0xe0); lcd_write_dat(0x04); lcd_write_dat(0x22); lcd_write_dat(0x07); lcd_write_dat(0x0a); lcd_write_dat(0x2e); lcd_write_dat(0x30); lcd_write_dat(0x25); lcd_write_dat(0x2a); lcd_write_dat(0x28); lcd_write_dat(0x26); lcd_write_dat(0x2e); lcd_write_dat(0x3a); lcd_write_dat(0x00); lcd_write_dat(0x01); lcd_write_dat(0x03); lcd_write_dat(0x13); lcd_write_cmd(0xe1); lcd_write_dat(0x04); lcd_write_dat(0x16); lcd_write_dat(0x06); lcd_write_dat(0x0d); lcd_write_dat(0x2d); lcd_write_dat(0x26); lcd_write_dat(0x23); lcd_write_dat(0x27); lcd_write_dat(0x27); lcd_write_dat(0x25); lcd_write_dat(0x2d); lcd_write_dat(0x3b); lcd_write_dat(0x00); lcd_write_dat(0x01); lcd_write_dat(0x04); lcd_write_dat(0x13); lcd_write_cmd(0x3a); lcd_write_dat(0x06); lcd_write_cmd(0x29); } void lcd_SetRegion(uint8_t x_start,uint8_t y_start,uint8_t x_end,uint8_t y_end) __reentrant { lcd_write_cmd(0x2a); lcd_write_dat(0x0); lcd_write_dat(x_start); lcd_write_dat(0x0); lcd_write_dat(x_end); lcd_write_cmd(0x2b); lcd_write_dat(0x0); lcd_write_dat(y_start); lcd_write_dat(0x0); lcd_write_dat(y_end); lcd_write_cmd(0x2c); } void lcd_write_16bit(uint16_t Data) __reentrant { uint8_t t; t = (Data>>8) & 0xff; lcd_write_dat(t); t = Data & 0xff; lcd_write_dat(t); } uint8_t flash_byte_read (uint32_t addr) { uint8_t t; t = (addr >> 24) & 0xff; FLASH_READ_DATA = t; t = (addr >> 16) & 0xff; FLASH_READ_DATA = t; t = (addr >> 8) & 0xff; FLASH_READ_DATA = t; t = addr & 0xff; FLASH_READ_DATA = t; nop_delay (10); FLASH_READ_CSR = 0; nop_delay (10); while(FLASH_READ_CSR == 0); t = FLASH_READ_DATA; return t; } static void single_color() { uint8_t i,j,k,t; const uint8_t x = 128, y = 154; const uint8_t x_total = 132, y_total = 162; uint32_t addr = 0x8000; lcd_SetRegion(0,0,x_total-1,y_total-1); for (i = 0; i < x_total; ++i) { for (j = 0; j < y_total; ++j) { for (k = 0; k < 3; ++k) { lcd_write_dat(0xff); } } } lcd_SetRegion((x_total - x) >> 1, (y_total- y) >> 1,x-1 +((x_total - x) >> 1),y-1 + ((y_total- y) >> 1)); for (i=0;i> 5)) - 1; if (PS2.dataAvailable()) { t = PS2.read(); if (t == 0xF0) { Serial.print(t, HEX); } else { Serial.println(t, HEX); } } }