AVR单片机学习基础篇

发布者:WhisperingGlow最新更新时间:2020-02-16 来源: eefocus关键字:AVR  单片机  学习基础 手机看文章 扫描二维码
随时随地手机看文章

简介:AVR单片机的性价比远高于51单片机一、高速 、RISC、主频最高可达20MHZ.二、低功耗、宽电压(1.8V---5.5V)。最低全速运行功耗<300uA三、I/O驱动能力强、推拉电流能力均达30mA ,可以直接驱动继电器、蜂鸣器等,四、片内资源丰富.尤其值得一提的是AVR的定时器功能也是非常强的能够实现PWM功能或输入捕获功能、PWM功能是非常强的可以用于电机的控制。


一、基础篇


单片机的基本要素

CPU核(如:51核 AVR核 M430核) ROM(READ ONLY Memory 绕母) RAM(random accessMemory随机访问寄存器 ) 片上外设 总线

CPU核:相当于电脑的CPU吧、就是执行从ROM中取指令。这东西有几个指标非常重要


一、主频(如51核是2MHZ晶振12分频过来就是2MHZ、AVR 是20MHZ(快达到DSP水平了)MSP430F1系列的是8MHZ)


二、指令集 (CISC(复杂) RISC(精简)当然精简指令集比复杂执行效率高很多个人觉得缺点实现的功能少 )


三、字长 (就是一次能处理二进制数据的位数 我们单片机一般是8位 16位 AVR和51都是8位)


ROM:相当于电脑的硬盘、存储程序用的指标就是容量 大多数是flash 结构基本都混淆说了


一、容量 单位一般KB位单位


二、高级指标 、自编能力(就是程序在运行中可以自己擦出flash然后更改flash中的内容的能力一般我们用不到)


如:51(不具备自编能力)-->8KB


MSP430F1101(具备)--> 1KB


AVR(具备)---> 16KB


RAM:数据存储器、相当于计算机的内存、ROM中的程序在运行时快速的存取数据、目前大多数单


片机为SRAM结构 计算机室SDRAM结构。指标也是容量 一般 B(字节) KB(千字节)


一、容量 、


如: 51单片机512字节


MSP430F1101 128字节


AVR 1KB 1千字节


主要是程序运行时调用一些变量啊调用一些数组等都是存在RAM中的。


片上外设:相当于电脑的接口,鼠标接口、显示器接口等


常见的片上外设模块有外部中断、定时器/计数器、URAT(异步串行)、SPI(同步)IIC(2线的串行口)ADC


模拟比较器等。


如:一下三种价格10元左右的单片机


一、89C52就只有外部中断 定时器计数器 UART


二、MSP430F1101外部中断 定时器计数器 ADC


三、AVR 外部中断、定时器/计数器、URAT(异步串行)、SPI(同步串行)IIC(2线的串行口)ADC


及模拟比较器。


总线:用于以上四部分之间的传输数据的通道、相当于硬盘的IDE线、光驱线等。

总线只是一个概念。没有一个实际的这样的一个东西、这个东西我也不太清楚可以理解为一束功能相近的导线


的集合吧。

单片机能做什么?


单片机无所不能!


所谓的“微电脑控制控制”的核心就是单片机(微电脑控制比较时髦的)


覆盖工业生产、日常生活、军事设备、科研仪表仪器等所有智能化的应用场合


例如:智能洗衣机(一般洗衣机不能完成的功能)


定时完成洗衣脱水功能。


可以判断衣服的干净程度。


实现洗净既停的功能。


蒸汽熨烫的功能。


刷卡投币洗衣


更加智能LG公司的"IPAD"洗衣机一边洗衣一边听歌。


例如:(LED显示屏)


LED发光二极管构成显示屏的像素点


单片机负责逐点火逐行扫描,并与电脑通信获取图片信息。


例如:(PH/ORP仪表)


用于环境监测、工矿企业、科学研究、水产养殖等场合的PH值的测定


读取PH传感器的模拟信号、内部处理后显示在LCD上。(其实就是读取液体的PH值)


还有很多数码产品。。。


还有智能小车(我上大学时就做过这样一个东西呵呵用ATMEGA8)


一、巡线


二、避障


三、电视机遥控器遥控(接受各个遥控器的键码)


四、LCD显示


----------------------------------------------------------------------------------


二、单片机的开发工具

编程器(烧写器):将编译出来的目标代码固化到单片机的ROM内。(老的把单片机插到编程器上) 下载线:作用与编程器相同(ISP 通过一条下载线4根线和单片机通信就可以把代码下载到单片机、好处不需要把单片机从电路板拔下来) 仿真器:对单片机的程序进行单步调试、设置断点等,便于查找程序中的错误。其中JTAG仿真器可以在线仿真调试(它也分为2种一种是传统的需要把单片机拔下来然后把仿真器的仿真头插到板子上、通过后再把代码固化到单片机中然后把单片机放回板子上、最近新型的JTAG仿真器是属于在线仿真左边的、你只需要把单片机插到板子上把JTAG跟单片机相连接就可以进行仿真与调试同事JTAG也具有把代码固化到单片机中的能力、所以有仿真器的话下载线基本可以省了。)

软件开发环境

编辑与编译软件:WinAVR


仿真调试软件:AVR Studio


下载软件:MuCode ISP

硬件开发环境

仿真调试工具:JatgICE


下载线工具:STK200/300


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


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


AVR单片机简介


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


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


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


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


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


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


尤其值得一提的是AVR的定时器功能也是非常强的能够实现PWM功能或输入捕获功能、PWM功能是非常强的可以用于电机的控制。


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

ATMEGA系列中的ATmega16 应该算是我们用的最多一款因为很多人都是用它学习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 之类的变量定义在教科书中是找不到的,有利于后期的嵌入式学习。


实际例子:

电路图可以看到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 插到插座上,我们往单片机固化的程序采用的是我们自制的一个下载线如下图:

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

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

点击:New Project 弹出下图

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


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


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


点击:finish 完成

点击:Next 下一步

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

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

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

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

因为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位 左位高位


}


}


//然后点击编译 如下图


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


点击:progarm 如下图

可以看到:如下图所表现

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


#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<10;j++)


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


大概5条指令


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


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


for (j=0;j<10;j++)


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


大概5条指令


}


}


编译验证下:

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

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

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


最后送大家一句话:Nothing is impossible to a willing heart

关键字:AVR  单片机  学习基础 引用地址:AVR单片机学习基础篇

上一篇:基于AVR单片机的U盘MP3设计与实现
下一篇:AVR多功能实验箱DS1302时钟实验源码资源

推荐阅读最新更新时间:2024-11-13 00:28

单片机 认识HEX文件
看过几篇常用指令的用法后,我们换换口味,介绍一下Intel 原厂所公布的HEX文件标准格式,相信经过本文的介绍,一定可以让您对8051的操作有更进一步的认识。以下是一个程序经编译器编译后所得到的HEX文件内容: //Example.hex 行号 原始码 1 :10000000020003787FE4F6D8FD75812B02004A02D6 2 :10001000008FE493A3F8E493A34003F68001F20871 3 :10002000DFF48029E493A3F85407240CC8C333C435 4 :10003000540F4420C8834004F456800146F6DFE4A0 5 :1
[单片机]
飞思卡尔MCU的汽车信息娱乐系统方案
方案描述: 与快速发展的便携式电子产品保持同步,同时专注于本身严格的质量标准和车型生命周期的要求,是汽车制造商和车载信息娱乐系统供应商面临的挑战。飞思卡尔提供成熟的汽车信息娱乐平台解决方案,帮助车载信息娱乐系统设计人员满足这些快速变化的需求。 方案设计图:
[嵌入式]
飞思卡尔<font color='red'>MCU</font>的汽车信息娱乐系统方案
无线充电MCU出货量高速增长,兆易创新、盛群或将受益
集微网消息,目前全球带有无线充电功能的手机已经超过 70 款,尤其是三星,自 S5 开始,每一代旗舰机都标配无线充电功能。而随着新一代 iPhone 也导入无线充电技术之后,势必会吸引更多安卓手机跟风,引发手机行业新爆点。 实际上,在无线充电市场中,MCU(微控制器)一直扮演着举足轻重的角色。随着越来越多的终端厂商投入开发各种具备无线充电功能的设备,同时也在提升相关硬件模组的出货量。根据IHS报告预估,到2017年底,全球无线充电接收装置出货量可达到3.25亿台,较2016年增长近40%,预计近两年无线充电将迎来爆发,年复合增长率将超50%;2019年渗透率预计将达60%,到2019年无线充电市场规模将突破100亿美金,到2024
[手机便携]
单片机串口通信编程注意事项
在紧张的工作中,现在对单片机的串口通信编程有了一个新的认识,下面就针对下面不同的几个工程程序文件的区别做一个比较详细的总结。 本次小结的主要目的是更加明确单片机的串口中断是如何发生的。即:是如何触发串口中断的发送功能的。在说明中我使用特殊的字体颜色来强调重点部分和注意事项。 程序一: 本程序是使用软件设置TI来实现串口中断的触发,如果在初始化函数中不增加 TI=1; 这条语句,那么是不会触发中断的 #include STC89C5X.h //包含51单片机的头文件 #define uint unsigned int #define uchar unsigned char void InitUart(voi
[单片机]
AT89S51单片机的两种低功耗节电工作模式解析
AT89S51有两种低功耗节电工作模式:空闲模式(Idle Mode)和掉电保持模式(PowerDown Mode),其目的是尽可能低降低系统功耗。在掉电保持模式下,VCC可由后备电源供电。图2-22为两种低功耗节电模式的内部控制电路。 AT89S51的两种低功耗节电模式可通过指令对特殊功能寄存器PCON的位IDL和位PD的设置来实现。特殊功能寄存器PCON的格式如图2-23所示,字节地址为87H PCON寄存器各位的定义如下: SMOD:串行通信的波特率选择位 一:保留位,未定义。 GF1、GFO:通用标志位,供用户在程序设计时使用,两个标志位用户应充分利用。 PD:掉电保持模式控制位,若PD=1,则进入掉电保持模式。
[单片机]
AT89S51<font color='red'>单片机</font>的两种低功耗节电工作模式解析
MSP430单片机查错
1、设置IAR软件Tab键缩进字符个数 方法:Tools-Options-Editor-Tab Size,按习惯改后面数字. 2、Error : Undefined external LcdInit referred in main( E:\MSP430 \UDP\Debug\Obj\main.r43 ) 原因:工程中有多个.c文件,但不在工程中. 解决:把.c文件加到工程里。 3、Error : Entry ReadingData in module DS1302 ( E:\MSP430 \Module\DS1302\Debug\Obj\DS1302.r43 ) redefined in modul
[单片机]
AVR的_USART
USART数据寄存器UDR: 当对此寄存器进行读的时候,实际就是接收数据缓冲寄存器(RXB)。 当对此寄存器进行写的时候,实际就是发送数据缓冲寄存器(TXB)。 USART控制和状态寄存器A:UCSRA(RXC,TXC,UDRE,FE,DOR,PE,U2X,MPCM) RXC:USART接受结束。接受缓冲器中仍然有未读出的数据时,RXC置位。如果没有任何需要读的数据时,RXC清零。当接收器禁止时,接收缓冲器刷新,导致RXC清零,RXC标志也可以用来产生接收结束中断。 TXC:USART发送结束。发送移位寄存器中的数据被送出,且当发送缓冲器(UDR/TXB)为空时,TXC置位。执行发送结束中断时TXC标志自动清零。 UDRE:USA
[单片机]
<font color='red'>AVR</font>的_USART
如何对GD32 MCU进行加密?
GD32 MCU有哪些加密方法呢?大家在平时项目开发的过程中,最后都可能会面临如何对出厂产品的MCU代码进行加密,避免产品流向市场被别人读取复制。 下面为大家介绍GD32 MCU所支持的几种常用的加密方法: 首先GD32 MCU本身支持防硬开盖破解的功能,GD32 MCU内部Flash直接硬开盖破解读取的数据无法在同型号的产品上运行,因为GD32 MCU内部Flash物理地址和逻辑地址是随机加密的,因而可以有效防止硬破解读取代码的可能,这是GD32 MCU本身支持的,无需使用者进行配置; 可以设置读保护,GD32 MCU支持读保护设置,有些MCU支持低保护等级,设置读保护后,通过ISP出厂BOOTLOADER或者SWD端口均无
[单片机]
如何对GD32 <font color='red'>MCU</font>进行加密?
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved