自从开始学习STM32后,久久没碰51单片机,所以想回头用51找个小项目来做做,就和赵帆随便聊了下,师兄说可以做个语音报时的电子时钟随便玩玩。
首先:选器件、基本的数字电路设计。
这是用Orcad画的数字电路原理图:
原理图弄好后开始设计PCB
PCB用的是ALLEGRO,话说我现在觉得在整个过程中做PCB感觉最辛苦,做器件封装很费时.
PCB做好之后出好底片就把文件送到给工厂加工了.几天后,个人的第一块板出炉了:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
数字电路搭好后就要开始写程序:
程序一共分5大块:
DS18B20温度传感器驱动、LCD1602液晶显示驱动、DS1302时钟芯片驱动、ISD1700人物语音芯片驱动、4x4矩阵键盘
(其实我觉得写程序莫过于最有趣的事情,即使有时挺烦的,除了调试还是调试,但弄成功时那喜悦感只有程序员懂)
程序部分截图:
主函数界面:
可能自从学STM32和看了《C语言深度解剖》这本书开始慢慢就养成编程良好习惯,程序代码量较多的时候一般采用模块化编程 ,外部变量声明在.c文件,函数声明放头文件里等。这样就不会所有代码都杂乱在同一个文件下导致检查和查阅都不方便!
另外发现自己写程序速度和效率比之前有所提高了,应该是对SPI 、I2C 、1-WIRE 这些协议都在STM32学习时在此加以熟悉了,另外也有逻辑分析仪的功劳,所以写这些芯片驱动程序也就快了...
个人品尝过的《C深度解剖》
在写温度传感器驱动时用逻辑分析仪上分析出来的信号
温度、时间、LCD显示 程序都完成时载图:
当前温度是28度,时间是18:59:38秒
最后一个程序模块就是人物语音那块,整点报时+温度达到一定值就提示温度过高!(录音音源来自本人= .= )
看下面视频演示吧:
整体样子:
作品有不足的地方,本来可以一个不需外接DS1302的,因为在设计PCB的时候没有仔细检查,导致单片机P0口的一个网络搞错了导致DS1302的IO口不能正常接通因此才需要用外接.另外也领悟到做PCB封装时引脚大小要比图纸给出的引脚大小大过10个mil左右对最好等..
完成作品后:要继续加强STM32熟悉程度,另外也时不时看看C#语言,用他来做上位机软件用,等熟悉STM32就做个 多功能的个人MP4吧 ,作为下个目标!
这些书有得我看了= =
|