版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于AVR单片机的通讯系统设计摘要在当前社会,通信技术已经深入到各行各业中。在本次系统设计中,将通信技术与单片机技术结合,完成了一个电压信号采集及通信过程。系统设计过程中,了解通信技术中的相关通信方式及协议,用AVR单片机完成系统功能,分别完成硬件设计、软件设计及系统测试工作,达到对整个通信系统的控制。本文以ATMEGA8单片机为控制核心,利用直流电压信号模拟输入信号,采集输入信号,将采集到的数据经数字信号处理后传给上位机分析并保存。工作过程:1、单片机初始化所用到的功能模块的控制字,等待上位机的开始采集命令。2、接收到上位机的命令后,从PC0(ADC0)端口采集电压信号,完成模数转换;3、读取转换后的数据,根据A/D转换器的输入/输出关系确定实际的电压信号值;4、将电压信号值保留一位小数,进行BCD编码后,通过异步通信方式发送给上位机;5、上位机通过GUI界面将数据实时显示出来,并可人为的保存采集的结果;关键字:AVR;ATMEGA8;电压采集;通信;MAX232
AbstractInmodentime,technologyhasbeenpenetratedintoalargenumberofindustry,underthisenvironment。Itisusefultodesignthesystemwhichcombinecommunication-technologywithSCMtechnologytoachieveaprocessofcollectvoltageandcommunication。Duringtheperiodofsystemdesigning,whatiscommunicationpatternandprotocolmustbeknown,onthisbasis,usingAVRSCMtofinishthefunctionwhatweneedinthissystem,whichincludecircuitdesign、softwaredesignandtestwork。MakingATMEGA8ascenterofthiscontrolsystem,DCvoltageasinputsignal,collectinginputsignalandconvertingittofactvalueofvoltage,atlastSCMtransferittoPCsoftware,wecansavedataofvalueofvoltageinPC。Workprocess:1、SCMinitializeinnerfunctionwhichisusedinwork,thenwaitforcommandfromPCsoftware;2、AfterreceivingcollectingcommandfromPCsoftware,SCMbegintocollectvoltagefromPC0portandfinishA/Dconvertion;3、readingdatawhichhasbeenconvertedandcalculatingfactvalueofvoltagewhichbeencollected;4、weonlysavesingledecimalwithdatawhichhasbeenconverted,thenBCDcodingwitheverybit,atlastsendtoPCsoftwarebyasynchronouscommunicationpattern;5、PCsoftwarereal-timedisplaystheresultinGUI,wecanartificialsaveresult;Keyword:AVR;ATMEGA8;collectvoltage;communication;MAX232
目录基于AVR单片机的通讯系统设计 1摘要 1Abstract 2第一章绪论 51.1前言 51.2设计本系统的背景 51.2.1单片机的发展 61.2.2通信技术的发展 71.3系统结构 71.3.1系统硬件设计 71.3.2系统软件设计 81.4可行性分析 9第二章系统使用的通信方式及协议介绍 102.1通信方式 102.1.1串行通信与并行通信 102.1.2同步通信与异步通信 102.2RS232协议介绍 122.2.1概述 122.2.2电气特性 122.2.3RS-232C的接口信号 13第三章系统硬件设计 163.1ATmega8介绍 163.1.1概述 163.1.2系统时钟及时钟选项 173.1.3系统复位 183.1.4ATmega8同步/异步串行接口USART 193.1.5ATmega8通用I/O口 263.1.6ATmega8A/D转换 293.2MAX232介绍 343.2.1原理 343.2.2引脚说明 343.3DB9接口说明 353.3.1原理介绍 353.3.2引脚说明 353.4硬件设计 363.4.1硬件设计内容 363.4.2原理图设计 373.4.3PCB设计 38第四章系统软件设计 404.1系统软件概述 404.1.1上位机 404.1.2单片机内部程序 404.2系统软件结构 414.2.1单片机内部程序 414.2.2上位机 434.2.3程序流程图 454.3程序测试及运行结果 484.3.1程序测试 484.3.2运行结果 49第五章技术经济分析 50第六章结论 51参考文献 52致谢 53
第一章绪论1.1前言随着当前科学技术的发展,通信技术的发展也日新月异,从数据传送方式来说,通信包括并行通信和串行通信,从通信方式来说,通信包括同步方式和异步方式,在实际的应用中,根据不同的条件和要求,我们可选择适当的方式进行PC机与单片机之间、PC机与PC机之间、单片机与单片机之间的通信,每种通信方式在实际的应用中各有各的优缺点。通信按照传统的理解就是信息的传输与交换,在当今信息社会,通信则与传感、计算技术紧密结合,成为整个社会的高级“神经中枢”。没有通信,人类社会是不可想象的,一般来说,社会生产力水平要求社会通信水平与之相适应,若通信的水平跟不上,社会成员之间的合作程度就受到限制,社会生产力的发展也必然最终受到限制,可见,通信是十分重要的。控制技术包括经典控制理论、现代控制理论,过程控制理论等其它的控制理论,控制技术可能过PID、计算机,单片机,PLC等实现,对于不同的被控对象,一旦确定了被控量和控制量后,可经过传感器等一些检测装置将不同的被控量转化为电信号或数字信号,再运用数字信号处理技术得到如何调整控制量的大小,从而达到对被控对象的控制要求。由于控制技术的实用性很强,所以在生活中应用非常的广泛。单片机是一种能够实现控制技术相关理论并对被控对象进行高精确度控制的器件,并且对被控对象的控制过程可通过编程实现,支持高级语言,简单易用,从而得到了广泛的应用。单片机的种类非常的多,在本次系统的设计中,我们采用AVR系列单片机,型号为ATMEGA8,该单片机片上资源丰富,已经包括了A/D转换器,所以减少了外围器件,使整个系统更加简单。将控制技术与通信技术的结合,提高了通信效率和准确率,进一步推动了两者的发展和科学技术的前进,成为以后电子技术发展的一个新方向。1.2设计本系统的背景1.2.1单片机的发展单片机自70年代问世以来得到蓬勃发展,目前单片机功能正日渐完善,在目前的单片机市场中,单片机的种类非常的多,最简单的是以51为核心的51系列单片机,由于该系列单片机在结构上的简单和内部资源不是非常多,所以适合初学者入门,因此国内的大学本科期间都以51单片机为基础作为教材。对于单片机的发展,从内部资源上来说,有些公司生产了更多的内部资源非常丰富的单片机,比如AVR、PIC等单片机,这些高级的单片机在生活中的运用更加广泛,他们更多的集成了一些常用功能,例如数模转换,串行通信等,这些功能的集成使得在日常生活的运用和设计中减少了外围设备,使整个系统的性能更加可靠。从单片机传输数据位数来说,单片机经历了从8位到32位在发展过程,89C51,89C52,ATMEGA8,ATMEGA16等都属于8位单片机处理器,而像ARM、DSP等都属于32位处理器,数据位数从8位到32位的上升很大程度上提高了处理器的性能,使得单片机可以完成更高要求的任务。在单片机内部的ROM和指令上,人们也对其做了很大程序上的改进。将EPROM作为程序存储区的单片机在重新烧写程序的时候须要将单片机取下为,放在特制的设备中用紫外线将内容擦除干净,而现在的单片机都将EEPROM存储器或者FLASH存储器作为程序存储器,在烧写程序方面提供了很大的方便,可以反复烧写上万次。在线编程目前有两种不同方式:1、ISP方式。支持该编程方式的单片机在出厂的时候,在系统内部已经固化了引导程序,当上电复位后,单片机首先运行这段固化程序,检测串口是否有烧写程序的信号,若有则开始接收烧写器的数据,清空程序区,将接收到的数据放入程序区,接收完毕后开始执行新的程序。2、IAP方式,支持该编程方式的单片机将内部的程序区分成两个部分,一部分装正在执行的程序,另一部分装从烧写器传来的新程序,这种编程方式在单片机运行时可将程序写入,等烧写完毕后,单片机用新写入的程序覆盖原来的程序,重新开始执行。现在很多单片机都具用了在线仿真的功能,将仿真器与单片机相连,在上位机的操作下让单片机实现单步运行,实时反映单片机内部的运行状态,通过这种硬件仿真的功能,开发人员可以更容易的找到程序的错误,对于初学者来说更是非常的重要。单片机抗干扰能力加强,使的它更加适合工业控制领域,具有更加广阔的市场前景。1.2.2通信技术的发展⑴、数据通信数据通信是依照一定的协议,利用数据传输技术在两个终端之间传递数据信息的一种通信方式和通信业务。数据通信中传递的信息均以二进制数据来表现。为了实现数据通信,必须进行数据传输,即将位于一个地方的数据源发出的数据信息通过传输信道传送到另一地数据接收设备。为了改善传输质量、降低差错率、并使传输过程有效地进行,系统根据不同应用要求,规定了不同类型的具有差错控制的数据链路控制规程,这些规程有的符合国际标准,有的是国家标准,也有的是公司自己制定的。但对开放性的用户接口通常是采用国家标准或国际标准,以利于互连互通。⑵、无线通信无线通信中目前最火的两个方向是3G和WiFi/WiMax。相对于目前的第二代移动通信,3G意味着可视通话、视频浏览、高速上网等除语音之外的众多数据业务。3G是一个技术平台,必须有运营商、内容服务提供商协同起来,才能共同发展。这一产业合作将拉动整个信息产业增长,还会对娱乐业、传媒业带来革命性的变化。3G使我们的手机更加智能,WiMax使我们的计算机可以“移动”上网。⑶、光通信作为整个通信网体系中的最低层传输层,在最近20年经历了三种传输介质:铁线、铜缆和光纤。随着社会的进步和人们对通信服务质量(QOS)期望的不断提高,铁线已经不能满足现在通信的发展,早早地退出了历史的舞台。最近10年了,数据业务的业务量逐渐逼近甚至超过了传统的语音业务,成为电信网络中发展最为迅猛的业务,铜缆由于其自身的固有缺点,也步铁线的后尘,逐步被淘汰。1.3系统结构1.3.1系统硬件设计对于一个通信系统来说,除了要有上层的通信协议与软件的支持外,还要有硬件作为信号的传输介质,完成有线通信任务,该系统采用已有的硬件模块完成单片机与PC机之间系统任务,该系统的硬件部分主要包括ATMEGA8单片机、MAX232芯片、DB9MALE接口、ISP接口。用直流电压模拟该系统的输入信号,由于ATMEGA8单片机内部集成了ADC转换器所以不用再外接模数转换器,ATMEGA8读取ADC转换器的转换结果,然后根据数字信号与模拟信号的关系求出实际的模拟电压值,再用BCD编码规则进行编码,将编码后的结果通过异步数据传输方式上传给上位机。MAX232芯片在整个系统中完成TTL电平与PC机电平的转换工作,芯片外接有泵升电容和稳压电容,保证电平信号转换的可靠性。DB9MALE接口是负责信号传输的9针接口芯片,遵守RS232标准,DB9接口有MALE与FEMALE之分,在单片机上主要采用DB9MALE接口,而且在本系统只使用了第二管脚(接收数据引脚)与第三管脚(发送数据管脚)。对于其它管脚主要是用于握手信号,由于该系统要求不高,所以不需要使用。ISP接口:AVR单片机支持ISP程序下载方式,根据接口管脚的定义,将ATMEGA8单片机与ISP接口相连,实现ISP下载。ISP接口管脚定义主要有:MISO、VCC、SCK、MOSI、RESET、GND,将ATMEGA8单片机上的对应管脚与之相连。硬件设计上的总体思路是:单片机初始化所用到的外部芯片和内部芯片的功能,然后等待上位机命令,接收到开始采集的命令后,执行信号采集工作,采集工作完成后,将采集信号经过数据信号处理得到实际的模拟信号值,然后BCD编码后上传给上位机,之后继续采集信号,一直到接收到停止采集命令。1.3.2系统软件设计对于一个通信系统来说,为了达到精确控制的目的,通信的接收与发送双方在数据传输上保持协调,必须采用软件技术来保证,对于采用同步通信的双方来说,时钟信号必须保持一致,要求精度很高,对于异步操作来说,只要保证数据格式正确既可,在该系统中采用精度要求低的异步通信方式。该系统软件主要有单片机内部的程序和上位机软件两部分组成。单片机内部的程序用C语言编写,面向底层,直接读写单片机内部的控制字和各芯片的控制字,首先初始化各芯片的内部控制字,然后在系统的运行过程中,通过读取内部状态控制字的内容确定系统的运行状态和发出什么控制信号,最终实现单片机与各芯片、上位机的协调运行。上位机采用C++语言,使用了MFC的封装库,整个界面框架是由VC++的辅助程序建立,在这个框架下,再由我们自己添加控件和代码,在功能上主要完成了数据的收发、数据的保存、传送数据的帧结构设置和串行端口的选择。整个通信功能的实现都是调用了微软公司提供的MSCOMM控件来完成,该控件满足了该系统的所有功能实现要求。上位机设计思路:打开通信串口端,向单片机发送采集命令,用消息响应机制接从收单片机上传到PC机的数据信号,在接收数据时,遵守上位机与单片机程序约定好的数据格式约定。1.4可行性分析在两台设备的通信过程中,只要保证数据接收和发送双方线路的正常连接,按照规定的数据格式和传送方式传送数据,就可以正确的传输数据,所以只要按照我们上述的思路完成了硬件上和软件上的工作,该系统就可以正常的工作。本次设计的系统属于数字通信系统,数据的收发双方是PC机和单片机,通信方式是异步串行通信,编码和解码的过程由上位机和单片机内部的程序来解决,而整个系统除了外界信号采集时采集模拟信号外,其它任何时候都是数字信号,而采集的模拟信号经过AD转换器也变成了数字信号,所以对于通信过程来说不涉及调制/解调的过程,因此整个系统满足了一个数字通信所要求的基本组成部分,是一个可执行性设计方案。能够达到我们的要求。
第二章系统使用的通信方式及协议介绍2.1通信方式2.1.1串行通信与并行通信随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。并行通信通常是将数据字节的各位用多条数据线同时进行传送,如图2-1所示。在时间上各位是同时发送的只是传输线路不同而以,并行通信控制简单、传输速度快;由于传输线较多,长距离传送时,成本高且接收方的各位同时接收存在困难。串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,时间上不同步。如图2-1所示。串行通信的主要特点是传输线少,长距离传送时,成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。设备A设备A设备BN条数据线应答信号并行通信设备A设备B一条数据线应答信号串行通信图2-1串行和并行通信方式设备A设备A设备A起始位数据位较验位停止位停止位较验位数据位起始位异步方式图2-2异步通信方式2.1.2同步通信与异步通信异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。异步数据格式异步数据格式图2-3异步通信数据格式同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。同步方式同步方式图2-4同步通信方式SKIPIF1<0图2-5面向字符的同步格式面向字符的同步格式如图2-5所示,此时,传送的数据和控制信息都必须由规定的字符集(如ASCII码)中的字符所组成。图中帧头为1个或2个同步字符SYN(ASCII码为16H)。SOH为序始字符(ASCII码为01H),表示标题的开始,标题中包含源地址、目标地址和路由指示等信息。STX为文始字符(ASCII码为02H),表示传送的数据块开始。数据块是传送的正文内容,由多个字符组成。数据块后面是组终字符ETB(ASCII码为17H)或文终字符ETX(ASCII码为03H)。然后是校验码。典型的面向字符的同步规程如IBM的二进制同步规程BSC。SKIPIF1<0图2-6面向位的同步格式面向位的同步格式如图2-6所示,此时,将数据块看作数据流,并用序列01111110作为开始和结束标志。为了避免在数据流中出现序列01111110时引起的混乱,发送方总是在其发送的数据流中每出现5个连续的1就插入一个附加的0;接收方则每检测到5个连续的1并且其后有一个0时,就删除该0。典型的面向位的同步协议如ISO的高级数据链路控制规程HDLC和IBM的同步数据链路控制规程SDLC。同步通信的特点是以特定的位组合“01111110”作为帧的开始和结束标志,所传输的一帧数据可以是任意位。所以传输的效率较高,但实现的硬件设备比异步通信复杂。2.2RS232协议介绍2.2.1概述RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,RS(recommededstandard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有有EIARS-422A、EIARS-423A、EIARS-485。这里只介绍EIARS-232C(简称232,RS232)。例如,目前在IBMPC机上的COM1、COM2接口,就是RS-232C接口。2.2.2电气特性EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。在TxD和RxD上:逻辑1(MARK)=-3V~-15V,逻辑0(SPACE)=+3~+15V,在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V~+15V,信号无效(断开,OFF状态,负电压)=-3V~-15V。以上规定说明了RS-323C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)V之间。EIARS-232C与TTL转换:EIARS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIARS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL←→EIA双向电平转换。2.2.3RS-232C的接口信号RS-232C的功能特性定义了25芯标准连接器中的20根信号线,其中2条地线、4条数据线、11条控制线、3条定时信号线,剩下的5根线作备用或未定义。常用的只有10根,它们是:⑴、联络控制信号线数据发送准备好(Datasetready-DSR)——有效时(ON)状态,表明MODEM处于可以使用的状态。数据终端准备好(Dataterminalready-DTR)——有效时(ON)状态,表明数据终端可以使用。这两个信号有时连到电源上,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。请求发送(Requesttosend-RTS)——用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。它用来控制MODEM是否要进入发送状态。允许发送(Cleartosend-CTS)——用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。这对RTS/CTS请求应答联络信号是用于半双工MODEM系统中发送方式和接收方式之间的切换。在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。接收线信号检出(ReceivedLinedetection-RLSD)——用来表示DCE已接通通信链路,告知DTE准备接收数据。当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字数据后,沿接收数据线RxD送到终端。此线也叫做数据载波检出(DataCarrierdetection-DCD)线。振铃指示(Ringing-RI)——当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。⑵、数据发送与接收线发送数据(Transmitteddata-TxD)——通过TxD终端将串行数据发送到MODEM,(DTE→DCE)。接收数据(Receiveddata-RxD)——通过RxD线终端接收从MODEM发来的串行数据,(DCE→DTE)。⑶、地线GND、Sig.GND——保护地和信号地,无方向。上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定DCE已由接收方向改为发送方向,这时线路才能开始发送。2个数据信号:发送TXD;接收RXD。1个信号地线:SG。6个控制信号:DSR:数据发送准备好,DataSetReady。DTR:数据终端准备好,DataTerminalReady。RTS:DTE请求DCE发送(RequestToSend)。CTS:DCE允许DTE发送(ClearToSend),该信号是对RTS信号的回答。DCD:数据载波检测(DataCarrierDetection),当本地DCE设备(Modem)收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收,并且由DCE将接收到的载波信号解调为数字信号,经RXD线送给DTE。RI:振铃信号(Ringing),当DCE收到对方的DCE设备送来的振铃呼叫信号时,使该信号有效,通知DTE已被呼叫。由于RS232接口标准出现较早,难免有不足之处,主要有以下四点:eq\o\ac(○,1)、接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。eq\o\ac(○,2)、传输速率较低,在异步传输时,波特率≤20Kbps。eq\o\ac(○,3)、接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。eq\o\ac(○,4)、传输距离有限,最大传输距离标准值为50英尺(实际≤15米)。
第三章系统硬件设计3.1ATmega8介绍3.1.1概述在本次系统的设计中,我们选用了ATmega8单片机,它是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega8的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。AVR内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算术逻辑单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10倍的数据吞吐率。ATmega8有如下特点:8K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,面向字节的两线串行接口,10位6路(8路为TQFP与MLF封装)ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及五种可以通过软件进行选择的省电模式。工作于空闲模式时CPU停止工作,而SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU和除了异步定时器与ADC以外所有I/O模块的工作,以降低ADC转换时的开关噪声;Standby模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力。本芯片是以Atmel高密度非易失性存储器技术生产的。片内ISPFlash允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlashMemory)。在更新应用Flash存储区时引导Flash区(BootFlashMemory)的程序继续运行,实现了RWW操作。通过将8位RISCCPU与系统内可编程的Flash集成在一个芯片内,ATmega8成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。ATmega8具有一整套的编程与系统开发工具,包括:C语言编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估板。3.1.2系统时钟及时钟选项CPU时钟:CPU时钟与操作AVR内核的子系统相连,如通用寄存器文件、状态寄存器及保存堆栈指针的数据存储器。终止CPU时钟将使内核停止工作和计算。I/O时钟:I/O时钟用于主要的I/O模块,如定时器/计数器、SPI和USART。I/O时钟还用于外部中断模块。但有些外部中断由异步逻辑检测,即使I/O时钟停止了这些中断仍然可以得到监控。此外,I2C模块的地址识别也是在异步进行的,因此在I/O时钟信号暂停,系统处于休眠模式时,I2ADC时钟:ADC具有专门的时钟。这样可以在ADC工作的时候停止CPU和I/O时钟以降低数字电路产生的噪声,从而提高ADC转换精度。ATmega8芯片的时钟源有外部晶体/陶瓷振荡器、外部低频晶振、外部RC振荡器、标定的内部RC振荡器、外部时钟,通过Flash熔丝位的设置来选择我们所需要的时钟源如表3-1所示。表3-1时钟熔丝位设置芯片时钟选项CKSEL3..0外部晶体/陶瓷振荡器1111-1010外部低频晶振1001外部RC振荡器1000-0101标定的内部RC振荡器0100-0001外部时钟0000晶体振荡器:XTAL1与XTAL2分别为用作片内振荡器的反向放大器的输入和输出,如图3-1所示:图3-1石英晶振接线图振荡器可以工作于三种不同的模式,每一种都有一个优化的频率范围。工作模式通过熔丝位CKSEL3-1来选择。当使用外部晶体时,针对不同的晶振频率,熔丝位有不同的设置规则,如表3-2所示:表3-2外部晶振时熔丝设置熔丝位工作频率范围/MHZC1、C2容量/PF适用晶体CKOPTCKSEL[3-1]11010.4~0.9按生产厂家说明配用陶瓷晶体11100.9~3.012~22石英晶体11113.0~8.012~220101~111>=1.012~22熔丝位CKSEL0以及SUT1-0用于选择启动时间:晶体振荡器时钟选项对应的启动时间:表3-3启动时间熔丝位设置CKSEL0SUT1-0掉电与节电模式下的启动时间复位时额外的延迟时间(VCC=5.0V)推荐用法000258CK4.1ms谐振器,电源快速上升001258CK65ms谐振器,电源缓慢上升0101KCK-谐振器,BOD使能0111KCK4.1ms谐振器,电源快速上升1001KCK65ms谐振器,电源缓慢上升10116KCK-石英晶体,BOD使能11016KCK4.1ms石英晶体,快速上升11116KCK65ms石英晶体,慢速上升3.1.3系统复位复位时所有的I/O寄存器都被设置为初始值,程序从复位向量处开始执行。复位向量处的指令必须是绝对跳转JMP指令,以使程序跳转到复位处理例程。如果程序永远不利用中断功能,中断向量可以由一般的程序代码所覆盖。这个处理方法同样适用于当复位向量位于应用程序区,中断向量位于Boot区的时候。复位源有效时I/O端口立即复位为初始值。此时不要求任何时钟处于正常运行状态。所有的复位信号消失之后,芯片内部的一个延迟计数器被激活,将内部复位的时间延长。这种处理方式使得在MCU正常工作之前有一定的时间让电源达到稳定的电平。延迟计数器的溢出时间通过熔丝位SUT与CKSEL设定。ATmega8有4个复位源:eq\o\ac(○,1)、上电复位。电源电压低于上电复位门限VPOT时,MCU复位。上电复位(POR)脉冲由片内检测电路产生。无论何时VCC低于检测电平POR即发生。POR电路可以用来触发启动复位,或者用来检测电源故障。POR电路保证器件在上电时复位。VCC达到上电门限电压后触发延迟计数器。在计数器溢出之前器件一直保持为复位状态。当VCC下降时,只要低于检测门限,RESET信号立即生效。SKIPIF1<0图3-2RESET连接到Vcc时,MPU的启动过程SKIPIF1<0图3-3RESET引脚由外部控制时,MPU的启动过程:eq\o\ac(○,2)、外部复位。引脚RESET上的低电平持续时间大于最小脉冲宽度时MCU复位。eq\o\ac(○,3)、看门狗复位。看门狗使能并且看门狗定时器溢出时复位发生。eq\o\ac(○,4)、掉电检测复位。掉电检测复位功能使能,且电源电压低于掉电检测复位门限VBOT时MCU即复位。3.1.4ATmega8同步/异步串行接口USART⑴、概述USART收发模块分为三大部分:时钟发生器、数据发送器和接收器,控制寄存器为所有的模块共享,时钟发生器由同步逻辑电路(同步从模式下由外部时钟输入驱动)和波特率发生器组成。发送时钟引脚XCK仅用于同步发送模式下,发送器部分由一个单独的写入缓冲器(发送UDR)、一个串行移位寄存器、校验位发生器和用于处理不同帧结构的控制逻辑电路构成。使用写入缓冲器,实现了连续发送多帧数据无延时的通信。接收器是USART模块中最复杂的部分、最主要的是时钟和数据接收单元。数据接收单元用作异步数据的接收。除了接收单元、接收器还包括校验位校验器、控制逻辑、移位寄存器和两级接收缓冲器(接收UDR)。接收器支持与发送器相同的帧结构,同时支持帧错误、数据溢出和校验错误的检测。⑵、串行时钟发生时钟发生逻辑为发送器和接收器提供基本的时钟,USART支持4种时钟工作模式,普通异步模式、两倍速异步模式、主机同步模式和从机同步模式、USART控制和状态寄存器C(UCSRC)中的UMSEL位用于选择同步或异步模式。双倍速模式(只有异步模式有效)由UCSRA寄存器中的U2X位控制,当使用同步模式时,XCK引脚的数据方向寄存器(DDR_xck)控制了时钟源是来自内部的(主机模式)还是由外部驱动(从机模式)。XCK引脚只在使用同步模式下有效。内部时钟发生被用于异步模式和同步主机模式,USART的波特率寄存器UBRR和预分频向下计数器(DOWN-COUNTER)相连接,一起构成可编程的预分频器或波特率发生器,向下计数器对系统时钟计数,当其计数到零或UBRRL寄存器被写时,会自动装入UBRR寄存器的数值,当计数到零时产生一个时钟,该时钟作为波特率发生器输出时钟,输出时钟的频率为fosc/(UBRR+1)。发送器对波特率发生器的输出时钟进行2、8或16的分频,具体情况取决于工作模式。波特率发生器的输出被直接用作接收器和数据接收单元的时钟。然而,接收单元使用了一个2、8或16个状态的状态机,具体状态由UMSEL、U2X和DDR_xck位设定的工作模式决定。下表给出了计算波特率和计算每一种使用内部时钟源工作的模式的UBRR值的公式。表3-4波特率和UBRR值计算使用模式波特率的计算UBRR值的计算异步正常模式U2X=0BAUD=fosc/16(UBRR+1)BARR=fosc/(16*BAUD)异步倍速模式U2X=1BAUD=fosc/8(UBRR+1)BARR=fosc/(8*BAUD)同步主机模式BAUD=fosc/2(UBRR+1)BARR=fosc/(2*BAUD)⑶、数据帧格式一个串行数据帧是由一个数据位字加上同步位(开始和结束位)以及作为检错的检验位三部分构成,ATMEGA8的USART可以使用以下几种有效组合的数据帧格格式:eq\o\ac(○,1)、1个起始位eq\o\ac(○,2)、5、6、7、8或9位数据位eq\o\ac(○,3)、一个无、奇校验或偶校验eq\o\ac(○,4)、1或2个停止位一个数据帧是以起始位开始,紧接着是数据字的最低位,数据字最多可以是9个数据位,数据位以数据的最高位结束,如果使能了校验位,校验位将接着数据位,最后是结束位,当一个完整的数据帧传输后,可以直接跟着传送下一个新的数据帧,或者使通信线路处于空闲状态。数据帧的结构由UCSRB和UCSRC寄存器中的UCSZ2.0、UPM1.0和USBS位设置和定义,接收和发送使用同样的定义设置,注意:任何这些设置的改变都会打断正在进行的数据传送和接收通信。USART帧的字长位(UCSZ2:0)确定了数据帧的数据位数,USART的校验模式位(UPM1.0)用于使能和决定校验的类型。选择一位或两位结束位由USART的USBS位设置。但接收器是忽略第二个停止位的。因此帧错误(FE)只会在第一个结束位为“0”时被检测到。校验位的计算是对数据位的各个位进行异或运算,其结果再同“0”或“1”进行异或运算。如在数据格式中定义使用校验位,则校验位值将出现在最后一个数据位和第一个停止位之间。⑷、数据发送USART的数据发送是由UCSRB寄存器中的发送允许位TXEN设置,当被TXEN使能时,TXD引脚的通用I/O性能将被USART代替,作为发送器的品德输出引脚。如果使用同步发送模式,内部产生的发送器时钟信号施加到XCK引脚上,作为串行数据发送的时钟。5至8位数据:发送是通过把将要传送的数据放到发送缓冲器中来初始化的,CPU通过写入到UDR发送数据寄存器来加载发送缓冲。当移位寄存器为发送下一帧准备就绪时,缓冲的数据将被移到移位寄存器中,如果移位寄存器外于空闲状态或刚结束前一帧的最后一个停止位的传送,它将装载新的数据,一旦移位寄存器中的装载了新的数据,就会按照设定的数据帧模式和速率完成一帧数据的发送。⑸、传送标志位和中断:USART的发送器有两个标志,USART数据寄存器空UDRE标志和传送完成TXC标志,两个标志位都能发生中断。数据寄存器空UDRE标志位表示发送缓冲器是否就绪,可以接受一个新的数据。该位发送缓冲器空时被置“1”,当发送缓冲区内含有正在发送的数据时,该位为“0”.为了和其他的器件兼容,建议在写UCSRA寄存器时,该位写为“0”。当UCSRB寄存器中的数据寄存器空中断允许位UDRIE为“1”时,只要UDRE被置位,就将主生USART数据寄存器空中断申请。UDRE位在发送寄存器UDR的写入后被自动清零。当采用中断方式的数据传送时,在数据寄存器空中断服务程序中必须写一个新的数据到UDR中,以清零UDRE,或者屏蔽掉数据寄存器空中断标志,否则,一旦该中断程序结束后,一个新的中断将再次产生。⑹、USART的初始化USART接口在通信前,必须首先进行初始化,初始化过程通常包括波特率的设定,帧结构的设定和根据需要的接收器或发送器的使能,对于中断驱动的USART操作,在初始化时,全局中断标志位应该先被零(全局中断被屏蔽)然后再进行USART的初始化(如改变波特率或帧结构)。重新改变USART的设置应该在没有有数据传输的情况下进行,TXC标志位可以用来检验一个数据帧的发送是否已经完成,RXC标志位可以用来检验是不在接收缓冲器中还有数据未读出,在每次发发送前(在写发送数据寄存器UDR前),TXC标志位必须清零。初始化过程:eq\o\ac(○,1)、波特率设定:UBRR寄存器中的数值确定波特率的大小,取值为0-255。例如:异步正常模式(U2X=0),UBRR=fosc/(16*BAUD)。eq\o\ac(○,2)、帧结构设定:由UCSRB和UCSRC寄存器中的UCSZx、UPM1.0和USBS位设置。UCSZ0、UCSZ1、UCSZ2确定了数据帧的数据位数,UPM0、UPM1用于使能和决定校验的类型,USBS位设置停止位位数。eq\o\ac(○,3)、接收器或发送器的使能:USART的数据发送是由UCSRB寄存器中的发送允许位TXEN设置,当被TXEN使能时,TXD引脚的通用I/O性能将被USART代替,作为发送器的输出引脚。如果使用同步发送模式,内部产生的发送器时钟信号施加到XCK引脚上,作为串行数据发送的时钟。UCSRB寄存器:RXCIETXCIEUDRIERXENTXENUCSZ2RXB8TXB8RXCIE:接收结束中断使能置位后使能RXC中断。当RXCIE为1,全局中断标志位SREG置位,UCSRA寄存器的RXC亦为1时可以产生USART接收结束中断。TXCIE:发送结束中断使能置位后使能TXC中断。当TXCIE为1,全局中断标志位SREG置位,UCSRA寄存器的TXC亦为1时可以产生USART发送结束中断。UDRIE:USART数据寄存器空中断使能置位后使能UDRE中断。当UDRIE为1,全局中断标志位SREG置位,UCSRA寄存器的UDRE亦为1时可以产生USART数据寄存器空中断。RXEN:接收使能置位后将启动USART接收器。RxD引脚的通用端口功能被USART功能所取代。禁止接收器将刷新接收缓冲器,并使FE、DOR及PE标志无效。TXEN:发送使能置位后将启动USART发送器。TxD引脚的通用端口功能被USART功能所取代。清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。发送器禁止后,TxD引脚恢复其通用I/O功能。UCSZ2:字符长度UCSZ2与UCSRC寄存器的UCSZ1:0结合在一起可以设置数据帧所包含的数据位数(字符长度)。RXB8:接收数据位8对9位串行数据帧进行操作时,RXB8是第9个数据位。读取UDR包含的低位数据之前首先要读取RXB8。TXB8:发送数据位8对9位串行数据帧进行操作时,TXB8是第9个数据位。写UDR之前首先要对它进行写操作。UCSRC寄存器:URSELUMSELUPM1UPM0USBSUCSZ1UCSZ0UCPOLURSEL:寄存器选择通过该位选择访问UCSRC寄存器或UBRRH寄存器。当读/写UCSRC时,该位为1,当对UBRRH访问时,URSEL为0;UMSEL:USART模式选择通过这一位来选择同步或异步工作模式。表3-5UMSEL设置UMSEL模式0异步操作1同步操作UPM1、UPM0:奇偶校验模式这两位设置奇偶校验的模式并使能奇偶校验。如果使能了奇偶校验,那么在发送数据,发送器都会自动产生并发送奇偶校验位。对每一个接收到的数据,接收器都会产生一个奇偶值,并与UPM0所设置的值进行比较。如果不匹配,那么就将UCSRA中的PE置位。表3-6UPM设置UPM1UPM0奇偶模式00禁止01保留10偶校验11奇校验USBS:停止位选择通过这一位可以设置停止位的位数。接收器忽略这一位的设置。表3-7USBS设置USBS停止位位数0112UCSZ1,UCSZ0:字符长度UCSZ1,UCSZ0与UCSRB寄存器的UCSZ2结合在一起可以设置数据帧包含的数据位数(字符长度)。表3-8UCSZ设置UCSZ2UCSZ1UCSZ0字符长度0005001601070118100保留101保留110保留1119UCPOL:时钟极性这一位仅用于同步工作模式。使用异步模式时,将这一位清零。UCPOL设置了输出数据的改变和输入数据采样,以及同步时钟XCK之间的关系。表3-9UCPOL设置UCPOL发送数据的改变(TxD引脚的输出)接收数据的采样(RxD引脚的输入)0XCK上升沿XCK下降沿1XCK下降沿XCK上升沿UCSRA寄存器:RXCTXCUDREFEDORPEU2XMPCMRXC:置1:USART接收结束,否则为0TXC:置1:USART发送结束,否则为0UDRE:置1:发送缓冲器空,否则为0FE:置1:帧错误DOR:置1:数据溢出,当接收缓冲器满,接收移位寄存器双有数据,若此时检测到一个新的起始位,则数据溢出。PE:置1:奇偶校验错误U2X:倍速发送,仅对异步操作有影响,使用同步操作时将此位清零。此位置1可将波特率分频因子从16降到8,从而有效的将异步通信模式的传输速率加倍MPCM:设置此位可启动多处理器通信模式。发送器不受MPCM设置的影响。3.1.5ATmega8通用I/O口⑴、通用I/O功能AVR的I/O端口作为通用数字输入、输出口使用时,都具备真正的读-修改-写特性,这意味着用指令可以单独改变某个I/O引脚的输入/输出方向,或改变引脚的输出值,或在禁止、允许引脚的内部上拉电阻功能时不影响和必应其他引脚。每个I/O引脚采用推挽式驱动,仅能提供大电流的输出驱动,而且也可以吸收20MA的电流,因此能直接驱动LED显示器。AVR采用3个8位寄存器来控制I/O端口,它们分别是方向寄存器DDRx、数据寄存器PORTx和输入引脚寄存器PINx,其中DDRx和PORTx是可读写寄存器,而PINx为只读寄存器,每个I/O引脚内部都有独立的上拉电阻电路,可通过程序设置内部上拉电阻的有效与否。此外,如置“1”,SFIOR寄存器中的上拉屏蔽位PUD为“1”,则会屏蔽掉所有端口引脚中的内部上拉电阻,每个I/O引脚在芯片内部都有对电源VCC和对地GND的二极管钳位保护电路。ATMEGA8多数的I/O口为复用口,除了作为通用数字使用外,其第二功能分别作为芯片内部其他外围电路的接口。ATMEGA8有23个I/O引脚,分别3个8位的端口B、C、D,其中C口只有7位。有的I/O端口都是又向口,每一个端口内部分别带有可选的上拉驱动电路,。第个8位的端口都有对应的3个I/O端口寄存器,它们分别是数据寄存器PORTx、方向寄存器DDRx和输入引脚寄存器PINx(x为B或C或D,分别华表B口、C口或D口)。数据寄存器PORTxPORTx7PORTx6PORTx5PORTx4PORTx3PORTx2PORTx1PORTx0方向寄存器DDRxDDRx7DDRx6DDRx5DDRx4DDRx3DDRx2DDRx1DDRx0输入引脚寄存器PINxPINx7PINx6PINx5PINx4PINx3PINx2PINx1PINx0PORTxn、DDRxn、PINxn分别表示这三个I/O寄存器中相应的各个位,其中n为0-7,代表寄存器中的位值。位于方向寄存器DDRx中的每个位DDRxn用于控制一个I/O引脚的输入/输出方向。DDRxn为“1”时,对应的Pxn配置为输出引脚,而当DDRxn写入“0”时,对应的Pxn置为输入引脚,当Pxn定义为输出引脚(DDRxn=1),PORTxn中的数据为外部引脚的输出电平,即置农业投入xn,端口引脚被强制拉低,输出低电平(吸入电流)。当Pxn定义为输入(DDRxn=0),置PORTxn为“1”时,则配置该引脚的内部上拉电阻有效,要屏蔽掉内部上拉电阻,应将PORTxn清零,或将该引脚配置为输出,此外,通过对I/O特殊功能寄存器SFIOR中的PUD位的设置,可以使所有引脚的上拉电阻处于无效状态,当芯片复位后,即使没有时钟脉冲,所有端口的引脚被置为高阻态。I/O口和各种配置说明如下:表3-10通用I/O口控制字DDRxnPORTxnPDUI/O上位说明00X输入无效三态(高阻)010输入有效外部引脚定义时输出电流011输入无效三态(高阻)10X输出无效低电平推挽输出,吸叫电流11X输出无效高电平推挽输出,输出电流I/O特殊功能寄存器SFIOR的定义如下:ADHSMACMEPUDPSR2PSR10PUD:上位禁止位当PUD位被置“1”后,所有I/O引脚的上位电阻都无效,即使在DDRxn=0、PORTxn=1的情况下,只要PUD=1,则上拉电阻仍旧无效。在将一个引脚从输入高阻态(DDRxn=0,PORTxn=0)转换为高电平输出状态(DDRxn=1,PORTxn=1)的过程中,会暂时出现上拉有效输入或低电平输出在中间过程,通常情况下,应先转换到上拉有效输入状态,再转换到高电平输出状态,更严格的转换是先将PUD位置“1”,再进行上述的转换。不管方向寄存器DDRxn为“0”或“1”,总是可以通过读PINxn来获得外部外脚当前的实际电平,PINxn和两个D触发器组成的同步锁存电路,采用这种结构的优点是可以避免当外部引脚的电平改变出现在系统时钟边缘处时前主生一个不确定的值,但同时也形成引脚电平变化到PINxn寄存器位变化之间的一个锁存延时。在应用中需要立即回读刚刚由程序输出到引脚的设定值,那么应在输出和输入指令之间插入一条NOP指令,因为锁存延时时间为一个系统时钟周期。⑵、I/O端口第二功能大多数的端口引脚除了可用为一般数字I/O口外,都有第二功能。通过端口控制信号将其转换用于第二功能。表3-11B口引脚第二功能端口引脚第二功能PB7XTAL2(芯片时钟振荡器引脚2)TOSC2(定时振荡器引脚2)PB6SXTAL1(芯片时钟振荡器引脚1或外部时钟输入)TOSC1(定时振荡器引脚1)PB5SCK(SPI总线的主机时钟输入)PB4MISO(SPI总线的主机输入/从机输出信号)PB3MOSI(SPI总线的主机输出/从机输入信号)OC2(T/C2输出比较匹配输出)PB2SS(SPI总线主从选择)OC1B(T/C1输出比较匹配B输出)PB1OC1A(T/C1输出比较匹配A输出)PB0ICP1(T/C1输入捕获引脚)表3-12引脚第二功能PC6RESET(系统复位引脚)PC5ADC5(ADC输入通道5)或SCL(2线串行总线接口时钟线)PC4ADC4(ADC输入通道4)或SDA(串行总线接口数据输入/输出线)PC3ADC3(ADC输入通道3)PC2ADC2(ADC输入通道2)PC1ADC1(ADC输入通道1)PC0ADC1(ADC输入通道0)表3-13D口引脚第二功能引脚第二功能PD7AIN1(模拟比较器负输入)PD6AIN0(模拟比较器正输入)PD5T1(T/C1)外部计数脉冲输入口PD4XCK(USART外部时钟输入/输出口)T0(T/C0外部计数脉冲输入口)PD3INT1(外部中断1输入)PD2INT0(外部中断输入)PD1TXD(USART输出口)PD0RXD(USART输入口)3.1.6ATmega8A/D转换ATMEGA8有一个10位的逐次比较的ADC,ADC与一个8通道的多路选择器相连,能够对以PC口作为ADC输入引脚的8路单端口电压输入信号进行采样。单端电压输入以0V(GND)为参考,ADC4和ADC5两个通道只提供8位的转换精度,其他通道提供10位转换精度ADC包括采样保持电路,以确保输入电压在ADC转换过程中保持恒定,ADC功能单元由独立的专用模拟电源引脚AVCC供电,AVCC和VCC的电压差别不能大于±0.3V。ADC转换的参考电源可采用芯片内部的2.56V参考电源,或采用AVCC,也可采用外部的参考电源。使用外部参考电源时,外部参考电源由引脚ARFE接入,使用内部电压参考源时,可以通过在AREF引脚外部并接一个电容来提高ADC的抗噪性能。模式输入通信的选择是通过ADMUX寄存器中的MUX位设定的。任何一个ADC的输入引脚,包括地(GND)以及内部的恒定间隙电压参考源,都可以被选择来用作为ADC的单调输入。通过设置ADCSRA寄存器中的ADC使能位ADEN来使能ADC功能。当ADEN位被清“0”后,ADC不消耗能量,因此建议在进入节电休眠模式前前将ADC关掉。ADC将10位的转换结果放在ADC数据寄存器中(ADCH和ADCL),默认情况下,转换结果为右端对齐的,但可以通过设置ADMUX寄存器中的ADLAR位调整为左端对齐。如果转换结果是左端对齐,并且只需要8位的精度,那么只需读取ADCH寄存器的数据作为转换结果应达到要求了,否则必须先读取ADCL寄存器,然后再读取ADCH寄存器,以保证数据寄存器中的内容是同一次转换的结果。因为一旦指令读取了ADCL,那么转换紧接着读取一次ADCH,如果在读取ADCL和读取ADCH的过程中正好有一次ADC转换完成,ADC的2个数据寄存器的内容是不会被更新的,该次转换的结果将丢失。只有当ADCH寄存器被读取后,ADC才可以继续对ADCL和ADCH寄存器操作更新。ADC有自己的中断,当转换完成时中断将被触发,尽管在顺序读取ADCL和ADCH寄存器中,ADC对ADC数据寄存器的更新被禁止,转换的结果丢失,但仍会触发ADC中断。⑴、启动ADC转换将逻辑值“1”写入ADSC位将启动一次A/D转换,在转换过程中该位保持为“1”,直到A/D转换结束后由硬件自动清零,如果在A/D转换过程中改变ADC输入通道的选择,ADC将在完成本次转换后再进行通道的转换。通过置位ADCSRA寄存器的ADFR位,ADC能被设置为连续转换模式下,也必须通过写入逻辑“1”到ADCSRA寄存器中的ADSC位来启动第一次的A/D转换,然后,ADC将一直连续地进行逐次比较转换,无论ADC中断标志位ADIF是否清零还是置位。⑵、预分频与转换定时在默认情况下,ADC的逐次比较转换电路需要一个50kHz-500kHz之间采样时钟。在要求转换精度低于10位的情况下,ADC的采样时钟可以高于200KHz,以获得更高的采样率,另外,可以设置SFIOR寄存器中的ADHSM来提高ADC的时钟频率,但这需要较高的功耗。ADC模块中包含一个预分频器,它对输入的系统时钟CK进行分频,以得到合适的ADC时钟,预分频率是由ADCSRA寄存器中的ADPS位设置的,一旦寄存器ADCSRA中的ADEN位置“1”,预分频器就启动开始计数。ADEN位为“1”时,预分频器将一直工作,ADEN位为“0”时,预分频器一直处在复位状态。当ADCSRA寄存器中的ADSC位置位,启动一次单次转换时,ADC转换将在随后的ADC时钟的上升沿开始,一次常规的A/D转换需要13个ADC时钟周期。而通过置位ADCSRA寄存器的ADEN位,使ADC启动进行的第一次A/D转换,因为要初始化模拟电路,所以需要25个ADC采样时钟周期。在一次常规的A/D转换结束后,需要1.5个ADC时钟周期的保持时间,而对于ADC由禁止状态启动后的首次A/D转换,则需要13.5个ADC时钟周期的采样保持时间。当一次A/D转换完成后,转换结果写入ADC数据寄存器,ADIF(ADC中断标志位)将被置位,在单次转换模式下,ADSC也同时被清零,用户程序可以再次置位ADSC位,新的一次转换将在下一个ADC时钟的上升沿开始。⑶、ADC输入通道和参考电源的选择寄存器ADMUX中的MUXn和REF1、REF0位是与一个MCU可以随机读取的临时寄存器相连的缓冲器,这种结构保证了ADC输入通道和参考电源只能在ADC转换过程中的安全点改变,在转换开始前,通道和参考电源不断被更新,一旦转换开始,通道和参考电源将被锁定,并保持足够时间,以确保ADC转换在正常进行。在转换完成前的最后一个ADC时钟周期,通道和参考电源又开始重新更新,注意由于A/D转换开始于置位ADSC后的第一个ADC时钟的上升沿,因此,在置位ADSC后的一个ADC时钟周期不要将一个新的通道或参考电源写入到ADMUX寄存器中。⑷、转换模式:在单次转换模式下,总是在开始转换前改变通道设置,在ADSC位被写入“1”后的一个ADC时钟周期内,输入通道改变为所设置的通道,然而最简单的方法是等转换完成后,再改变通道选择。在连续转换模式下,总是在启动ADC开始第一次转换前改变通道设置,在ADSC位被写入“1”后的一个ADC时钟周期内,输入通道改变为所设置的通信,然而,最简单的方法是等到彿一次转换完成后再改变通道的设置,此时,由于新一次的转换已经自动开始,所以当前这次的转换结果仍为以前通道的反映,而下一次转换结果将为新设置通道的反映。⑸、ADC电压参考源:ADC的参考电压决定了A/D转换的范围,如果单端通道的输入电压超过VREF将导致转换结果接近于0x3FF,ADC的参考电压VREF可以选择为AVCC或芯片内部的2.56V参考源,或者为外接在AREF引脚上的参考电压源。无论选用什么参考源,外AREF引脚都是直接与ADC相连的,因此,可以通过外部在AREF引脚和地之间并接一个电容,使各参考电源更加稳定和抗噪,可以通过用高阻电压表测量AREF引脚,来获得参考电源VERF的电压值,由于VREF是一个高阻源,因此只有容性负载可以连接到该引脚,如果将一个固定的电压源连接到AREF引脚,那么就不能使用任何的内部参考电源否则就会使外部电压源短路,如果没有外部电压源施加到AREF引脚,则可以选择使用AVCC或内部的2.56V参考源作为ADC的参考源。⑹、ADC转换结果:A/D转换结束后(ADIF=1),在ADC数据寄存器(ADCL和ADCH)中可以取得转换的结果,对于单端输入的A/D转换,其转换结果为:ADC=(VIN*1024)/VREF其中VIN表示选定的输入引脚上的电压,VREF表示选定的参考电源的电压。0X000表示输入引脚的电压为模拟地,0X3FF表示输入引脚的电压为参考电压值减去一个LSB。相关控制寄存器:ADC多路复用器选择寄存器--ADMUXREFS1REFS0ADLAR-MUX3MUX2MUX1MUX0REFS1、REFS0:ADC参考电源选择:表3-14REFS1、REFS0位设置REFS1REFS0ADC参考电源00外部引脚AREF,断开内部参考源连接01AVCC,AREF外部并接电容10保留11内部2.56V,AREF外部并接电容ADLAR:ADC结果左对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论