(一)、AVR单片机的仿真实例
本例是实现AVR驱动LCD1602,并用示波器监测数据线。
开始前先要准备好仿真文件,就是用编译器编译连接产生的调试或下载文件,不同编译器产生的文件格式是不同的,如ICC是COF、IAR是D90,GCC是COF、ELF。Proteus6.7sp3支持的有COF、D90、HEX等,ELF暂不支持。
本例用的是:lcd_C.hex。
开始了!!!!!
运行Proteus6Professional(ISIS6Professional)出现下面窗口:
1、添加元件到元件列表中:本例要用到的元件有:ATMEGA16、LM016L(LCD1602)、“地“、示波器。单击“P”按钮,出现挑选元件对话框
在对话框的KEYWORDS中输入ATMEGA16,得到以下结果:
单击OK,关闭对话框,这时元件列表中列出ATMEGA16,同样找出LM016L。
最终结果:
2、放置元件:在元件列表中左键选取ATMEGA16,在原理图编辑窗口中单击左键,这样ATMEGA16就被放到原理图编辑窗口中了。同样放置LM016L。
添加“地”:左键选择模型选择工具栏中的图标,出现:
左键选择GROUND,并在原理图编辑窗口中左击,这样“地”就被放置到原理图编辑窗口中了。添加示波器:左键选择模型选择工具栏中的图标,出现:
左键选择OSCILLOSCOPE,并在原理图编辑窗口中左击,这样示波器就被放置到原理图编辑窗口中了。
补充:放置元件时要注意所放置的元件应放到蓝色方框内,如果不小心放到外面,由于在外面鼠标用不了,要用到菜单“Edit”的“Tidy”清除,方法很简单只需单击“Tidy”即可。操作中可能要整体移动部分电路,操作方法:先用右键拖选,再单击中的,这时这部分电路会随鼠标移动,在目标位置单击左键,这部分电路将被放到该处。
3.连线
AVR、LCD的VSS、VDD、VEE不需连接,默认VSS=0V、VDD=5V、VEE=-5V、GND=0V
4.添加仿真文件
先右键ATMEGA16再左键,出现
在ProgramFile中单击出现文件浏览对话框,找到lcd_C.hex文件,单击确定完成添加文件,在ClockFrequency中把频率改为8MHz,单击OK退出。
5.仿真
单击开始仿真。
说明:红色代表高电平,兰色代表低电平,灰色代表不确定电平(floating)。运行时,在Debug菜单中可以查看AVR的相关资源。
6、源代码调试
先声明一下,我是用ICC的,版本ICC6.31aPro。Proteus是支持COF文件调试的。在用ICC时,你应该改一下编译器选项,AVRStudioVersion选Studio3.x,这样在Proteus中可看到原代码了。
在Proteus中,完成绘制原理图和添加调试文件后(COF文件),单击会出现AVRSourceCode窗口,如果在调试状态下没出现,请到菜单Debug中找。
说一下,下面依次说明
1*连续运行,会退出单步调试状态,并关闭AVRSourceCode窗口
2*单步运行,遇到子函数会直接跳过
3*单步运行,遇到子函数会进入其内部
4*跳出当前函数,当用3*进入到函数内部,使用它会立即退出该函数返回上一级函数,可
见它应该与3*配合使用
5*运行到鼠标所在行
6*添加或删除断点,设置了断点后用程序会停在断点处。
另外,你可AVRSourceCode窗口中右击,会出现右键菜单,上面的功能在这里不作说明。