主题中讨论的其他器件:SysConfig
工具与软件:
我们正在使用从 Newhaven 购买的 OLED , 4行20个字符,我们有一个在旧的 MSP432 simpleLink 设备中并行运行 OLED 的示例,但我们需要有关 SysConfig 和代码转换的帮助。
Q1:我对发送上半字节和下半字节有疑问。
问题2: 我也有串行代码,但我找不到为什么 OLED 不能打开的问题。
转换速率
void oled20x04_Command (char cmd)
{
char lcdData;
lcdData =(cmd >> 4)& 0x0F;
RS_LOW();/*oled20x04_Command Register 被选中、即 RS = 0*/
GPIO_WRITE (CONFIG_GPIO_D7_PIN、(lcdData>>3)&0x01);
GPIO_WRITE (CONFIG_GPIO_D6_PIN、(lcdData>>2)&0x01);
GPIO_WRITE (CONFIG_GPIO_D5_PIN、((lcdData>>1)&0x01));
GPIO_WRITE (CONFIG_GPIO_D4_PIN、((lcdData>>0)&0x01));/*先发送命令的 MSB 半字节*/
en_high();/*使能引脚上用于锁存数据的高电平到低电平脉冲*/
Usleep(40);
en_low();
Usleep(40);
lcdData =(cmd & 0x0F);/*发送命令的低半字节*/
GPIO_WRITE (CONFIG_GPIO_D7_PIN、(lcdData>>3)&0x01);
GPIO_WRITE (CONFIG_GPIO_D6_PIN、(lcdData>>2)&0x01);
GPIO_WRITE (CONFIG_GPIO_D5_PIN、((lcdData>>1)&0x01));
GPIO_WRITE (CONFIG_GPIO_D4_PIN、((lcdData>>0)&0x01));
en_high();/*使能引脚上用于锁存数据的高电平到低电平脉冲*/
Usleep(40);
en_low();
Usleep(40);
}
void oled20x04_Char (字符数据)
{
char lcdData;
RS_HIGH();/*oled20x04_Command Register 被选中即 e.EID=1*/ RS
lcdData =(DATA >> 4)& 0x0F;/*先发送命令的 MSB 半字节*/
GPIO_WRITE (CONFIG_GPIO_D7_PIN、(lcdData>>3)&0x01);
GPIO_WRITE (CONFIG_GPIO_D6_PIN、(lcdData>>2)&0x01);
GPIO_WRITE (CONFIG_GPIO_D5_PIN、((lcdData>>1)&0x01));
GPIO_WRITE (CONFIG_GPIO_D4_PIN、((lcdData>>0)&0x01));
en_high();/*使能引脚上用于锁存数据的高电平到低电平脉冲*/
Usleep(40);
en_low();
Usleep(40);
lcdData =(DATA&0x0F);/*发送命令的低半字节*/
GPIO_WRITE (CONFIG_GPIO_D7_PIN、(lcdData>>3)&0x01);
GPIO_WRITE (CONFIG_GPIO_D6_PIN、(lcdData>>2)&0x01);
GPIO_WRITE (CONFIG_GPIO_D5_PIN、((lcdData>>1)&0x01));
GPIO_WRITE (CONFIG_GPIO_D4_PIN、((lcdData>>0)&0x01));
en_high();/*使能引脚上用于锁存数据的高电平到低电平脉冲*/
Usleep(40);
en_low();
Usleep(40);