📄 pt6524.c
字号:
#define LCD_ADDR 0x41 //LCD驱动芯片SPI地址
#define DISP_BUFF_SIZE 26 //显示缓冲区大小
void spiSendBit(unsigned char bitData)
{
if (bitData) {
Set_DO();
}else{
Clr_DO();
}
DATA_DELAY();
Set_SCK(); // 2----时钟置高,此时数据发送
//此时读取数据输入总线的状态
SCK_DELAY();
Clr_SCK(); //4-----下降沿读取数据
SCK_DELAY();
}
void sendBlockData(unsigned int blockData)
{
unsigned char i;
for (i=0;i<12;i++) {
spiSendBit(blockData & (0x0800>>i));
}
}
void display_buff(BYTE *thisBuff)
{
BYTE addr=LCD_ADDR;
unsigned char bitSum=0;
unsigned char byteNumber,bitNumber;
Clr_SS();//cbi(SPI_PORT,SPI_CS);//先发地址,拉低SS
spi_send_buff(&addr,1);//发送一个字节到总线
Set_SS();
for (byteNumber=0;byteNumber<DISP_BUFF_SIZE;byteNumber++) {
for (bitNumber=0;bitNumber<8;bitNumber++) {
if (*(thisBuff+byteNumber) & (1<<bitNumber)) {
spiSendBit(1); //send '1'
}else{
spiSendBit(0); //send '0'
}
bitSum++; //总计发送的bit数加一
if(((bitSum%52)==0) && (bitSum<200))
{
sendBlockData(bitSum/52-1);
Clr_SS();//cbi(SPI_PORT,SPI_CS);//先发地址,拉低SS
spi_send_buff(&addr,1);//发送一个字节到总线
Set_SS();
}
}
}
sendBlockData(0x0003);//第四个com的块标志
Clr_SS();//cbi(SPI_PORT,SPI_CS); //发送完毕
}
void disp_set_bit(BYTE *thisBuff,BYTE bitIndex,BYTE value)
{
if(value)
thisBuff[bitIndex/8] |= (1<<(bitIndex%8));
else
thisBuff[bitIndex/8] &= ~(1<<(bitIndex%8));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -