数据采集系统设计毕业设计(30页).doc
-数据采集系统设计毕业设计-第 - 26 - 页毕业论文论文题目:数据采集系统设计 摘 要数据采集技术是以模拟信号处理、数字化、数字信号处理和计算机等高科技为基础而形成的一门综合技术,是联系模拟世界和数字世界的桥梁。数据采集系统的核心部分主要是靠单片机来实现的,在任何单片机测控制系统中,都是从尽量快速、尽量准确、尽量为完整地获得数字形式的数据开始的,因此,数据采集系统作为沟通模拟域与数字域的必不可少的桥梁起着非常重要的作用。本系统是运用VB编制上位机数据处理及显示程序,上位机通过命令可以控制下位机进行连续数据采集和单次数据采集,并可以通过命令停止下位机的数据采集。本文是Atmega8515单片机的一种应用,其主要功能就是实现一路模拟量从一个终端到另一个终端的采集、传输,这种系统在工业控制,智能仪表中广泛应用。关键词:单片机 数据采集系统 模拟量AbstractData collection technology is analog signal processing, digital, digital signal processing and high-tech computer-based form of an integrated technology, it is a bridge which contacts simulated world and the digital world. Data Acquisition System core microcontroller is mainly achieved in single-chip computer test control system, it begins from completing access to the data in digital form as rapid and as accurately as possible, data acquisition system as a communication with the digital domain simulation domain of the essential bridge plays a very important role. The system is compiled using VB PC data processing and display program, PC can be ordered through the machine under the control of continuous data acquisition and single data collection, and can be ordered to stop under-machine data acquisition. Keywords : Single-chip computer Data acquisition system Analog 目 录第一章 绪论- 1 -第二章 系统总体设计方案- 4 -2.1 系统设计要求- 4 -2.2 系统总体方案- 4 -第三章 系统硬件电路设计- 5 -3.1 Atmega8515单片机最小系统- 5 -3.1.1 Atmega8515简介- 5 -3.2 显示器接口电路- 9 -3.3 键盘接口电路- 13 -3.4 A/D转换器接口电路- 14 -3.5 D/A转换器接口电路- 16 -3.6 串口通信接口电路- 18 -第四章 系统软件设计- 20 -4.1下位机软件设计- 20 -4.2 上位机软件设计- 32 -结 论- 37 -参考文献- 37 -致 谢- 39 -第一章 绪论数据采集系统正如名字所暗示的,是一种用采集信息成文件或分析一些现象的产品或过程,在最简单的形式中,技术人员将烤箱的温度记录在一张纸上就是数据采集。随着技术的发展,通过电子设备,这个过程已经得到简化和变得比较精确。数据采集系统在工业测控以及试验室研究方面的应用非常广泛,随着科学技术的发展,数据采集技术被普遍认为是现代科学研究和技术发展的一个重要方面。数据采集系统向高精度、高速度、稳定可靠和集成化的方向发展,在多个领域有着广泛的应用。它是工业、农业控制系统中至关重要的一环,在医药、化工、食品、等领域的生产过程中,往往需要随时检测各生产环节的温度、湿度、流量及压力等参数。同时,还要对某一检测点任意参数能够进行随机查寻,将其在某一时间段内检测得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,提高产品的合格率,产生良好的经济效益。 随着工农业的发展,多路数据采集势必将得到越来越多的应用,为适应这一趋势,作这方面的研究就显得十分重要。数据采集系统一般由数据采集、数据处理、处理结果的实现与保存三个部分构成。数据采集指被测信号经过放大、滤波、A/D转换,并将转换后的数据送入计算机。这里要考虑干扰抑制、带通选择、转换准确度、采样/保持及与计算机接口等问题。数据处理指由计算机系统根据不同的要求对采集的原始数据进行各种数学运算。处理结果的实现与保存指处理后的结果在X-Y绘图仪、电平记录器或CRT上浮现出来,或者将数据存入磁盘形成文件保存起来,或通过线路送到远地。数据采集技术是以模拟信号处理、数字化、数字信号处理和计算机等高科技为基础而形成的一门综合技术,是联系模拟世界和数字世界的桥梁。它在许多领域得到了广泛的应用。数字技术促进了上述这些领域的发展,而反过来又对数据采集系统提出了愈来愈高的要求。数据采集系统的核心部分主要是靠单片机来实现的,在任何单片机测控制系统中,都是从尽量快速、尽量准确、尽量完整地获得数字形式的数据开始的,因此,数据采集系统作为沟通模拟域与数字域的必不可少的桥梁起着非常重要的作用。由于计算机技术的飞速发展,单片机的发展也十分飞速,其在各个领域中的应用也日益广泛,随着测控系统技术的猛烈发展,以嵌入式计算机为核心的数据采集系统已经在测控领域中占到了统治地位。1、单片机与嵌入式系统嵌入式系统源于计算机的应用,早期嵌入式系统为通用计算机经改装后嵌入到对象体系中的各种电子系统,如舰船的自动驾驶仪,轮机监测系统等。嵌入式系统首先是一个计算机系统,其次它被嵌入到对象体系中、在对象体系中实现对象要求的数据采集、处理、状态显示、输出控制等功能,由于嵌入在对象体系中,嵌入式系统的计算机没有计算机的独立形式及功能。单片机完全是按照嵌入式系统要求设计的,因此单片机是最典型的嵌入式系统。早期的单片机只是按嵌入式应用技术要求设计的计算机单芯片集成,故名单片机。随后,单片机为满足嵌入式应用要求不断增强其控制功能与外围接口功能,尤其是突出控制功能,因此国际上已将单片机正名为微控制器(MCU,Microcontroller Unit)。2、单片机构成的现代电子系统将成为主流电子系统单片机是器件级计算机系统,它可以嵌入到任何对象体系中去,实现智能化控制。小到微型机械,如手表、助听器。集成器件级的低价位,低到几元、十几元,足以使单片机普及到许多民用家电、电子玩具中去。单片机构成的现代电子系统已深入到各家各户,正改变我们的生活,如家庭中的音响、电视机、洗衣机、微波炉、电话、防盗系统、空调机等。单片机革新了原有电子系统,如微波炉采用单片机控制后,可方便地进行时钟设置、程序记忆、功率控制;空调机采用单片机后不但遥控参数设置方便,运行状态自动变换,还可实现变频控制。目前许多家用电器如VCD、DVD只有单片机出现后才可能实现其功能。3、嵌入式系统带动了整个电子产业目前电子元器件产业除了微处理器、嵌入式系统器件外,大多是围绕现代电子系统配套的元器件产业,例如满足人机交互用的按键,LED/LCD显示驱动、LED/LCD显示单元、语音集成器件等,满足数据采集通道要求的数字传感器、ADC、数据采集模块、信号调理模块等,满足伺服驱动控制的DAC、固体继电器、步进电机控制器、变频控制单元等,满足通信要求的各种总线驱动器、电平转换器等。世界电子元器件在嵌入式系统带动下,沿着充分满足嵌入式应用的现代电子系统要求发展。嵌入式的应用涉及金融、航天、电信、网络、信息家电、医疗、工业控制以及军事各个领域,以至一些学者断言嵌入式技术将成为后PC时代的主宰。本课题主要是通过A/D转换器TLC0832将模拟量采集到单片机内部,通过处理之后将数据在LCD显示器上显示出来,运用MAX232将采集的数据传送到上位机,并通过专用的软件将数据显示出来;同时,通过键盘可以控制将A/D转换之后的数据再通过D/A转换器TLC5620还原出来,用以驱动外部器件。第二章 系统总体设计方案2.1 系统设计要求1、 A/D转换器TLC0832与Atmega8515的接口电路;2、 LCD显示器12232F与Atmega8515的接口电路;3、 键盘接口电路;4、 D/A转换器TLC5620与Atmega8515的接口电路;5、 通过键盘可以控制模拟量数据的单次采集和连续数据采集,并将采集的数据在LCD显示器上显示出来,同时,通过键盘控制可以将采集到的数据发送到上位机;6、 运用VB编制上位机数据处理及显示程序;7、 上位机通过命令可以控制下位机进行连续数据采集和单次数据采集,并可以通过命令停止下位机的数据采集。2.2 系统总体方案本方案是以Atmega8515单片机为核心,通过TLC0832对模拟信号进行模数转换,转换后的数字信号输入到单片机内部,处理、送显并通过MAX232将数据传输到系统微机之中,系统微机之中通过专用的软件对数据进行处理并显示出来;同时通过键盘控制可以将采集的模拟数据运用D/A转换器TLC5620还原出来,系统的总体设计框图如图2.1所示:图2.1 系统总体框图第三章 系统硬件电路设计3.1 Atmega8515单片机最小系统3.1.1 Atmega8515简介在二十世纪九十年代初,ATMEL公司推出全新的精简指令集单片机,简称AVR其具有高性能、低功耗、非易失性存储器、数字集成电路、E2PROM电可擦除技术、闪速存储技术等优秀品质。与其相比,采用复杂指令集的单片机在效率、速率在指令格式上都比较简洁,更适和在嵌入式系统中使用。近几年来,随着AVR单片机不断改进并持续推出新的品种现以形成系列产品。其性价比更高,在国内外都有广阔的前景。Atmega8515具有以下特点:8K字节FLASH,256/512字节E2PROM,256/512字节SRAM;32个通用I/O口,32个通用工作寄存器;具有比较模式的灵活的定时器/计数器;内外中断源可编程的UART;可编程的看门狗定时器;SPI 口以及两种可通过软件选择的省电模式工作于空闲模式。工作于省电模式时,CPU将停止运行,而寄存器、定时器/计数器、看门狗和中断系统继续工作,掉电模式时振荡器停止工作,所有功能都被禁止,而寄存器内容得到保留,只有外部中断或硬件复位才可以退出此状态5。器件是以ATMEL的高密度非易失性内存技术生产的,片内FLASH可以通过SPI接口或通用编程器多次编程。通过将增强的RISC 8位CPU与FLASH集成在一个芯片内,Atmega 8515为许多嵌入式控制应用提供了灵活而低成本的方案,具有一整套的编程和系统开发工具宏汇编调试/仿真器在线仿真4。在AVR单片机中,用32个通用寄存器代替累加器,从而避免了传统的累加器和存储器之间的数据传送造成的瓶颈现象。在AVR单片机中,在前一条指令执行的时候就取出现行的指令,然后以一个周期执行指令。在其它的CISC以及类似的RISC结构中,外部振荡器的时钟被分频降低到传统的内部执行周期,这种分频最大达12倍。AVR单片机使用一个时钟周期执行一条指令,在8位单片机中它是第一种真正的RISC单片机。AVR单片机具有良好的性能价格比。由于AVR单片机是采用Harvard结构的,故它们的地址总线和数据总线是分开的。3.1.2 AVR单片机引脚说明Atmega8515引脚与MCS-51系列单片机8X51/8X52的引脚兼容,仅复位电平不同,AVR低电平复位,MCS-51高电平复位,这给用AVR单片机替代MCS-51单片机硬件电路带来了方便5,其引脚图如图3.1所示。图3.1 Atmega8515引脚图VCC:为供电引脚,连接到正电源。GND:为接地引脚,连接到电源地。A口(PA7PA0):A口为一个8位双向I/O口,每一引脚内部都有上拉电阻。A输出口的缓冲器可以吸收20mA的电流,因而能直接驱动LED显示器。当A口被用于输入且内部上拉被触发时,如果外部被拉低,则会输出电流。B口(PB7PB0):B口为一个8位双向I/O口,每一个引脚内都有上拉电阻。B口的输出缓冲器可以吸收20mA的电流。当B口被用于输入且内部上拉被触发时,如果外部被拉低,则会输出电流。B口也提供后面列出的AT90系列单片机许多特殊功能。C口(PC7PC0):C口为一个8位双向I/O口,每一个引脚内都有上拉电阻。C口的输出缓冲器可以吸收20mA的电流。当C口被用于输入且内部上拉被触发时,如果外部被拉低。 D口(PD7PD0):D口为带有内部拉高的8位I/O口。D口的输出缓冲器可以吸收20Ma的电流。当D口被用于输入且内部上拉被触发时,如果外部被拉低,则会输出电流。D口也提供后面列出的AT90系列单片机许多特殊功能。RESET:RESET为复位输入。当晶振运行时,引脚上一个周期的低电平可对器件进行复位。XTAL1:XTAL1为晶振反向放大器的输入端和内部时钟操作电路的输入端。XTAL2:XTAL2为晶振反向放大器的输出端。ICP:ICP是定时器/计数器1的输入捕获功能的输入引脚。OCIB:OCIB是定时器/计数器1的输出比较功能B的输出引脚。ALE:ALE是使用外部存储器时的地址锁存触发端。ALE选通门被用于在第一个访问周期中将低位地址锁存到地址锁存器中,而PD0PD7在第二个访问周期中被用作数据。3.1.3 Atmeg8515最小系统Atmeg8515最小系统如图3.2所示,其中K1、 K2 、K3和K4为上拉电阻,ST为8MHz的晶振,J1为单片机I/O口引出连接器。在本系统设计中,Atmeg8515微控制器的引脚功能分配如下:PC0PC7和PA0-PA2为LCD控制端;PA3PA6为TLC5620控制端;RXD、TXD为串行数据接收端和发送端;PB0PB7为键盘输入端;PD4PD7为TLC0832控制端。图3.2 Atmega8515最小系统3.2 显示器接口电路显示器有LCD和LED显示器,系统中选用LCD显示器12232F。其特点如下:12232F汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16×16点阵),128个字符(8×16点阵)及64×256点阵显示RAM。12232F有内置电压,无需负压。它还配置LED背光,与MCU的接口是并行或串行,系统中选用并行接口。12232F具有以下特点:文本显示RAM可以显示三种显示CGROM、HCGROM与CGRAM的字型,ST7920A提供硬件游标及闪烁控制电路,由地址计数器(address counter)的值来指定DDRAM中的游标或闪烁位置。3.2.1 模块引脚说明12232F液晶模块引脚说明如表3-1所示。表3-1 RT128X64的引脚说明引脚号引脚名称方向功能说明1VSS-模块的电源地2VCC-模块的电源正端3V0-对比度调整4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715BL+VDD背光电源正16BL-VSS背光电源负3.2.2 接口时序12232F液晶模块有并行和串行两种连接方法。8位并行连接,MPU写资料到模块时序图如图3.3所示。图3.3 MPU写资料到模块时序图8位并行连接,MPU从模块读出资料时序图如图3.4所示。图3.4 MPU从模块读出资料时序图串行连接时序图如图3.5所示。图3.5 串行连接时序图串行数据传送共分三个字节完成:第一字节:串口控制格式 11111ABCA为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCDB为数据类型选择:H表示数据是显示数据,L表示数据是控制指令C固定为0第二字节:(并行)8位数据的高4位格式 DDDD0000第三字节:(并行)8位数据的低4位格式 0000DDDDLCD模块与MPU的通信接口设计可以采用直接或间接的访问方式。前者使用MPU的读写和地址信号综合生成时序控制信号;后者使用软件模拟LCD模块时序控制多根数字I/O端口输出的方法控制信号。12232F LCD模块直接通过I/O口与Atmega8515进行并行接口,Atmega8515工作频率在8MIPS时,用软件模拟其工作时序,系统设计的接口电路框图如图3.6所示。在3.6图中,12232F LCD模块的8位数据线直接与Atmega8515的8位I/O口连接,使能信号E和读写信号R/W由Atmega8515的I/O口直接控制。12232F LCD显示器分为两行,初始化时,第一行显示“采集数据:单次”,第二行显示“控制命令:等待”。当下位机进行单次数据采集时,第一行用于显示单次采集的数据;当下位机进行连续数据采集时,LCD显示器上显示采集的数据;第二行显示上位机发出的控制命令,当上位机没有发送控制命令时,显示“等待”,当上位机发送命令后,显示命令。图3.6 12232F与Atmega8515并行接口框图3.3 键盘接口电路键盘有独立式键盘和矩阵式键盘,系统中选用独立式键盘。系统中独立式键盘直接与Atmeg8515的PB0PB7口相连接,接口电路如图3.7所示。S0启动单次数据采集并将采集到的数据显示在LCD显示器上;S1启动单次数据采集并将采集到的数据显示在LCD显示器上,同时将采集到的数据通过串口发送给上位机;S2 启动连续数据采集并通过MAX232将数据传输给上位机,同时将数据在LCD显示器上显示;S3 启动连续数据采集并通过MAX232将数据传输给上位机,同时将数据在LCD显示器上显示并通过D/A转换器将采集到的数据还原成模拟信号;S4位停止数据采集,K5为上拉电阻排。图3.7 键盘接口电路3.4 A/D转换器接口电路 系统采用 德州仪器公司(TI)推出的TLC0832,它是广泛应用的8位A/D转换器。TLC0832是双通道输入,并且可以软件配置成单端或差分输入。串行输出可以方便的和标准的移位寄存器及微处理器接口相连10。 其特点如下:(1)8位转换结果(2)简单的微处理器接口(3)单通道或多通道可配置单端及差分输入(4)转换时间在Flock=250KHz时为32us(5)5V供电时输入范围:05V(6)输入输出完全兼容TTL和CMOS电路(7)全部非校准误差:±1LSB(8)单+5V供电(9)工作温度范围:070TLC0832的引脚图如图3.8所示。图3.8 TLC0832引脚图TLC0832的引脚功能如下:(1)为片选端;(2)CH0为通道0;(3)CH1为通道1;(4)GND为电源地;(5)DI 为串行数据输入端;(6)DO为A/D转换结果的三态串行输出端;(7)CLK为工作时钟;(8)VCC/REF为电源和参考电压。TLC0832与Atmega8515的接口电路如图3.9所示,其中PD4PD7为单片机的I/O口,通过单片机I/O口模拟TLC0832的控制时序;IN0、IN1为模拟量输入端。图3.9 TLC0832与Atmega8515的接口电路3.5 D/A转换器接口电路 TLC5620是美国德州仪器公司生产、单电源供电的串联型8位D/A转换器(DAC),其特点如下:它有四路各自独立的电压输出D/A转换器,具备各自独立的基准源;其输出还可编程为2倍或1倍;+5V单电源供电;高阻抗基准输入;内部上电复位;低功耗;内部缓冲输出;串行接口;在控制TLC5620时,只要对该芯片的DATA、CLK、LDAC、LOAD端口进行操作即可。TLC5620的引脚图如图3.10所示。图3.10 TLC5620的引脚图TLC5620的引脚功能如表3.2所示:表3.2 TLC5620引脚功能引脚名称引脚功能CLK7串行接口时钟,数据在负沿送入DACA12DAC A模拟输出DACB11DAC B模拟输出DACC10DAC C模拟输出DACD9DAC D模拟输出DATA6串行接口数字数据输入GND1电源地LDAC13DAC更新锁存控制LOAD8串行接口装载控制REFA2DAC A基准电压输入REFB3DAC B基准电压输入REFC4DAC C基准电压输入REFD5DAC D基准电压输入VDD14电源TLC5620命令字为11位,其中8位是数字量,另2位是DAC通道选择,1位是增益选择。其内部寄存器具有双缓冲器,在更新各通道的数据量后,其输出通过LDAC控制,可同时将其命令格式更新成第一位、第二位为A1、A0,第三位为RNG即可编程序放大输出倍率,第四位到第11位分别为8位数据,最高位在前,最低位在后。转换器的通道取决于A1、A0的值,如表3-3所示:表3.3 通道译码A1A0所更新的DAC00DACA01DACB10DACC11DACDTLC5620与Atmega8515的接口电路如图3.11所示,其中PA3PA5为单片机的I/O口,通过单片机I/O口模拟TLC5620的控制时序;其中PA3PA6为单片机的I/O口,DACA、DACB、DACC和DACD为D/A转换器TLC5620的模拟两输出端。图3.11 TLC5620与Atmega8515的接口电路3.6 串口通信接口电路Atmega8515具有一个全双工的8位片内异步串行口,可以完成主CPU与Atmega8515之间或两个Atmega8515器件之间的串行数据通信,该串行口的一帧发送/接收数据由10或11位组成,其中最低位为起始位,中间8位有效,后随1或2个停止位,发送或接收数据都采用双缓冲方式。本系统采用MAX232作为通信中的电平转换电路,其特性如下:(1) MAX232的工作温度范围为0至70。(2) 单5V电源供电。(3) LinBiCMOS工艺技术。(4) 两个驱动器及两个接收器。(5) ±30V输入电平。(6) 低电源电流:典型值是8mA。(7) 符合甚至优于AMSI标准E1A/T1A-232-E及1TU推荐标准V.28。(8) 可与Maxin公司的MAX232互换。(9) 保护大于MIL-STD-883(方法3015)标准的2000V。MAX232的引脚如图3.12所示:图3.12 MAX232引脚图MAX232与Atmega8515的接口电路如图3.13所示,其中TXD、RXD分别与Atmega8515的PD0和PD1引脚相接,TX和RX与PC机相连接。图3.13 MAX232和Atmega8515的接口电路图第四章 系统软件设计4.1下位机软件设计4.1.1 显示程序设计系统上电之后,首先初始化液晶,然后在液晶上按照一定的格式显示信息,程序根据按键的不同修改相应的显示缓存区,以此来修改显示信息。Atmega8515对12232F的写命令/数据程序流程图如图4.1所示。Atmega8515首先对系统进行初始化,设置I/O口的输入/输出状态,之后初始化液晶,对液晶的显示功能进行设置,通过写命令字控制写入数据地址14。图4.1 12232F的控制程序流程图图4.2 动态修改显示代码程序流程图根据时序图,12232F液晶的写指令子程序如下:void wcommand(int command) delay(30); cbi(PORTA,RS); sbi(PORTA,RW); cbi(PORTA,E); delay(30); cbi(PORTA,RW); PORTC=command; sbi(PORTA,E); delay(30); cbi(PORTA,E); 根据时序图,12232F液晶的写数据子程序如下:void wdata(int data) delay(30); sbi(PORTA,RS); cbi(PORTA,E); sbi(PORTA,RW); delay(30); cbi(PORTA,RW); outp(data, PORTC); sbi(PORTA,E); cbi(PORTA,RW); delay(30); cbi(PORTA,E); 系统要求,通过键盘控制可动态的修改液晶上显示的字符或汉字,这只需要改变显示缓存区的显示字符或汉字代码即可,动态修改显示代码程序流程图如图4.2所示。其程序如下所示:void show(int adr,int data) wcommand(adr); delay(30); wdata(0xa3); delay(30); wdata(data); delay(30); 4.1.2 键盘程序设计键盘实质上是一组按键开关的集合,它是最简单的输入设备,可以通过按键控制来实现简单的人机对话。键盘有矩阵式键盘和独立式键盘,系统中采用独立式键盘,键盘处理程序流程图如图4.3所示。/键盘扫描int scan(void) int scancode; scancode=PINB; scancode= scancode; if (scancode!=0) return 1; else return 0;图4.3 键盘程序流程图4.1.3 串行口波特率发生器设置通用同步和异步串行接收器和转发器 (USART)是一个高度灵活的串行通讯设备12。主要特点为:全双工操作(独立的串行接收和发送寄存器);异步或同步操作;高精度的波特率发生器;支持 5,6,7,8,或9个数据位和1个或 2个停止位;硬件支持的奇偶校验操作;数据过速检测;帧错误检测;三个独立的中断:发送结束中断 ,发送数据寄存器空中断,以及接收结束中断;多处理器通讯模式;倍速异步通讯模式。时钟产生逻辑为发送器和接收器产生基本时钟。 USART支持 4种模式的时钟:正常的异步模式,倍速的异步模式,主机同步模式,以及从机同步模式。 USART控制位 UMSEL和状态寄存器 C (UCSRC)用于选择异步模式和同步模式。倍速模式 (只适用于异步模式)受控于 UCSRA寄存器的U2X。使用同步模式 (UMSEL = 1)时,XCK的数据方向寄存器(DDR_XCK)决定时钟源是由内部产生(主机模式)还是由外部生产(从机模式)。仅在同步模式下XCK有效。倍速工作模式(U2X):通过设定 UCSRA寄存器的 U2X可以使传输速率加倍。该位只对异步工作模式有效。当工作在同步模式时,设置该位为 "0”。设置该位把波特率分频器的分频值从16降到 8,使异步通信的传输速率加倍。此时接收器只使用一半的采样数对数据进行采样及时钟恢复,因此在该模式下需要更精确的系统时钟与更精确的波特率设置。发送器则没有这个要求。外部时钟:同步从机操作模式由外部时钟驱动出通过一个边沿检测器,然后应用于发送器与接收器。这一过程引入了两个 CPU时钟周期的延时,因此外部 XCK的最大时钟频率由以下公式限制:同步时钟操作:使用同步模式时 (UMSEL = 1)XCK引脚被用于时钟输入 (从机模式 )或时钟输出 (主机模式 )。时钟的边沿、数据的采样与数据的变化之间的关系的基本规律是:在改变数据输出端 TxD的 XCK时钟的相反边沿对数据输入端 RxD进行采样。波特率发生器:内部时钟用于异步模式与同步主机模式USART的波特率寄存器 UBRR和降序计数器相连接,一起构成可编程的预分频器或波特率发生器。降序计数器对系统时钟计数,当其计数到零或 UBRRL寄存器被写时,会自动装入 UBRR寄存器的值。当计数到零时产生一个时钟,该时钟作为波特率发生器的输出时钟,输出时钟的频率为。发生器对波特率发生器的输出时钟进行 2、8或16的分频,具体情况取决于工作模式。波特率发生器的输出被直接用于接收器与数据恢复单元。数据恢复单元使用了一个有2、8或16个状态的状态机,具体状态数由UMSEL、U2X与 DDR_XCK位设定的工作模式决定。系统选用异步正常模式(U2X = 0),波特率为9600bps,1位起始位,1位停止位,8位数据位,无奇偶校验位,接收完数据产生中断,发送完数据产生中断,波特率计算公式如下:即:串口初始化程序如下:void uart_init(void)/WIZARD_MAP(UART)/Interial RC clock:4MHZ/ Baud Rate: 9600/ Character Size: 8-bit/ Mode: Asynchronous/ Parity: Disabled/ Stop Bit: 1-bitUBRRL = 0x19;UBRRH = 0x00;UCSRA = 0x00;UCSRC = 0x86;UCSRB = 0xd8;/WIZARD_MAP(UART)4.1.4 A/D转换器程序设计系统中选用的A/D转换器为TLC0832,系统中采用单片机的I/O口模拟TLC0832的时序,程序如下:int adconvert(void)/CS-7,CLK-4,DO-5,DI-6 int i,bittest,addata; addata=0; sbi(PORTD, CS); delay(2); cbi(PORTD, CS); cbi(PORTD,CLK); sbi(PORTD,DI); /DI=1,起始位,在CLK上升沿移入 delay(2); sbi(PORTD,CLK); delay(2); cbi(PORTD,CLK); sbi(PORTD,DI); /DI=10,选择0通道,此时DI=1 delay(2); sbi(PORTD,CLK); delay(2); cbi(PORTD,CLK); delay(2); cbi(PORTD,DI); /此时DI=0 delay(2); sbi(PORTD,CLK); delay(2); cbi(PORTD,CLK); /CLK的第三个时钟上升沿结束 delay(2); sbi(PORTD,CLK); delay(10); for(i=0;i<8;i+) sbi(PORTD,CLK); delay(2); cbi(PORTD,CLK); delay(10); bittest=PIND&0X20; if(bittest=0X20) addata=(addata<<1)|0x1; else addata=(addata<<1)|0x0; delay(2); return addata;4.1.5 D/A转换器程序设计系统中选用的D/A转换器为TLC5620,系统中采用单片机的I/O口模拟TLC5620的时序,程序如下:void tlc5620(int data)int i,temporary; sbi(PORTA,SPILOAC); /LOAD,LOAC初始化为高 sbi(PORTA,SPILOAD); for(i=0;i<3;i+) cbi(PORTA,SPIDATA); /选择通道0 sbi(PORTA,SPICLK); cbi(PORTA,SPICLK); for(i=0;i<8;i+) /DA转换 temporary=(data<<i)&0x80; if(temporary=0x80) sbi(PORTA,SPIDATA); else cbi(PORTA,SPIDATA); sbi(PORTA,SPICLK); cbi(PORTA,SPICLK); cbi(PORTA,SPILOAD); cbi(PORTA,SPILOAC); 4.1.6 下位机总体程序设计系统初始化之后,在主程序之中,反复的调用键盘程序,同时等待串口发送中断或接收中断,串口数据发送和接收采用中断方式设计。根据按键的不同执行相应得功能,同时检测是否有接收中断产生,如果有接收中断,根据接收命令执行相应的功能,系统总程序流程图如图4.4所示。图4.4 主程序流程图4.2 上位机软件设计VB全称Visual Basic,是微软公司推出的基于Basic语言的可视化编程环境,以其简单易学