1.設計背景
1.1 流水燈在生活中的應用
隨著現代科學技術的持續進步和發展以及人們生活水平的不斷提高,以大規模、超大規模集成電路為首的電子工藝技術的使用也越來越廣泛,結合單片機技術設計的電子電路也層出不窮。 LED彩燈由于其豐富的燈光色彩、低廉的造價以及控制簡單等特點而得到了廣泛的應用,用彩燈來裝飾街道和城市建筑物已經成為一種時尚。利用控制電路可使彩燈按一定的規律不斷的改變狀態,不僅可以獲得良好的觀賞效果,而且可以省電。
彩燈的運用已經遍布于人們的生活中,從歌舞廳到卡拉OK包房,從節日的祝賀到日常生活中的點綴,這些不僅說明了我們對生活的要求有了質的飛躍,也說明科技在現實生活中的運用有了較大的發展。在這一設計中我們將運用單片機技術,與單片機芯片STC89C52的功能,對心形流水燈系統進行設計,來實現流水燈的多種亮與滅的循環,給人帶來美感。
1.2單片機在生產及生活中的應用
單片微計算機自20世紀70年代問世以來,已對人類生活產生了巨大的影響。尤其是美國Intel公司生產的MCS-51系列單片機,由于其具有集成度高、可靠性強、系統結構簡單、價格低廉、易于使用等優點,在世界范圍內已經得到了廣泛的普及和應用。也正是由于單片機的這些特點,它的出現是集成電路技術與微型計算機技術高速發展的產物,給工業自動化等領域帶來了一場重大的革命。
單片機體積小,很容易嵌入到系統之中,以實現各種方式的檢測、計算或控制,而一般的微型計算機無法做到。由于單片機本身就是一個微型計算機,因此只要在單片機的外部適當的增加一些必要的外圍擴展電路,就可以靈活的構成各種應用系統,如工業自動檢測監控系統、數據采集系統、自動控制系統、智能儀器儀表等。除此之外,單片機在家用電器中的應用也很普及,例如,洗衣機、電冰箱、空調機、電風扇、電視機、微波爐、加濕機、消毒柜等,在這些設備中嵌入了單片機之后,其功能和性能大大提高,并可實現智能化和最優化控制。
2.設計方案
2.1 方案對比
1、單片機芯片的比較與選擇
單片機作為該電路的主要控制器芯片,即整個系統的控制核心部分,主要是負責控制LED燈的不同變化速度以及變化效果。因此對單片機芯片的選擇,必須要求其功耗低、數據轉換速率快。
方案一:采用STC89C52單片機。STC89C52單片機是一種低耗、可編程、高性能的8位微控制處理器,其內部包括微處理器、具有8K的系統可編程Flash存儲器、 看門狗定時器、輸入/輸出口、中斷系統等,其具有價格低廉、技術成熟、操作簡單等特點,滿足本系統的要求。
方案二:選擇TI公司生產的MSP430F149系列單片機系統。此款單片機具有低電壓、超低功耗的特點,工作電壓在3.6-1.8V之間,具有強大的功能和高效的運算處理能力。
方案選擇:由于STC89C52芯片價格便宜,支持在線下載程序而且MSP430F149系列單片機的功能已經遠遠高于我們本系統,操作不便。
綜合考慮,我們選擇方案一。
2、LED燈控制方式的比較與選擇
方案一:選用單片機I/O口一對一直接控制LED燈,正好控制32個LED燈。
方案二:采用74HC573鎖存器控制LED燈,當運用兩片74HC573鎖存器就可以控制32個LED燈,只占用了單片機的10個I/O口,這樣可以減少I/O口數量。
為了操作方便,減少復雜的步驟,我們采取方案一。
2.2 STC89C52芯片功能
STC89C52是STC公司生產的一種低功耗、高性能的微控制器,具有8K的系統可編程Flash存儲器,其具有傳統51單片機不具備的功能,在經典的MCS-51內核上做了很多的改進,使得STC89C52在處理嵌入式控制應用系統時更加高效、靈活。STC89C52具有以下標準功能:4個外部中斷、全雙工串行口、一個7向量4級中斷結構、3個16位定時器/計數器、8K字節Flash、512字節RAM(隨機存儲器)、看門狗定時器,其12周期和6周期可以任意選擇,其工作電壓在3V~5.5V之間,工作頻率在0~40MHZ,實際工作頻率可達48MHZ。其管腳的封裝圖如圖1所示。

圖1 單片機管腳封裝圖
1、電源引腳
(1)VCC(38腳):芯片電源,接+5V;
(2)GND(16腳):接地端;
2、時鐘引腳
(1)XTAL1(15腳):片內振蕩器反相放大器和時鐘發生器電路的輸入端。當使用片內振蕩器時,該引腳連接外部石英晶體和微調電容;當采用外接時鐘源時,該引腳接外部時鐘振蕩器的信號。
(2)XTAL2(14腳):片內振蕩器反相放大器的輸出端。當使用片內振蕩器時,該引腳連接外部石英晶體和微調電容;當采用外部時鐘源時,該引腳懸空。
3、控制引腳
(1)ALE(27腳):用來鎖存P0口送出的低8位地址
(2)PSEN(26腳:外部ROM讀選通信號。
(3)RST(4腳):復位信號輸入端。
(4)EA’/Vpp(29腳):內外ROM選擇/片內EPROM編程電源。
4、并行I/O引線
(1)P0口:8位,漏極開路的雙向I/O口。
當STC89C52擴展外部存儲器及I/O接口芯片時,P0口作為地址總線(低8位)及數據總線的分時復用端口。P0口也可作為通用的I/O口使用,但需要上拉電阻,這時為準雙向口。當作為通用的I/O輸入時,應先向端口輸出鎖存器寫入1,P0口可驅動8個TTL負載。
(2)P1口:8位,準雙向I/O口,具有內部上拉電阻。
P1是專為用戶使用的準雙向I/O口。當作為通用的I/O口輸入時,應先向端口鎖存器輸入1,P1口可驅動4個LS型TTL負載。
(3)P2口:8位,準雙向I/O口,具有內部上拉電阻。
當STC89C52擴展外部存儲器及I/O口時,P2作為高8位地址總線用,輸出高8位地址。P2口也可作為普通的I/O口使用。當作為普通的I/O口使用時,應先向端口鎖存器輸入1,P1口可驅動4個LS型TTL負載。
(4)P3口:8位,準雙向I/O口,具有內部上拉電阻。
P3口可作為普通的I/O口使用,當作為普通的I/O輸入時,應先向端口輸出鎖存器輸入1,P3口可驅動4個LS型TTL負載。P3 口還可提供第二功能,其第二功能定義見表1。
表1 P3 口第二功能定義表
(4)P4口:可實現位尋址。
2.3 方案論證
按照單片機系統擴展與系統配置狀況,單片機應用系統可分為最小系統、最小功耗系統及典型系統等。STC89C52單片機是本次課程設計運用的主要元件。心形流水燈設計使用一個帶有32個發光二極管的單片機最小應用系統,即為發光二極管、晶振、復位、電源等電路和必要的軟件組成的單個單片機。如果要讓接在P0、P1、P2、P3口的LED燈亮起來,只要將P0、P1、P2、P3口的電平變為低電平就可以了。因此,要實現流水燈功能,要將LED依次點亮、熄滅,32只LED燈便會一亮一暗做流水燈了。由于人眼的視覺暫留效應以及單片機執行每條指令的時間很短,在控制LED亮滅的時候應該延時一段時間,否則就看不到"流水"效果了。硬件設計框圖如圖2所示。









圖2 硬件設計框圖
3.1 電路原理圖設計
1、電源電路
本次課程設計,單片機正常工作要求輸出電壓為穩定的5V,輸出電壓能夠適應所帶負載的啟動項能。并且電路還必須簡單可靠,能夠輸出足夠大的電流,但是不至于會燒壞元器件。我們采用USB取電,4.8V鋰電池供電。電源電路如圖所示,C1和C2起到濾波作用,R18和R19的作用是平衡電路中的電流,以免在只有1個LED燈亮時燒壞元器件。電源電路如圖3所示。


圖3 電源電路圖
2、時鐘電路
單片機內有一個由反相放大器所構成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入端和輸出端。在XTAL1和XTAL2引腳上外接石英晶體和微調電容構成并聯振蕩回路。晶振頻率設置為11.0592MHZ,作用是產生時鐘信號。單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片接的一切指令的執行都是建立在單片機晶振提供的時鐘頻率。電容值為30pF,可以起到頻率微調作用。時鐘電路如圖4所示。

圖4 時鐘電路圖
3、復位電路
單片機RST接口為復位信號輸入端,高電平有效。在該引腳上加上持續時間大于兩個機器周期的高電平,就可以使單片機復位。在單片機正常工作時,此引腳應為小于或等于0.5V的低電平。復位電路接單片機RST端口,在RST輸入端出現高電平時實現復位和初始化。復位電路如5所示。

圖5 復位電路
4、顯示電路
單片機的P0口為8位的漏極開路的雙向I/O口,當P0口作為普通的I/O口使用時,需要上拉電阻,這時為準雙向口。P1 、P2、 P3 都為8位的準雙向口,具有內部上拉電阻。圖6為顯示電路,單片機I/O口一對一直接控制LED燈,顯示電路中的32個電阻既為上拉電阻,也起到電路分壓作用,防止燒壞元器件。顯示電路如圖6 所示。


圖6 顯示電路圖
3.2 程序設計
本次課程設計,我們采用Keil軟件進行C語言編程。Keil軟件是美國Keil Software公司開發的,它適合WindowsXP、Win7等系統,具有可視化操作界面,使用方便簡單,并且支持C51語言、匯編語言以及兩者混合編程等多種方式的單片機設計,KeilC51在兼容標準C語言的基礎上,又增加了很多與51系列單片機硬件相關的編譯特性,其生成的程序代碼運行的速度快,所需的存儲器空間小。
Keil軟件已被完全集成到一個功能強大的全新環境中,該開發環境集成了文件編譯處理、編譯鏈接、項目管理、工具引用、和仿真軟件模擬器等多種功能。Keil軟件具有豐富的庫函數,同時也帶有功能強大的集成開發調試工具,可以自動識別所編寫程序的語法錯誤,編譯效率也很高, 能將源文件編譯為二進制機器語言代碼,其軟件調試仿真功能也很強大,能通過單步、設置斷點等功能讓編程者了解CPU正在進行的程序,并能監控各變量以及各寄存器是否符合編程者的要求。
單片機的應用系統由硬件和軟件組成,在硬件原理圖搭建完成上電之后,暫時還不能看到流水燈循環點亮的現象,還需要編寫程序控制單片機管腳電平的高低變化,來實現LED燈的各種亮滅功能。
先將P0、P1、P2、P3全部置1,即通入高電平,用16進制表示為0XFFH,則32個LED燈全部處于熄滅狀態。然后給P0口賦值0X7FH,即只有P0.0處于低電平時,LED1燈點亮。使用延時函數delay,并設置延時時間為2秒,延時時間一到P0口的值就變為0X3FH,即P0.0和P0.1都為高電平,LED2也開始點亮,如此循環P0口控制的8個LED燈全部點亮,當高電平變為低電平時,LED燈熄滅。P1、P2、P3口控制的LED燈閃亮和熄滅原理同P0口一樣,所以就可以看到LED燈的流水效果了。程序流程圖如圖7所示。
圖7 程序設計流程圖
在程序設計好了之后,需要建立工程、寫C源文件、連接工程、獲得目標代碼Hex文件,所以程序的調試就顯得至關重要。剛開始程序總是編譯出錯,請教了老師之后才知道是程序的編寫存在語法錯誤,我們就仔細閱讀并檢查所編寫的程序,發現在給I/O 口的狀態賦初值時,多加了一個分號,導致語法錯誤,編譯不能正確通過。經過反復的檢查、編譯、調試,程序最終沒有錯誤,可以將程序代碼文件調入Proteus軟件,進行電路功能仿真。
3.3 電路功能仿真
在各部分電路設計的基礎上,按照總體電路圖在Proteus上一一進行器件選擇,并連接。將電路連接好后,為各個器件選擇合適的參數,然后調入已編譯好的目標代碼Hex文件,啟動仿真。根據LED燈是否發亮,判斷所設計的電路是否可以實現32個LED燈依次點亮、依次熄滅、對角閃亮、對角熄滅、間隔閃亮、間隔熄滅等多種功能。剛開始時,LED燈不亮,仔細檢查原來是將LED燈接反了,改正之后LED燈便可以正常發光了。電路仿真的結果為32個LED燈依次發亮、依次熄滅,并可以實現多種亮滅功能。根據仿真結果可知電路原理及程序無誤,可以進行PCB設計。
3.4 電路PCB設計
在原理圖及仿真圖設計成功的情況下,設置正確的PCB外形和尺寸,按照課程設計所給的要求,設置環境參數。接著向PCB文件中導入網絡表及元件的封裝等數據,然后設置工作參數。根據要求設置布線規則。在上述準備工作都完成就緒的情況下,對原件進行布局,使盡量少的線重疊,以減少布線時跳線的出現。
3.5 安裝與調試
在安裝時要考慮LED燈正負極有沒有接反,所以安裝前,請教了老師怎樣辨認正負極。然后安裝好所有的元件后,按照電路圖逐一檢查電路有沒有漏焊的問題,接下來用萬用表逐一檢查有沒有虛焊、線路斷路或線路短路的問題。在線路沒有問題的情況下連接電源調試,加入電源以后, 32個LED燈可以循環點亮、依次熄滅,可以達到預期的效果。
4. 結果與結論
在設計電路圖的過程中,經過了多次分析和仿真驗證,并結合所給的器件清單最后確定了需要哪些器件來實現電路的功能,并且保證了所需要的元器件在給出的清單范圍內。經過Proteus軟件多次仿真和修改后,在仿真電路圖實現設計要求的前提下確定了最終的原理圖。然后在Altium Designer中畫出來所對應的原理圖,再導入到PCB設計的環境中,進行PCB設計。在經過小組內多次討論和聽取指導老師的意見后確定了PCB的最終布局,布線完成后打印輸出制成印刷電路板。將所有的元器件放到相應的封裝位置,查無誤后進行焊接。焊接完成,接入電源后,心形流水燈實現了32個LED燈依次點亮、依次熄滅,對角點亮、間隔點亮燈多種功能。電路能夠正常工作,得到了老師的肯定。
總體說來,電路布局合理,采用了模塊化的布局方式即先布局各個功能模塊,再將各個功能模塊連接在一起組成最終的電路,但是電路還是存在一定的不合理之處,在布局合理美觀方面存在一些沖突,由于布線太過寬松,整體尺寸稍大。
5. 收獲與致謝
經過為期兩周的課程設計,我收獲很多。在本次課程設計中,我們遇到了很多困難,比如電路圖畫錯、編程出現錯誤、軟件不會使用、元器件虛焊斷焊以及焊錯等。在這期間,我還是努力認真的去檢查和修改,雖然這個過程非常艱難,但還是值得我回味的。在整個課程設計過程中,我查閱了相關書籍和文獻資料,從中學習了一些單片機的工作原理以及怎樣去設計一個電子電路,還參照了一些以前做過的課程設計。這次課程設計,加深了我對以前學過的課本知識的理解和認識,以前有些課本上的理論知識總是弄不懂,這次通過自己親自動手去實踐,很多問題就通俗易懂了。本次課程設計,真正提高了自己的各項能力,比如獨立思考解決問題的能力,與人協作的能力,親自動手實踐的能力,真正的提高了自己的實踐技能,培養了自己的創新能力,為今后完成更高質量的項目打下了基礎。
這次我們能夠順利完成課程設計,是與老師們的辛勤勞動分不開的,所以在此,特別感謝課程設計輔導老師趙路華老師和單片機任課老師丁瑩亮老師,感謝他們在設計中的耐心指導和提出的寶貴建議,同時也感謝小組搭檔,和我共同度過這為期兩周的課程設計。
6. 參考文獻
[1] 林志琦.基于Proteus的單片機可視化軟硬件仿真[M] .北京:北京航空航天大學出版社,2006.
[2] 何立民.MCS-51單片機應用系統設計[M] .北京:北京航空航天大學出版社,1990.
[3] 張毅剛.單片機原理及應用[M] .北京:高等教育出版社,2004.
[4] 谷樹忠,劉文洲,姜航.Altium Designer教程-原理圖、PCB設計與仿真.北京:電子工業出版社,2010.
[5] 張陽天,韓異凡.Protel DXP電路設計[M].北京:高等教育出版社,2005.
7. 附件
7.1 元器件清單
元器件清單如表2所示。
表2 元器件清單表
7.2 電路仿真圖
電路仿真圖如圖8所示。

圖8 電路仿真圖
7.3 電路原理圖
電路原理圖如圖9所示。

圖9 電路原理圖
7.4 PCB布線圖
PCB布線圖如圖10所示。

圖10 PCB布線圖
7.5 實物圖
實物圖如圖11所示。


圖11 實物圖
7.6 程序代碼
單片機源程序如下: