分享

AVR单片机系列教程(二)

 Zmflc 2016-04-28

单片机的开发工具

  • 编程器(烧写器):将编译出来的目标代码固化到单片机的ROM内。(老的把单片机插到编程器上)

  • 下载线:作用与编程器相同(ISP 通过一条下载线4根线和单片机通信就可以把代码下载到单片机、好处不需要把单片机从电路板拔下来)

  • 仿真器:对单片机的程序进行单步调试、设置断点等,便于查找程序中的错误。其中JTAG仿真器可以在线仿真调试(它也分为2种一种是传统的需要把单片机拔下来然后把仿真器的仿真头插到板子上、通过后再把代码固化到单片机中然后把单片机放回板子上、最近新型的JTAG仿真器是属于在线仿真左边的、你只需要把单片机插到板子上把JTAG跟单片机相连接就可以进行仿真与调试同事JTAG也具有把代码固化到单片机中的能力、所以有仿真器的话下载线基本可以省了。)

AVR单片机系列教程(二)

  • 软件开发环境

编辑与编译软件:WinAVR

仿真调试软件:AVR Studio

下载软件:MuCode ISP

  • 硬件开发环境

仿真调试工具:JatgICE

下载线工具:STK200/300

学习板、开发板一块(型号 *-**-M16)

参考技术手册 AVR官方中文版技术手册《AVR单片机与GCC编程》

AVR单片机简介

AVR单片机的性价比远高于51单片机

一、高速 、RISC、主频最高可达20MHZ(首先主频就快10倍 RISC又扩大好几倍。)

二、低功耗、宽电压(1.8V---5.5V)。最低全速运行功耗<>

三、I/O驱动能力强、推拉电流能力均达30mA ,可以直接驱动继电器、蜂鸣器等。

(51 拉电流强估计有小于10mA 推电流基本是0 几百个微安了

四、片内资源丰富:外部中断、定时器/计数器、UART、SPI、IIC、ADC、模拟比较器。

尤其值得一提的是AVR的定时器功能也是非常强的能够实现PWM功能或输入捕获功能、PWM功能

是非常强的可以用于电机的控制。

五、型号齐全、而且40脚以下的AVR均具有DIP封装形式。(8脚到100脚需要的领域基本都有

相应的产品了)如下图。

AVR单片机系列教程(二)

ATMEGA系列中的ATmega16 应该算是我们用的最多一款因为很多人都是用它学习AVR单片机学习的入门。

AVR单片机系列教程(二)

上图三个是官方提供的开发工具 MK2仿真器:

JTAG ICE: 这个可以自制

选择AVR开发有一下几个优点

1、最小系统容易实现设计容易、只需要连接电源 焊接晶振就可以工作(当然如果对时钟要求不是很严格的话

连晶振都可以不要的不像51单片机需要晶振、EA脚上拉上电复位电路、而AVR单片机内部自带内部上电复位

电路的)。

2、很多概念符合初学者的思路、理解起来更容易:例如AVR时钟源(晶振、内部RC等)不经过分频直接提供

给CPU使用,而51的主频等于晶振的12分频这个大家都知道的、所以这一点算定时器的时候非常方便,而51

算就比较麻烦算定时周期就幻晕。

3、AVR即具有简单的、可以自制的ISP下载线和Jtage仿真器,又有DIP直插的封装形式。(51占用一个串口,

是不能仿真串口的,属于软仿真,DIP直插很容易让初学者学习像430就没有DIP)

4、AVR的C语言编程与C语言教科书上的标准C语言语法是几乎一样的,不像51的C语言,一些bit srf 之类的变

量定义在教科书中是找不到的,有利于后期的嵌入式学习。

实际例子:

AVR单片机系列教程(二)

电路图可以看到8个发光二极管可以进行闪烁和显示二进制显示等。

有图中可以看到这是ATmega16 单片机,它的最小系统是非常简单的只要GND接地 VCC接+5V就可以了右边

的AGND/AVCC/AREF这三个脚是你用到片内模/数转换 ADC或模拟比较器的时候需要把这三个脚接上电源,如果正常用不到可以悬空就可以了。还有RESET可以悬空。Hander6 是一个简易的下载线的接口 MOSI , MISO, SCK,RESET共4根线、8个二极管的阳极接PD0---PD7 (学过51的都知道一般都是阴极接I/O口这是因为51的灌电流能力很强,拉电流很弱)。这样阳极接I/O口也比较符合初学者的思维,I/O口输出1二极管是点亮的。

下面是如何用万用板焊接和编译程序:

焊接万用板就不说了,太简单了只要小心翼翼就ok了。焊接完成后,把ATmega 16 插到插座上,我们往单片机固化的程序采用的是我们自制的一个下载线如下图:

AVR单片机系列教程(二)

这个下载线电路还是比较简单的,只需要一片 74HC244(也可以直接跟并口相连,用244的原因是因为防止烧坏并口所以接了一个缓冲器,其实就是用并口模拟的时序ISP) 然后插到计算机后面的并口上,标准的AVR单片机下载线是10芯的接口的,但是只有其中的6芯是有用的。所以我们自制了一个10芯转6芯的一个线,把其中有用的6芯给引出来,顺序跟我们电路图上的一样的。然后把这个6芯线插到单片机引出的下载线的6芯接口上。然后找来一个5V电源然后插到单片机上的电源供电口,然后把下载线的软件下载软件 MuCode ISP 如下图是图标和打开后的样子:

AVR单片机系列教程(二)

AVR单片机系列教程(二)

下面我们编译一个测试代码:(打开AVR studio下图)

AVR单片机系列教程(二)

AVR单片机系列教程(二)

AVR单片机系列教程(二)

点击:New Project 弹出下图

AVR单片机系列教程(二)

第一项: ADORD AVR assemble 这个是会变得 这个是新建一个汇编语言的项目

第二项:AVR GCC 这个是C语言的项目 Project name 起个项目名字 test0

最下面的location 这个是路径 我们可以选择放在桌面上 (桌面上新建一个文件夹放进去就行了)

点击:finish 完成

AVR单片机系列教程(二)

点击:Next 下一步

AVR单片机系列教程(二)

下面的这步是选择仿真调试的工具和将要开发的单片机的型号:如下图

AVR单片机系列教程(二)

调试工具由于我们小板上没有喊JATG ICE接口 如果焊了我们可以选JTAG ICE 选项会如下图:

AVR单片机系列教程(二)

因为没有焊,我们直接下载到单片机运行验证。所以我们不选 JTAG ICE 选AVR Standlitor 意思就是软件仿真不用仿真器 然后右边选AT mega 16 如下图

AVR单片机系列教程(二)

点击:finish 进入环境 软件自动为我们建立一个.C 文件

AVR单片机系列教程(二)

因为C语言文件必须包含基本的头文件

#include

int main (void ){ //avr GCC的语法呢 的这个main函数必须是int 类型的 且没有返回值的

//由于发光二极管阳极是接在PD口上 属于PD口输出型的所以要把整个PD口都置为输出

//PD端口方向寄存器 叫做 DORD =0XFF的时候

DDRD =0XFF;//0到7 都置为输出

while(1){//因为单片机的程序不像PC机程序可以退出,所以单片机上电之后一般都是死循环的

PORTD =0b11100110; //这个表示TD口第一个数据寄存器 给它赋值就等于赋值了

//0b表示 二进制 是从7位到第0位 左位高位

}

}

//然后点击编译 如下图

AVR单片机系列教程(二)

AVR单片机系列教程(二)

然后用 MuCode ISP 下载到单片机中 file ->open flash

AVR单片机系列教程(二)

AVR单片机系列教程(二)

点击:progarm 如下图

AVR单片机系列教程(二)

可以看到:如下图所表现

AVR单片机系列教程(二)

下面加一些动态效果能够让灯闪烁起来 无非是让产生两种状态 还有就是这个所有位就是取反

#include

int main (void ){ //avr GCC的语法呢 的这个main函数必须是int 类型的 且没有返回值的

DDRD =0XFF;//方向寄存器

while(1){

int i =0,j=0;

PORTD =0b11100110;

//其实执行这条C语句大概需要2条汇编指令的周期 而这个单片机的时钟周期是1MHZ 默认的是内部RC

振荡1MHZ 这样也就是每条指令时us级 所以人的眼睛是看不到的。加延时

for (j=0;j<>

for (i=0;i<10000;i++); 估算下这个for="" 循环消耗多长时间="" 每条指令几个微妙="">

大概5条指令

所以10000 * 5 *2 = 100000 大概50毫秒 所以让这条for 执行10次左右

PORTD =0b00011001;//执行完了 加一个延时跟上面一样

for (j=0;j<>

for (i=0;i<10000;i++); 估算下这个for="" 循环消耗多长时间="" 每条指令几个微妙="">

大概5条指令

}

}

编译验证下:

AVR单片机系列教程(二)

可以看到mucode isp 自动就下载进去了。 因为有个选项是下图

AVR单片机系列教程(二)

这个勾上后就没当这个文件更新之后就自动下载到单片机里了。下面可以看到现象每隔1秒闪烁一次

AVR单片机系列教程(二)

AVR单片机系列教程(二)

由此说明我们的程序是成功的。今天到此结束。 bye !

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多