基于32的F103C8T6的lcd1602显示屏和LED灯联动,即当LED灯亮时,lcd1602自动从零开始记录,亮一次加一,请编写程序
时间: 2023-12-11 13:04:51 浏览: 32
好的,以下是基于STM32F103C8T6和LCD1602的C语言程序示例,实现LED灯和LCD显示屏的联动:
```c
#include "stm32f10x.h"
#include "lcd1602.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 初始化LED灯所在的GPIO口
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// 初始化LCD显示屏
lcd1602_init();
int count = 0;
while (1)
{
if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == Bit_SET)
{
// LED灯亮时计数器自增1
count++;
// 将计数器的值显示在LCD屏幕上
lcd1602_clear(); // 清屏
lcd1602_write_string("Count: ");
lcd1602_write_int(count, 10);
// 延时一段时间
for (int i = 0; i < 1000000; i++);
}
else
{
// LED灯灭时计数器清零
count = 0;
// 将计数器的值显示在LCD屏幕上
lcd1602_clear(); // 清屏
lcd1602_write_string("Count: ");
lcd1602_write_int(count, 10);
}
}
}
```
上述程序中,我们使用`GPIO_ReadInputDataBit`函数读取LED灯所在的GPIO口的状态,如果为高电平,则计数器自增1,并在LCD屏幕上显示计数器的值;如果为低电平,则计数器清零,并在LCD屏幕上显示计数器的值为零。我们使用`lcd1602_clear`函数清屏,并使用`lcd1602_write_string`函数和`lcd1602_write_int`函数将字符串和整数值显示在LCD屏幕上。
需要注意的是,上述程序中的GPIO口和计数器变量名可能需要根据具体硬件连接和需求进行修改。