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

2020-02-12来源: eefocus关键字:AVR  单片机  基础知识

简介:AVR单片机学习开发基础知识:
一、AVR开发工具简介及开发环境的建立
二、计算机原理基础知识讲解
三、C语言基础知识讲解



一、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:WinAVRavrincludeavr 这个路径下就有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  单片机  基础知识 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic487962.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于Atmega64L的心率监测系统中MCU的设计
下一篇:采用AVR Flash微控制器的电动车窗防夹系统

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AVR单片机实现对步进电机的细分控制及其应用
需求分析本方案中使用的仪表具有如下特点和设计参数:●指针响应灵敏、走位准确,即收到驱动脉冲后不能丢步;●指针转动平稳,即指针从当前位置到目标位置之间的走位要平稳,正、反转都不能出现抖动;●两相、步距角10o、转动范围300o。根据技术参数可知,采用两相四拍和两相八拍时的步距角为10o和5o,在300o的范围内只能作30和60个刻度划分,在实际应用中,会发现指针步距角不能满足要求而且抖动不可避免。为了实现指针高精度的准确走位和平稳运转,要对步进电机步距进行高分辨率细分,这也是设计的难点所在。步进电机步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载
发表于 2020-02-08
AVR单片机实现对步进电机的细分控制及其应用
有关AVR芯片后缀解释
下面是目前市面上两种常见的后缀:AVR MEGA8-16PU AVR MEGA8-16AU AVR MEGA8L-8PU AVR MEGA8L-8AU,前面黑色部分为芯片型号,后面数字一般会带有容量信息(8即是8K、16即16K)。(L)表示芯片支持低压,有效电压:3.3V-5V。(16)红色数字部分表示芯片最高工作频率,16即是0-16M,8即是0-8M。(PU)黄色:PU代表DIP直插封装,后面U表示工业级环保型。AU即TQFP帖片封装。AVR MEGA48-20PU AVR MEGA48-20AU AVR MEGA48V-10PU AVR MEGA48V-10AU前面黑色部分为芯片型号,后面数字一般会带有容量信息(48即是
发表于 2020-02-08
AVR单片机熔丝位的配置
(1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态, “Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是 “配置熔丝位成为未编程状态“1”或成为已编程状态“0””。(2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。(3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的
发表于 2020-02-08
AVR单片机性能简介
什么是AVR单片机?AVR单片机有什么优点?为什么要选择AVR单片机?AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点:1:在相同的系统时钟下AVR运行速度最快;2: 芯片内部的Flsah、EEPROM、SRAM容量较大;3:所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP);4:多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;5:每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强;6:内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TWI、I2C通信口;丰富的中断源等。目前支持
发表于 2020-02-08
AVR单片机硬件电路设计方法详解
Mega16已经内置了上电复位设计。并且在熔丝位里,可以控制复位时的额外时间,故AVR外部的复位线路在上电时,可以设计得很简单:直接拉一只10K的电阻到VCC即可 (R0)。为了可靠,再加上一只0.1uF的电容(C0)以消除干扰、杂波。D3(1N4148($0.0054))的作用有两个:作用一是将复位输入的最高电压钳在 Vcc+0.5V 左右,另一作用是系统断电时,将R0(10K)电阻短路,让C0快速放电,让下一次来电时,能产生有效的复位。当AVR在工作时,按下S0开关时,复位脚变成低电平,触发AVR芯片复位。重要说明:实际应用时,如果你不需要复位按钮,复位脚可以不接任何的零件,AVR芯片也能稳定工作。即这部分不需要任何的外围零件
发表于 2020-02-08
AVR单片机硬件电路设计方法详解
基于AVR的GSM无线智能变压器综合报警系统
一、项目概述1.1 引言本项目设计的基于AVR的GSM 无线智能变压器综合报警系统,其目的在于提供一种无线智能变压器综合报警系统,可以识别系统停电,杜绝误报的发生;可以测量变压器油温并在油温超温时报警;具有“人体非正常接近报警”功能;具备断电工作保护功能,当电源线被破坏或由于其它原因断电时,系统仍能继续工作;可以对电力变压器综合运行参数进行检测,并对故障运行状态(过流、过压、欠压等)进行预警(可选)。该装置可以用在电力系统和大型工业企业领域中,并且本系统稍加改进后,可用于各种无线报警、控制装置中。例如,可以将本装置运用在电力节能方向,如通过该系统的语音、短信功能来控制路灯的开关,实现路灯的防盗与节能。1.2 项目背景/选题动机
发表于 2020-02-08
小广播
何立民专栏 单片机及嵌入式宝典

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

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