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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

利用51单片机与ADC0809和数码管设计数字电压表.docx

1、利用51单片机与ADC0809和数码管设计数字电压表 利用51单片机与ADC0809和数码管设计数字电压表一、课题功能描述:利用单片机AT89C51 芯片与ADC0809 芯片设计一个数字电压表,能够测 量05V 之间的直流电压,三位数码显示。2、程序设计本实验采用AT89C51 单片机芯片配合 ADC0809 模/数转换芯片构成一个简 易的数字电压表,原理电路如图1-1 所示。该电路通过 ADC0809 芯片采样输入口 AI0 输入的05V 的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0D7 传送给 AT89C51 芯片的F0口。AT89C51负责把接收到的数字量经过数据

2、处理,产生正确的7段数码管的显示段码,并通过P1 口传送给数码管。同时它还通过其三位 I/O 口 P3.0、P3.1、P3.2 产生位片选信号,控制数码管的亮灭。另外,AT89C51 还控制着 ADC0809 的工作。其ALE管脚为 ADC0809提供了 1MHZ 工作的时钟脉冲;P2.3 控制 ADC0809 的地址锁存端(ALE); P2.4 控制 ADC0809 的启动端(START); P2.5 控制 ADC0809 的输出允许端(OE); P3.7 控制 ADC0809 的转换结束信号(EOC)。电路原理图如下:三、 器件清单: 1 . AT89S51 芯片 1块 2 . ADC08

3、09 芯片 1块 3 . 74HC245 芯片 1块 4 . 数码管 1个 5 . 6MHZ 晶振 1个 6 . 30pF 电容 2个 7 . 10uF 电解电容 1个 8 . 复位电容 1个 9 . 510电阻 8个 10. 10K电阻 1个 11. 导线 若干4、程序设计1、主程序设计由于ADC0809 在进行A/D转换时需要有CKL 信号,而此时的 ADC0809 的CLK 是连接在 AT89C51 单片机的30管脚,也就是要求从30管脚输出CLK 信号供 ADC0809 使用。因此产生 CLK 信号的方法就等于从软件产生。电压表系统有主程序,A/D 转换子程序和显示子程序,如下流程1-

4、2所示:2、A/D 转换子程序启动 ADC0809 对模拟量输入信号进行转换,通过判断 EOC(P3.7)来确定转换是否完成, 若EOC 为0则继续等待;若 EOC为1,则把OE 置位,将转换完成的数据存储到 70H 中。程序流程图如图1-33、数据处理子程序数据处理子程序主要根据标度变换公式1-1,把0255十进制数转换为0.005.00V. AX=A0+(Am-A0)(NX-N0/Nm-N0) (1-1) Ax: 模拟测量值; A0: 模拟输入最小值; Am: 模拟输入最大值;NX: 模数转换后的值; N0:模/数转换后的最小值;Nm:模/数转换后的最大值 。在本设计中,根据要求知:A0=

5、0V,Am=5V,N0=0,Nm=255,则公式1-1可化简为: AX=A0+(Am-A0)(NX-N0/Nm-N0)=5NX/255=NX/51 (1-2) 程序流程图如图1-4所示:4、显示子程序显示子程序采用动态扫描法实现三位数码管的数值显示。测量所得的A/D转换数据放在70H存单元中,测量数据在显示时需转换成10进制BCD码放在78H7AH单元中。寄存器R1用作显示数据地址指针。程序流程图如1-5所示:5、程序代码 ORG 0000H LJMP START ORG 0030H ;初始化参数 START: CLR A SETB P3.7 ;初始化EOC CLR P3.0 ;初始化LED位

6、选,全不选中。 CLR P3.1 CLR P3.2 MOV P2,A ;初始化P2口,清除对ADC0809的控制信号。 MOV 70H, A ;初始化数据采样后存储空间。 MOV 78H, A ;初始化数据处理后3位有效数字的存储空间 MOV 79H, A MOV 7AH, A MOV A ,#0FFH ;初始化P0,P1口,写入高电平 MOV P0, A MOV P1, A ;主程序 MAIN: LCALL AD_SUB ;调用A/D转换子程序,开始采样并转换。 LCALL TURN_SUB ;调用数码转换子程序,将采样转换来的 0-255转换成意义对应的 ;0.00-5.00 LCALL

7、DISP_SUB ;调用显示子程序。 LJMP MAIN ;A/D转换子程序 AD_SUB: CLR A MOV P2, A ;初始化P2口,清除对ADC0809的控制信号。 MOV R0,#70H LCALL AD_SUB ;调用采样子程序 WAIT: JB P3.7,DATASAVE ;判断采样转换是否完毕,完毕则跳转到DATASAVE进行存储。 AJMP WAIT ;否则继续等待。 ;启动采样,送脉冲时序 AD_SUB: SETB P2.3 ;ALE 脉冲时序 NOP NOP CLR P2.3 SETB P2.4 ;START脉冲时序 NOP NOP CLR P2.4 NOP NOP R

8、ET ;采样转换的数据存储 DATASAVE: SETB P2.5 ;置位OE端,允许ADC0809输出数据 MOV A , P0 ;将转换的数据存储到70H中 MOV R0,A CLR P2.5 CLR A ;初始化P0,P1,P2口 MOV P2 ,A MOV A,#0FFH MOV P0 ,A MOV P1 ,A RET ;将0-255转换为0.00-5.00 TURN_SUB: MOV A ,R0 MOV A ,#51 DIV AB MOV 78H, A ;以上这一段是整数部分放入78H MOV A , B ;余数部分放入A CLR F0 SUBB A ,#1AH ;余数和51的一半即

9、1AH比较,以便四舍五入 MOV F0 , C MOV A ,#10 MUL AB ;余数乘以10,以便再除以51 MOV B , #51 DIV AB JB F0,LOOP1 ;判断四舍五入,跳到LLOP1是“四舍” ADD A ,#5 ;这是“五入” LOOP1: MOV 79H,A ;十分位 MOV A ,B CLR F0 SUBB A ,#1AH MOV F0 ,C MOV A ,#10 MUL AB MOV B , #51 DIV AB JB F0,LOOP2 ADD A ,#5 LOOP2: MOV 7AH, A ;百分位 RET ;显示子程序 DISP_SUB: MOV R1 ,

10、#78H ;R1辅助寄存器,用于存放要显示的数据的地址 CLR A MOV P1,#0FFH ;初始化P1,P2口 ANL P2 ,A LCALL PLAY ;调用显示位码子程序 CLR P1.7 ;显示最高位后的小数点 SETB P3.2 ;选中最高位LED 数码管 LCALL DELAY ;调用延迟子程序 CLR P3.2 ;取消最高位位选 INC R1 ;提取第二位有效数字的数据地址 LCALL PLAY ;调用显示位码子程序 SETB P3.1 ;选中第二位LED 数码管 LCALL DELAY ;调用延迟子程序 CLR P3.1 ;取消第二位位选 INC R1 ;提取最低位有效数字的

11、数据地址 LCALL PLAY ;调用显示位码子程序 SETB P3.0 ;选中最低位LED 数码管 LCALL DELAY ;调用延迟子程序 CLR P3.0 ;取消最低位位选 RET ;位码显示 PLAY: MOV A,R1 ;送偏移量 MOV DPTR,#TAB ;送表首地址 MOVC A,A+DPTR ;查表得出相应LED段码 MOV P1, A ;输出显示 RET ;延时程序 DELAY: MOV R6,#10H DL1:MOV R7,#10H DL2:DJNZ R7,DL2 DJNZ R6,DL1 RET ;09段码 TAB: DB 0C0H , 0F9H , 0A4H , 0B0

12、H , 99H , 92H , 82 , 0F8H , 80H , 90H END6、调试(测试)过程 1.焊好的电路板,在与仿真器接入之前,需要进行电路检查,防止短路烧毁芯片。2.在把程序写入单片机部之前,需要先在仿真器上先运行。尽量避免单片机写入之后再擦除。3.仿真器运行时,显示管完全不亮,而P1口的值却有变化,说明有可能是 74HC245芯片处的电路没有接好。4.显示管有点暗,可能是延时时间调得有点过大了。如果发现显示管的 某一笔画不亮,那么就有可能是该点对应的I0口没有接好,或者是对应的电阻坏掉了。七、实验小结经过两周的实验,我真的学到了很多的东西。经过一个学期的学习,我对于单片机的硬件电路设计与编程都有了一定的了解。在这个项目中,在已经有了程序和电路图以后,我还是感到这个实训有点吃力,或许真的是我们的水平不够吧!我个人认为,实际意义上的学习单片机还没有结束,因为作为电子信息专业的我们,必须对于单片机编程与C语言有一定的熟悉与了解,这样才能在以后实习和工作中才能在社会上谋求自己的一席之地!

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

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