(一)、AVR 單片機的仿真實例
本例是實現(xiàn) AVR 驅動LCD1602,,并用示波器監(jiān)測數(shù)據(jù)線,。
開始前先要準備好仿真文件,就是用編譯器編譯連接產(chǎn)生的調試或下載文件,,不同編譯器產(chǎn)生的文件格式是不同的,,如ICC 是COF,、IAR 是D90,GCC是COF,、ELF,。Proteus 6.7sp3 支持的有COF、D90,、HEX 等,,ELF 暫不支持。
本例用的是:lcd_C.hex,。
開始了?。。,。,。?/strong>
運行 Proteus 6 Professional(ISIS6 Professional)出現(xiàn)下面窗口:
1,、添加元件到元件列表中:本例要用到的元件有:ATMEGA16,、LM016L(LCD1602)、“地“,、示波器,。單擊“P”按鈕,出現(xiàn)挑選元件對話框
在對話框的KEYWORDS 中輸入ATMEGA16,,得到以下結果:
單擊 OK,,關閉對話框,這時元件列表中列出ATMEGA16,,同樣找出LM016L,。
最終結果:
2、放置元件:在元件列表中左鍵選取ATMEGA16,,在原理圖編輯窗口中單擊左鍵,,這樣ATMEGA16 就被放到原理圖編輯窗口中了。同樣放置LM016L,。
添加“地” :左鍵選擇模型選擇工具欄中的圖標,,出現(xiàn):
左鍵選擇 GROUND,并在原理圖編輯窗口中左擊,,這樣“地”就被放置到原理圖編輯窗口中了,。添加示波器:左鍵選擇模型選擇工具欄中的 圖標,出現(xiàn):
左鍵選擇 OSCILLOSCOPE,,并在原理圖編輯窗口中左擊,,這樣示波器就被放置到原理圖編輯窗口中了。
補充:放置元件時要注意所放置的元件應放到藍色方框內,,如果不小心放到外面,,由于在外面鼠標用不了,,要用到菜單“Edit”的“Tidy” 清除,方法很簡單只需單擊“Tidy”即可,。操作中可能要整體移動部分電路,,操作方法: 先用右鍵拖選,再單擊中的
,,這時這部分電路會隨鼠標移動,,在目標位置單擊左鍵,這部分電路將被放到該處,。
3.連線
AVR,、LCD 的VSS、VDD,、VEE 不需連接,,默認VSS=0V、VDD=5V,、VEE= -5V,、GND=0V
4.添加仿真文件
先右鍵 ATMEGA16 再左鍵,出現(xiàn)
在Program File 中單擊出現(xiàn)文件瀏覽對話框,,找到lcd_C.hex 文件,,單擊確定完成添加文件,在Clock Frequency 中把頻率改為8MHz,,單擊OK 退出,。
5.仿真
單擊開始仿真。
說明:紅色代表高電平,,蘭色代表低電平,,灰色代表不確定電平(floating)。運行時,,在 Debug 菜單中可以查看AVR 的相關資源。
6,、源代碼調試
先聲明一下,,我是用ICC 的,版本ICC6.31a Pro,。Proteus 是支持COF 文件調試的,。在用ICC 時,你應該改一下編譯器選項,,AVR Studio Version 選Studio 3.x,,這樣在Proteus中可看到原代碼了。
在 Proteus 中,,完成繪制原理圖和添加調試文件后(COF 文件),,單擊會出現(xiàn)AVR Source Code 窗口,,如果在調試狀態(tài)下沒出現(xiàn),請到菜單Debug 中找,。
說一下,,下面依次說明
1* 連續(xù)運行,會退出單步調試狀態(tài),,并關閉AVR Source Code 窗口
2* 單步運行,,遇到子函數(shù)會直接跳過
3* 單步運行,遇到子函數(shù)會進入其內部
4* 跳出當前函數(shù),,當用3*進入到函數(shù)內部,,使用它會立即退出該函數(shù)返回上一級函數(shù),可
見它應該與3*配合使用
5* 運行到鼠標所在行
6* 添加或刪除斷點,,設置了斷點后用程序會停在斷點處,。
另外,你可 AVR Source Code 窗口中右擊,,會出現(xiàn)右鍵菜單,,上面的功能在這里不作說明。