323|3

17

帖子

0

TA的资源

一粒金砂(中级)

【N32A455 车规MCU开发板测评】点亮LCD屏 [复制链接]

尽管N32A455开发板配了相应的外设资源,但是没有显示器件还是稍感不足,那就自己动手给它配上一个能显示文字信息的LCD屏吧。
为了增强十足的灵活性,就以GPIO口模拟的方式来实现。
由于该开发板没有设置Arduino接口,那就以显示屏的引脚顺序来分配GPIO引脚,见图1所示。
wd_220254glpzzl3qw6b3zxsl.png
图1 所用接口
 
具体的连接关系为:
SCLK----PE2
SDIN----PE3
RST ----PE4
DC ----PE5
CS ----PE6
BLK----PC13
输出高低电平的语句定义为:
#define LCD_SCLK_Set GPIOE->PBSC = GPIO_PIN_2
#define LCD_SCLK_Clr GPIOE->PBC = GPIO_PIN_2
#define LCD_SDIN_Set GPIOE->PBSC = GPIO_PIN_3
#define LCD_SDIN_Clr GPIOE->PBC = GPIO_PIN_3
#define LCD_RST_Set GPIOE->PBSC = GPIO_PIN_4
#define LCD_RST_Clr GPIOE->PBC = GPIO_PIN_4
#define LCD_DC_Set GPIOE->PBSC = GPIO_PIN_5
#define LCD_DC_Clr GPIOE->PBC = GPIO_PIN_5
#define LCD_CS_Set GPIOE->PBSC = GPIO_PIN_6
#define LCD_CS_Clr GPIOE->PBC = GPIO_PIN_6
#define LCD_BLK_Set GPIOC->PBSC = GPIO_PIN_13
#define LCD_BLK_Clr GPIOC->PBC = GPIO_PIN_13
进行短时延时的函数为:
void Delay(uint32_t count)
{
for (; count > 0; count--);
}
模拟SPI方式发送字节数据的函数为:
static void LCD_write_byte(unsigned char dat, unsigned char command)
{
unsigned char i;
LCD_CS_Clr;
if (command == 0)
LCD_DC_Clr;
else
LCD_DC_Set;
for(i=0;i<8;i++)
{
if(dat&0x80)
LCD_SDIN_Set;
else
LCD_SDIN_Clr;
LCD_SCLK_Clr;
dat<<=1;
LCD_SCLK_Set;
}
LCD_CS_Set;
}

 

对所用引脚的配置函数为:
void lCD_config(void)
{
GPIO_InitType GPIO_InitStructure;
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOE, ENABLE);
GPIO_InitStructure.Pin=GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitPeripheral(GPIOE, &GPIO_InitStructure);

RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOC, ENABLE);
GPIO_InitStructure.Pin = GPIO_PIN_13;
GPIO_InitPeripheral(GPIOC, &GPIO_InitStructure);
}

 

该显示屏的初始化函数为:
static void LCD_init(void)
{
LCD_RST_Clr;
Delay(1);
LCD_RST_Set;
LCD_CS_Clr;
Delay(1);
LCD_CS_Set;
Delay(1);
LCD_write_byte(0x21, 0);
LCD_write_byte(0xc8, 0);
LCD_write_byte(0x06, 0);
LCD_write_byte(0x13, 0);
LCD_write_byte(0x20, 0);
LCD_clear();
LCD_write_byte(0x0c, 0);
LCD_CS_Clr;
LCD_BLK_Set;
}

 

该显示屏的清屏函数为:
static void LCD_clear(void)
{
unsigned int i;
LCD_write_byte(0x0c, 0);
LCD_write_byte(0x80, 0);
for (i=0; i<504; i++)
LCD_write_byte(0, 1);
}

 

实现字符串显示的函数为:
static void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
{
LCD_set_XY(X,Y);
while (*s)
{
LCD_write_char(*s);
s++;
}
}

 

实现显示测试的主程序为:
int main(void)
{
lCD_config();
LCD_init();
LCD_clear();
LCD_write_english_string(16,0,"N32A455");
LCD_write_english_string(16,2,"NOKIA_5110");
LCD_write_english_string(16,4,"2025-1-22");
while (1);
}

 

经程序的编译与下载,其显示效果如图2所示,说明显示正常。
wd_220254e6vdkk8xvqjxzdn6.png
图2 显示效果
 

此帖出自汽车电子论坛

最新回复

是的配个显示器件就比较完美啦   详情 回复 发表于 2025-2-3 10:07

回复
举报

6875

帖子

0

TA的资源

五彩晶圆(高级)

是的配个显示器件就比较完美啦

此帖出自汽车电子论坛

点评

感谢您的支持和鼓励!  详情 回复 发表于 2025-2-3 10:50

回复

17

帖子

0

TA的资源

一粒金砂(中级)

Jacktang 发表于 2025-2-3 10:07 是的配个显示器件就比较完美啦

感谢您的支持和鼓励!

此帖出自汽车电子论坛

回复

17

帖子

0

TA的资源

一粒金砂(中级)

emma2015 发表于 2025-2-5 10:52 为了增强十足的灵活性,就以GPIO口模拟的方式来实现。

是呀,GPIO口随处是。

此帖出自汽车电子论坛

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表