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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机数字电压表实习报告.docx

1、单片机数字电压表实习报告电气信息工程学院 单片机实习报告课题名称: 数字电压表 专 业:姓 名:班级学号:指导教师: 刘海波 成 绩: 二一一年七月一日 目录一、题目及设计要求 - 3 -二、实验内容 - 3 -三、实验原理 - 3 -1、用电位计提供模拟电压 - 3 -2、用串行A/D TLC2543采集电压 - 4 -3、串行显示595完成LED显示 - 6 -四、设计程序: - 9 -1、汇编语言: - 9 -2、C语言: - 12 -五、调试过程及测试结果 - 15 -六、实习心得 - 16 -七、参考文献 - 17 -一、题目及设计要求1、题目:数字电压表2、掌握单片机设计原理,SP

2、I总线原理,利用A/D转换器设计一数字电压表,量程为0 +5.0000,通过五位数码管显示。二、实验内容1、用电位计提供模拟电压2、用串行A/D TLC2543采集电压3、利用串行显示595完成LED显示当前电压值三、实验原理1、用电位计提供模拟电压原理:电位计或称电压计,也称为可变电阻器,通常被制造成不管使用多久均能维持原有的特性,若当位置传感器使用,电位计可以是直线或旋转式位置传感器。电位计输出一个电压值,其正比于沿着可变电阻器之滑动器的位置。因为温度变化、磨耗及滑动器与可变电阻器之间的污垢均会造成电阻变化,影响电位计的精度,因此,电位计有太低的准确度。由于材料的发展,特别是在导电性塑料,

3、使得电位计在使用很长时间后仍可以维持原有特性,同时也改进它们的性能。2、用串行A/D TLC2543采集电压原理:引脚图:控制字格式的设置:控制字为从DATAINPUT端串行输入的8位数据,它规定了TLC2543要转换的模拟量通道、转换后的输出数据长度、输出数据的格式。其中高4位(D7D4)决定通道号,对于0通道至10通道,该4位分别为00001010H,当为10111101时,用于对TLC2543的自检,分别测试(VREFVREF)/2、VREF、VREF的值,当为1110时,TLC2543进入休眠状态。低4位决定输出数据长度及格式,其中D3、D2决定输出数据长度,01表示输出数据长度为8位

4、,11表示输出数据长度为16位,其他为12位。D1决定输出数据是高位先送出,还是低位先送出,为0表示高位先送出。D0决定输出数据是单极性(二进制)还是双极性(2的补码),若为单极性,该位为0,反之为1。转换过程:上电后,片选CS必须从高到低,才能开始一次工作周期,此时EOC为高,输入数据寄存器被置为0,输出数据寄存器的内容是随机的。开始时,CS片选为高,I/O CLOCK、DATA INPUT被禁止,DATA OUT 呈高阻状,EOC为高。使CS变低,I/OCLOCK、DATAINPUT使能,DATAOUT脱离高阻状态。12个时钟信号从I/OCLOCK端依次加入,随着时钟信号的加入,控制字从D

5、ATAINPUT一位一位地在时钟信号的上升沿时被送入TLC2543(高位先送入),同时上一周期转换的A/D数据,即输出数据寄存器中的数据从DATAOUT一位一位地移出。TLC2543收到第4个时钟信号后,通道号也已收到,此时TLC2543开始对选定通道的模拟量进行采样,并保持到第12个时钟的下降沿。在第12个时钟下降沿,EOC变低,开始对本次采样的模拟量进行A/D转换,转换时间约需10s,转换完成后EOC变高,转换的数据在输出数据寄存器中,待下一个工作周期输出。此后,可以进行新的工作周期。TLC2543与89C52单片机接口原理图:3、串行显示595完成LED显示原理:每位LED显示器段选线和

6、74HC595的并行输出端相连,每一位可以独立显示在多位LED显示时,为了简化电路,降低成本,节省系统资源,将所有的N位段选码并联在一起,由一片74HC595控制。由于所有LED的段选码皆由一个74HC595并行输出口控制,因此,在每一瞬间,N位LED会显示相同的字符。想要每位显示不同的字符,就必须采用扫描的方法,即在每一瞬间只使用一位显示字符。在此瞬间,74HC595并行输出口输出相应字符段选码,而位选则控制I/O口在该显示位送入选通电平,以保证该位显示相应字符。如此轮流,使每位分时显示该位应显示字符。由于74HC595具有锁存功能,而且串行输入段选码需要一定时间,因此,不需要延时,即可形成

7、视觉暂留效果。 段选码由五片74HC595控制,段选数据由74HC595的SER引脚串行输入,由于输出使能时钟RCLK并接在一起,因此,五片74HC595并行输出端同时输出。而五个LED位选信号也并接在一起,因此,一次可以同时点亮五位LED。此过程类似于静态显示。每片74HC595并行输出端并接8位LED,用于扫描输出,此过程类似于动态扫描过程。此方法运用5片74HC595,n条位选信号,即可实现3n位LED显示。此种方法实现多位LED显示程序框图为图4所示,MCU为89S52。 设计中采用的是5段LED数码管来显示电压值。LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命长等优点,它由5

8、个发光二极管组成,其中4个按8字型排列,另一个发光二极管为圆点形状,位于右下角,常用于显示小数点。把5个发光二极管连在一起,公共端接高电平,叫共阳极接法,相反,公共端接低电平的叫共阴极接法,我们采用共阴极接法。当发光二极管导通时,相应的一段笔画或点就发亮,从而形成不同的发光字符。其8段分别命名为dp g f e d c b a。例如,要显示“0”,则dp g f e d c b a分别为:00111111B;若要显示多个数字,只要让若干个数码管的位码循环为高电平就可以了。下图是数码管的结构图四、设计程序:1、汇编语言: ORG 0000H LJMP START ORG 0030H ENA EQ

9、U P1.0 ;设置引脚 ENB EQU P1.1 ENC EQU P1.2 CLK EQU P2.3 IN EQU P2.4 OUT EQU P25START:CLR ENA ;选通TCL2543 CLR ENB CLR ENC CLR CLK NOP NOP MOV A,#34H ;设置方式控制字 CLR C MOV R0,#8 LOOP:RLC A ;左大环移,按位输入控制字 MOV IN,C SETB CLK NOP NOP CLR CLK NOP NOP DJNZ R0,LOOP MOV R0,#8 MOV A,#0 CLR CLOOP1:MOV C,OUT ;按位输出转换后的数字量

10、 SETB CLK NOP NOP CLR CLK NOP NOP RRC A DJNZ R0,LOOP1 MOV B,#33H /*转换为标准数字电压值*/ DIV AB DA A MOV R0,A MOV A,B MOV B,#5 DIV AB DA A MOV R1,A MOV A,#10 MUL AB MOV B,#5 DIV AB DA A MOV R2,A MOV A,#10 MUL AB MOV B,#5 DIV AB DA A MOV R3,A MOV A,#10 MUL AB MOV B,#5 DIV AB DA A MOV R4,A CLR ENA SETB ENB SET

11、B ENC MOV DPTR,#TABLE MOV A,#0 XS: MOV A,R4 ;查表,转换为数码管显示数据 MOVC A,A+DPTR ACALL WR_595 ;调用595显示程序,显示数码 MOV A,R3 MOVC A,A+DPTR ACALL WR_595 MOV A,R2 MOVC A,A+DPTR ACALL WR_595 MOV A,R1 MOVC A,A+DPTR ACALL WR_595 MOV A,#0x7F ACALL WR_595 MOV A,R0 MOVC A,A+DPTR ACALL WR_595 MOV A,#0xFF ACALL WR_595 MOV

12、A,#0xFF ACALL WR_595 MOV A,#0xFF ACALL WR_595 MOV A,#0xFF ACALL WR_595 SETB P1.0 SETB P1.1 SETB P1.2 LJMP START WR_595: ;595数码显示子程序 MOV R7,#8 CLR C CLR CLK NOP NOP WW: RLC A MOV IN,C SETB CLK NOP NOPCLR CLK NOP NOP DJNZ R7,WW RETTABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,82H,0C6H,0A1H

13、,84H,8EH SJMP $END2、C语言:#include#include #define uint unsigned int#define uchar unsigned charsbit CLK=P23;/*设置引脚*/sbit IN=P24;sbit OUT=P25;sbit ENA=P10;sbit ENB=P11;sbit ENC=P12;uchar f5;void AD()/*AD转换部分*/ uchar a8=0,0,1,1,0,1,0,0,b8; uint d=0,c=1,j=10000; uchar e=0,g,i; ENA=0;/*选通TCL2543*/ ENB=0;

14、ENC=0; CLK=0; _nop_(); _nop_(); _nop_(); for(i=0;i8;i+)/*输入方式控制字*/ IN=ai; CLK=1; _nop_();/*延时*/ _nop_(); _nop_(); CLK=0; _nop_(); _nop_(); _nop_(); CLK=0; _nop_(); _nop_(); _nop_(); for(i=0;i0;i-)/*数字量换算成十进制数*/ e=bi-1; d=c*e+d; c=2*c; d=d*143.5294117; for(i=0;i0;i-)/*显示小数部分*/ a=fi;/*取出数字量的第i位*/ num=

15、na;/*查表转换成对应的LED字型显示代码*/ CLK=0; _nop_(); _nop_(); _nop_(); for(j=0;j8;j+)/*按位输入代码*/ if(num&0x80)=0x00)/*判断首位是否为1*/ IN=0; if(num&0x80)=0x80) IN=1; CLK=1; _nop_(); _nop_(); _nop_(); CLK=0; _nop_(); _nop_(); _nop_(); num=num1; a=f0;/*显示整数部分*/ num=ma;/*查表转换成整数部分代码*/ CLK=0; _nop_(); _nop_(); _nop_();for(

16、j=0;j8;j+)/*按位输入代码*/ if(num&0x80)=0x00) IN=0; if(num&0x80)=0x80) IN=1; CLK=1; _nop_(); _nop_(); _nop_(); CLK=0; _nop_(); _nop_(); _nop_(); num=num1; CLK=0; /*显示空位*/ _nop_(); _nop_(); _nop_();for(i=0;i3;i+) for(j=0;j8;j+) IN=1; CLK=1; _nop_(); _nop_(); _nop_(); CLK=0; _nop_(); _nop_(); _nop_(); _nop_

17、(); _nop_(); _nop_(); ENA=1;/*关闭74LS595显示标准电压数字量*/ ENB=1; ENC=1; _nop_(); _nop_(); _nop_();void main() while(1) AD();/*AD转换函数*/ XS();/*数字量显示函数*/ 五、调试过程及测试结果1、 首先根据电路原理图在软件上连出电路,然后进行电路的调试,在实际的电路中,芯片一脚接+5V的电源,另一引脚接地。2、 现在将在调试过程中的问题总结:测试数码管显示的数据是否正确,将编好的程序写进单片机后,观察数码管,发现码型显示不正确,通过改正硬件电路,是数码管显示正确的数据。3、

18、通过以上硬件电路调试,最终达到了设计的要求,实现了从0V5.0000V的显示,并且精度比较高。六、实习心得 在为期一周的实习过程中,我学到了许多书本上学不到的知识,本以为十分枯燥的设计过程却让我得到了很多乐趣,同时也让我懂得了团队合作的力量,为今后的进一步学习奠定了基础。当老师布置完题目后,由于对需要掌握的知识还不是十分理解,于是我通过看教材和查资料等方式将各个芯片的用法和功能分析清楚,然后后和组员共同确定了设计方案,一步步地分模块地完成部分设计,最终成功地完成了整个系统的硬件和软件设计。在设计的过程中编程部分是个难点,与以往学过的C语言不同,实验中使用的汇编语言是一个非常低级的语言,程序非常

19、单调而且代码量较大,调试困难,但是同时也与保持了机器语言的优点,与硬件关系非常紧密,可以有效地访问、控制计算机的各种硬件设备,如存储器、CPU、I/O端口等,具有直接和简捷的特点,因而在编程和调试的过程中也有助于我们了解CPU以及各个芯片的内部结构和原理。编程的过程中我们遇到了很多的问题,比如说当我们组把之前设计出的基本模块整合在一起的时候,结果程序运行出错,在我们细致的分析整个程序后才发现原来只是TLC2543在进行A/D转换时的方式控制字设置有问题,改正之后程序才运行正常。这个问题也提醒我们在编程的时候,尤其是在使用汇编语言这种繁冗的语言编程更是需要细心和耐心,这样才不会出现一些马虎的错误

20、。 经过这次的实际动手操作,让我明白不仅要充分的掌握课本上的知识,而且要活学活用、学以致用,不能过分强调基本理论的掌握,而应该侧重于基本知识和实际的相结合。我觉得,从单片机这门课程的特点来看,微机系统如何与外部设备连接、如何与它们交换信息,这才是我们学习单片机的关键所在,而具有一定的系统分析能力和设计能力才是本次实习的目的。本次实习使我把学到的理论知识和实际的硬件相结合,对单片机这门课程又有了新的理解和认识,这对于我今后的学习会有事半功倍的效果。非常感谢本次实习给了我这样一个锻炼我的机会,在此也感谢老师对我的指导!七、参考文献1、单片机原理及应用 张毅刚、刘杰 哈尔滨工业大学2、单片机基础第三版 李广弟、朱月秀、冷祖祁 人民邮电3、单片微型计算机第三版 李群芳、张士军 电子工业出版社

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

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