当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]构建一个在LCD上显示经过时间的数字时钟。系统通过16x2文本LCD显示经过时间(hh:mm:ss.MMM),同时每秒使用脉宽调制(PWM)技术使LED逐渐变暗。使用RT-Thread RT-Spark开发板上的STM32F407ZGT6微控制器实现。

构建一个在LCD上显示经过时间的数字时钟。系统通过16x2文本LCD显示经过时间(hh:mm:ss.MMM),同时每秒使用脉宽调制(PWM)技术使LED逐渐变暗。使用RT-Thread RT-Spark开发板上的STM32F407ZGT6微控制器实现。

第一步:设置STM32CubeMX

1. 系统和时钟:

•打开 STM32CubeMX,然后点击“文件”,再选择“新建项目”。

•点击 MCU/MPU 选择器,然后在“商用零件号”中输入 STM32F407ZGT6,双击它。

•在系统核心中,找到 SYS,然后将调试设置为串行线。

•在系统核心中,找到 RCC,然后将高速时钟(HSE)设置为晶体/陶瓷谐振器。

•在时钟配置选项卡中,将HCLK设置为168 MHz。这样APB1定时器的时钟频率就会运行在84 MHz。

2. GPIOGPIO 配置:

•在芯片视图中定位 PG11 至 PG66 引脚。

•左键单击并将其分别设置为 GPIO 输出。

•右键单击并分配用户标签:LCD_RS(PG1)、LCD_EN(PG2)、LCD_D4(PG3)、LCD_D5(PG4)、LCD_D6(PG5)和LCD_D7(PG6)。

3. 定时器2(1ms中断):

•在引脚配置选项卡中,进入定时器,然后选择TIM2。将时钟源设置为内部时钟。

•在“配置”中,进入“参数设置”,将预分频器(PSC)设置为83。

•将计数周期(ARR)设置为999。

•在 NVIC 设置中,启用 TIM22 全局中断。

4. 定时器3(PWM LED调光):

•在引脚配置选项卡中,进入定时器,然后选择TIM3。将时钟源设置为内部时钟。

•将通道1设置为PWM生成CH1。(这会自动分配PA6)

•在“配置”中,进入“参数设置”,将预分频器设为83,计数周期设为999,即可获得1kHz的PWM信号。

•在项目管理器中,设置项目名称,然后将工具链/IDE设为STM32CubeIDE,再生成代码。

第二步:编写LCD库

在 Core 中,右键点击 Inc,然后选择 New,接着选择 HeaderFile。删除其下方所有已写代码,复制并粘贴我提供的代码,将文件命名为 lcd.h。

在 Core 中,右键点击 Src,然后选择 New,接着选择 Source File。删除其下方的所有代码,复制并粘贴我提供的代码,将文件命名为 lcd.c。

第三步:硬件接线与设置

连接LCD:

•VSS:GND

•VDD:5V

•V0:10k电位器的中间腿(外侧腿连接5V和GND)

•RS:PG1

•RW:GND(只写模式)

•PG2

•D4:PG3

•D5:PG4

•D6:PG5

•D7:PG6

•阳极:5V(通过220Ω电阻)

•阴极:GND

连接LED灯:

•将LED的长腿(阳极)连接到电路板上的PA6引脚。

•将短腿(阴极)通过一个220Ω电阻连接到GND。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭