ATmega16最小系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

目录第一章概述第二章单片机最小系统及编译、下载软件的使用2.1.1单片机最小系统2.1.2编译软件2.2.1下载软件Progisp的使用第三章熟悉ATmega16的片上资源3.1.1会看芯片数据手册的重要性3.1.2中断3.1.3定时器/计数器的基本结构及工作原理3.1.4PWM3.2外部中断3.3USART3.4.1A/D转换模块3.5EEPROM第四章ATmega16实际应用4.1外接按键4.2驱动数码管4.3液晶显示屏12864的使用4.4基于DS18B20的温度测量4.5基于PWM的直流电机调速4.6步进电机的使用4.7舵机的使用4.8超声波测距及其应用倒车雷达4.9基于JZ863的无线串口通信4.10单片机与计算机间的通信第五章第二章单片机最小系统及编译、下载软件的使用2.1.1单片机最小系统能让单片机工作的有最基本元器件构成的系统称为单片机最小系统。单片机最小系统通常包括:电源(+5V)复位电路:启动后让单片机从初始状态执行程序振荡电路:单片机是一种时序电路,必须施加脉冲信号才能工作。Mega16内部有RC震荡电路但相比外部的晶体震荡电路还是不够准确,另外它也可以使用外部晶振工作,两者之间的切换通过熔丝位(以后会讲)来选择在其内部有一个时钟产生电路只要接上两个电容和一个晶振即可正常工作。。。。。。。ATmega16单片机最小系统的硬件电路图如下:如图所示为ATmega16最小系统电路图,图中标有相同代号的引脚表示连接在一起。图中ISP和JTAG为ATmega16的两种下载方式各自的引脚接口,ISP用于在线下载程序比较方便快捷,所用下载软件为progisp;JTAG是在线仿真接口通过仿真器连接单片机进行程序的下载和仿真,所用软件为AVRStudio;通常我门使用ISP下载就已经足够了,并且方便快捷很稳定好用,下载器也便宜;JTAG在需要仿真的时候用,它可以看见单片机各个引脚的输出值和输入值等,但JTAG实际定使用中不稳定有时候很容易出错电脑不识别下不进去程序等问题,个人偏好使用ISP.说明:此最小系统电路图中只画出了最简单的应用电路——流水灯,和最基本的能让单片机正常工作的外围电路及下载程序所必须的ISP和JTAG接口,如果你想焊一个电路板出来自己使用,其他的外围电路可以在日后使用当中自己再往上焊。2.1.2编译软件AVR单片机的编译软件有GCCAVR和ICCAVR等,通常使用较多的是ICCAVR,也比较好用,本书以ICCAVR6.31版本为例介绍编译软件的使用。编译步骤如下:1.新建一个工程启动ICCAVR,界面如图2-1-1所示。然后新建一个项目,选择Project项再选则New菜单项,则打开界面如图2-1-2所示。图2-1-1ICCAVR主界面图2-1-2注:新安装的软件由于为建立过工程和文件界面与图2-1-1中所示不完全相同为了自己使用方便在保存工程时最好单独新建一个文件夹。接下来”文件名(N):”文本框中输入项目名称,保存为.prj格式。本书中此处保存为ATmega16.然后点击如图2-1-1中的File选项再选择New,界面此时会变为如图2-1-3所示2.新建一个C程序图2-1-3此时编写一个最简单的和前面最小系统版配套的C程序,如图2-1-4所示,程序如下///////////////////////////////////////////////////////////////////AVRATmega16流水灯C程序////环境:ICCAVR6.31////日期:2011/09/14//////////////////////////////////////////////////////////////////#includeiom16v.h//包含单片机型号头文件#includemacros.h//包含位操作头文件voiddelay(void)//自定义延时函数{unsignedchari,j;for(i=0;i255;i++)for(j=0;j10;j++);}voidcpu_init(void)//单片机初始化函数{PORTA=0x00;//PA口输出值都定义为0DDRA=0x00;//PA口输出允许关PORTB=0x00;//PB口输出值都定义为0DDRB=0x00;//PB口输出允许关PORTC=0x00;//PC口输出值都定义为0DDRC=0x00;//PC口输出允许关PORTD=0x00;//PD口输出值都定义为0DDRD=0x00;//PD口输出允许关}voidmain(void){cpu_init();//初始化单片机while(1){PORTA=0X00;/*点亮led灯,由最小系统的外部电路决定单片机输出低电平时流水灯点亮*/DDRA=0XFF;/*允许输出,此时PORTA的赋值才有效,这事AVR比51高级的地方*///由于其他端口没有接外围设备先不用定义delay();DDRA=0X00;//关闭led灯delay();}}/*****************************************************************************//*另外最好先定义PORTX的值再给DDRX赋值,因为如果先打开DDRX允许,则PORTX*//*中原来的的值会输出,再给PORTX赋值的话其实在这段时间内*//*该端口已经有输出值但不是你后来设定的PORTX的数值,如DDRA=0XFF;PORTA=0XFF;*//*和PORTA=0XFF;DDRA=0XFF;两条看似一样的语句在有*//*写地方作用结果就会不一样,在有些控制要求严格的地方容易出现错误,即使我们平*//*时使用没出现错误我们平时做事也要有一个严谨的态度*//*****************************************************************************/图2-1-4接下来单击图中磁盘符号保存,界面如图2-1-5所示图2-1-5输入你要保存的文件名,注意文件名结尾必须是.c格式,本书中命名为2-1-2.c,接下来点击保存即可。界面变为如图2-1-6所示图2-1-63.添加C程序到工程接下来要把文件添加进你刚才创建的工程里去,右键点击如图2-1-6中所示右面Project下ATmega16工程下的File文件夹选择AddFile(s)选项,会弹出一个对话框界面变为如图2_1_7所示图2-1-7此时打开你开始创建的C程序保存的文件夹,选择你刚才创建的程序点击打开即可,这事程序成功的添加到工程里的File文件夹里。如下图2-1-8所示图2-1-8接下来右键点击File文件夹下的2-1-2.c文件选择options…选项,弹出界面如图2-1-9所示图2-1-9选项按图2-1-9中选择即可,另外Compiler选项按图2-2-0选择即可接下来全点击ok,这时新建工程,为工程添加文件等工作都已完成。4.编译如果c程序没有错误点击编译按钮就会生成16进制的HEX文件。界面如图2-2-1所示图2-2-1如果有错误则通过提示修改你的程序修改完再次编译直至通过为止。2.2.1ISP下载软件Progisp的使用1.芯片选择打开下载器页面如下图2-2-2所示在选择芯片的地方选择ATmega16即可。2.熔丝位的配置如果你想选择片外的晶振和使能ISP或关闭JTAG等功能则要在下载软件里配置好熔丝位然后写入到单片机里面去,由于我们使用ISP下载程序,所以我们要在熔丝位里面关闭JTAG,否则JTAG所对应的PC口的几个I/O引脚口会失去I/O的作用,即使你给它定义了数值并且也允许它输出了它也不会有任何输出值。接下来我门讲解怎么进行熔丝位的设置:首先,点开图2-2-2中下载软件主界面左半面的向导方式选项,这时界面会如图2-2-3所示,我们可以看见软件默认的是使用内部RC振荡器,我们要使用外部8MHZ的晶体振荡器所以我们把页面向下拉动我们会看见如图2-2-4图中所示的选项“外部晶振(3.0---MHZ)启动时间…”鼠标点其前面的小方框里即可,这时我们选择了使用片外的3MHZ以上的晶振,下面还有“使能JTAG接口(JTAGEN=0)和使能ISP编程(SPIEN=0)”两个选项,我们把前一个使能JTAG接口的那个给它去掉,如图2-2-5所示,但注意ISP那个千万不能去掉因为我们要用ISP下载程序进单片机,至于其他的选项可以不管。接下来,我们要把刚才设置的熔丝位写进单片机,在图2-2-5配置熔丝位的向导方式下面有“读出默认写入”三个选项,并且主界面右下方有一个“编程熔丝位选项”,在“编程熔丝位选项”前面的方框内打勾,再点击左面三个选项中的“写入”,这时你刚才设置的熔丝位就都生效了。如果没有其他需要,以后就不用再设置熔丝位了,所以“编程熔丝位选项”前面的勾可以去掉了,因为我们没必要每次下载都烧写熔丝位,那样会很费单片机的。图2-2-2下载软件主界面图2-2-3图2-2-4图2-2-53.下载程序到单片机点击“调入FLASH”,界面如图2-2-6所示(并不一定和书上所示的完全一样)找到你开始ICCAVR里面建立的保存C程序的文件夹,点击和你所建立的文件名一样的以HEX结尾的16进制文件,如图2-2-7所示,再单击打开后界面如图2-2-8所示,接下来点击“自动”程序就会被下载到单片机里面去了。如果你的程序是与前面书中给的单片机最小系统相配套的流水灯程序,并且你的板子的硬件电路接法和书中所给的最小系统的硬件电路一样,那么PA口所接的8个流水灯会亮灭、亮灭的闪烁。图2-2-6图2-2-7图2-2-8第三章熟悉ATmega16的片上资源3.1.1学会看芯片数据手册的重要性3.1.2中断ATmega16常用片上资源有定时器、PWM、外部中断、SPI总线、两线串行接口TWI、EEPROM、USART、模拟比较器、ADC转换、IEEE(JTAG)边界扫描等。我们先来学习定时器。中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机将暂停正在执行的事件去执行中断函数里所对应的程序,执行完中断后再继续执行原来的事件。ATmega16内部有多个中断源每个中断源都能引起中断。其中断向量如下表3-1-2所示,表中每个中断向量都有一个向量号,这些向量号代表对应的中断源,在C语言程序里这些向量号代表相应的中断源,在编写中断函数时要使用到。同时它们还代表着优先顺序,向量号小的中断源更优先些,即两个或多个中断同时触发时中断号小的先被执行。AVR不能设置中断优先级,但可以通过软件实现低优先级中断打断高优先级的中断;另外AVR的中断机制是不管是高优先级的中断还是低优先级的中断,在响应中断后,AVR都会自动清零全局中断标志位I位,这样,其它中断就不能响应,在执行完中断子程序后,AVR会自动置位全局中断位I,这样,AVR才可以响应其它的中断;另外AVR也不能像51等单片机直接进行中断嵌套,要想使用AVR的中断嵌套则要通过软件人为实现,根据使用经验有使用ACR的中断嵌套:在中断服务程序中,人为置位全局中断标志位I位,AVR就可以执行其他中断了;在进入中断程序时,置位全局中断标志位,适当关闭一些不必要的中断(退出时要重新开启),就可以实现低优先级中断打断高优先级的中断了;表3-1-23.1.3定时/计数器的基本结构及工作原理在上一章测试最小系统的程序中我们采用的延时方法是循环延时即让单片机空运行几个周期从而达到延时的效果,延时不准确只是粗略的应用,要进行准确的延时则要运用定时器——单片机最重要的组成部分之一。定时器是一个独立的计数器,计数过程不会被中断程序打断,除非系统复位,定时器也不受其他程序的影响。定时器其实就是我门在数字电路里面学过的计数器,也叫分频器,它对时钟脉冲进行计数,从而对时间进行计时。以下为定时器Timer0工作的原理框图:一、定时器/计数器的寄存器:我们在使用单片机内部资源的时候都要进行初始化,通常我们会在程序中编写一个专门用来初始化

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功