极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 38104|回复: 29

基于Protues的Arduino学习笔记01-Arduino UNO实验板设计

[复制链接]
发表于 2013-5-27 20:04:05 | 显示全部楼层 |阅读模式
本帖最后由 nust_奔跑 于 2013-5-27 20:13 编辑

本文将带你使用protues 7.10搭建一个Arduino UNO的实验板,方便以后在protues仿真软件上进行Arduino的实验。参考本文,你还可以自己动手构建出Arduino MEGA 2560等一系列Arduino开发平台。
Arduino UNO是Arduino USB接口系列的最新版本,是Arduino平台的参考标准模板。Arduino UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,Flash Memory 32KB (其中0.5KB用于bootloader【注】)、SRAM 2KB、EEPROM 1KB,工作时钟 16 MHz【文献1】。【注】:在仿真情况下,不需要bootloader去引导程序下载,只需要将Arduino IDE编译生成的HEX文件导入ATmega328P单片机即可。以上对Arduino UNO的介绍摘自网上,通过这些介绍,我们可以知道Arduino UNO的资源分配情况。图1为Arduino UNO的引脚图,从图中我们可以清楚地看出ATmega328P的物理引脚与Arduino所定义的功能之间的关系,从而可以将功能引脚标注出来。




图1 Arduino UNO与ATmega328P引脚关系图【文献2】

Protues软件是英国Labcenter Electronics公司出版的EDA工具软件,不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好的仿真单片机及外围器件的工具【文献3】。
下面我们打开protues 7.10软件,进入元器件的选择,在元器件一栏中输入“ATmega328P”,并选取ATmega328P单片机,如图2所示。然后,在元器件一栏中输入“RES”,选取电阻,如图3所示。接着,在元器件一栏中输入“LED-GREEN”,选取绿色的LED灯(你也可以选择红色或者黄色的),如图4所示。最后,在元器件一栏中输入“COMPIM”,并添加到元器件域中,如图5所示。



图2 选取ATmega328P控制器


图3 选取RES(电阻)


图4 选取LED-GREEN指示灯


图5 选取“COMPIM”串口通讯接口

将上述的元器件从选择框里放置到面板上,此处需要注意放置的位置需要合理,方便连线。可以双击元器件之后,选择将相应的元器件左旋、右旋、X对称或Y对称等。放置ATmega328P、RES、LED-GREEN、COMPIM并调整位置之后的布局如图6所示。


图6 元器件放置后的布局

元器件在合适的位置放置好了之后,需要将响应的管脚进行连接,连接之后的Arduino UNO实验板如图7所示。此时,已经初见UNO的样子了,然后还需要对其进行修饰,修饰之后的Arduino UNO实验板如图8所示。


图7 连线之后的Arduino UNO



图8 经过修饰之后的Arduino UNO

上面的这些工作已经完成了硬件搭建,但是要能正常的进行仿真还需要对仿真环境进行一下设置。首先,更改ATmega328P的参数,单击ATmega328P单片机,会弹出如图9所示的设置选框,对标注的地方进行修改,改为如图10所示的参数。



图9 ATmega328P初始设置


图10 ATmega328P更改后的设置

设置好了ATmega328P的参数之后,基本就完成了仿真环境的设置。另外,还需要对串口通讯接口进行设置,串口初始设置如图11所示,需要将波特率改为9600【注】。我们在设置时,还将串口号改为了COM2,如图12所示。因为在使用串口助手进行程序调试的时候,串口助手的端口号都一般默认为COM1,这样设置之后就可以直接打开串口助手使用,可以很方便的进行串口通讯与调试。其实,这也是在偷懒,不想每次都更改串口端口号。
【注】:9600为常用波特率,当然你也可以选择其他波特率,但是两个波特率必须要相同,否则不能通讯。


图11 COMPIM初始设置



图12 COMPIM更改后的设置

到这里,protues仿真环境下的工作就全部完成了,当然要想在protues里面仿真Arduino UNO还需要完成以下几个步。

1、安装虚拟串口程序Virtual.Serial.Port.Driver
安装完成之后并新建两个虚拟串口,这两个串口是相通的,也就说他们连接在一起。一般情况下,生成串口都为COM1和COM2,如果不包含上面COMPIM设置的串口号,还需要将COMPIM中的串口号改为虚拟生成的串口号之一,另一个作为串口助手使用的串口号。

2、更改Arduino IDE中的参数

Arduino编译之后,Hex文件会自动删除,而在Proteus仿真的Arduino单片机中,需要使用Arduino软件产生的Hex文件,可是,Arduino  1.0默认使用完Hex文件会自动删除的,所以取不到hex文件,为了取出hex文件,加载到Porteus中的单片机ATMEGA328P,需要修改如下:



图13 Arduino IDE的参数设置




图14 Arduino IDE的具体设置


首先要在D盘建立一个文件夹,用来专门放置Hex文件,文件名可以随便取名,我命名为Arduino_Hex,然后点击Arduino软件界面菜单栏的File->preferences,打开对话框,如图6,把Show verbose output during的两个参数项打勾,双击preferences.txt文件,找到文件所在位置,再双击,用记事本打开文件。这时要点击Arduino界面preferences对话框下方的OK按钮,接着关掉Arduino IDE编程界面。最后,在刚才打开的preferences文档的最后一行编辑加入build.path=d:\Arduino_Hex,保存文档。这样以后您再编译Arduino程序,就可以在d:\Arduino_Hex中,看到编译的Hex目标文件了。【文献4】

下面来一个点灯示例,验证我们设计的实验板是否能够仿真Arduino UNO的实际运行。

         视频链接见我博客

参考文献:
文献1:http://kb.open.eefocus.com/index.php?title=Arduino_Uno
文献2:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=3499
文献3:http://baike.baidu.com/view/1639293.htm
文献4:http://www.eefocus.com/zhang700309/blog/12-10/287570_57f22.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-5-27 21:03:40 | 显示全部楼层
坐沙发..........................
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-27 21:10:31 | 显示全部楼层
学慧放弃 发表于 2013-5-27 21:03
坐沙发..........................

欢迎沙发~~~
回复 支持 反对

使用道具 举报

发表于 2013-5-27 21:12:31 | 显示全部楼层
nust_奔跑 发表于 2013-5-27 21:10
欢迎沙发~~~

楼主写的不错,我先不客气的学习学习,说实话arduino IDE我还没有研究透,希望楼主多多分享!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-27 21:20:20 | 显示全部楼层
学慧放弃 发表于 2013-5-27 21:12
楼主写的不错,我先不客气的学习学习,说实话arduino IDE我还没有研究透,希望楼主多多分享!!!

这是一个系列~
我会在这里连载~
抢先版在我博客里面~
回复 支持 反对

使用道具 举报

发表于 2013-5-27 21:42:06 | 显示全部楼层
感谢楼主分享,还附上了参考文献,相当专业,关注后续
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-27 21:51:09 | 显示全部楼层
MicroCao 发表于 2013-5-27 21:42
感谢楼主分享,还附上了参考文献,相当专业,关注后续

乐于分享,共同进步。
回复 支持 反对

使用道具 举报

发表于 2013-5-28 07:49:49 | 显示全部楼层
请问能用Protues,模拟出MPU6050陀螺模块吗?
回复 支持 反对

使用道具 举报

发表于 2013-5-28 07:56:21 | 显示全部楼层
我是新手,请问Protues对玩arduino的人有什么好处呢?望有高手指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-28 08:18:43 | 显示全部楼层
小人 发表于 2013-5-28 07:56
我是新手,请问Protues对玩arduino的人有什么好处呢?望有高手指教

个人觉得,1、不需要板子就可以学习,2、连线出错,不会烧坏东西,3、可以看出电平的变化情况,4.先学仿真再接触实物,学习起来会比较快。
回复 支持 反对

使用道具 举报

发表于 2013-5-28 08:33:06 | 显示全部楼层
nust_奔跑 发表于 2013-5-28 08:18
个人觉得,1、不需要板子就可以学习,2、连线出错,不会烧坏东西,3、可以看出电平的变化情况,4.先学仿真 ...

也就是说,是一个虚拟板子,能更清楚里面的输如输出 ?
如果在实验中出现问题,能通过设置条件断点找出问题吗?
回复 支持 反对

使用道具 举报

发表于 2013-5-28 12:49:39 | 显示全部楼层
小人 发表于 2013-5-28 08:33
也就是说,是一个虚拟板子,能更清楚里面的输如输出 ?
如果在实验中出现问题,能通过设置条件断点找出 ...

那正文第二段建议改一下哦,“在仿真情况下,不需要bootloader去引导程序下载,只需要将Arduino IDE编译生成的HEX文件导入ATmega328P单片机即可。”改为“在仿真情况下,不需要bootloader去引导程序下载到实体arduino,只需要将Arduino IDE编译生成的HEX文件导入虚拟的ATmega328P单片机在电脑上模拟运行即可
回复 支持 反对

使用道具 举报

发表于 2013-5-28 18:36:25 | 显示全部楼层
思路很不错,呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-28 20:08:49 | 显示全部楼层
firewise 发表于 2013-5-28 07:49
请问能用Protues,模拟出MPU6050陀螺模块吗?

这个不能仿真~
仿真不是万能的~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-28 20:10:42 | 显示全部楼层
小人 发表于 2013-5-28 08:33
也就是说,是一个虚拟板子,能更清楚里面的输如输出 ?
如果在实验中出现问题,能通过设置条件断点找出 ...

断点不能设置~
proteus可以和keil连调~
但是不能和Arduino IDE连调~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 09:00 , Processed in 0.067755 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表