📄 pt6578.c
字号:
#define LCD_ADDR 0x4B //驱动芯片SPI地址
#define CHUNKS 5 //PT6578发送的块数
#define CHUNK_BYTES 15 //每个块15个字节
__flash__ BYTE chunkAddr[] = {0x00,0x80,0x40,0xc0,0x20};
void display_buff(BYTE *thisBuff)
{
BYTE i;
BYTE chunk;
BYTE sendData;
BYTE tmpData;
BYTE addr=LCD_ADDR;
for(chunk=0;chunk<CHUNKS;chunk++) //发送CHUNKS个片段
{
//发送地址
Clr_SS(); //拉低片选
spi_send_buff(&addr,1); //放地址到总线
Set_SS(); //抬高片选
//共需发送15bytes
for(i=0;i<CHUNK_BYTES;i++)
{
//sendData=*(thisBuff++);
sendData = 0;
tmpData = *(thisBuff++);
sendData |= (tmpData>>7);
sendData |= (tmpData<<1);//将最高位和低7位交换
spi_send_buff(&sendData,1); //放sendData到总线
spi_send_bit(0); //字库冗余
}
spi_send_bit(0); //补齐
sendData = pgm_read_byte(chunkAddr+chunk); //CHUNK addr
spi_send_buff(&sendData,1); //发送本片段地址
Clr_SS(); //一个片段发送完毕,拉低SS
_delay_us(5);
}
//发送地址
Clr_SS(); //拉低片选
spi_send_buff(&addr,1); //放地址到总线
Set_SS(); //抬高片选
sendData = 0x30; //对比度 40
spi_send_buff(&sendData,1);
sendData = 0xA9;
spi_send_buff(&sendData,1);
//Clr_DO();
//_delay_us(5);
Clr_SS();
}
void disp_set_bit(BYTE *thisBuff,BYTE bitIndex,BYTE value)
{
if(value)
{
thisBuff[bitIndex] |= 0x80;
}else{
thisBuff[bitIndex] &= 0x7F;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -