您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > mega128技术文档
雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家AVRmega128技术文档技术文档技术文档技术文档1、电路分析图(1)mega128核心板原理图一,硬件电路说明1,电源:1)通过ISP连接USB进行供电。2)通过JTAG连接USB供电。3)通过P5外接5V电源供电。2,外围接口:P1,P2,P3,P4共64位将mega128所有的接口全部引出,方便工程设计和外围扩展。3,发光二极管D0的作用是指示电源是否连接成功,如果外部电源成功的连接上,则发光二极管发光指示电源连接成功;电阻R0的作用是对发光二极管进行限流,一般发光二极管只能通过5mA—15mA左右的电流,且发光二极管上面的压降只需要1.5V左右,加到发光二极管上面的电流如果超出额定值,则会烧毁。而系统工作的电压是5V,如果全部加在发光二极管上,则发光二极管很容易就会被烧毁。所以要在电源和发光二极管之间串接一个限流电阻。该限流电阻阻值的计算:(VCC-发光二极管上的电压)/流过发光二极管的电流。一般发光二极管的压降是1.5V左右,电流为10mA左右,为降低功耗我们在此取680R发光二极管D1和R1的作用是作为程序运行指示,在程序运行的过程中通过跳冒P0选通4,复位电路:单片机的第20脚(RESET,复位管脚)经过按钮S0连接到地。分析:a)AVR单片机是低电平复位(51单片机是高电平复位,刚好相反)。需要单片机复位时,最少要在复位管脚加上1.5微秒的低电平,才能确保单片机正确复位。b)按下按钮S0,复位管脚被直接拉到电源地,这样复位管脚的电平就被拉低,从而使单片机复位;一般情况下按钮按下的时间超过毫秒级别,这样就能确保单片机雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家正确复位。5,ISP电路(程序下载电路):ISP下载接口不需要任何的外围零件。使用双排2*5排针。分析:a)由于没有外围零件,故PE0,PE1,PB1,RESET(复位键)仍可以正常使用,不受ISP的干扰b)同样JATG电路也是如此c)注意ISP和JTAG不要弄混了,更不要将方向弄反了。6,晶振电路:晶体的两脚分别接单片机的23、24脚(晶体的管脚没有正负和顺序,可以随意连接),电容C1、C2分别于晶体的两脚和地连接。分析:a)单片机的正常工作离不开稳定的时钟信号。晶体就是提供稳定时钟信号的器件。b)AVR单片机内部集成有RC振荡器,可以为系统提供用以精度要求不高的时钟信号,这是可以不接外部晶体,利用熔丝配置,设置单片机工作与内部RC振荡器模式。这个时候可以不用连接晶振和C1、C2两个电容。c)电容C1、C2的作用是有利于晶振的起振,同时使晶振工作的更稳定。7,设备内部及外部的数字电路都会产生电磁干扰(EMI),从而影响模拟测量的精度。如果转换精度要求较高,那么可以通过以下方法来减少噪声,AVCC应通过一个LC网络与数字电压源VCC连接,正如L0何C0作用。说明当然提高精度方法不仅仅在于此:参考方案:1.模拟通路越短越好。保证模拟信号线位于模拟地之上,并使它们与高速切换的数字信号线分开。2.如电路图所示,AVCC应通过一个LC网络与数字电压源VCC连接。3.使用ADC噪声抑制器来降低来自CPU的干扰噪声。4.如果有ADC[3..0]端口被用作数字输出,那么必须保证在转换进行过程中它们不会有电平的切换。二,AVR单片机mega128的I/O端口说明1)学习单片机的主要任务就是了解、掌握单片机I/O端口的功能,以及如何正确设计这些端口与外围电路的连接,从而能够组成一个嵌入式系统,并编程、管理和运用他们完成各种各样的任务。2)ATmega128有6个8位的双向I/O端口PA、PB、PC、PD,PE,PF和5位的PG端口,他们对外对应–53个可编程I/O口线个I/O引脚,每一位都可以独立地用于逻辑信号的输入和输出。在5V工作电压下,输出高点平时,每个引脚可输出达20mA的驱动电流(远远大于C51的输出能力);而输出低电平时,每个引脚可吸收最大为40mA的电流,可以直接驱动发光二极管(一般的发光二极管的驱动电流为10mA)和小型继电器(但是建议最好用以小型的三极管驱动)等小功率器件。AVR大部分的I/O端口都具备双重功能(有的还有第三功能)。其中第一功能是作为通用I/O接口使用,而复用的功能可分别与片内的各种不同功能的外围接口电路组合成一些可以完成特殊功能的I/O口,如定时器、计数器、串行接口、模拟比较器、捕捉器、USART、SPI等。3)AVR单片机的每组I/O口都配备有3个8为寄存器,分别是:方向控制寄存器DDRx、数据寄存器PORTx、输入引脚寄存器PINx(x=A/B/C/D/E/F/G).I/O口的工作方式和表现特征由这三个I/O寄存器控制。雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家方向控制寄存器DDRx用于控制I/O口的输入输出方向,及控制I/O口的工作方式为输出方式还是输入方式。DDRx=1时,I/O口处于输出工作方式;此时数据寄存器PORTx中的数据输出到外部引脚。DDRx=0时,I/O口处于输入工作方式;此时输入引脚寄存器PINx中的数据就是外部引脚的实际电平,通过读I/O指令可将物理引脚的真实数据读入MCU。此外,当I/O口定义为输入时(DDRx=0),通过PORTx的控制,可使用或不使用内部的上拉电阻。(关于上拉电阻的解释请看后面附录2)4)AVR通用I/O端口的主要特点为:a)双向可独立位控的I/O口ATmega16的PA、PB、PC、PD四个端口都是8位双向I/O口,每一位引脚都可以单独的进行定义,相互不受影响。如用户可以在定义PA口第0、2、3、4、5、6位用于输入的同时定义第1、7位用于输出,互不影响。b)Push-Pull大电流驱动(最大40mA)每个I/O口输出方式均采用推挽(关于推挽电路,请参阅附录3)式缓冲器输出,提供大电流的驱动,可以输出(吸入)20mA的电流,因而能直接驱动LED显示器。c)可控制的引脚内部上拉电阻每一位引脚内部都有独立的,可通过编程设置的,设定为上拉有效或无效的内部上拉电阻。当I/O口被用于输入状态,且内部上拉电阻被激活(有效)时,如果外部引脚被拉低,则构成电流源输出电流(uA量级)。d)DDRx可控的方向寄存器。AVR的I/O端口结构同其它类型单片机的明显区别是,AVR采用3个寄存器来控制I/O端口。一般单片机的I/O仅有数据寄存器和控制寄存器,而AVR还多了一个方向控制器,用于控制I/O的输入输出方向。由于输入寄存器PINx实际不是一个寄存器,而是一个可选通的三态缓冲器,外部引脚通过该三态缓冲器与MCU的内部总线连接,因此,读PINx时是读取外部引脚上的真实和实际逻辑值,实现了外部信号的同步输入。附:AVRI/O端口配置方式下面进行配置IO端口的例程说明:雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家三、电路工作过程:本实验的整个电路工作过程是:1)将下载器的ISP插口插到电路板的ISP插座处。下载软件到单片机内。2)软件下载成功后,电路板上所要点亮的那个发光二极管就会点亮3)按下复位按钮,电路板上点亮的那个发光二极管就会熄灭,当复位按钮松开后,发光二极管再次点亮。雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家三、软件编写1、使用WinAVR(GCC)+AVRstudio开发环境(免费软件目前在AVR开发上比较流行)。ATMEL的AVR单片机的集成环境汇编级开发调试软件,完全免费。ATMELAVRStudio集成开发环境(IDE),包括了AVRAssembler编译器、AVRStudio调试功能、AVRProg串行、并行下载功能和JTAGICE仿真等功能。它集汇编语言编译、软件仿真、芯片程序下载、芯片硬件仿真等一系列基础功能,与任一款高级语言编译器配合使用即可完高级语言的产品开发调试。有关GCC知识的扩充:雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家这些需要将待显示数据各位进行分解例如:在本教程中位操作会大量出现,例如有关LED显示,数码管位控制,,串行收发,键盘扫描等大量的例子中,各种的位操作豆浆频繁使用,例如位左移(),右移(),与(&),或(|),取反(~),异或(^)等等,因此这些内容要熟练的掌握和运用。例如:雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家2、文件包含:用C语言编写AVR单片机程序时,一般都要在程序的开头加上文件包含预编译指令#includeavr/io.h。文件包含是将一些已经定义好的寄存器、变量、函数等添加到所要编写的程序中,那么所要编写的程序中就可以直接使用这些定义好的寄存器、变量、函数等就可以在程序中直接使用,省去了重复定义大量经常使用的寄存器、变量、函数等的麻烦。3、makefile文件:一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。AVR单片机中的makefile文件可以使用WINAVR中的mfile工具生成。makefile文件中需要注意并修改的几点是:[单片机类型]、[目标文件名]、[C源文件名]、[系统时钟频率]。4、AVR单片机中的端口配置寄存器:AVR单片机的I/O口是标准的三态口(高电平、低电平、高阻态这三种状态)。1)使用AVR的I/O口,首先要正确设置其工作方式,确定其工作在输出方式还是输入方式。2)当I/O工作在输入方式,要读取外部引脚上的电平时,应读取PINxn的值,而雪松电子开发:“雪松电子开发”你身边的嵌入式开发专家不是PORTxn的值。3)当I/O工作在输入方式,要根据实际情况使用或不使用内部的上拉电阻。4)一旦将I/O口的工作方式由输出设置成输入方式后,必须等待一个时钟周期后才能正确的读到外部引脚PINxn的值。5、程序的编写:ProgrammersNotepad[WinAVR],新建一个空白文档,开始编写程序。1)首先要在程序中加入ATmega128,I/O寄存器配置头文件:#includeavr/io.h,加上这个文件后,程序就可以直接使用各个寄存器的名称进行相应设置。2)然后编写主函数程序,GCC中规定main函数必须是有整形返回值的函数有整形返回值的函数有整形返回值的函数有整形返回值的函数,定义为intmain(void){此处加入具体代码return0;(这句话可以不要)}在这个例子中是用PE1口控制发光二极管的亮灭,所以在主函数里,首先设置PORTE口相应位为输出方式,然后使端口输出高低平,先使发光二极管不亮。我们可以直接使用C的语句对I/O口寄存器进行操作,如://定义PortA口的工作方式PORTE=0x00;//PE口的第1位输出“0”,LED不亮D
本文标题:mega128技术文档
链接地址:https://www.777doc.com/doc-6901422 .html