基于某51单片机地数字电压表格设计

上传人:桔**** 文档编号:474308040 上传时间:2023-09-08 格式:DOC 页数:17 大小:521.50KB
返回 下载 相关 举报
基于某51单片机地数字电压表格设计_第1页
第1页 / 共17页
基于某51单片机地数字电压表格设计_第2页
第2页 / 共17页
基于某51单片机地数字电压表格设计_第3页
第3页 / 共17页
基于某51单片机地数字电压表格设计_第4页
第4页 / 共17页
基于某51单片机地数字电压表格设计_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《基于某51单片机地数字电压表格设计》由会员分享,可在线阅读,更多相关《基于某51单片机地数字电压表格设计(17页珍藏版)》请在金锄头文库上搜索。

1、文档数字电压表简称DVM,数字电压表根本原理是将输入的模拟电压信号转化为数字信号,再进展输出显示。而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器根本结构是由采样保持,量化,编码等几局部组成。因此AD转换是此次设计的核心元件。输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。本次自己的设计作品从各个角度分析了AD转换器组成的数字电压表的设计过程与各局部电路的组成与原理,并且分析了数模转换进而使系统运行起来的原理与方法。通过自己的实践提高了动手能力,也只有亲历亲为才能收获掌握到液晶学过的知识。其实也为建立节约本钱的意识有些帮助。本次设计同时也牵涉

2、到了几个问题:精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。1.3 本次设计要求本次设计的作品要求制作数字电压表的量程为0到10v,由于用到的模数转换芯片是ADC0809,设计系统给的供电电压为+5v,所以能够测量的电压围为-0.25v到5.25v之间,但是一般测量的直流电压围都在这之上,所以采用电阻分压网络,设计的电压测量围是0到25v之间,满足设计要求的最大量程5v的要求。同时设计的精度为小数点后三位,满足要求的两位小数的精度,在不考虑AD芯片的量化误差的前提下,此次设计的精度能够满足一般测量的要求。2单片机和AD相关知识2.1 51单片机相关知识

3、51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。该系列单片机的始祖是intel的8031单片机,后来随着技术的开展,成为目前广泛应用的为单片机之一。单片机是在一块芯片集成了CPU、RAM、ROM、定时器计数器和多功能I/O口等计算机所需要的根本功能部件的大规模集成电路,又称为MCU。51系列单片机包含以下几个部件:一个位CPU;一个片振荡器与时钟电路;4KB的ROM程序存储器;一个128B的RAM数据存储器;寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O口线;两个16位定时计数器;一个可编程全双工串行口;个中断源、两个优先级嵌套中断结

4、构。51系列单片机如如下图:图1 51单片机引脚图2.2 AD转换器相关知识ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式转换器。其部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进展A/D转换。1主要特性:18路输入通道,8位A/D转换器,即分辨率为8位。 2具有转换起停控制端。 3转换时间为100s(时钟为640kHz时),130s时钟为500kHz时 4单个+5V电源供电 5模拟输入电压围0+5V,不需零点和满刻度校准。 6工作温度围为-40+85摄氏度 7低功耗,约15mW。 2部结构ADC0809是CMOS单片型逐次

5、逼近式A/D转换器,部结构如图1322所示,它由8路模拟开关、地址锁存与译码器、比拟器、8位开关树型A/D转换器、逐次逼近存放器、逻辑控制和定时电路组成。 图2 ADC0909引脚3 数字电压表系统设计此次设计的是数字电压表,要求的电压围是05v,而设计扩展的量程为025v。系统设计主要包括四个局部:分别是电源模块、AD模数转换局部、51单片机最小系统局部、1602液晶显示局部。首先由单片机初始化ADC0809模数转换芯片和1602液晶显示,当外接被测电压后,ADC0809将模拟电压信号转换为数字信号输入到单片机的I/O口,通过单片机处理后将电压的大小显示在1602液晶上面。如下是本次设计作品

6、的框图:图3 系统框图 3.2 单片机电路单片机最小系统如如下图所示,各个引脚都已经标出,而且四个I/O口都已经用排阵引出,方便外接I/O扩展用。图4 单片机最小系统3.3 ADC采样电路由于ADC0809是带地址锁存的模数转换器件,ADDA、ADDB、ADDC为模拟通道选择,编码为000111分别选中IN0IN7。ALE为地址锁存信号,其上升沿锁存ADDA、ADDB、ADDC的信号,译码后控制模拟开关,接通八路模拟输入中相应的一路。CLK为输入时钟,为AD转换器提供转换的时钟信号,典型工作频率为640KHz。START为AD转换启动信号,正脉冲启动ADDAADDC选中的一路模拟信号开始转换。

7、OE为输出允许信号,高电平时候打开三态输出缓存器,是转换后的数字量从D0D7输出。EOC为转换完毕信号,启动转换后EOC变为低电平,转换完成后EOC编程高电平。图5 ADC模数转换以下是1602液晶引脚的接线图,中间没有接线的为数据控制端口。 1602字符型通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线 VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样: 图6 1602引脚图由于此次系统的芯片工作电压为+5v,所以用常用的三端稳压器LM317和LM337构成的电源系统供电,其中ADC0809要提供一个准确的参考电源才能正常的工作,而LM317正好

8、能够达到要求。图7 系统供电局部3.6 数字电压表系统电路原理图如下是此次数字电压表系统的总原理图,其中的连线用网络标号表示出来,省去了连线的麻烦,而且是总图的可读性增强。图8 数字电压表总原理图4 软件设计4.1 系统总流程图此次设计的数字电压表系统比拟简单,就设置了一个量程为025v,所以没有用到按键控制,也没有其他的功能,因此程序比拟简单,在输入模拟信号时采用电阻分压,最终的采样输入电压只有实际输入电压的十分之一,所以在编写程序中要编写一段数据调整程序,如下为系统总流程图:开始完毕初始化AD采样量化液晶显示图9 系统流程图4.2 程序代码/*电压表*/#include#include/库

9、函数头文件,代码中引用了_nop_()函数/*ADC初始定义*/sbit start=P30; /转换开始控制sbit oe=P32; /输出允许控制sbit eoc=P31; /转换完毕信号sbit clock=P33; /转换时钟sbit P0_2=P02; /蜂鸣器sbit P0_5=P05;sbit P0_6=P06;sbit P0_7=P07; /*1602液晶初始定义*/sbit RS=P00; /读控制sbit RW=P03; /写控制sbit E=P01; /使能端unsigned char da0,da1,da2,da3,da4;unsigned int temp;unsig

10、ned int d1,d2,d3; unsigned char dat; /数字电压量unsigned char lcdd=0123456789;void lcd_w_cmd(unsigned char ); /写命令函数void lcd_w_dat(unsigned char dat); /写数据函数void display(unsigned char dat); /显示函数unsigned char lcd_r_start(); /读状态函数void int1(); /LCD初始化函数void delay(unsigned char t); /可控延时函数void delay1(); /软

11、件实现延时函数,5个机器周期/*显示函数局部*/void display(unsigned char dat)temp=5*dat; /量程扩大五倍da0=temp/51/10; /十位da1=temp/51%10; /个位d1=temp%51;d1=d1*10;da2=d1/51; /十分位d2=d1%51;d2=d2*10;da3=d2/51; /百分位d3=d2%51;d3=d3*10;da4=d3/51; /千分位lcd_w_cmd(0x0c); /设置光标不显示、不闪烁delay(20);lcd_w_cmd(0xc0); /第二行起始显示地址0x80delay(20);delay(2

12、); lcd_w_dat(V); /显示字符串volatage islcd_w_dat(o);lcd_w_dat(l); lcd_w_dat(a);lcd_w_dat(t);lcd_w_dat(a);lcd_w_dat(g);lcd_w_dat(e);lcd_w_dat( );/显示电压的大小 lcd_w_dat(lcddda0); /十位lcd_w_dat(lcddda1); /个位lcd_w_dat(.); /小数点 lcd_w_dat(lcddda2); /十分位lcd_w_dat(lcddda3); /百分位lcd_w_dat(lcddda4);/千分位lcd_w_dat(V); /单

13、位 /*主函数*/void main()P0_2=1; /关蜂鸣器P0_5=P0_6=P0_7=0; /选择000第一通道int1(); /LCD初始化 while(1) start=0; start=1; /获得上升沿复位 start=0; /获得下降沿启动转换,同时ALE开锁存 do clock=clock; /时钟信号 while(eoc=0); /等待转换完毕,eoc=1完毕 oe=1; /三态锁存缓冲器打开 dat=P1;/数字电压信号输出 oe=0; /三态锁存缓冲器关闭 display(dat); /*延时函数*/void delay(unsigned char t) unsig

14、ned char j,i; for(i=0;it;i+) for(j=0;j20;j+); /*延时函数1*/void delay1() _nop_(); _nop_(); _nop_();/*LCD初始化函数*/void int1() lcd_w_cmd(0x3c); / 设置工作方式 lcd_w_cmd(0x0c); / 设置光标 lcd_w_cmd(0x01); / 清屏 lcd_w_cmd(0x06); / 设置输入方式 lcd_w_cmd(0x80); / 设置初始显示位置/*LCD读状态函数*/返回值:返回状态字,最高位D7=0,LCD控制器空闲;D7=1,LCD控制器忙unsigned char lc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号