ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:360.17KB ,
资源ID:22305336      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22305336.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的数字多用表设计说明Word文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的数字多用表设计说明Word文档格式.docx

1、(3)转换开关转换开关的作用是用来选择各种不同的测量线路,以满足不同种类和不同量程的测量要求。转换开关一般有多个,分别标有不同的档位和量程。第二章 数字多用表硬件电路的总体设计2.1数字多用表的硬件系统设计框架图如下图2.1所示,本多用表由以下几部分功能组成,复位电路、震荡电路、ADC输入、被测量显示、超限报警、ADC使能控制。复位电路用来清零,进行下一次的测量;震荡电路用来消除一些外来干扰,使电路工作更加稳定;ADC输入则是将输入量进行AD转换;测量显示就是显示测量的数值;超限报警部分则是用作当测量量超出量程围时发出警报,以便提醒用户更改大量程;ADC使能控制则用来对输入量进行控制,允许输入

2、或者不允许。 图2.1 总体电路设计原理图2.2硬件电路设计方案与选用芯片介绍2.2.1 设计方案用单片机STC89C52与ADC0809设计一个数字多用表,配合分流电阻、分压电阻可以测量交、直流电压值,直流电流,四位数码显示。并且有超出量程的情况发生时,蜂鸣器发声报警。2.2.2 STC89C52芯片功能特性描述STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。 它具有以下标准功能: 8k字节Flash,51

3、2字节RAM, 32 位I/O 接口,看门狗定时器,置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。图2-2-2STC89C52RS引脚图STC89C52RS各引脚功能:VCC(40引脚):电源电压 VSS(20引脚):接地P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。P1端口(P1.0P1.7,18引脚):P1口是一个带部上拉电阻的8位双向I/O口。在对Flash ROM编程和程序校验时,P1接收低8位

4、地址。此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见表2-2-2:表2-2-2引脚号功能特性P1.0T2(定时器/计数器2外部计数输入),时钟输出P1.1T2EX(定时器/计数器2捕获/重装触发和方向控制)P2端口(P2.0P2.7,2128引脚):P2口是一个带部上拉电阻的8位双向I/O端口。 在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。P3端口(P3.0P3.7,1017引脚):P3是一个带部上拉电阻的8位双向I/O端口。在对Flash ROM编程或程序校验时,P

5、3还接收一些控制信号。P3口除作为一般I/O口外,还有其他一些复用功能,见表2-2-3:表2-2-3复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)注:单片机最小系统包括时钟电路,复位电路,电源电路。其原理图如下:2.2.3数码管显示器的结构与其工作原理(1)数码管结构数码管的外形结构如图2-2-3所示图2-2-3 数码管显示器原理图(2) LED数码管分类按其部结构可分为共阴型和共阳型;导通时正向压降一

6、般为1.52V,额定电流为10mA,最大电流为40mA。(3)数码管工作原理共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源与额定段导通电流来确定相应的限流电阻。共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根

7、据发光字段的不同组合可显示出各种数字或字符。数码管显示数字见图2-2-4图2-2-4 数码管显示数字对照图2.2.4 A/D转换电路的设计ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国应用最广泛的8位通用A/D芯片。 此模块主要由模数转换器ADC0809和双D型正沿触发器74LS74(带预置和清除端)组成。(1)主要特性:1.8路输入通道,8位A/D转换器,即分辨率为8位。2.具有转换起停控制端。3.转换时间为100s(时钟为640kH

8、z时),130s(时钟为500kHz时)。 4.单个+5V电源供电。5.模拟输入电压围0+5V,不需零点和满刻度校准。6.工作温度围为-40+85摄氏度。7.低功耗,约15mW。(2)部结构:ADC0809是CMOS单片型逐次逼近式A/D转换器,部结构如右图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。(3)外部特性(引脚功能):ADC0809芯片有28条引脚,采用双列直插式封装,如左图所示。下面说明各引脚功能。IN0IN7:8路模拟量输入端。2-12-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于

9、选通8路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。(4)ADC0809的工作过程:首先输入3位地址,

10、并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。转换数据的传送 A/D转换后得到的数据应与时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。1.定时传送方式 对于一种A/D转换器来说,转换时间作为一项技术指标

11、是已知的和固定的。例如ADC0809转换时间为128s,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。2.查询方式 A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。3.中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数

12、据送上数据总线,供单片机接受。2.2.5 各模块直接引脚连接方法 a) 把“单片机系统”区域中的P1.0P1.7与“动态数码显示”区域中的ABCDEFGH端口连接。 b) 把“单片机系统”区域中的P2.0P2.7与“动态数码显示”区域中的S1S8端口连接。 c) 把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。 d) 把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。 e) 把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。f) 把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导

13、线相连接。 g) 把“模数转换模块”区域中的A2A1A0端子用导线连接到GND端子上。 h) 把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”区域中的VR1端子上。 i) 把“单片机系统”区域中的P0.0P0.7用8芯排线连接到“模数转换模块” 区域中的D0D7端子上。第三章 数字多用表的软件设计3.1系统总流程图 根据上述,我们选择单片机与A/D转换芯片结合的方法实现本设计。使用的基本元器件是:STC89C52单片机,AD0809模数转换芯片,数码管显示器,开关,电容,电阻,晶振,标准电源等等。图3.1系统总流程图3.2物理量采集处理流程 图3.2物理量采集处理流程3.3

14、电压测量过程流程图 图3.3电压测量流程图3.4电流的测量过程流程图 图3.4电流测量流程图3.5 各模板仿真与源程序3.5.1 仿真图 分流电阻电路 触发器74LS74 ADC0809转换电路 分压电阻电路 报警电路3.5.2 源程序#include intrins.hsbit LCD_RS=P10; /RS寄存器选择;高电平选数据;低电平选指令;sbit LCD_RW=P11; /读写信号线;高电平读操作;低电平写操作;sbit LCD_E=P12; /E使能端sbit ST=P13; /START输入 ;AD转换启动信号,高电平有效。sbit EOC=P14; /输出; AD转换结束信号

15、,/当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。sbit OE=P15; /输入,数据输出允许信号,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。sbit ALE=P16; /地址锁存允许信号,输入,高电平有效。sbit CLK=P33; /时钟脉冲输入端。/*sbit A ; /地址选择sbit B ;sbit C;*/#define LCD_Data P2 /液晶数据D7-D0#define Busy 0x80 /用于检测LCD状态字中的Busy标识#define uchar unsigned char#define uint unsi

16、gned intvoid WriteDataLCD(unsigned char WDLCD);/写数据void WriteCommandLCD(unsigned char WCLCD,BuysC);/写指令unsigned char ReadDataLCD(void);/读数据unsigned char ReadStatusLCD(void);/读状态void LCDInit(void);/LCD初始化void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);/显示一个字符void DisplayLis

17、tChar(unsigned char X, unsigned char Y, unsigned char code *DData);/显示一串字符void Delay5Ms(void);void Delay400Ms(void);void read();/读取待测数据uchar ReadADC(); /ADC读取函数void writenumber();void zhuan(uchar i);unsigned char code uctech = The DC voltage : ;unsigned char code net = theunsigned char num5;unsigned

18、 char shu=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39; /0 1 2 3 4 5 6 7 8 9unsigned char getdata;void main(void) ST=0; OE=0; ET0=1; /计时器/计数器中断允许控制位;=1允许定时,计数器中断 ET1=1; EA=1; /中断允许总控制位 TMOD=0x12; /定时器控制寄存器 TH0=216; TL0=216;/ TH1=(65536-5000)/256;/ TL1=(65536-5000)%256; TR1=1; TR0=1; Delay5Ms();

19、 ST=1; ALE=0; Delay400Ms(); /启动等待,等LCD进入工作状态 LCDInit(); /LCD初始化 while(1) unsigned char j; DisplayListChar(0, 0, uctech);/显示第0行/ DisplayListChar(0, 1, num); /显示第1行 ReadDataLCD(); /测试用句无意义 j=ReadADC(); zhuan(j); /void writenumber(uchar *q)/ Delay400Ms;/ for()/ WriteCommandLCD(0xc0,0); WriteDataLCD(num

20、2);/ uchar ReadADC() /ADC读取函数 uchar a; /复位ALE=1; /? _nop_(); /OE=0; /ST=1; /01;上升沿ADC0809所有寄存器清零 /ST=0; / 当AD转换结束时, /此端输出一个高电平(转换期间一直为低电平)。 while(EOC=0) / AD转换结束信号,输出, /OE下降沿。A/D开始转换,期间ST保持低电平 /OE=1; /OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。 /OE1,输出转换得到的数据; /OE0,输出数据线呈高阻状态。D7D0为数字量输出线。 OE=1; getdata=P0;

21、a=getdata; /i=getdata; return(a);void zhuan(uchar k) k=k*196;/k=k/256; num0=shuk/10000; k=k%10000; num1=shuk/1000; k=k%1000; num2=shuk/100; k=k%100;num3=shuk/10;/*void writenumber(uchat a,uchar *q) ReadStatusLCD(); /检测忙 LCD_Data =q; /写数据void WriteDataLCD(unsigned char WDLCD) LCD_Data = WDLCD; LCD_RS

22、 = 1; LCD_RW = 0; LCD_E = 0; /若晶振速度太高可以在这后加小的延时 /延时 /不加延时通不过PROTEUS仿真 LCD_E = 1;void WriteCommandLCD(unsigned char WCLCD,BuysC) /BuysC为0时忽略忙检测 if (BuysC) ReadStatusLCD(); /根据需要检测忙 LCD_Data = WCLCD;LCD_RS = 0;unsigned char ReadDataLCD(void) LCD_RW = 1; return(LCD_Data);unsigned char ReadStatusLCD(void) LCD_Data = 0xFF; LCD_RS = 0; while (LCD_Data & Busy); /检测忙信号void LCDInit(void) /LCD初始化 LCD_Data = 0; WriteCommandLCD(0x38,0); /三次显示模式设置,不检测忙信号 WriteCommandLCD(0x38,1); /显示模式设置,开始要求每次检测忙信号 WriteCommandLCD(0x08,1); /关闭显示 WriteCommandLCD(0x01,1)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1