利用51单片机与ADC0809和数码管设计数字电压表.doc_第1页
利用51单片机与ADC0809和数码管设计数字电压表.doc_第2页
利用51单片机与ADC0809和数码管设计数字电压表.doc_第3页
利用51单片机与ADC0809和数码管设计数字电压表.doc_第4页
利用51单片机与ADC0809和数码管设计数字电压表.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

利用51单片机与ADC0809和数码管设计数字电压表一、课题功能描述:利用单片机AT89C51 芯片与ADC0809 芯片设计一个数字电压表,能够测 量05V 之间的直流电压,三位数码显示。2、 程序设计本实验采用AT89C51 单片机芯片配合 ADC0809 模/数转换芯片构成一个简 易的数字电压表,原理电路如图1-1 所示。该电路通过 ADC0809 芯片采样输入口 AI0 输入的05V 的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0D7 传送给 AT89C51 芯片的F0口。AT89C51负责把接收到的数字量经过数据处理,产生正确的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 . ADC0809 芯片 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-2所示:图1-2主程序流程图调用显示程序调用数据处理程序调用A/D转化程序初始化开始2、A/D 转换子程序启动 ADC0809 对模拟量输入信号进行转换,通过判断 EOC(P3.7)来确定转换是否完成, 若EOC 为0则继续等待;若 EOC为1,则把OE 置位,将转换完成的数据存储到 70H 中。程序流程图如图1-3开始A/D转换结束?(P3.7=1?)启动A/D转化器初始化是P2.5置位,允许输出将转换得到的数据存储结 束开始图1-3 A/D转换程序流程图3、数据处理子程序数据处理子程序主要根据标度变换公式1-1,把0255十进制数转换为0.005.00V. AX=A0+(Am-A0)(NX-N0/Nm-N0) (1-1) Ax: 模拟测量值; A0: 模拟输入最小值; Am: 模拟输入最大值;NX: 模数转换后的值; N0:模/数转换后的最小值;Nm:模/数转换后的最大值 。在本设计中,根据要求知:A0=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所示:从70H中取数据,除以51得到个位,存放在70H中,余数移入A 余数与51的一半即1AH借位相减比较,以便四舍五入,利用P0开始余数10,再除以51 商放入A中 P0=1?是 四舍否 数据调整,相当于五入 A放入79H中,得到十分位再将余数放入A中,进行除51操作P0=1? 是否A = A + 5四舍A放入7AH中,得到百分位结 束图1-4 数据处理子程序流程图 4、显示子程序显示子程序采用动态扫描法实现三位数码管的数值显示。测量所得的A/D转换数据放在70H内存单元中,测量数据在显示时需转换成10进制BCD码放在78H7AH单元中。寄存器R1用作显示数据地址指针。程序流程图如1-5所示: R1 A 查表取得相应段码 输出显示置位P1.7点亮小数点 图1-5 显示子程序流程图结 束 R1 A 查表取得相应段码 输出显示 R1=R1+1 R1 A 查表取得相应段码 输出显示 初 始 化 R1=78H,P1置高,P2置低 R1=R1+1开始5、 程序代码 ORG 0000H LJMP START ORG 0030H ;初始化参数 START: CLR A SETB P3.7 ;初始化EOC CLR P3.0 ;初始化LED位选,全不选中。 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 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 RET ;采样转换的数据存储 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.00TURN_SUB: MOV A ,R0 MOV A ,#51 DIV AB MOV 78H, A ;以上这一段是整数部分放入78H MOV A , B ;余数部分放入A CLR F0 SUBB A ,#1AH ;余数和51的一半即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 ,#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 ;提取最低位有效数字的数据地址 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 , 0B0H , 99H , 92H , 82 , 0F8H , 80H , 90H END6、 调试(测试)过程 1.焊好的电路板,在与仿真器接入之前,需要进行电路检查,防止短路烧毁芯片。2. 在把程序写入单片机内部之前,需要先在仿真器上先运行。尽量避免单片机写入之后再擦除。3. 仿真器运行时,显示管完全不亮,而P1口的值却有变化,说明有可能是 74HC245芯片处的电路没有接好。4. 显示管有点暗,可能是延时时间调得有点过大了。如果发现显示管的 某一笔画不亮,那么就有可能是链接该点对应的I0口没有接好,或者是对

温馨提示

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

评论

0/150

提交评论