單片機作為該電路的主要控制器芯片,是整個系統(tǒng)核心部分,主要負責控制LED燈的亮滅變化的速度以及變化效果。89c51單片機共有32個I/O口,能夠滿足32個流水燈的設計需求;另外80c51具有4k字節(jié)的FLASH閃存和128字節(jié)的RAM,編寫的程序很小,非常能夠滿足設計的需求;除此之外,89c51單片機還具有靈活性高且廉價的特點,綜合考慮,選擇89c51芯片作為設計的方案。
2、LED燈控制方式的比較與選擇方案一:采用位操作的方式對32個i/o口進行操作
方案二:采用總線的方式對32個i/o口進行操作
由于采用位操作的方式,還需要聲明32個i/o口,另外在寫程序的時候語句較多,過程繁瑣;而采用總線操作的方式,則不需要聲明i/o口,與位操作相比,采用總線的方式在程序編寫時能用很少的語句實現(xiàn)相同的功能效果;所以,選擇方案二,即采用總線操作的方式對32個i/o口操作。
3、硬件設計心形流水燈設計所需的系統(tǒng)應該具有:由32個發(fā)光二極管組成的顯示電路、由晶振和電容組成的時鐘電路、電源、復位電路即軟件部分。心形流水燈的硬件設計框圖如圖1-3.1所示
單片機內(nèi)有一個由反相放大器所構成的振蕩電路, XTAL1 和 XTAL2 分別為振蕩電路的輸入端和輸出端。 在 XTAL1 和 XTAL2 引腳上外接石英晶體和微調(diào)電容構成并聯(lián)振蕩回路。晶振頻率設置為 11.0592MHZ, 作用是產(chǎn)生時鐘信號。 單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片接的一切指令的執(zhí)行都是建立在單片機晶振提供的時鐘頻率紙上。電容值為 30pF, 可以起到頻率微調(diào)作用。時鐘電路如圖2-1.1所示:
當輸入連續(xù)兩個機器周期以上高電平時為有效,用來完成單片機的復位初始值操作,復位后程序計數(shù)器PC=0000H,即復位后將從程序儲存器的0000H單元讀取第一條指令碼,通俗的講,就是單片機重新開始命令,防止程序走偏。復位電路如圖2-2.1所示:
單片機的 P0 口為 8 位的漏極開路的雙向 I/O 口,當 P0口作為普通的 I/O 口使用時,需要上拉電阻,這時為準雙向口。 P1 、P2、 P3 都為 8位的準雙向口,具有內(nèi)部上拉電阻。圖 6 為顯示電路,單片機 I/O 口一對一直接控制 LED 燈,顯示電路中的 32 個電阻既為上拉電阻,也起到電路分壓作用,防止燒壞元器件。顯示電路如圖2-3.1所示
本次課程設計,我們采用Keil軟件進行C語言編程。Keil軟件是美國Keil Software公司開發(fā)的,它適合 WindowsXP、Win7 等系統(tǒng),具有可視化操作界面,使用方便簡單,并且支持 C51 語言、匯編語言以及兩者混合編程等多種方式的單片機設計,KeilC51 在兼容標準 C 語言的基礎上,又增加了很多與 51系列單片機硬件相關的編譯特性,其生成的程序代碼運行的速度快,所需的存儲器空間小。
Keil 軟件已被完全集成到一個功能強大的全新環(huán)境中,該開發(fā)環(huán)境集成了文件編譯處理、編譯鏈接、項目管理、工具引用、和仿真軟件模擬器等多種功能。 Keil 軟件具有豐富的庫函數(shù),同時也帶有功能強大的集成開發(fā)調(diào)試工具,可以自動識別所編寫程序的語法錯誤,編譯效率也很高, 能將源文件編譯為二進制機器語言代碼,其軟件調(diào)試仿真功能也很強大,能通過單步、設置斷點等功能讓編程者了解 CPU 正在進行的程序,并能監(jiān)控各變量以及各寄存器是否符合編程者的要求。
2、程序編寫設計單片機的應用系統(tǒng)由硬件和軟件組成,在硬件原理圖搭建完成上電之后,暫時還不能看到流水燈循環(huán)點亮的現(xiàn)象,還需要編寫程序控制單片機管腳電平的高低變化,來實現(xiàn) LED 燈的各種亮滅功能。其程序流程圖3-2.1如圖所示:
例如,先將 P0、P1、P2、P3 全部置 1,即通入高電平,用 16 進制表示為 0XFF,則 32個 LED 燈全部處于熄滅狀態(tài)。然后給 P0 口賦值0X7F,即只有 P0.0 處于低電平時,LED1 燈點亮。使用延時函數(shù) delay,并設置延時時間為0.2秒,延時時間一到 P0 口的值就變?yōu)?0X3F, 即 P0.0和 P0.1都為高電平, LED2 也開始點亮,如此循環(huán) P0口控制的8 個 LED 燈全部點亮,
當高電平變?yōu)榈碗娖綍r, LED 燈熄滅。P1、P2、P3 口控制的 LED燈閃亮和熄滅原理同 P0 口一樣,所以就可以看到 LED 燈的流水效果了。
圖3-2.1程序設計流程圖
3、程序調(diào)試在程序編寫好了之后,需要連接工程并編譯,經(jīng)過反復的檢查、編譯、調(diào)試,程序沒有錯誤后,最后獲得目標代碼 Hex文件。將程序代碼文件調(diào)入 Proteus軟件,進行電路功能仿真,并根據(jù)仿真結(jié)果進行程序的修改和完善。所以程序的調(diào)試就顯得至關重要。其中,將每個閃爍的部分都寫成一個子函數(shù),直接在主函數(shù)中調(diào)用即可實現(xiàn)閃爍的花樣和效果,各子函數(shù)與主函數(shù)的結(jié)構框圖如圖3-3.1所示:
在各部分電路設計的基礎上,按照總體電路圖在 Proteus上一一進行器件選擇,并連接。將電路連接好后,為各個器件選擇合適的參數(shù),然后調(diào)入已編譯好的目標代碼Hex 文件,啟動仿真。根據(jù) LED 燈是否發(fā)亮,判斷所設計的電路是否可以實現(xiàn) 32 個 LED燈依次點亮、依次熄滅、對角閃亮、對角熄滅、間隔閃亮、間隔熄滅等多種功能。電路仿真的結(jié)果為 32 個 LED 燈依次發(fā)亮、依次熄滅,并可以實現(xiàn)多種亮滅功能。
wangsonghu 發(fā)表于 2019-4-5 02:52
很高興能夠幫到你,當然可以借鑒
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |