#include <xc.h>
#include <stdint.h>
// 配置SPI和GPIO引脚
#define CS LATCbits.LATC0
#define RES LATCbits.LATC1
#define DC LATCbits.LATC2
void SPI_Init() {
// 配置SPI模块
SSP1STAT = 0x40; // 数据在上升沿采样
SSP1CON1 = 0x20; // SPI主模式,时钟Fosc/4
TRISCbits.TRISC3 = 0; // SCK
TRISCbits.TRISC5 = 0; // MOSI
TRISCbits.TRISC4 = 1; // MISO
}
void SPI_Write(uint8_t data) {
SSP1BUF = data;
while(!SSP1STATbits.BF); // 等待传输完成
}
void ST7735_Command(uint8_t cmd) {
CS = 0;
DC = 0; // 命令模式
SPI_Write(cmd);
CS = 1;
}
void ST7735_Data(uint8_t data) {
CS = 0;
DC = 1; // 数据模式
SPI_Write(data);
CS = 1;
}
void ST7735_Init() {
RES = 0;
__delay_ms(100);
RES = 1;
__delay_ms(100);
ST7735_Command(0x01); // Software reset
__delay_ms(150);
ST7735_Command(0x11); // Sleep out
__delay_ms(150);
ST7735_Command(0x29); // Display on
|