项目五模拟时钟
基于STM32F103芯片做出模拟时钟,实现调整时钟、整点报时、时钟正方向始终朝上
标签
嵌入式系统
STM32
显示
yunxiang
更新2021-03-03
1006

Fm_nV-FYxxcz21qFBmJ-KB6VXDNuFsWTzoccuflFSwVjsUoMgWFMXZ1oSTM32模拟时钟

  项目平台:STM32F103 是一款 Arm 架构Cortex-M3芯片。此次活动使用的口袋开发平台上采用的是STM32F103RBT6,具有128KB Flash,20KB Ram,足以满足大部分的简单需求。作为一块完整的开发板,该口袋平台上具有独立按键、蜂鸣器、姿态传感器、LCD等多种基础的片外外设。

FoVwqwtuwW-fd0ap92zhZoEjdasJFn51Dcu_FMtDdaJsUBmdBuhusiTQ

本项目实现模拟时钟显示、更改时间、整点报时、正向显示始终朝上功能。

 

 

所用板子资源介绍:定时器、LCD——SPI、协议按键——外部中断、MPU6050——I2C协议、SD卡——硬件SPI及FATF系统

液晶驱动: 该液晶屏为串行spi接口,实际硬件连接并未接到stm32硬件spi接口,所以采用软件模拟spi,为提高刷新速率,对引脚操作采用直接寄存器操作,本项目实现模拟时钟显示及数字时钟功能,因此液晶显示需要完成指定位置图片显示,画线,数字显示,汉字显示,翻转显示等功能。

按键驱动部分: 配置按键引脚为输入上拉模式,循环扫描,硬件有4个按键,即可实现确定返回,上下调节功能,无需复杂功能,单击按键功能即可满足功能。


    蜂鸣器驱动部分:硬件采用无源蜂鸣器,通过不同频率使其导通,即可播放不同音调,由于蜂鸣器驱动没有接到stm32硬件定时器输出引脚,无法直接通过硬件pwm驱动,本项目采用定时器翻转蜂鸣器驱动引脚,模拟pwm输出,配置通用定时器,周期为1ms,在定时器中断回调函数翻转蜂鸣器引脚,当需要蜂鸣器播放声音时,打开定时器即可,关闭声音时,关闭定时器即可。

 采用仿真器为单片机提供时钟源的时候,遇到等待外部时钟源稳定时间过短,上电后仿真器还没准备好时钟输出,单片机等待外部时钟源超时,导致外部时钟源无法初始化成功,采用内部低速时钟源,屏幕刷新过慢,处理结果是增大等待外部时钟源稳定时间。屏幕刷新优化,在设置时钟界面时,旋转屏幕需刷新全屏,刷新全屏时有点慢,影响美观,后来通过局部覆盖的方式。

最后,实现屏幕的翻转,这部分我有两个想法,一种是通过实时更改LCD驱动中相应寄存器(控制色块刷新以及数据传输方向的寄存器,驱动代码中有),另一种则是更改画图函数,根据翻转角度实时更新,即做出每种翻转情况下的作图。也因为当时我做的时候是把屏幕翻转放在最后一步,故选择了第一种方法。由于最开始用的LCD驱动不能改方向,这部分研究甚久,功夫不负有心人,更换移植了多次LCD驱动终于成功。

整点报时需要使用蜂鸣器,开发板上的蜂鸣器是无源的,需要2k-4kHz的PWM波驱动它,很遗憾蜂鸣器的引脚PC10没有定时器复用功能,不能由该引脚直接产生PWM,需要初始化其他定时器定时中断反转PC10电平达到PWM驱动效果,至于整点报时只需判断时间是否到整点,再执行蜂鸣器即可; 

源码链接:https://pan.baidu.com/s/12sJHxmSmPYD_xwY5o7cWag
提取码:6666

说明文档:链接:https://pan.baidu.com/s/14HTgoE-XHET6lKLzObf9ow
提取码:6666 

附件下载
模拟时钟项目描述.doc
描述文档
STM32_Pocket.rar
源码
团队介绍
湖南师范大学应用电子技术
团队成员
谭云福
湖南师范大学2019级应用电子技术本科生
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号