淮阴工学院测控电路课程设计--简易数字电压表的设计_第1页
淮阴工学院测控电路课程设计--简易数字电压表的设计_第2页
淮阴工学院测控电路课程设计--简易数字电压表的设计_第3页
淮阴工学院测控电路课程设计--简易数字电压表的设计_第4页
淮阴工学院测控电路课程设计--简易数字电压表的设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、简易数字电压表的设计1 设计目的和要求 1.1设计目的测控系统原理与设计课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练,在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计和练习,可使学生初步体验微机应用系统的设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的1. 2设计任务利用单片机AT89C52与ADC0809设计制作一个数字电压表,要求简易电压表可以测量0-5V范围内的8位输入电压值,并且在4位LED数码管上轮流显示和单路选择显示。1.3设计要求:(1)根据设计要

2、求,选择AT89C2单片机为核心控制器件。(2)A/D转换采用ADC0809实现,与单片机的接口为P1口和P2口的高四位引脚。(3)电压显示采用4位一体的LED数码管。(4)LED数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2低四位产生。二、设计方案运用单片机构成的数字电压表中包含三个模块:数据采集模块、数据处理模块和输入/输出模块。在数据采集保持模块中,基本结构大部分都一样,主要是对电压信号采样前,用放大器进行预处理,然后通过保持器保持采样。 目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度。本次以简易数字直流电压表的设计为研究内容,系

3、统主要包括三大模块:转换模块、数据处理模块及显示模块。其中,A/D转换采用ADC0809对输入的模拟信号进行转换,控制核心AT89C52再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号。硬件电路设计由6个部分组成; A/D转换电路,AT89C51单片机系统,LED显示系统、时钟电路、复位电路及测量电压输入电路。硬件电路设计框图2-1所示。时钟电路 复位电路A/D转换电路测量电压输入显示系统AT89C52 P1 P2 P2 P0 2-1数字电压表系统硬件设计框图三、程序设计3.1 程序设计总方案 根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程

4、序模块构成了整个系统软件的主程序,如图3-1所示。图3-1数字式直流电压表主程序框图3.2 系统子程序设计3.2.1 初始化程序所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。3.2.2 A/D转换子程序A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图3-2所示。图3-2 A/D转换流程图3.2.3 显示子程序显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的

5、亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11s定时,通过软件延时程序来实现5ms的延时。图3-3显示子程序四、单元硬件设计4.1 AT89C52单片机简介AT89C52是此次课程设计的核心部分。其管脚图4-1如下:图4-1 AT89C52管脚图AT89C52是低功耗、高性能的CMOS8位单片机。片内带有8KB的Flash存储器,且允许在系统内改写或用编程器编程。另外,AT89C52的指令系

6、统和引脚与80C52完全兼容。AT89C52各管脚功能如下:VCC:供电电压;GND:接地;P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。;P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流;P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流;P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用

7、作输入;P3口管脚功能: P3.0是RXD(串行输入口);P3.1是TXD(串行输出口);P3.2是/INT0(外部中断0);P3.3是/INT1(外部中断1);P3.4是T0(记时器0外部输入);P3.5是T1(记时器1外部输入);P3.6是/WR(外部数据存储器写选通);P3.7是/RD(外部数据存储器读选通);P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许输出电平用于锁存地址的地位字节。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器

8、周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。4.2A/D转换器选择A/D转换器是核心器件,它关系到最后数字电压表的精确度。所以A/D芯片的选择是设计过程中的一个很重要的环节。常用的A/D芯片ADC0808,ADC0809,ADC0832,TLC2543等几种。ADC0809是8位逐次逼近型A/D转换器,与微机直接接口,片内带有锁存功能的8路模拟多路

9、开关,可以对8路0-5V输入模拟电压信号分时进行转换,由于ADC0809设计时考虑到若干种模/数变换技术的长处,所以该芯片非常适应于过程控制。ADC0808主要特性:8路8位A/D转换器,即分辨率8位;具有锁存控制的8路模拟开关;易与各种微控制器接口;可锁存三态输出,输出与TTL兼容;转换时间:128s;转换精度:0.2%;单个+5V电源供电;模拟输入电压范围0- +5V,无需外部零点和满度调整;低功耗,约15mW。逐次逼近式A/D转换器的工作原理:图4-2逐次逼近法原理4.3 ADC0809的外部引脚特征图4-3 ADC0809的管脚图ADC0809 是8 位逐次逼近型A/D转换器。它由一个

10、8路模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成(见图7)。多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。三态输出锁存器用于锁存A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据D7-D0:8位数字量输出引脚。IN0-IN7:8位模拟量输入引脚。VCC:+5V工作电压。GND:地。REF(+):参考电压正端。REF(-):参考电压负端。START:A/D转换启动信号输入端。ALE:地址锁存允许信号输入端。(以上两种信号用于启动A/D转换).EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结

11、束时为高电平。OE:输出允许控制端,用以打开三态数据输出锁存器。CLK:时钟信号输入端(一般为500KHz)。4.4复位电路和时钟电路4.4.1 复位电路设计单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特触发输入。当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位。复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,图4-4是52系列单片机统常用的

12、上电复位和手动复位组合电路,只要Vcc上升时间不超过1ms,它们都能工作。图4-4 复位电路4.4.2 时钟电路设计单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路。 本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简单,只需要一个晶振和两个电容即可,如图4-5所示。图4-5时钟电路

13、电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是3010pF,在这个系统中选择了33pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。4.5LED显示系统设计4.5.1 LED基本结构LED是发光二极管显示器的缩写。LED由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。LED显示器是由若干个发光二极管组成显示字段的显示器件6。在单片机中使用最多的是七段数码显示器。LED七段数码显示器由8个发光二极管

14、组成显示字段,其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。LED引脚排列如下图4-6所示:图4-6 LED引脚排列4.5.2 LED显示器的选择在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此就生产了位数,尺寸,型号不同的LED显示器供选择,在本设计中,选择4位一体的数码型LED显示器,简称“4-LED”。本系统中前一位显示电压的整数位,即个位,后两位显示电压的小数位。4-LED显示器引脚如图3-8所示,是一个共阴极接法的4位LED数码显示管,其中a,b,c,e,f,g为4位LED各段

15、的公共输出端,1、2、3、4分别是每一位的位数选端,dp是小数点引出端,4位一体LED数码显示管的内部结构是由4个单独的LED组成,每个LED的段输出引脚在内部都并联后,引出到器件的外部。图4-5-2 4位LED引脚对于这种结构的LED显示器,它的体积和结构都符合设计要求,由于4位LED阴极的各段已经在内部连接在一起,所以必须使用动态扫描方式(将所有数码管的段选线并联在一起,用一个I/O接口控制)显示。4.6总体电路设计经过以上的设计过程,可设计出基于单片机的简易数字直流电压表硬件电路原理图如图4-6所示。图4-6 简易数字电压表电路图五. 设计总结通过本次实验,了解了AD0809的作用以及其

16、的接口作用,用Proteus进行仿真,了解了Proteus软件的基本使用方法,用keil转换伟福识别语言,使该软件能够识别C语言,也加深了对单片机模拟仿真软件的认识和理解;也在实际操作连接外电路的过程中,遇到了许多问题,意识到自己知识的匮乏,自己的动手能力也亟待提高,无疑这对以后的学习是种无形的激励。同时在寻求解决问题,查找资料,向老师请教的同时,提高了自己做设计实验的能力,也学会了如何利用图书资源和自身知识去转换为实际应用,为以后的学习提高奠定了基础,总之这次实验我受益匪浅。附录 程序代码全部软件程序如下:#include#define uchar unsigned char#define

17、uint unsigned int#define key_state0 0 /键盘扫描的各个状态#define key_state1 1#define key_state2 2#define key_state3 3sbit rs=P12;/1602液晶写命令/数据标志,0时写命令sbit rw=P11;/1602液晶写入/读出标志,0时写入数据sbit ep=P10;sbit input=P14;sbit output=P13;sbit cs=P15;sbit clk=P16;sbit key=P20;sbit flag_1=P21;/定义电压表档位相关标志sbit flag_2=P22;s

18、bit flag_3=P23;sbit flag_4=P24;uchar code tab0=V ; /显示的单位及有关的字符uchar code tab1=MV;uchar code tab2=Power:;uchar code tab3=Aver_V:;/平均电压值标志符uchar t;void delay(int z)/延时函数int x,y;for(x=z;x0;x-)for(y=10;y0;y-);void write_com(uchar com)/往1602液晶写命令函数rs=0;P0=com;delay(5);ep=1;delay(5);ep=0;void write_dat(u

19、char dat)/往1602液晶写数据函数rs=1;P0=dat;delay(5);ep=1;delay(5);ep=0;void init_1602()/对1602液晶的初始化函数rs=0;rw=0;write_com(0x38);delay(1);write_com(0x0c);delay(1);write_com(0x06);delay(1);write_com(0x01);delay(1);void init_timer0()/定时计数器0初值化函数,TMOD=0x01;/方式一TH0=(65536-50000)/256;/每50ms中断一次TL0=(65536-50000)%256

20、;IE=0x82;/打开中断TR0=0;/定时器首先不可工作void display(uchar x,uchar y,uint dat)/显示电压值的函数,x行y列开始显示uint add;uchar i,a5;switch(x)case 0:add=0x80;break;case 1:add=0x80+0x40;break; add=add+y; write_com(add); for(i=0;i5;i+)ai=dat%10;dat=dat/10; write_dat(a4+0x30); write_dat(a3+0x30); write_dat(a2+0x30); write_dat(.)

21、; write_dat(a1+0x30); write_dat(a0+0x30);void display_zifu(uchar x,uchar y,uchar *str)/显示字符函数,x行y列开始显示uint add;switch(x)case 0:add=0x80;break;case 1:add=0x80+0x40;break; add=add+y;write_com(add);while(*str!=0)write_dat(*str);str+;uint read_AD(uchar con_way)/读取AD转换值操作函数uint dat=0;uchar i;cs=0;clk=0;c

22、on_way=4;for(i=0;i12;i+)con_way=1;/*选择0通道,在输入该控制数据的同时输出前一次AD转结果*/ input=CY;dat=100)/当电压值大于1V时,用V显示,否则用mV显示display_zifu(0,1,tab2);display(0,7,dat);display_zifu(0,13,tab0);elsedisplay_zifu(0,1,tab2);display(0,7,dat*1000);display_zifu(0,13,tab1); read_key(); /当键盘按下时,计算后五秒的平均电压值if(t=20)t=0;flag+;if(flag

23、=1)dat1=dat;if(flag=2)dat2=dat;if(flag=3)dat3=dat;if(flag=4)dat4=dat;if(flag=5)dat5=dat;dat_aver=(dat1+dat2+dat3+dat4+dat5)/5; display(1,7,dat_aver);display_zifu(1,13,tab0);dat_aver=0; if(flag=8)flag=0;write_com(0x01);TR0=0; void timer0() interrupt 1/定时器中断函数TH0=(65536-50000)/256;/重新放入初始值TL0=(65536-50000)%25

温馨提示

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

评论

0/150

提交评论