avr单片机编程入门精品,新手学习必看(有典型实例哦)
单片机分为很多种,有什么avr单片机,stm32单片机等,随着单片机被广泛的使用,这些都是在单片机学习中需要接触的,有很多人问我:对于avr单片机编程来说,学习这个的时候很是迷茫,死活入不了门,到底avr单片机编程如何入门,这里就让我这个老鸟教会你。
首先要知道,avr单片机是什么?不然不了解这个,那接下来的学习也是白瞎,AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。
AVR单片机特点(ATmega16):
1、131条机器指令,且大多数指令的执行时间为单个系统时钟周期;
2、32个8位通用工作寄存器;
3、工作在16MHz时具有16MIPS的性能;
4、配备只需要2个时钟周期的硬件乘法器。
AVR单片机优势:
AVR单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作 业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通常时钟频率用4~8MHz,故 最短指令执行时间为250~125ns。
了解了这些,那接下来就通过一系列的实例,让你对avr单片机了解透彻
系统时钟:
ATmega16的片内含有4种频率(1/2/4/8M)的RC振荡源,可直接作为系统的工作时钟使用。同时片内还设有一个由反向放大器所构成的OSC(Oscillator)振荡电路,外围引脚XTAL1和XTAL2分别为OSC振荡电路的输入端和输出端,用于外接石英晶体等,构成高精度的或其它标称频率的系统时钟系统。
为ATmega16提供系统时钟源时,有三种主要的选择:(1)直接使用片内的1/2/4/8M的RC振荡源;(2)在引脚XTAL1和XTAL2上外接由石英晶体和电容组成的谐振回路,配合片内的OSC(Oscillator)振荡电路构成的振荡源;(3)直接使用外部的时钟源输出的脉冲信号。方式2和方式3的电路连接见图2-6(a)和2-6(b)。
内部看门狗:
在AVR片内还集成了一个1MHz独立的时钟电路,它仅供片内的看门狗定时器(WDT)使用。因此,AVR片内的WDT是独立硬件形式的看门狗,使用AVR可以省掉外部的WDT芯片。使用WDT可以有效的提高系统的可靠行。
avr单片机的工作流程:
AVR CPU的工作是由系统时钟直接驱动的,在片内不再进行分频。图2-7所示为Harvard结构和快速访问寄存器组的并行指令存取和指令执行时序。CPU在启动后第一个时钟周期T1取出第一条指令,在T2周期便执行取出的指令,并同时又取出第二条指令,依次进行。这种基于流水线形式的取指方式,使AVR可以以非常高的速度执行指令,获得高达1MIPS/MHz的效率。
存储器:
所有的I/O寄存器可以通过IN(I/O口输入)和OUT(输出到I/O口)指令访问,这些指令是在32个通用寄存器与I/O寄存器空间之间传输交换数据,指令周期为1个时钟周期。此外,I/O寄存器地址范围在$00-$1F之间的寄存器(前32个)还可通过指令实现bit位操作和bit位判断跳转。SBI(I/O寄存器中指定位置1)和CBI(I/O寄存器中指定位清零)指令可直接对I/O寄存器中的每一位进行位操作。使用SBIS(I/O寄存器中指定位为1跳行)和SBIC(I/O寄存器中指定位为0跳行)指令能够对这些I/O寄存器中的每一位的值进行检验判断,实现跳过一条指令执行下一条指令的跳转。
在I/O寄存器专用指令IN、OUT、SBI、CBI、SBIS和SBIC中使用I/O寄存器地址$OO~$3F。
当以SRAM方式寻址I/0寄存器时,必须将该其地址加上$0020,映射成在数据存储器空间的地址。
两个重要的寄存器:状态寄存器SREG和堆栈指针寄存器SP
堆栈是数据结构中所使用的专用名词,它是由一块连续的SRAM空间和一个堆栈指针寄存器组成,主要应用于快速便捷的保存临时数据、局部变量和中断调用或子程序调用的返回地址。堆栈在系统程序的设计和运行中起者非常重要的作用,只要程序中使用了中断和子程序调用,就必须正确的设置堆栈指针寄存器SP,在SRAM空间建立堆栈区。
处在I/O地址空间的$3E($005E)和$3D($005D)的两个8位寄存器构成了AVR单片机的16位堆栈指针寄存器SP。AVR单片机复位后堆栈寄存器的初始值为SPH=$00、SPL=$00,因此建议用户程序必须首先对堆栈指针寄存器SP进行初始化设置。
AVR的堆栈区是建立在SRAM空间的,16位的SP寄存器可以寻址的空间为64K。
由于AVR的堆栈是向下增长的,即新数据进入堆栈时栈顶指针的数据将减小(注意:这里与51不同,51的堆栈是向上增长的,即进栈操作时栈顶指针的数据将增加),所以尽管原则上堆栈可以在SRAM的任何区域中,但通常初始化时将SP的指针设在SRAM最高处。
对于具体的ATmega16芯片,堆栈指针必须指向高于$0060的SRAM 地址空间,因为低于$0060的区域为寄存器空间。ATmega16片内集成有1K的SRAM,不支持外部扩展SRAM,所以堆栈指针寄存器SP的初始值应设在SRAM的最高端:$045F处。
根据上面所讲述,AVR的SP堆栈指针寄存器指示了在数据SRAM中堆栈区域的栈顶地址,一些临时数据、局部变量,以及子程序返回地址和中断返回地址将被放置在堆栈区域中。在数据SRAM中,该堆栈空间的顶部地址必须在系统程序初始化时由初始化程序定义和设置。
当执行PUSH指令,一个字节的数据被压入堆栈,堆栈指针(SP中的数据)将自动减1;当执行子程序调用指令CALL或CPU响应中断时,硬件会自动把返回地址(16位数据)压入堆栈中,同时将堆栈指针自动减2。反之,当执行POP指令,从堆栈顶部弹出一个字节的数据,堆栈指针将自动加1;当执行从子程序RET返回或从中断RETI返回指令时,返回地址将从堆栈顶部弹出,堆栈指针自动加2。
通过这些原理及实例,你是否对avr单片机编程有了更深入的了解呢,其实avr单片机学习并不难,只要你认真去学,把每一步每一个流程都掌握透彻,那你就在avr单片机编程方面就已经入门了,这些你是否get到了呢?
AVR单片机系列教程(一)
一、基础篇单片机的基本要素:
(1)CPU核(如:51核 AVR核 M430核)
(2)ROM(READ ONLY Memory 绕母)
(3)RAM(random access Memory 随机访问寄存器 )
(4)片上外设
(5)总线
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显示
了解更多AVR单片机系列,可关注“云汉电子社区(ickeybbs) ”官方微信公众号,或者登录云汉电子社区官方网站(bbs.ickey.cn)
相关问答
“ AVR ”是什么意思?[回答]AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(ReducedInstructionSetCPU)精简指令集高速8位单片机。AVR的单片机可以广泛应用于...
怎么用 AVR Studio烧写ATMEGA8L8AU 单片机 程序(最好有截图)-ZO...4,点击AVRStudio菜单上的Tools,下拉菜单里的program右边显示菜单里的connect....6,点Main设置单片机型号(第一行),点Fuses设置熔丝位(设置好后别忘了点右下角...
arm 单片机 和 avr 、51有什么区别?简单的说,CPU构架不同,虽然都是8位的,但指令集不同,AVR是用RISC的,哈佛结构的总线;51是用CISC,冯诺衣曼结构的总线。跟AVR比,51是老掉牙的东西,内部资源...简...
AVR单片机 刚刚上电的时候未控制的I/O口将默认为高还是低电平?默认是输入状态,高低电平由管脚引出的外围电路决定。默认是输入状态,高低电平由管脚引出的外围电路决定。
stm32之前流行哪种 单片机 ?在stm32单片机之前,曾经流行过pic16、AVR和51单片机。Pic是一种16位单片机,AVR和51是8位单片机。Pic单片机抗干扰能力很强,但因为编程环境较为复杂,所以应用...
哪位大仙,急急急! AVR单片机 的价格大概是多少?[回答]您可以提供一下AVR单片机的具体需求,然后才能给您反馈价格哦。AVR单片机的价格受多方面影响,比如品牌、市场等,在选择购买之前,多方面地进行了解和...
单片机 为什么能直接烧录程序?我刚开始学习单片机的时候也有和题主类似的困惑。当时是在大二,刚申请了个淘宝账号不久,刚看了下我的淘宝已购物品,第五件东西买的就是51单片机开发板,前几件...
单片机 采集指示灯的交流电平信号通过485与电脑通信来控制继电器的开关的电路图?如果是5V单片机系统,高输出2V的情况有:1、IO口外接了较大的负载,拉低了端口的电压(一般单片机的IO为弱上拉),如果你断开负载测量端口电压还是2V的话就有可能...
现在流行什么 单片机 ?现在比较流行单片机有51单片机、AVR、PIC、MSP430、STM32、瑞萨单片机、飞思卡尔单片机。1.51单片机ATMEL(艾德梅尔)的:89C51、89C52STC(国产宏晶)单片机:8...
c52 单片机 开发板能干啥?c52单片机开发板能可以作为烧写器(即编程器),将自己写好的程序写入单片机中,但烧写单片机的种类单一,型号也不会太多。2、可以利用开发板上的一些硬件做一些...