您好,欢迎访问三七文档
1前言嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性能有严格要求的专用计算机系统。关键在于“硬件可裁减”、“体积小”“专用”嵌入式系统代码一般固化在一个ROM中,具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等。嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(SetTopBox)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。嵌入式将会是我们数字化生存的基础,一台PC里其实就已经嵌入了10几个单片机,一辆高档轿车大约要用到六七十个单片机;嵌入式处理器无所不在,无处不在,全世界的年产量超过100亿片,嵌入式系统早期的核心器件主要是单片机,近几年来随着DSP等器件的发展,单片机的市场份额有所下降,但是在不少系统设计中单片机仍然发挥着重要作用。因此本次的作业设计就是利用单片机实现一个小型的数据采集的嵌入式系统,其要求为:所设计的数据采集系统,共有16路信号输入,每路信号都是0~10mV,每秒钟采集一遍,将其数据传给上位PC计算机。本采集器地址为50H,要求多路模拟开关用4067,A/D转换用ADC0809,运算放大器用OP07,单片机用89C51,通信用PC机的串口COM1,芯片用MAX232设计其电原理图,用C51语言编制工作程序。本次设计中,采用了两种方案实现系统的设计要求,同时设计了电路原理图和相应的程序并通过软件的编译要求,可以从原理上比较好的实现课程作业要求。下面将具体介绍。2方案一本方案设计中ADC0809是通过并行I/O接口与89C51单片机连接,需占用四个并行接口(一个口接A/D转换器的数据线,一个接A/D控制器的控制线,一个接串口通信线,一个接多路复用器的信号线),可以看出此方案占用的I/O比较多,但是控制思路清晰,应用的元器件比较少。2.1硬件设计此方案的硬件设计比较简单,下面将从整体原理图以及各个子模块原理图进行详细的讲解。2.1.1硬件工作流程一路数据采集的工作过称如下所示:多路选择输入模拟信号模拟信号放大AD转换将转换数据发送给上位机2.1.2总体原理图系统设计的总体原理图如图,其包括放大模块、多路选择模块、AD转换模块、单片机模块、电源模块以及串口通信模块。图1总体原理图2.1.3单片机模块本模块选用的单片机型号为89C51,包括时钟产生电路、复位电路以及单片机。其中P0口作为ADC0809转换后的数据输入口,P2口的相应位作为ADC0809的转换控制信号输出口,P1口的前四位作为多路选择器的地址输入口,P3口的前两位作为串口通信口,其图如下:图2单片机模块2.1.4AD转换模块本模块分别与多路选择器模块和单片机模块进行连接通信,ADC0809的A、B、C三个引脚分别与地连接,因此其输入通道始终为IN0,将IN0与4067的输出引脚进行连接。当ST信号为高电平时,AD转换开始,经过一段时间转换结束时,EOC信号变为高电平,通过检测EOC信号,使能OE信号,将转换结果输出,其图如下:图3AD转换模块2.1.5多路选择器模块因为系统的输入模拟信号为16路,所以必须经过相应的多路选择器进行选择放大后才能进行转换,根据系统要求,选择的选择器为4067。本模块与放大模块和AD模块以及单片机模块进行连接通信,经过放大后的16路模拟信号分别输入4067的16个输入端口,然后根据单片机给出的A、B、C、D信号选择相应的放大后的输入模拟信号进行输出,其供电电压为15V,其原理图如下:图4放大模块2.1.6放大模块16路输入的模拟信号为0~10mv的电压信号,而ADC0809仅能识别V级的电压信号,所以必须经过放大以后才能进行转换。本设计选用的放大器是OP07,OP07OP07是一种精密运算放大器,它使用双极性电源供电,精度较高,放大倍数为500,可把0~10mV信号放大到0~5V。本模块与多路选择器模块连接通信,其典型连接图如下:2.1.7通信模块本模块实现单片机的上位机的串口通信,当AD转换结束后,单片机将接收到的转换完成的8位数字信号发送给上位机,通过上位机的串口调试助手接收显示的结果,其原理图如下:图5通信模块2.2软件设计本方案中采用的是查询方式,在启动AD转换后,单片机不断查询EOC引脚的电平,若为0,说明为转换完毕,若为1,则转换完毕并读取转换结果。这种方法较好的协调了CPU与A/D转换器在速度上的差别,通常用于检测回路较少、而CPU工作不十分繁忙的情况下。2.2.1程序流程图单片机首先进行初始化过程,接着选择通过输出地址A、B、C、D选择多路复用器的输出,然后通过使能START和ALE信号启动AD转换,通过查询方式(EOC状态)判断AD转换结束,若转换完毕,使能OE引脚,AD转换器输出转换数据,单片机读入数据并发送给上位机,然后通过改变A、B、C、D的数值选择不同的输入通道,此过程重复进行,直到16路数据全部采集完毕。图6总体流程图2.2.2程序系统设计的程序分为主函数、初始化函数、AD转换函数、时钟产生函数、串口通信函数。下面是主要的AD程序,完整程序见附录。/*************************************AD转换函数********************************/voidAD(){if(NUM16)//选择通道地址{if(NUM=0)P0=0X00;elseif(NUM=1)P0=0X01;elseif(NUM=2)P0=0X02;elseif(NUM=3)P0=0X03;elseif(NUM=4)P0=0X04;elseif(NUM=5)P0=0X05;elseif(NUM=6)P0=0X06;elseif(NUM=7)P0=0X07;elseif(NUM=8)P0=0X08;elseif(NUM=9)P0=0X09;elseif(NUM=10)P0=0X0A;elseif(NUM=11)P0=0X0B;elseif(NUM=12)P0=0X0C;elseif(NUM=13)P0=0X0D;elseif(NUM=14)P0=0X0E;elseif(NUM=15)P0=0X0F;P27=0;WR2=1;ALE=1;delay(10);WR2=0;ALE=0;//启动AD转换,锁存地址delay(10);WR2=1;}}2.2.3程序编译此程序在KeiluVision4中编写并编译,首先建立新的uVision4Project,然后建立并添加相应的源文件,编写成功后进行编译,下面是在操作中的一些截图:图7新建项目图8方案1编译3方案二本方案的接口方法是利用ADC0809转换器的三态输出锁存功能,可以直接与89C51的总线相连接,并且利用74LS373的锁存功能,实现P0口的地址数据线分时复用。此方案只需三组I/O(一个接74LS373的输入线,一个接ADC转换器的控制线,一个接多路复用器的控制线),可以看出,此方案所占用的I/O接口比较少,但应用的元器件比较多。在系统中把ADC0809转换器当作外部RAM单元对待。3.1硬件3.1.1元器件此部分的元器件与方案一的几乎相同,只是增加了74LS373锁存器,以及一些或门、非门。下面介绍一下74LS373锁存器。因为在方案2中,采用的是P0口分时复用功能,需要在地址输出后进行锁存,因此选用74LS373。74LS373是一种带有输出三态门的8D锁存器,其工作原理是:当控制端E—为低电平时,三态门是导通的,三态门的输出1Q~8Q与8D锁存器的1Q’~8Q’是对应的。当控制端E—为高电平时,三态门输出1Q~8Q处于高阻状态。当控制端G为高电平时,8D锁存器的输出端1Q’~8Q’与输入1D~8D的状态是相同的;当G由高电平变为低电平时(下降沿)将跳变前输入端1D~8D的状态锁入1Q’~8Q’中。其引脚图如图:图9锁存器引脚图3.2硬件原理图此方案的一路数据采集过程和方案一相同,过程如下所示:多路选择输入模拟信号模拟信号放大AD转换将转换数据发送给上位机图10采集过程本方案的硬件原理图和方案一的几乎相同,仅仅多了锁存器模块,然后就是单片机的I/O与方案一的连接方式不同,下面详细介绍一下这两个模块。3.2.1单片机模块此模块应用了三组并行I/O口,并且利用中断方式进行控制,增加了非门、或门等。把ADC0809转换器当作外部RAM对待,P0口分时复用。并且为了实现此功能,应用74LS373锁存器,原理图如下:图11单片机和AD模块3.3软件本方案采用的是P0口的数据/地址总线分时复用功能,采用的是中断方式,当AD转换结束时,发出一转换结束信号EOC,该信号经反向器接89C51的P3.2(INT0————)引脚,向CPU发出中断请求。这种工作方式使用与CPU工作很忙的测控系统中。3.3.1程序流程图首先单片机进行初始化,然后89C51产生WR—写信号,由一个或非门产生转换器的启动START和地址锁存信号ALE(高电平有效),输出的多路选择器的输出信号由74LS373输出锁存,模拟量通过通道IN0送到A/D转换器,并在START下降沿时开始进行转换,当转换结束时,转换结束信号EOC变高电平。经反相器可向CPU发中断请求,当89C51产生RD——读信号时,则由一个或非门产生OE输出允许信号(高电平有效),使转换结果读入单片机,然后再次输出多路选择器的地址,重复上述过程,直到16路采集完毕。图12主流程3.3.2程序本方案的程序设计主要包括主程序、AD转换程序、串行中断程序、定时器中断程序等,具体的程序见附录。下面是主要的AD转换程序:voidAD(){if(NUM16){if(NUM=0)P1=0X00;elseif(NUM=1)P1=0X01;elseif(NUM=2)P1=0X02;elseif(NUM=3)P1=0X03;elseif(NUM=4)P1=0X04;elseif(NUM=5)P1=0X05;elseif(NUM=6)P1=0X06;elseif(NUM=7)P1=0X07;elseif(NUM=8)P1=0X08;elseif(NUM=9)P1=0X09;elseif(NUM=10)P1=0X0A;elseif(NUM=11)P1=0X0B;elseif(NUM=12)P1=0X0C;elseif(NUM=13)P1=0X0D;elseif(NUM=14)P1=0X0E;elseif(NUM=15)P1=0X0F;ST=0;delay(10);ST=1;//启动AD转换delay(10);ST=0;while(EOC==0);//等待转换完成OE=1;//输出数据AD_DATA[NUM]=P0;OE=0;SBUF=0x50;//启动串口中断发送数据}}3.3.3程序编译操作过程和方案一的完全相同,下图是其编译结果:图13程序2编译结果3.4方案对比设计的两种方案,各有各的特点,下表是两种方案的简单对比。表1方案对比硬件软件方案一元器件数量较少,但占用单片机的I/O数量偏多采用查询方式,程序思路清晰,但是系统CPU整个工作过程都在占用,效率较低方案二元器件数量较多,但占用单片机的I/O较少采用中断方式,在转换过程中系统CPU不被占用,系统效率较高且利用P0口的数据总线功能4总结与体会上述两种方案基于89C51和ADC0809,分别采用查询和中断方式,从原理上都可以比较好的实现系统的功能要求,达到了比较好的效果,并且各有各的优缺点,并且都在软件中编译通过。但是由于没有
本文标题:报告1
链接地址:https://www.777doc.com/doc-5394961 .html