单片机应用技术(C 语言版)任务14 制作数字电压表_第1页
单片机应用技术(C 语言版)任务14 制作数字电压表_第2页
单片机应用技术(C 语言版)任务14 制作数字电压表_第3页
单片机应用技术(C 语言版)任务14 制作数字电压表_第4页
单片机应用技术(C 语言版)任务14 制作数字电压表_第5页
已阅读5页,还剩24页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主编:李文华“十四五”职业教育国家规划教材经全国职业教育教材审定委员会审定制作数字电压表任务14

单片机的fosc=11.0592MHz,用三总线方式扩展并行A/D转换芯片ADC0804,在ADC0804的模拟量输入端(VIN+、VIN-端)加入0~5V的直流电压。单片机采用方式1以4800bps的波特率与计算机进行串行通信,将当前的模拟量输入电压发送到计算机中进行显示。任务要求相关知识1、单片机的三总线数据总线、地址总线和控制总线。单片机片外扩展数据存储器、并行I/O接口芯片或者程序存储器(简称外部扩展芯片)时,需要使用三总线数据总线:由P0口的8根线构成,P0.0~P0.7分别对应数据总线中的D0~D7。单片机的数据总线为双向三态总线。单片机的外部并行扩展芯片时,P0.0~P0.7引脚直接与扩展芯片的数据引脚D0~D7相接。此时,单片机的P0口不能作普通的并行I/O口使用。控制总线:由

3根线构成。为程序存储器读控制线。单片机片外扩展程序存储器时,线与程序存储器的输出允许脚(一般为脚或脚)相接。为片外扩展数据存储器和并行I/O接口芯片的读控制线为片外扩展数据存储器和并行I/O接口芯片的写控制线。单片机片外扩展数据存储器或并行I/O接口芯片时,这2根控制线分别与接口芯片的读写控制引脚相接。此时,单片机的P3.7、P3.6引脚不能作I/O口使用。地址总线:共16根,分别为A0~A15。其中高8位地址线A8~A15由P2口直接引出,此时,P2口不能作普通的并行I/O口使用。低8位地址线A0~A7由P0口经74LS373锁存而形成,由74LS373的Q0~Q7引脚输出。相关知识74LS373是地址锁存器,用来从P0口的输入/输出信号中分离出低8位地址A0~A7。74LS373的内部由8个独立的D锁存器组成,引脚是8D锁存器的控制端,LD是8D锁存器的时钟输入端,D0~D7是8D锁存器的输入端,Q0~Q7是8D锁存器的输出端。74LS373的控制逻辑如下表所示:

1、单片机的三总线LDQ说明00Qn-1输出不变,为锁存时刻的输入信号01D输出随输入变化而变化0锁存锁存输入信号1×高阻输出为高阻态

由表可以看出,=0时,若LD端出现下降沿,74LS373会将输入端的信号锁存,而且在LD=0期间输出一直保持不变相关知识

单片机访问外部扩展芯片时,P2口输出高8位地址A8~A15。P0口分时地输出低8位地址A0~A7和输入/输出所读写的数据。ALE引脚输出地址锁存控制信号,并且在P0口输出低8位地址期间,ALE引脚上会出现由高到低的下降沿,P0口输入/输出数据时,ALE引脚的信号为下降沿之后的低电平。

将单片机的ALE引脚与74LS373的LD相接,单片机的P0.0~P0.7引脚与74LS373的D0~D7相接,74LS373的

引脚接地,单片机访问外部扩展芯片时,74LS373会将低8位地址锁存并从Q0~Q7引脚输出,保证了P0口输入/输出数据时16位的地址A0~A15均存在。相关知识74LS373与单片机的实用连接电路74LS373的D0~D7交叉后再与单片机的P0.0~P0.7相接74LS373的LD脚与单片机的ALE相接74LS373的脚接地相关知识2、C51中外部端口的访问方法①根据硬件电路找出端口的地址。②在程序的开头处将存储器访问宏的宏定义头文件absacc.h包含到程序文件中。其语句如下:#include <absacc.h>③在程序的开头处用下列宏定义语句定义外部端口:#define端口名

XBYTE[端口地址]其中,XBYTE是absacc.h头文件中定义的一个宏名字,定义中的方括号“[]”是一种书写形式,并不是可选项的表示。相关知识2、C51中外部端口的访问方法例如,若ADC0804芯片的地址为0x7fff,则ADC0804端口的定义如

下:#define padc0804 XBYTE[0x7fff]④在程序中,把“端口名”视作无符号字符型变量的变量名,需要对外部端口写数时,直接对“端口名”赋值;需要从外部端口中读取数据时,直接用“端口名”参与运算。

举例:padc0804=0xff; //写端口:向ADC0804写入数据0xffx=padc0804; //读端口:从ADC0804中读取AD转换值并保存至变量x中相关知识3、A/D转换器的基本知识A/D转换器(简称ADC)的功能是将连续的模拟信号转换成数字信号。按照器件与微处理器的接口形式,ADC可分为串行ADC和并行ADC,按照转换原理可分为双积分式和逐次逼近式。选择ADC芯片时,常涉及到的技术指标有分辨率、转换时间等。

分辨率:表示输出数字量增减1所需要的输入模拟量的变化值,它反映了ADC能够分辨最小的量化信号的能力。设ADC的位数为n,转换的满量程电压为U,则其分辨率为U/(2n-1)。

例如,满量程电压为5V,如果是用10位ADC转换器,则它的分辨率为5000mV/(210-1)≈5mV,如果是用12位ADC转换器,则它的分辨率为5000mV/(212-1)≈1mV。可见ADC的位数越多,其分辨率就越高。

转换时间:指从启动ADC进行AD转换开始到转换结束并得到稳定的数字量输出为止所需要的时间。转换时间的快慢将会影响ADC与CPU交换数据的方式。相关知识⑴引脚功能引脚分布如图相关知识4、并行ADC0804的应用特性相关知识4、并行ADC0804的应用特性CLKIN、CLKR引脚(4脚、19脚):时钟信号输入、输出引脚。ADC0804内部集成有振荡电路,CLKIN为内部振荡电路的输入端,CLKR为内部振荡电路的输出端,在CLKIN和CLKR引脚间接上如图下图所示的RC电路后,内部振荡电路就会产生AD转换所需要的时钟信号。图中时钟信号的频率fCLK=1/1.7RC。不用内部振荡器时,需从CLKIN引脚输入1KHz~30KHz的时钟信号,ADC0804才能进行AD转换。相关知识4、并行ADC0804的应用特性VIN+、VIN-:模拟信号输入引脚。AGND:模拟地。VREF:二分之一参考电压输入引脚。该点的电压决定着AD转换的输出值adval,其关系如下:DGND:数字地。D0~D7:数字量输出引脚。VCC:电源引脚,接+5V电源。相关知识端口地址分析第1步:从芯片与单片机地址总线的连接电路中找出与芯片的片选脚相接的地址线以及与芯片的端口地址脚相接的地址线。第2步:将未参与芯片选择控制也没参与端口选择控制的地址线所对应的地址位用任意值表示。⑵ADC0804与单片机的接口电路相关知识⑵ADC0804与单片机的接口电路第3步:根据芯片的操作功能,找出芯片及其端口被选中时地址线上的地址码。第4步:将2、3步中的地址码按照从A15到A0的顺序排列,并用1或者0表示可为任意值的地址位,写出16位的地址码,此地址码就是端口的地址。单片机访问ADC0804的地址定义#include <absacc.h>#define padc0804 XBYTE[0x7fff]相关知识⑶ADC0804的访问方法①启动A/D转换方法:向ADC0804的端口写入任意数。

设ADC0804的端口名为padc0804,启动ADC0804进行A/D转换的程序如下:padc0804=0xff; //启动ADC0804进行A/D转换

程序中,赋值符号右边的数可为任意数。相关知识⑶ADC0804的访问方法②读取A/D转换结果方法:直接从ADC0804的端口地址中读数。举例:读取A/D转换结果并保存在变量adval中adval=padc0804;

注意事项必须在ADC0804结束了A/D转换之后,即引脚变为低电平时,才能读转换结果。相关知识⑶ADC0804的访问方法③采用查询方式访问ADC0804方法:ADC0804的与单片机的某根I/O口线相接,在程序中不断地查询该I/O口线的状态,仅当该I/O口线为低电平时才读取A/D转换的结果。查询方式程序如下:#include <reg51.h>#include <absacc.h>#define padc0804 XBYTE[0x7fff] sbit INTR=P3^2; //定义INTR引脚unsigned char adval;void main(void){/*此处放系统软硬件初始化代码*/while(1){padc0804=0xff;INTR=1;while(INTR==1);adval=padc0804;/*此处放其他事务处理代码*/ }}相关知识5、数字滤波作用:用软件程序滤除干扰信号,使A/D转换结果回归真实值。

常用算法有程序判断滤波、中值滤波、算术平均值滤波、去极值滤波、加权平均滤波、滑动平均值滤波、低通滤波等滑动平均值滤波的设计思想:将本次A/D转换值与过去连续的n-1次A/D转换值一起求平均值,用该平均值作为本次的A/D转换的使用值相关知识5、数字滤波其实现方法:在idata区定义一个数组adarr和一个指针变量fp,adarr、fp均为全局变量。数组adarr依次存放n个A/D转换值,fp指向数组adarr中最后一个赋值的元素,每获得一个新的A/D转换值时就将该值存放到fp所指向的元素中,即更新数组中最老的A/D转换值,并调整指针变量fp的值,使其指向数组中下一个元素,若当前指针指向的是数组中最后一个元素,则将其指向数组的首元素。这样数组中始终是最近n个新的A/D转换值,然后对这n个元素求平均值。相关知识5、数字滤波滑动平均值滤波程序uchar filt(ucharadval){uint sum=0; uchar idata *idata tp;*fp=adval;fp++;if(fp>=adarr+N)fp=adarr;for(tp=adarr;tp<adarr+N;tp++){sum+=*tp; }sum=sum/N ;return sum;}相关知识6、标度转换作用:将ADC的输出值转换成被测物理量的实际值,以便于后续程序的处理。标度转换程序的编写方法:根据传感器的输出特性,找出被测物理量与A/D转换值之间的关系式,然后按照此关系式编写转换程序举例:写出下图中被测物理量Vx与A/D转换值adval之间的关系

答案

相关知识6、标度转换若R1=R2=5.1KΩ,VREF=2500mV,则Vx=10000×adval/255(mV)标度转换程序如下:uchar adval;uint vx;......vx=adval*10000L/255;任务实施1、搭建硬件电路2、编写软件程序任务实施#include <reg51.h>#include <absacc.h>#define N 16#define uchar unsigned char#define uint unsigned int#define padc0804 XBYTE[0x7fff]sbit INTR=P3^2;uchar idata adarr[N];uchar idata *idata fp;uchar filt(char); //数字滤波函数void display(uint); //显示电压值void delay(void); //延时0.5svoid main(void){uchar adval;uint vx;SCON=0x40;TMOD=0x20;TH1=TL1=0xfa; TR1=1; fp=adarr;while(1) {padc0804=0xff; //22启动A/D转换INTR=1; //23端口写1,准备读端口while(INTR==1);//24等待INTR引脚变成低电平adval=padc0804; //保存A/D转换值adval=filt(adval); //26数字滤波vx=adval*5000L/255;//27标度转换display(vx); //28显示电压值delay(); //29延时0.5s}}2、编写软件程序任务实施void display(uint vx){unsigned char a[5],i;a[3]=vx%10; //34求个位值vx=vx/10; //35缩小10倍a[2]=vx%10; //36求十位值vx=vx/10; //37缩小10倍a[1]=vx%10; //38求百位值vx=vx/10; //39缩小10倍a[0]=vx%10; //40求千位值a[4]=0x5a; //41分隔符for(i=0;i<5;i++) //42用串口发送5个数据{SBUF=a[i]; //43发送一个数while(TI==0); //44等待发送结束TI=0; //TI清0,为下次发送作准备}}uchar filt(ucharadval) //48滑动平均值滤波函数{ /*详见前面的filt函数体*/ }//49void delay(void) //50延时0.5s函数{unsigned long i; //51for(i=0;i<30000;i++);}2、编写软件程序应用总结与拓展

单片机的三总线由数据总线、地址总线和控制总线组成。从P0口直接引出的8根线是数据总线,P0口经地址锁存器74LS373锁存输出的8根线是地址总线的低8位地址线,由P2口直接引出的8根线是地址总线的高8位地址线。单片

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论