数字电压表的制作与设计-实习报告.docx

上传人:wux****ua 文档编号:9083971 上传时间:2020-04-03 格式:DOCX 页数:20 大小:277.59KB
返回 下载 相关 举报
数字电压表的制作与设计-实习报告.docx_第1页
第1页 / 共20页
数字电压表的制作与设计-实习报告.docx_第2页
第2页 / 共20页
数字电压表的制作与设计-实习报告.docx_第3页
第3页 / 共20页
点击查看更多>>
资源描述
河 南 工 程 学 院 实 习 报 告 专业电气自动化技术 班级 1331班 姓名 赵庆飞 学号 201320709134 2014年 12月1日 实习(训)报告评语等级: 评阅人: 职称: 年 月 日 河 南 工 程 学 院 实习(训)报告实习目的(内容): 数字电压表的制作与设计实习时间:自 12月 1日至12月 14 日共14天 。实习地点: 实验室3号实验楼 实习单位: 电气信息工程学院 指导老师: 陶春鸣 摘要随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器计数电路,这 就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。数字电压表它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力理。AT89C52单片机的一种电压测量电路,该电路采用ADC0832本文介绍一种基于A/D转换电路,测量范围直流 05V 的4路输入电压值,并在四位LED数码管上显示或单路选择显示。测量最小分辨率为0.019V,测量误差约为正负0.02V。本次设计就是为了更好地掌握单片机及相关的电子技术,在参阅一些资料的基础上利用ADC0832而设计的数字电压表。一、设计目的与功能要求A、 设计目的利用单片机及ADC0832核心元件制作三位半数字电压表,更好地学习掌握ADC0832的工作原理及A/D的转换编程方法。B、功能要求利用ADC0832设计实现数字电压表的测量值为05V,用电位器模拟ADC0832的输入电压,用3位数码管显示,实时模拟数字电压表。二.总体设计A、系统设计主要分为两部分:硬件电路及软件程序。硬件电路包括:单片机及外围电路,模拟信号采集电路,A/D转换电路,数码管显示电路,各部分电路的衔接。软件的程序可采用C语言或汇编,这里采用C语言,详细的设计思路在后面介绍。B、设计方案数字电压表的设计方案很多,但采用集成电路来设计较流行。其设计主要是由模拟电路和数字电路两大部分组成,模拟部分包括A/D转换器,基准电源等;数字部分包括振荡器,数码显示,计数器等。其中,A/D转换器将输入的模拟量转换成数字量,它是数字电压表的一个核心部件,ADC0832 为 8 位分辨率 A/D 转换芯片,其最高分辨可达 256 级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 05V 之间。芯片转换时间仅为 32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过 DI 数据输入端,可以轻易的实现通道功能的选择。 C、总体设计框图采集量程变换处理数字信号数码管单片机A/D转换器ADC0832外界模拟信号 显示出模拟电压的数值预先写好的汇编程序置 入振荡器、时序脉冲三设计原理图四.硬件电路设计1、核心元器件介绍a 、 芯片介绍1.单片机AT89S52介绍AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程AT89S52引脚图 DIP封装Flash存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL逻辑电平。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。 在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能:P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动AT89S52引脚图 PLCC封装4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。端口引脚第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 按键复位 上电复位ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。 2.A/D转换器ADC0832 8位分辨率; 双通道A/D转换; 输入输出电平与TTL/CMOS相兼容;ADC0832 5V电源供电时输入电压在05V之间; 工作频率为250KHZ,转换时间为32S; 一般功耗仅为15mW; 8P、14PDIP(双列直插)、PICC 多种封装; 商用级芯片温宽为0C to +70C,工业级芯片温宽为40C to +85C;芯片接口说明: CS_片选使能,低电平芯片使能。 CH0 模拟输入通道0,或作为IN+/-使用。 CH1 模拟输入通道1,或作为IN+/-使用。 GND 芯片参考0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用)3、其他硬件A、排阻的作用内存芯片下方均匀分布的“芝麻粒”,实排阻际上是位于内存颗粒和金手指之间的“排阻”。排阻,是一排电阻的简称。我们知道,内存在处理、传输数据时会产生大小不一的工作电流。而在内存颗粒走线的必经之处安装一排电阻,则能够帮助内存起到稳压作用,让内存工作更稳定。从而提升内存的稳定性,增强内存使用寿命。内存右边角上的“小绿豆”,我们一般称之为SPD。SPD是一存储体,它存储了厂商对内存的详细配置信息:如内存的工作电压,位宽,操作时序等。每次开机后自检时,系统都会首先读取内存SPD中的相关信息,来自动配置硬件资源,以避免出错。上拉、限流。和普通电阻一样,相比而言简化了PCB的设计、安装,减小空间,保证焊接质量。排阻的特点排阻具有方向性,与色环电阻相比具有整齐、少占空间的优点。排阻引脚说明1与a 2与b 3与c 4 与d之间的电阻都是10欧,与其它的管脚没有任何关系就是一排电阻,做在了一个原件上有的还有一个公脚,就是为了方便使用,拿万用表量一下就会发现所有脚对公共脚的阻值均是标称值,除公共脚外其它任意两脚阻值是标称值的两倍,很明显任意两脚通过公共脚脚串联的嘛!用在有很多上下拉电阻的场合应用特方便,比如并行通讯线上,还节省空间。(就是老师问这个问题就难住我啦,老师问我排阻的作用,我说保护电路,老师还问我还有什么作用,我竟不知道,我在网上查,其实查到啦,我不知道排阻是上拉电阻也是它的作用,就造成了,最后还是老师给我点出来的)五、软件(程序)A、 流程图开始系统初始化启动A/D转换采集A/D转换值数据转换Y调用显示三位是否显示完?完?读电压值YNEND程序流程图转换结束?YNB、程序#include #define uchar unsigned char#define uint unsigned intuint Chan0Value,Chan1Value;sbit RS=P20; /1602各控制脚sbit RW=P21;sbit EN=P22;sbit Cs0832= P14; /0832各控制脚sbit Clk0832= P15;sbit Di0832= P16;sbit Do0832= P16;uchar table=Chanal 0: . V;uchar table1=Chanal 1: . V;void delay1ms(unsigned int ms)/延时1毫秒(不够精确的) int i,j; for(i=0;ims;i+) for(j=0;j100;j+);/* ADC0832*/uchar GetValue0832(uchar Channel) /获取数值返回。入口:通道(0或1)。出口:数值。 uchar i,Dat1=0,Dat2=0; Clk0832=0; Di0832=1; Cs0832=0; Clk0832=1; Clk0832=0; /第一脉冲,开始位 Di0832=1; Clk0832=1; Clk0832=0; /第二脉冲,模式选择 Di0832=Channel;/通道选择,0或1 Clk0832=1; Clk0832=0; /第三脉冲,通道选择 Di0832=1; /释放输入线 for(i=0;ii; for(i=0;i8;i+) /从低到高取一次数 if(Do0832) Dat2|=0x01i; Clk0832=1; /下降沿有效 Clk0832=0; Cs0832=1; Di0832=1; Clk0832=1; /数据读取完成,释放所有数据线 if(Dat1=Dat2) return Dat1; /校验两次数相等,输出/*本程序与其他一般程序最大的不同就是要读两次一次从最高位到最低位,一次从最低位到最高位,两次所读值相等即为正常,可以输出*/*LCD1602*/*lcd1602程序*/void wr_com(unsigned char com)/写指令/ delay1ms(1); RS=0; RW=0; EN=0; P0=com; delay1ms(1); EN=1; delay1ms(1); EN=0;void wr_dat(unsigned char dat)/写数据/ delay1ms(1); RS=1; RW=0; EN=0; P0=dat; delay1ms(1); EN=1; delay1ms(1); EN=0;void lcd_init()/初始化设置/delay1ms(15);wr_com(0x38);delay1ms(5);wr_com(0x80);delay1ms(5);wr_com(0x01);delay1ms(5);wr_com(0x06);delay1ms(5);wr_com(0x0c);delay1ms(5);void writevalue(uchar add,uchar dat) wr_com(0x80+add); wr_dat(dat); void zifuchuan(uchar *ch) while(*ch!=0) wr_dat(*ch+); delay1ms(1); void main(void) uint a,b; int i=0; lcd_init(); while(1) a=GetValue0832(0); delay1ms(100); b=GetValue0832(1); wr_com(0x80); for(i=0;i15;i+) wr_dat(tablei); Chan0Value=a/255.0*500; writevalue(10,Chan0Value/100+0x30); writevalue(12,Chan0Value%100/10+0x30); writevalue(13,Chan0Value%100%10+0x30); wr_com(0x80+0x40); for(i=0;i15;i+) wr_dat(table1i); Chan1Value=b/255.0*500; writevalue(0x40+10,Chan1Value/100+0x30); writevalue(0x40+12,Chan1Value%100/10+0x30); writevalue(0x40+13,Chan1Value%100%10+0x30); 六、调试仿真电路在proteus中的仿真图如下:仿真结果:输入的电压从05V变化时,数字电压表能够测量出并利用数码管显示出来。测量的精度与要求的一致,前两位精确,百分位不作精确。要更精确,只需修改相应的源程序代码即可。七、PCB板制作和焊接A、PCB制作 利用原理图制作PCB板及利用专门的复写纸张将设计完成的PCB图通过喷墨打印机打印输出,然后将印有电路图的一面与铜板相对压紧,最后放到热交换器上进行热印,通过在高温下将复写纸上的电路图墨迹粘到铜板上。制板。调制溶液,将硫酸和过氧化氢按3:1进行调制,然后将含有墨迹的铜板放入其中,等三至四分钟左右,等铜板上除墨迹以外的地方全部被腐蚀之后,将铜板取去,然后将清水将溶液冲洗掉。打孔。利用凿孔机将铜板上需要留孔的地方进行打孔,完成后将各个匹配的元器件从铜板的背面将两个或多个引脚引入,然后利用焊接工具将元器件焊接到铜板上。B、焊接按照原理图进行焊接(焊接完好的成品如下) 八、心得 体会经过两周的努力终于设计成功,LCD的显示结果和直接用数字电压表测试模拟量输入所得结果几乎一致,误差完全在合理的范围之内。由于仪器误差,LCD显示最大值只能是4.9V,离标准最大值5.0V已经不远,达到预期目的,设计成功。本设计参考了AT89S52与ADC0832转换的接口连线,设计出电路图的连线,从并中理解了许多基本的知识和接线方法,在制作过程中遇到了许多问题,如封装的大小尺寸不同,焊盘的大小需要调整,在PCB封装连线时由于学校只能做单层板,所以不能把线条全部敷出,选择了在背面用导线代替,最后由于电位器的封装在的下面无法调节分辨率,选择了把电位器重新定位,在面板上重新打了三个孔把电位器脚分别用导线连接再接到了焊盘上。还有排阻因为封装的错误使9引脚接到了VCC上。所以在焊接时就把排阻的头和尾进行了对调。通过这次的设计与实验使自己学到了很多的东西,也提高了对科学的自然兴趣。参考文献1 单片机微型计算机原理及应用 鲍小南等编著 浙江大学出版社2 .单片机课程设计指导楼然苗、李光飞编著 .电子工业出版社,20073 单片机应用技术. 吴经国等编著 .中国电力出版社,2000 4 8051单片机实践与应用 吴金戌 沈庆阳 郭庭青 编著 清华大学出版社5 单片机原理及应用 余修武 编著 电子科技大学出版社 6 单片机原理及接口技术 (C51编程)张毅钢 编著 人民邮电出版社
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!