技术文档

avr单片机开发板 聊一聊三种常用的Arduino开发板

小编 2024-10-10 技术文档 23 0

聊一聊三种常用的Arduino开发板

今天继续由马克笔设计留学的程老师来给大家带来Arduino的相关知识,这次文章来聊一聊三种常用的Arduino开发板:Arduino Uno,Arduino Nano和Arduino Mega 2560。Arduino可以通过面包板或者其他扩展板与发光二极管、LCD液晶显示屏、按钮、步进电机、舵机、温湿度传感器、距离传感器、压力传感器或其他能够输出数据或被控制的任何东西相连,也可以通过蓝牙、WiFi、Zigbee、NB-IoT等无线通信模块与其他设备进行无线连接,或者接入互联网。你也可以通过Arduino收集来自传感器的数据并上传到数据中心,然后根据数据中心下达的指令去控制与其相连的外围设备进行动作。

Arduino开发板有各种各样的型号,如Arduino Uno、Arduino Leonardo、Arduino101、Arduino Mega 2560、Arduino Nano、Arduino Micro、Arduino Ethernet、ArduinoYún、Arduino Due等。Arduino Uno是基于ATmega328p的单片机开发板,有14个数字输入/输出引脚(有6个可用作PWM输出)、6个模拟输入引脚、16 MHz晶振;Arduino Mega 2560是基于ATmega2560单片机开发板,有54个数字输入/输出引脚(有15个可用作PWM输出)、16路模拟输入、4个UART;Arduino Nano是基于ATmega328p的小型开发板,可以直接插在面包板上使用。

Arduino UNO R3

Arduino Uno以AVR单片机ATmega328p为核心,Arduino Uno R3开发板如下图所示,由于Arduino的硬件和软件都是开源的,所有关于Arduino的软硬件资源都可以从网上获得,因此,可以买到到大量的克隆板。甚至如果我们有兴趣,我们也可以使用官方原理图、PCB板图自己做一个。新手套件里给大家提供的就是这块板子,在之前的公众号文章里我已经介绍过很多关于这个板子的内容了,这里就不赘述了。《小白如何开始学习Arduino?》

Arduino Mega 2560

Arduino是一个系列,除了流行的Arduino UNO外,还有一些常用的开发板,Arduino Mega2560就是其中的一种。Mega和UNO的主要区别在于处理器,ATmega2560比ATmega328内存更大,外围设备更多。Mega的PCB也要大一些,但保持了和标准Arduino 接口的兼容,在右边增加了3个扩展插座,PCB的长度增加了约1英寸,电路其它部分基本和Arduino Uno是一样的,如下图所示,外形和功能几乎都兼容Arduino UNO。

Arduino Mega相较于Arduino UNO提供了更多IO口,它有54个数字输入/输出引脚(其中15个可用于PWM输出)、16个模拟输入引脚、4 UART接口、1个USB接口、1个DC接口、1个ICSP接口、1个16 MHz的晶体振荡器、1个复位按钮。如果你需要控制更多的传感器,需要同时连接更多的引脚,可以选择Arduino Mega 2560。

Arduino Nano

Arduino Nano是Arduino Uno的微型版本,去掉了Arduino Duemilanove/Uno的直流电源接口及稳压电路,采用Mini-B标准的USB插座。如下图所示,Arduino Nano的尺寸非常小,可以直接插在面包板上使用。

除了外观变化,Arduino Nano的其它接口及功能基本保持不变,控制器同样采用ATmega328 (Nano3.0),具有14路数字I/O口(其中6路支持PWM输出)、8路模拟输入、1个16MHz晶体振荡器、1个mini-B USB口、1个ICSP header和1个复位按钮。Arduino Nano和Arduino Uno在使用上几乎没区别, 注意在IDE中选对开发板型号,另外,两种板子采用的USB接口芯片不同,Uno用的是ATmega16U2,Nano用的是FT232RL。由于两种板子用ATmega328的封装形式不同,Nano比Uno多了A6和A7两个引脚, 能够支持8路模拟输入。

当然,Arduino Nano也有两种版本,一种是带引脚可以直接插在面包板上的,另一种是不带引脚,需要我们把杜邦线剪开,露出丝串进板子上的孔里。就灵魂度这一层面来讲,不带引脚的板子比带引脚的板子更灵活,我们可以把几根线统一连在一个孔里,而带引脚的却不可以这样做。我们用Arduino Nano这块板子的目的一般就是缩小我们模型的体积,所以一般会选用不带引脚的板子。最终选择哪一块开发板去使用,我们需要根据自己的项目而定。

所有图片来源于网络

文章作者:程雅秋英国皇家艺术学院产品设计硕士擅长产品服务系统设计、用户体验设计和硬件Arduino交互

AVR单片机学习(四)开发基础知识

一、AVR开发工具简介及开发环境的建立

软件开发工具

编译环境:WinAVR

下载软件:MucodeISP

仿真环境:AVR Studio

集成环境:AVR Studio,可以内联WinAVR 成为一个具有编译、仿真、下载功能的集成环境

硬件开发工具

下载线(并口也有USB接口的,功能是下载程序配置熔丝位)

仿真器

学习板(或手工焊接的系统板)

工具手册

WinAVR技术手册

ATmega16官方中文版技术手册(英文水平好也可以看看英文版)

WinAVR 说明

WinAVR 下载安装后只用到PN其他删除就行了、PN我们一般把他作为一个编辑环境来使用,保存为.c文件之后他就会变成一个有颜色的C文件了,这个有点就显示出来了(关键字带颜色深蓝色和点击小括号其中另一半就会高亮很多层括号就有用了)而WinAVR 的编译功能需要编写Makefile文件所以对初学者有难度先不介绍了。而编译使用AVR Studio来完成就可以了。

下载线作用

一、修改熔丝位 熔丝位可理解为是一个独立于CPU之外的一块小存储区它保存了一些关键的控制位、如:时钟源、一些I/O口的特殊作用。

二、向单片机Flash中下载程序代码。不具备单步调试仿真功能。

三、下载线有很多种,最常用的是插在计算机并口上的STK200/300

下载软件说明

下载软件有很多、但推荐初学者使用Mucode isp 优点是熔丝位设置很清晰,不至于设错而锁死芯片

MUcode ISP 如果外部石英晶振高于8MHZ 也选3.0---8MHZ 防止锁死如果芯片锁死了,就下载不进去程序了。芯片解锁只能采用高压编程器,将熔丝位修改回来。然后另一个比较重要的熔丝位是(共16个红点和绿点)这个表示的是ATmega16 的2字节的熔丝位,上面8个表示时钟电源模式。更改时钟的话上面8个自动做出相应的变化。变绿=1 表示没有使能变红表示使能的红点按下去就是使能的意思就好在这里。下面8个最重要的是JTAGEN这个,打开ATmega16 技术文档发现JTAG有个4个脚和普通的I/O口是复用的(TDI TDO TMS TCK )可以配置成普通I/O用也可以当JTAG接口用。现在JTAGEN =0 红色 说明这个4个只能当JTAG 口用。所以在编程的时候对这4个I/O操作就是无效的。点一下变绿了就不使能了,可以当普通I/O口用,当然这个时候JTAG仿真器就连不上了。CKOPT 这个熔丝位如果使能外部晶振的振幅就会变得比较大,示波器就能看的出来会变成5V左右的振幅,如果不使能,晶振就工作与一种低功耗的模式,振幅比较小。初学不用管。EESAVE表示向Flash编程的时候是否擦出内部的EEPROM ,使能就是不擦出,当初学用不到。

一般我们只管设置时钟(前8个 选了就不用管了)和JTAGEN (下面8个其中的一个)就行了。下载线和下载软件

AVR Studio 是Atmel公司官方的汇编、下载与仿真软件可以内联WinAVR获得C语言编译能力。单独装AVR Studio只能编译汇编语言的代码,通过JTAGE 工具也具有下载仿真的功能也可以更改熔丝位不过熔丝位不够直观。内联就可以获得C语言编译能力了。

JTAG ICE 是Atmel公司官方的仿真调试器,但已经被仿制,价格比官方版本要便宜十倍,可以使用淘宝购买的JTAGEICE 当然你买的时候最要要卖家给发给你个AVR Studio 的版本装了AVR Studio 4,创建一个项目如下图,点击下一步

选着JTAGE ICE ATmega16 点击完成

进入项目

点击project 下的配置选项 (configuration options)

填入:晶振频率和代码优化 选项(-00 -01 -02 -03 -0s) 从小到大 0s 最大的优化越好编译出的代码越小,执行速度越快。我们选-00 因为在优化的情况下有些时候会出现一些极其少见的问题。建议选-00。点击确定。

注意AVR都要包含一个最为基本的头文件

#include //在C:\WinAVR\avr\include\avr 这个路径下就有io.h文本文件 可以用PN打开看看

//在AVR Studio下编译代码就不如在 WinAVR下编译好如括号不好用。

调试如下

这样其实已经通过仿真器已经下载到了单片机里面了,这就提到一个JTAG的一个好处,JTAG 一边是DB9头一边就是JTAG仿真接口接单片机。所以仿真什么结果实际运行就是什么结果是一样的。51不带JTAG口一般采用伟福仿真器。、它的仿真是一种ROM仿真,仿真时候使用仿真头来代替单片机来进行仿真,最后再下载进去,所以最后运行的结果不一定是一样的。

二、计算机原理基础知识讲解

数值就是一位数字能够表示的数的数量,N进制数的进位规则是“冯N进1,常用的数制有十进制、二进制、十六进制。人类有十个指头,所以习惯采用十进制。计算机只能识别0和1,采用二进制。为了计算机学中的数据写方便,采用十六进制。位于字节的概念:

位(bit):简写为b,表示二进制数的一位。

字节(byte):简写为B,8位为一字节

数值转换工具:Windows自带的计算器

1Byte = 8bit

1字节=2位十六进制数

例如:

0x55 = 0b01010101 = 85

0xa3 = 0b10100011 = 163

存储器

对于8位单片机,其内部存储器均为8位。

RAM与ROM 模型

这是一个1K大小的ROM 1024-1=1023 = 0x3FF 1维的模型 每一个地址对应一个存储单元,一个存储单元房的有数据像上图的0x23 0x55 0x6a ...0xcf等 存储的都是8位的二进制数。外部模型如右边的 主要有2组总线一边是地址线一边是数据线(其实还有个控制总线没画出),对这个RAM读写给地址线送一个相应地址通过控制总线表示当前是读模式,相应的数据线就将对应的地址存的内容送到数据线上。对于ROM也是这样的。

CPU

CPU即是为中央处理器

取指令-执行

三、C语言基础知识讲解

变量

运算符

语句

函数

顺序语句

选择语句

循环语句

数组和指针

变量:变量就是存储于RAM或ROM中的数据

变量的分类:

单片机中比较常用的是字符型(char)和整型(int)

实型(float)变量在单片机C语言中一般用不到(浮点)

运算符:类似于数学运算中的运算符号(+ - * / 移位等C语言课本后有附表)

语句:C语言中以分号作为一条语句的结束

习惯上每条语句单独占用一行,但也可以每行有多条语句, 用分号隔开即可

DDRx PORTx 都在io.h 里面有定义 当然内嵌一层(

#elif defined (__AVR_ATmega16__)

# include )

在找到iom16.h就有定义地址了

#define DDRC _SFR_IO8(0x14)

#define DDC0 0

#define DDC1 1

#define DDC2 2

#define DDC3 3

#define DDC4 4

#define DDC5 5

#define DDC6 6

#define DDC7 7

就是说明在 0x14位置 0001 0100 这个地址保存一个8位二进制数 没一位表示一个I/O口的方向

字符型变量

占用存储器中的一个字节空间,即8位二进制数

取值范围:0~(2^8 - 1 )即0~255

可以赋值为整数或ASCII码

char zifu =97;

char zifu = 'a'//这种特殊方式是‘a’ 字符就是把ASCII码值给了ASCII(2)0--255对应一个字符是一种映射关系单引号告诉编译器从这个码表中取出对应的ASCII码赋值给zifu 查下表得出对应就是97,所以这两条语句是等效的。

前提是先进入调试模式下view下的Watch才能用 不然是灰色的

在Value右键可以选十六进制和十进制 看看 location下显示的是地址(SRAM)中的位置

整形变量

占用存储器中的2个字节,即16位二进制数

有无符号子类型

unsigned int :无符号整型

取值范围0~(2^16-1)即0~65535

signed int 有符号整形,signed 可以省略。

取值范围-2^15 ~ (2^15-1)即-32768 ~ 32767

长整型

取值范围更大的int 子类型

long int :长整形,长度为32位,即4个字节

long long int :长度为64位,即8个字节

常用的运算符

赋值 = 加 + 减 - 乘 * 除 / 括号() 求余%

与& 或| 取反~ 异或^ 左移 << 右移 >>

逻辑与&& 逻辑||

了解更多AVR单片机系列,请关注“云汉电子社区(ickeybbs) ”官方微信公众号,或者登录云汉电子社区官方网站(bbs.ickey.cn)

相关问答

Arduino跟51 单片机 比的优点有什么?

Arduino是专门基于AVR单片机特定开发板的开源开发环境,它有一套完整的高级语言和自成体系的支持库函数,相对于51开发板来说入门相对容易,加之AVR单片机的性能...

AVR单片机 中ICC avr软件用来干什么的?用来烧程序吗?还有avr ...

AVR单片机中ICCavr软件用来干什么的?用来烧程序吗?还有avrstudio作用?显示器戴尔讨论回答(3)AVR单片机中ICCavr软件用来编辑、编译代码的。avrstudi...

AVR ATmega8 单片机 下载程序的过程-ZOL问答

目前的AVR芯片基本上都具备ISP接口,可通过ISP接口进行编程。它一共使用了两条电源线:VCC、GND,三条信号线:SCK、MOSI、MISO,以及复位线:RESET。由于仅仅使用了...

51单片机和 AVR单片机 的区别?

这个区别不少,最主要的当然是寄存器和IO端口啦!avr在51的基础上扩充了大量的寄存器和大量的引脚功能,几乎每个引脚都有第二功能,还有如:4路PWM波的输出、I^2...

单片机 arduino哪个好?

1.arduinoArduino的开发一般是一套以AVR单片机为核心控制器的硬件(开发板),还有配套他们的开发环境ArduinoIDE。简单来说呢就是arduino是对单片机的二次封装,...

AVR单片机 ldi赋值问题?,ldi性价比怎么样??

[回答]武汉市立格生信科技有限公司是一家研发公司,一直在开发和制造可实时分析物质的传感器。在软件分析中将光子学与先进算法相结合,我们的仪器擅长使用...

哪位老铁 有谁能回答一下吗 单片机开发 薪酬多少?仪器仪表单...

[回答]单片机是芯片,比如51单片机,AVR单片机,stm32单片机单片机开发板是集成了单片机芯片和一些模块,可以实现特定功能的板子比如吴鉴鹰单片机开发板,可以...

如何设计一个以 单片机 为核心的继电器控制电路?

根据提问者的意思以单片机为核心控制继电器,不知提问者提出这个问题的真正目的是什么,若只是为了想要一块继电器板实现相应的功能,可以直接购买一块单片机继电...

单片机 和ARM有什么区别?

欢迎大家关注狗哥,学习更多单片机干货1、单片机指单芯片上集成了控制器、存储器以及如定时器、SPI、IIC等外部设备于一体的片上系统,可以用来执行复杂的功能,...

电子爱好者如何选择适合自己的ARDUINO套件?

关于Arduino套件的选择,小白爱好者的话,建议买一些入门级别的套件。图上的套件,可以自己DIY一些电灯之类的。Arduino实现你的创意。Arduinounor3开发板...

猜你喜欢