午夜激情影院

你好,游客 登錄 注冊 搜索

背景:
閱讀內容

用Proteus仿真軟件虛擬設計6位電子鐘

[日期:2010-11-22] 來源:  作者:廣東 郭興達 [字體: ]

  本文介紹用Proteus仿真軟件,虛擬設計一款用單片機制作的6位電子鐘,其實踐操作簡單,實現容易,以期對單片機初學者有所幫助。

  控制6位電子鐘的單片機選用功能較為簡單、易學的AT89C2051,這樣,在實際制作時不僅能節約成本,還可減小線路板面積。本電子鐘采用6位LED顯示,時鐘調整設有+、-按鈕,方便操作。本電子鐘通電立即從12:00:00開始運行,運行中按住設置按鈕1.5s以上進入調整,在調整狀態下采用通用的LED閃爍顯示,以達到外圍線路的最簡化。

 

  一、完成Proteus內的電路設計啟動Proteus,建立如圖1所示的電路,單片機選擇AT89C2051。由于AT89C2051I/O口比較少,故采用數碼管的片選信號作為鍵盤掃描信號,這樣,在不增加外圍元件的情況下,即可設置6個按鈕,這里使用了4個。圖1中的“后備”按鈕,留作定時功能的定時設置用。

  二、在Keil程序編輯軟件中編程啟動Keil程序編輯軟件,新建工程:2051CLOCK,選擇單片機為AT89C2051,在OptionsfoTarget的Output項選擇CreateHEXFile(生成HEX文件),新建一個空白TXT文本,改名為2051CLOCK.ASM,并在Keil工程里面添加這個文件。

  在Keil的2051CLOCK.ASM編輯窗口輸入匯編代碼(編注:因版面所限,對匯編代碼感興趣的讀者可與本報聯系)。

  電子鐘的程序比較簡單,下面簡要概述一下:

  1.時分秒的個位、十位分別單獨存于對應的緩存,顯示通過各位的顯示緩存實現CTC定時為50ms,對中斷計數到10次后,對1/2秒位進行計數,1/2秒位同時作為調整狀態下的LED閃爍標志,CTC中斷程序不改變ACC和PSW的值,使現場保護最簡化,提高時鐘精度。中斷程序同時判斷是否進入調整狀態,在調整狀態,停止對秒各位的累加。

  2.時間調整的加減用了一個入口,通過給A賦不同的值來實現加減,賦1的為加,賦FF的為減,這樣可以統一用ADD方法進行時間調整,并分別判斷,結果是10則進位,是FF則借位,以簡化代碼。

  3.由于鍵盤是通過片選信號動態掃描的,所以采用在顯示程序中嵌入讀鍵盤程序的方法,而不專門另編鍵掃描程序,以提高代碼效率。

  相對而言,這里的“時鐘設置按鍵動作處理子程序”比較難,下面用流程圖說明,見圖2。

  按鍵處理程序中,為了操作更靈敏,分別進行了點動調整和連續按鈕調整處理。在點動調整狀態,各按鍵均進行了釋放和接通判斷,在確定按鍵接通后,立即進行調整,使調整反應迅速,其后再進行消抖處理。如果用連續接通調整,則每0.5s加或者減一個數。這里設置鈕沒有連續調整許可,必須是點動調整。

  匯編調試結束后,產生目標文件2051CLOCK.HEX。

  在Proteus里面,雙擊2051,這里選擇KeilC51生成的2051CLOCK.HEX文件,見圖3。

  說明:本來KeilC51通過設置,可以把Proteus當作設備,進行在線仿真。不過,網上下載的Proteus版本,對AT89C2051缺少個DLL文件,無法實現KeilC51+Proteus的實時仿真,只能用這樣的方法。好在也不麻煩,在KeilC51里面代碼修改后,再次編譯,在Proteus只要重新啟動仿真,就可以更新代碼了。

    啟動仿真運行,可立即看見電子鐘運行起來。試按各按鈕動作情況,功能正確、反應良好。

  實際仿真運行中,發現時鐘走得慢,分析后估計是仿真運行代碼運行過程造成系統延誤。將設計的MCU工作頻率由12MHz,改為15MHz后再運行,時鐘就不再慢走(見圖4所示)。


     往下看有更多相關資料

推薦文章 收藏 推薦 打印 | 整理:gddq | 閱讀:
查看相關資料       proteus 
專題文章
熱門評論

午夜激情影院