用STM32驱动16乘16的点阵屏,点阵屏行由两块74HC138构成的4-16译码器控制,595控制列用SPI给595发数据一直不对,各位大佬能不能指点一下
写了两个函数void hc138sacn(int r)行控制{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, (r & 0x01));
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, (r & 0x02));
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, (r & 0x04));
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, (r & 0x08));
}
//把数据用串行转并行输出到595
void SendByte(uint8_t dat)
{
int i, A;
for (i = 0; i < 8; i++)
{
A = (dat >> (7 - i)) & 1;
HAL_SPI_Transmit(&hspi1, (uint8_t*) &A, 1, 0xfff);
// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
}
}
|