本帖最后由 springvirus 于 2023-2-3 15:41 编辑
#申请原创#
@21小跑堂
客厅放的指针石英表,气氛有些不够活跃,新年之际,自己D个点阵时钟吧,双色交替显示,带日期时间显示和气压温度显示,主控选择新唐的评估板Nutiny-EVB-M451-LQFP100 V1.3 板载主控MCU为M453VG6AE,看手册的命名规则,配置为CAN+USB,LQFP100,256KB的FLASH,32KB的RAM,工作温度为-40度到105度,已经是该系列芯片的顶级配置了,性能强悍,100pin的封装,IO数量也是相当可观,片内外设资源也是丰富,包括常见定时器,UART,I2C,SPI等,M453还有USB,CAN,CRC等。
虽然M453内部也有RTC,但此次选用了深圳兴威帆的RTC模块-SD2405ALPI,特点如下:
1. 是一款内置晶振,充电电池,具有标准I2C接口的实时时钟模块,MCU可使用该接口的
通过5位地址寻址来读写片内32字节寄存器的数据。
2. 内置晶振可保证时钟精度为+-5ppm,即年误差小于2.6分钟。
3. 内置充电电池及充电电路,在电池满充,主电源下电的常温条件下内部时钟走时可维持半年左右时间,电池电量近550mAh,常温下,电池寿命为5-8年。
以上特点决定了SD2405的外围电路相当简洁,只需VCC GND SCL SDA。
SD2405的I2C 高7位BIT7-BIT1器件地址为0110 010,BIT0值,1为读操作,0为写操作。
气压温度传感器模块,选用了ROHM的BM1383,与MCU的通信接口同样为I2C。内置气压传感器和温度传感器。注意温度寄存器的值TEMP_OUT,以补码方式存放。
BM1383的I2C 高7位BIT7-BIT1器件地址为1011 101,BIT0值,1为读操作,0为写操作。
注意模块上的SCL SDA上拉电阻没有焊接,这里焊接了2个直插的4.7K上拉电阻,背面用绝缘胶带做处理。
同时设置了3个按键,进行日期和时间的初始化设置,之后主系统下电,RTC模块由于有内置电池,也不会丢失数据。
有3个10K的贴片电阻焊在了洞洞板背面,用绝缘胶带做了处理。
点阵屏的驱动方案很多了,这里就不介绍了。
模块化的组装,没有复杂的操作流程。
编程思路如下:
分为时钟运行和时钟设置2个大状态,时钟运行里有2个子状态,分为时间翻页显示和日期温度流水显示,另外颜色就是红和绿色交替显示,时钟设置里就是读取按键状态,分为设置,加1,减1,3个功能按键。
根据点阵的驱动,规划一个整体buffer,在定时器的1ms溢出中断里,刷新这个整体buffer,在对应位置赋值1,就能看到静态显示,在另外的定时时间里对buffer进行字节赋值或者字节位移,就能实现上下移动和左右移动。
比如秒的翻页效果,就是字节赋值,在边界处理调试时注意一下效果就可以了,左右移动就是字节位移(根据点阵驱动方案调整具体的编程思路)。
字体风格和各种效果的移动速度就根据个人的观感进行调整了。
整体原理框图如下:
TRM_M451_Series_EN_Rev2.04.pdf
(10.05 MB)
|
开盖“印度电工”,合盖“鞋盒战神”。随性务实来一个大屏时钟,设备虽简陋,功能不含糊,作者实现的显示效果还是可以的。
@21小跑堂 :之前输入的@小跑堂,已编辑为@21小跑堂
才看到,下次记得@21小跑堂