一个漂亮的电子钟,纪念我们逝去的青春(含软硬件资料)
來源:阿莫論壇,作者:humancn
微信公眾號:芯片之家(ID:chiphome-dy)
公眾號不少粉絲,大一大二做的第一個項目,都是電子時鐘吧,非常經(jīng)典的STC89C52+DS1302+數(shù)碼管組合,帶我們跨入了電子的世界,今天介紹一個小項目,一款漂亮的時鐘,包含菜單等程序,大家可以可以看看,回憶下大學(xué)的生活。
這款電子鐘,不僅僅是一個普通電子鐘,因為它包含了一種特殊的感情,更準(zhǔn)確的說是基情,四射啊!本人就讀于一個普通的一本大學(xué),學(xué)的是電氣工程及其自動化專業(yè),臨近畢業(yè)了,想給我的好伙伴們做點(diǎn)什么東西,留作紀(jì)念。四年時光匆匆而過,正好也可以用它來見證我們終將逝去的青春以及前行在曲折人生路上的不屈背影。
功能說明:顯示時間日期,溫度,公歷節(jié)日(可自己添加,非節(jié)日的時候顯示時段,比如:白天、中午之類的)、農(nóng)歷、鬧鐘、分項設(shè)置,配合上位機(jī)實(shí)現(xiàn)一鍵時間日期設(shè)置,在線顯示電腦運(yùn)行狀況(CPU使用率和內(nèi)存使用情況),在上位機(jī)顯示環(huán)境溫度等。
?本設(shè)計主要分為三個部分:時鐘的硬件部分、時鐘的軟件部分、上位機(jī)的設(shè)計。
硬件設(shè)計部分
1、主要是這么幾個芯片:stc12c560s2+18b20+ds1302+12864G-086-PC(COG工藝 超薄啊,帶GB2312字庫,串口,可調(diào)對比度,顯示起來挺清晰的)。從這看上去,這絕對是一個簡單+經(jīng)濟(jì)的設(shè)計。
stc12c560s2:STC號稱51宇宙第一啊,還有什么世界超級獨(dú)一無二的加密技術(shù),我就暫且相信了吧。看這價錢,4塊多的,功能夠,也就支持一下國產(chǎn)吧。
18b20:用爛了一個片子,始終感覺計算出的溫度要比實(shí)際高2~3度,沒事,我又不是做溫度計的.
ds1302:飽受其害啊,由于32768晶振沒有買到高質(zhì)量的,誤差有點(diǎn)大(絕對是國產(chǎn)中的山寨品啊)。下回用內(nèi)置晶振的芯片。
2、原理圖:
原理圖比較簡單,因此就不仔細(xì)說明了(注意有些器件信號線的上拉,同時省略了很多濾波電容)。采用AD Summer 09設(shè)計,先上圖片,最后一起上附件資源
圖中是雙供電方案,MINI USB+排針。不過USB那個不能用上位機(jī)了,排針另加PL2303轉(zhuǎn)換板即可。當(dāng)初地方?jīng)]有設(shè)計好,已經(jīng)計劃在內(nèi)的CH340給去掉了。
3、PCB
這是我第二次畫PCB,經(jīng)驗奇缺啊。由于先設(shè)計的程序后設(shè)計的原理圖,導(dǎo)致IO分配十分混亂,PCB也亂的嚇人,只能保證能用,不保證穩(wěn)定性,大家勿噴那。(誰還沒個第一次,是吧,嘿嘿)
這個是打樣回來的PCB:
軟件設(shè)計部分
1、驅(qū)動部分
18b20、ds1302都是以前的驅(qū)動修改過來的,12864廠家例程不夠規(guī)范,而且頁地址分配有誤,所以自己在此基礎(chǔ)之上進(jìn)行了修改,實(shí)現(xiàn)了某行反顯,顯示某些自定義大小的圖畫文字,并且將其中的字母和數(shù)字向下平移了一個像素,更加美觀。大家打開附件后就會發(fā)現(xiàn),驅(qū)動使用兩種方式寫的,一種是 extern void fun();另外一種使用的結(jié)構(gòu)體。兩種用起來都不錯~
2、功能部分
菜單移植的網(wǎng)上一個COB 12864液晶的菜單。這個菜單長處在于多層嵌套,很直觀明了。我用的都是一層的菜單,有點(diǎn)大財小用了,原版菜單見附件。此部分很是混亂啊。? 用定時器0和外部中斷0實(shí)現(xiàn)LED背光2S左右后自動關(guān)閉,定時器1用于鬧鐘聲響。一會有大量照片)
3、通信部分
由于采用的是12M晶振,所以波特率選取為2400,誤差0.16%,采用獨(dú)立波特率發(fā)生器(T0被用了)。通信協(xié)議自己編的,處理也是自己瞎弄的,你別說,還真有BUG:上位機(jī)請求兩次溫度數(shù)據(jù),下位機(jī)只上傳一次,這么地了吧。
上位機(jī)設(shè)計部分
開發(fā)環(huán)境是VC++6.0+MFC,先上一下效果圖,然后講一下開發(fā)
第一頁是顯示CPU情況的,由于CDC畫圖的操作我還沒弄明白,所以這個是從別人那COPY的,CPU使用率由于計算方法的原因,會和任務(wù)管理器有出入。
第二頁比較簡單,下面的進(jìn)度條用了一個類,大家打開源碼就會看見叫SwingProgressCtrl,很亮麗有木有,而且隨著使用情況的變化,進(jìn)度條的背景顏色會變化。
第三頁串口通信部分計劃使用的是CSerialPort類,但是最后發(fā)現(xiàn)只能發(fā)送一次數(shù)據(jù)然后不沒反應(yīng)了,多次百度+調(diào)試無果,于是放棄了而去采用調(diào)用Moxa的pcomm.dll完成設(shè)計,Moxa主要生產(chǎn)工業(yè)串口通信設(shè)備,所以他們的串口通信組件還是值得信賴的,功能也很豐富。其中有個回調(diào)函數(shù),在我的應(yīng)用中始終有問題,于是在1S定時器中sio_iqueue()查詢緩沖區(qū)的數(shù)據(jù)量(實(shí)時性不高的應(yīng)用),如果是8的話就sio_read()出來(我的報文固定是8個字節(jié)),注意sio_read()后從緩沖區(qū)讀出的數(shù)據(jù),在緩沖區(qū)內(nèi)不再存在。網(wǎng)上說還可以開一個線程不斷sio_iqueue(),我倒是沒試過。溫度顯示原先準(zhǔn)備用一個數(shù)碼管顯示的空間顯示出來,但是數(shù)據(jù)不知道怎么回事沒法更新(估計和消息沒處理好有關(guān)系),暫時放棄了。
最后本上位機(jī)還有托盤,可能是由于開發(fā)環(huán)境的原因,托盤的氣泡沒有弄出來,只弄出來了基本功能和標(biāo)題。本人沒有系統(tǒng)學(xué)過VC,基本都是東拼西湊+模仿,唉
上位機(jī)圖片上有作者的QQ,有需要交流的伙伴們可以聯(lián)系作者,謝謝大家閱讀!
資料下載
感興趣的童鞋可以在?公眾號后臺?回復(fù)關(guān)鍵詞:激情電子鐘,即可獲取全部資料!
推薦閱讀:
專輯|Linux文章匯總
專輯|程序人生
專輯|C語言
我的知識小密圈
關(guān)注公眾號,后臺回復(fù)「1024」獲取學(xué)習(xí)資料網(wǎng)盤鏈接。
歡迎點(diǎn)贊,關(guān)注,轉(zhuǎn)發(fā),在看,您的每一次鼓勵,我都將銘記于心~
總結(jié)
以上是生活随笔為你收集整理的一个漂亮的电子钟,纪念我们逝去的青春(含软硬件资料)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 的几个for 循环,范围for语
- 下一篇: ARM指令集详解