原创 AVR单片机仿真实例

2007-11-10 18:48 3221 4 4 分类: MCU/ 嵌入式
本例是实现AVR驱动LCD1602,并用示波器监测数据线。
  开始前先要准备好仿真文件,就是用编译器编译连接产生的调试或下载文件,不同编译器产生的文件格式是不同的。如:ICC是COF、IAR是D90、GCC是COF ELF。Proteus 6.7sp3支持的有COF、D90、HEX等,ELF暂不支持。本例用的是:lcd C.Hex。

  开始了!!!!
  运行Proteus Professional(ISIS6 Professional)
  出现下面窗口:


点击看大图

1.添加元件到元件列表中
  本例要用到的元件有:ATMEGA16、LM016L(LCD1602)、“地”、示波器。
  单击“P”按钮,出现挑选元件对话框

  proteus10.jpg


点击看大图

  在对话框的KEYWORDS中输入ATMEGA16,得到以下结果:


点击看大图

  单击OK,关闭对话框,这时元件列表中列出ATMEGA16,同样找出LM06L。

  proteus13.gif
 
2.放置元件
  在元件列表中左键选取ATMEGA16,在原理图编辑窗口中单击左键, 这样ATMEGA16就被放到原理图编辑窗口中了。同样放置LM06L。


点击看大图

  添加“地”:左键选择模型选择工具栏中的proteus16.gif图标,出现:

  proteus15.gif

  左键选择GROUND,并在原理图编辑窗口中左击,这样“地”就被放置到原理图编辑窗口中了。
  添加示波器:左键选择模型选择工具栏中的proteus17.gif图标,出现:

  proteus18.gif

  左键选择OSCILLOSCOPE,并在原理图编辑窗口中左击,这样示波器就被放置到原理图中了。


点击看大图

  补充:放置元件时要注意所放置的元件应放到蓝色方框内,如果不小心放到外面,由于在外面鼠标用不了,要用到菜单“Edit"的”Tidy"清除,方法很简单,只需要单击“Tidy”即可。操作中可能要整体移动部分电路,操作方法:先用右键拖选,再单击proteus20.gif,这时这部分电路会随鼠标移动,在目标位置单击左键,这部分电路将被放到该处。

3.连线
  AVR、LCD的VSS、VDD、VEE不需要连线默认VSS=0V、VDD=5V、VEE=-5V、GND=0V


点击看大图

4.添加仿真文件
  先右键ATMEGA16再左键,出现


点击看大图


  在Program File中单击proteus23.gif出现文件浏览对话框,找出lcd C.hex文件,单击确定完成添加文件,在Clock Frequency中把频率改为8MHz,单击OK退出。

5.仿真
  单击proteus24.gif开始仿真。


点击看大图

  说明:红色代表高点平,蓝色代表低电平,灰色代表不确定电平(floating)。运行时,在Debug菜单中可以查看AVR的相关资源。

6.源代码调试
  先声明一下,我是用ICC的,版本ICC6.31a Pro。Proteus是支持COF文件调试的。在用ICC时,你应该改一下编译器选项,AVR Studio Version选Studio 3.X,这样在Proteus中可看到源代码了。


点击看大图

  在Proteus中,完成绘制原理图和添加调试文件后(COF文件),单击proteus28.gif会出现AVR Source Code窗口,如果在调试状态下没有出现,请到菜单Debug中找。


点击看大图

这里说一下proteus29.jpg的功能,由左到右分别为:



  • 连续运行,会退出单步调试状态,并关闭AVR Source Code窗口
  • 单步运行,遇到子函数会直接跳过
  • 单步运行,遇到子函数会进入其内部
  • 跳出当前函数(当用第三个功能进入函数内部,使用它会立即退出改函数返回上一级函数,可见它应该遇第三个功能配合使用)。
  • 运行到鼠标所在行
  • 添加或删除端点,设置了端点后用proteus24.gif程序会停在断点处。
  另外,你可以AVR Source Code窗口中右击,会出现右键菜单,上面的功能在这里就不作说明了。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条