基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用
一、前言:
A、Arduino简介
Arduino是由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti。据说Auduino开发团队的领袖Massimo Banzi 之前是意大利Ivrea 一家高科技设计学校的老师。他的学生们经常抱怨找不到便宜好用的微控制器。2005年冬天,Massimo Banzi 跟David Cuartielles 讨论了这个问题。David Cuartielles 是一个西班牙籍芯片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并引入了Banzi 的学生David Mellis 为电路板设计编程语言。两天以后,David Mellis 就写出了程式码。又过了三天,电路板就完工了。这块电路板被命名为Arduino。几乎任何人,即使不懂电脑编程,也能用Arduino 做出很酷的东西,比如对传感器作出回应,闪烁灯光,还能控制马达。
2016-10-11
现在,Arduino是一个开源的项目,它所有的设计资料都可以在其官网免费得到。严格来说,Arduino这个术语涉及硬件、软件、开发团队、设计原理,以及用户的互助精神。从笔者的实际生活体验看,通常所说的Arduino在90%的情况下是指Arduino的硬件开发板,可能是硬件更显而易见吧。Arduino的硬件开发板有许多种型号。它是一个单片机集成电路,它的核心就是一个单片机,开发板上的其他电路用来供电和转换信号。官方Arduino使用的是megaAVR系列的芯片,特别是ATmega8、ATmega168、ATmega328、ATmega1280以及ATmega2560,还有一小部分使用的是Arduino兼容的处理器。常见的Arduino主板有:
Arduino UNO
(Arduino Uno开发板基于ATmega328)
Arduino Leonardo
(Arduino Uno基于ATmega328)
Arduino Due
(Arduino Due基于Atmel SAM3X8E ARM Cortex-M3 CPU)
Arduino Yún
(Arduino Yún基于ATmega32U4和Atheros AR9331)
Arduino Micro
(Arduino Micro基于ATmega32U4)
以及Arduino Tre、Arduino Robot、Arduino Esplora、Arduino Nano、Arduino Zero等等。本文以Arduino系列的名星板——Arduino Uno R3为例进行仿真实验,其它板可以类推进行仿真。
B、实验开发工具介绍
1.Arduino IDE
Arduino IDE是专门为Arduino开发板量身定做的集成开发环境。
Windows下安装Arduino IDE教程:http://jingyan.baidu.com/article/ed15cb1b7a401e1be369811a.html
2.Proteus
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,
proteus安装教程:http://jingyan.baidu.com/article/ce436649d086713772afd34b.html
二、Arduino如何用Proteus仿真
本文以Arduino Uno R3为例,仿真时一般选用ATMEGA328P单片机,仿真其他板时,选择对应的单片机即可,大体原理相似。
其基本过程是:软件在Arduino IDE编程软件里编写,硬件在Proteus ISIS软件模块里通过绘制电气原理图建立。程序编写完后,选择Arduino IDE编程界面菜单栏的Tools菜单项,再选择Board→Arduino Duemilanove w/ATmega328,也可以选择Board→Arduino Uno,然后点击编译按钮,生成Hex文件(二进制机器码文件)。有了Hex文件,接着转到Proteus电气原理图,双击原理图中的型号为ATMEGA328P 单片机芯片,出现对话框,通过文件目录浏览的方法确定Hex文件存储位置,并进行一些单片机芯片工作状态参数的设置,最后点击Proteus ISIS软件界面左下方的播放按钮,就可以看到Arduino单片机在Proteus仿真环境中的运行效果。
然后就可以获得hex文件的地址了。
确定了Hex文件,还有三个参数项要修订,一是“CLKDIV8(Divide clock by 8)”参数项修改为“Unprogrammed”;二是“CKSEL Fuses”参数项修改为“(1111)Ext. Crystal 8.0-MHz”;三是Advanced Properties的Clock Frequency参数项设为16Mhz。最后点击编辑对话框的“确定”按钮,然后就可以仿真了,如图:(双击ATMEGA328P)
三、用Proteus仿真Arduino Uno最小系统
1. ATMEGA328P-PU引脚图
此外,还需振荡电路,将AVCC和AREF接+5v。
用到的元器件有:CRYSTAL、22pF电容、ATMEGA328P、POWER端口、GROUND端口。
然后按下图连线:
即得到Arduino Uno的最小系统。
建议将Arduino Uno的最小系统导出区域,这样下次用的时候可以直接引进来。
四、用Proteus仿真实现LED输出SOS
1.代码如下:
int ledPin=13;
void setup(){
pinMode(ledPin,OUTPUT);
}
void loop(){
for(int i=0;i<3;i++){
digitalWrite(ledPin,HIGH);
delay(300);
digitalWrite(ledPin,LOW);
delay(600);
}
delay(2100);
for(int i=0;i<3;i++){
digitalWrite(ledPin,HIGH);
delay(900);
digitalWrite(ledPin,LOW);
delay(600);
}
delay(2100);
for(int i=0;i<3;i++){
digitalWrite(ledPin,HIGH);
delay(300);
digitalWrite(ledPin,LOW);
delay(600);
}
delay(2100);
}
2.仿真图如下:
直接将前面最小系统引入,然后在digital pin13口加电阻(1k),LED即可。
3.仿真过程:
编译完毕后,下方窗口显示如下:
.hex即为我们要用到的hex文件。直接复制地址,然后粘贴到Program File处,点确定:
然后点右下角三角开始仿真,仿真结果如下,开始输出SOS信号:
至此,实验全部结束。
五、实验用到代码及仿真图:
Arduino最小系统仿真图:
http://files.cnblogs.com/files/liujw2114/arduino%E6%9C%80%E5%B0%8F%E6%A8%A1%E5%9D%97.7z
SOS仿真输出:
http://files.cnblogs.com/files/liujw2114/LED%E8%BE%93%E5%87%BASOS.7z
基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用的更多相关文章
- 基于Proteus仿真的Arduino学习(2)——LED点阵探究A(LED点阵基础)
一.前言: 随着LED的普及,以LED点阵为基础的显示设置层出不穷.例如,公交车的线路提示牌.高速公路的信息提示牌,安装在大楼上的广告屏幕等.下面,我们将由简单到复杂地探索各种LED点阵的使用方法,同 ...
- Arduino学习笔记② Arduino语言基础
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- Arduino学习笔记① 初识Arduino
1.前言 近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...
- Arduino学习笔记③ 经典LED
1.前言 今天我们开始同时讲解理论以及实践.对于绝大部分有过单片机编程经历的人来说,第一个接触的大多数就是LED灯(忽然想起博主大一那个懵懂的时代,当时大三的师兄给我们展现了一把流水灯功力,当 ...
- Arduino学习——Arduino main 函数
在Arduino IDE的安装目录下可以找到main.cpp这个代码模板文件,main函数就位于此. 文件位置:{Arduino安装目录}\hardware\arduino\avr\cores\ard ...
- 基于Bootstrap仿淘宝分页控件实现
.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...
- atmega32u4制作arduino leonardo最小系统
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 一.leonardo最小系统 关于leonardo这里不再介绍,直接上最小系统原理图,该系统 ...
- 一款基于jQuery仿淘宝红色分类导航
今天给大家分享一款基于jQuery仿淘宝红色分类导航.这款分类导航适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 ...
- 大数据下基于Tensorflow框架的深度学习示例教程
近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较 ...
随机推荐
- win8.1系统的安装方法详细图解教程
win8.1系统的安装方法详细图解教程 关于win8.1系统的安装其实很简单 但是有的童鞋还不回 所以今天就抽空做了个详细的图解教程, 安装win8.1系统最好用U盘安装,这样最方便简单 而且系统安装 ...
- linux中ldconfig的使用介绍
linux中ldconfig的使用介绍 ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享. ldconfig的主要用途: 默认搜寻/lilb和/usr/lib,以及配置文件 ...
- .NET学习之路----我对P/Invoke技术的理解(一)
看了P/Invoke技术的介绍,于是想写下点东西,东西包含两个部分:知识的纪录和我的理解及疑问. r托管代码中调用非托管API函数的过程 1.定位包含API的DLL: 2.载入DLL 3.找到DLL中 ...
- Interop with Native Libraries
http://www.mono-project.com/docs/advanced/pinvoke/
- Spring task定时任务
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- Apache Shiro 学习记录1
最近几天在学习Apache Shiro......看了一些大神们的教程.....感觉收获不少.....但是毕竟教程也只是指引一下方向....即使是精品教程,仍然有很多东西都没有说明....所以自己也稍 ...
- 界面通信之block传值
block传值有两种方式 ⽅式⼀: 使⽤block属性实现回调传值 ⽅式⼆: 在⽅法中定义block实现回调传值 方式一比较便于理解而且常用,下面介绍方式一是如何传值的 使用block属性传值和代理传 ...
- [Python] Python学习笔记之常用模块总结[持续更新...]
作为一种极其简单的编程语言,Python目前成为了最炙手可热的几种语言之一.它不仅简单易学,而且它还为用户提供了各种各样的模块,功能强大,无所不能.有利必有弊,学习Python同样有困扰,其中之一就是 ...
- [解决WebClient或HttpWebRequest首次连接缓慢问题]
[编程环境]Visual Studio 2010, NET4.0 [开发语言]C#, 理论上VB.NET等依赖.NET Framework框架的语言均受此影响 [问题描述] 使用HttpWebRequ ...
- curl发送get和post请求
function getAction($url='') { // curl 请求一共分四步,初始化,设置属性,执行并获取结果,释放句柄 // 一.初始化 $curl = curl_init(); // ...