自從開始學習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吧 ,作為下個目標!
這些書有得我看了= =

|