屏
main.c
#include "stc15w4k56s4.h" #define SDA P20 #define SCK P21 #define CS P22 #define DC P23 #define RST P24 #define BUSY P25 void delayms(unsigned int ms) { unsigned int cnt = 0; while (ms--) { for (cnt = 0; cnt < 1000; cnt++) { } } } void gpio_init(void) { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P0 = 0xff; P1 = 0xff; P2 = 0xff; P3 = 0xff; P4 = 0xff; } void spi_cmd(unsigned char cmd) { unsigned char bit = 0; CS = 0; DC = 0; for (bit = 0; bit < 8; bit++) { SCK = 0; if ((cmd & 0x80) == 0x80) { SDA = 1; } else { SDA = 0; } SCK = 1; cmd <<= 1; } CS = 1; } void spi_dat(unsigned char dat) { unsigned char bit = 0; CS = 0; DC = 1; for (bit = 0; bit < 8; bit++) { SCK = 0; if ((dat & 0x80) == 0x80) { SDA = 1; } else { SDA = 0; } SCK = 1; dat <<= 1; } CS = 1; } void wait_busy(void) { do { spi_cmd(0x71); delayms(1); } while (BUSY == 0); } void lcd_init(void) { spi_cmd(0x06); spi_dat(0x17); spi_dat(0x17); spi_dat(0x17); spi_cmd(0x04); wait_busy(); spi_cmd(0x00); spi_dat(0x0f); spi_dat(0x0d); spi_cmd(0x61); spi_dat(0x98); spi_dat(0x00); spi_dat(0x98); spi_cmd(0X50); spi_dat(0x77); } void lcd_clear(void) { unsigned int x = 0; unsigned int y = 0; spi_cmd(0x10); for (y = 0; y < 152; y++) { for (x = 0; x < (152 / 8); x++) { spi_dat(0xff); } } spi_cmd(0x13); for (y = 0; y < 152; y++) { for (x = 0; x < (152 / 8); x++) { spi_dat(0xff); } } spi_cmd(0x12); wait_busy(); } void main(void) { unsigned int x = 0; unsigned int y = 0; gpio_init(); AUXR |= 0x80; RST = 0; delayms(300); RST = 1; delayms(300); lcd_init(); lcd_clear(); spi_cmd(0x10); for (y = 0; y < 152; y++) { for (x = 0; x < (152 / 8); x++) { if (y < 50) { spi_dat(0x00); } else { spi_dat(0xff); } } } spi_cmd(0x13); for (y = 0; y < 152; y++) { for (x = 0; x < (152 / 8); x++) { if ((y > 50) && (y < 100)) { spi_dat(0x00); } else{ spi_dat(0xff); } } } spi_cmd(0x12); wait_busy(); while (1) { P55 = 0; delayms(500); P55 = 1; delayms(500); } }
Makefile
all: sdcc main.c packihx main.ihx > main.hex flash: sudo stcgal -p /dev/ttyO2 -P stc15 -o clock_source=external main.hex clean: rm -rf main.ihx main.lst main.mem main.rst main.lk main.map main.rel main.sym main.hex
完成