历史上的今天
今天是:2025年02月17日(星期一)
2020年02月17日 | Proteus 入门教程之AVR 单片机的仿真实例
2020-02-17 来源:eefocus
简介:本文为Proteus 的入门教程,AVR 单片机的仿真实例。
(一)、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窗口中右击,会出现右键菜单,上面的功能在这里不作说明。
上一篇:AVR Stduio安装与使用
史海拾趣
|
因为有时候用户可能翻页的速度很快 我必须速度准备好图片,但是有时候图片实在太大了 需要等待很久(比如说一秒) 目前IPHONE 在滑动过快的时候 是显示一张比较模糊的图片,不晓得是怎么实现的 大家有什么好方法 进来talk talk… 查看全部问答> |
|
boot.hv是放在HIVE BOOT SECTION ;END BOOT SECTION之间的,在系统启动的时候实现加载! 那么,在注册表中的其它部分是怎么确认分别归属于default.hv和user.hv的, 是不是有什么标签? … 查看全部问答> |
|
-------首先要谢谢EEWorld和SEED对我的信任,给了我这个难得试用的机会。对于规模较小的公司来说,设计完整,做工精炼的开发板都是一项不小的开销,何况是对于工程师个人。所以EEWorld和SEED能提供这样的试用机会,我十分高兴也很兴奋。第二,说说 ...… 查看全部问答> |
|
我用STM207,写EEPROM时会导致CPU复位,,不知是何故,, 只要把串口通讯线接上, 一写EEPROM就会死机复位,,,. 拔掉好像不死,,,,怎么会这样,,,,哪位高人请指点指点… 查看全部问答> |
|
红色部分用IAR编译的时候提示 undefined,换成绿色的却没有问题?? void NVIC_Configuartion(void) { NVIC_InitTypeDef NVIC_InitStructure; /*Config the NVIC Preemption Priority Bits*/ NVIC_PriorityGrou ...… 查看全部问答> |




