当前位置:首页 > 公众号精选 > 嵌入式云IOT技术圈
[导读]昨天我们用multi_timer+状态机的方式实现了光强读取,文章链接如下: 基于小熊派光强传感器BH1750实践(multi_timer+状态机工程应用) 今天我们再小小的进阶一步,把它和小熊派上的OLED结合起来吧!所谓所见即所得,这才是开发最大的乐趣,在实现这个小项目之前

昨天我们用multi_timer+状态机的方式实现了光强读取,文章链接如下:

基于小熊派光强传感器BH1750实践(multi_timer+状态机工程应用)

今天我们再小小的进阶一步,把它和小熊派上的OLED结合起来吧!所谓所见即所得,这才是开发最大的乐趣,在实现这个小项目之前,我们先来了解下小熊派开发板上的这个屏吧,先看下原理图是怎么接的:

如上图所示,根据Datasheet解读下该LCD的控制方式:

LCD_SPI_MOSI、LCD_SPI_CLK这两个管脚是用于建立SPI通信协议用的,传统的SPI都有SPI_MOSI(主设备输出从设备输入)、SPI_MISO(主设备输入从设备输出)、SPI_SCK(SPI的时钟线),那为什么这里没有SPI_MISO呢?

这是由于只需要进行显示,所以模组设计的时候将从机发往主机的数据线进行了隐藏,这个在Datasheet里的66页可以看到相关的说明,由于篇幅限制,这里就不贴出。

原理图管脚用途解析

LCD_WR_RS是芯片的命令/数据控制引脚:

由datasheet得知,当LCD_WR_RS引脚为低电平时,则是写命令状态,当LCD_WR_RS引脚为高电平时,为写数据状态。

LCD_RESET是LCD的复位引脚,模块上电的时候拉低,通常情况下需要将该位置1。

LCD_POWER是LCD的电源引脚,通常情况下给它直接拉高就可以正常点亮工作了。

还有一个非常重要的功能,也就是LCD的片选功能,原理图里已经将片选直接拉低,这样芯片才会被使能。

关于通信协议

对于SPI通信而言,数据是有传输时序的,即时钟相位(CPHA)与时钟极性(CPOL)的组合:CPHA的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集,当CPHL = 0,在第一个跳变沿进行数据采集;CPOL的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平。从图中可以看出,当SCLK第一个下降沿时开始传输数据,一个时钟周期传输8bit数据,使用SPI0,按位传输,高位在前,低位在后。

项目实战

上一节,我们没有用拓展板的这个LED灯,这节我们把这个灯(LED_SW)配置起来,把原来开发板那个灯去掉。

这个灯位于开发板的PB9端口

我们将在上一个工程的基础上添加SPI相关的配置后直接实现,打开上一节的工程:

1、修改配置为LED_SW灯

2、配置SPI2


3、配置LCD_WR_RS、LCD_RESET、LCD_POWER


4、生成工程、然后移植小熊派LCD例程

包含LCD驱动源代码

将LCD相关文件添加到Keil工程

然后编译完发现有一个错误:

LIGHT_SENSOR_I2C\LIGHT_SENSOR_I2C.axf: Error: L6218E: Undefined symbol SPI2_WriteByte (referred from lcd.o).

意思是在lcd程序文件里没有定义SPI2_WriteByte这个接口。


找到这个错误的地方,添加一个这样的函数,再编译,解决问题。    

接下来在main.c中添加头文件:

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "lcd.h"
#include "HzLib.h"
/* USER CODE END Includes */

接下来添加LCD显示逻辑:

/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
char display_buf[20] = {0};
/* USER CODE END 1 */

/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */
SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
MX_SPI2_Init();
/* USER CODE BEGIN 2 */
/*串口初始化后加这个延时,防止后面的printf打印乱码*/
HAL_Delay(200);
LCD_Init();
LCD_Clear(BLACK);//清屏为黑色
LCD_ShowString(5, 10, 240, 32, 32, "BearPi LuxTest");//显示字符串,字体大小32*32
printf("光强读取测试实验\n");
Init_BH750();
timer_init(&lsensor.timer1, lsensor.timeout_cb, 1, 1);
timer_start(&lsensor.timer1);
/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
ReadBH1750(LUX_1_MODE);

if(1 == lsensor.Conver_completed)
{
sprintf(display_buf, "%d%d%d%dLux", lsensor.Lux / 1000 % 100, lsensor.Lux / 100 % 10, lsensor.Lux / 10 % 10, lsensor.Lux % 10);
LCD_ShowString(80, 50 + 24 + 32, 240, 32, 32, display_buf); //显示字符串,字体大小32*32

if(lsensor.Lux > LIGHT_SENSOR_THREHOLD)
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
}
else
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
}
}

timer_loop();

}

/* USER CODE END 3 */
}

这里这么来显示的主要原因是由于小熊派提供的例程里打印字符串不带清除功能,所以会有叠加效应,后面有时间解决,如果使用清除局部区域的函数,则会造成屏幕闪烁,体验感很不好。

运行结果

当光强小于设定阈值,则亮灯

当光强大于设定阈值,则灭灯

实际例程下载:

链接:https://pan.baidu.com/s/1D3AgGO_vThTgRn09SeHPIw
提取码:nskm

公众号粉丝福利时刻

这里我给大家申请到了福利,本公众号读者购买小熊派开发板可享受9折优惠,有需要购买小熊派的朋友,淘宝搜索即可,跟客服说你是公众号:嵌入式云IOT技术圈 的粉丝,立享9折优惠!

往期精彩

网红物联网开发板小熊派使用评测

超轻量级网红软件定时器multi_timer(51+stm32双平台实战)

基于小熊派光强传感器BH1750实践(multi_timer+状态机工程应用)

若觉得本次分享的文章对您有帮助,随手点[在看]并转发分享,也是对我的支持。

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭