数字万用表 单片机课程设计Word格式文档下载.docx
《数字万用表 单片机课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字万用表 单片机课程设计Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
P3.7控制ADC0809的转换结束信号系统框图如图1-1所示
图1-1
硬件选择方案:
一、实验所需元器件
1.AT89S51芯片1块
2.AD0809芯片1块
3.74HC2452块
4.4位一体数码1个
5.6MHZ晶振1个
6.33pF电容2个
7.0.1μf滤波电容2个
8.10μf电解电容1个
9.按键开关1个
10.发光二极管1个
11.4.7KΩ精密电位器1个
12.510Ω电阻12个
13.8.2KΩ电阻1个
14.10KΩ电阻1个
15.导线若干
二、主要元器件的介绍
1、模数转换芯片ADC0809:
ADC0809是典型的8通8位通道逐次逼近式A/D转换器,它可以喝微型计算机直接接口。
(1)ADC0809内部逻辑框图
图1-2ADC0809内部逻辑框图及引脚图
ADC0809的内部逻辑框图如图1-2所示。
途中多路模拟开关可选通8路模拟通道,允许8位模拟量分时输入,并共用一个A/D转换器进行转换器,地址锁存器与译码电路完成对A、B、C三个地址位进行所存与译码
C(ADDC)
B(ADDB)
C(ADDA)
选择的通道
IN0
1
IN1
IN2
IN3
IN4
IN5
IN6
IN7
ADC0809通道选择表
(2)ADC0809的引脚
ADC0809芯片为28引脚双列直插式装置其引脚排列图为1-2所示。
(3)ADC0809的工作原理
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中,此地址经译码选通8路模拟输入之一的比较器。
启动端上升沿逐次逼近寄存器复位,下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行,知道A/D转换完成。
EOC变为高电平,指示A/D转换结束,结果数据已经存入锁存器,这个信号可用作中断申请,当OE输入为高电平时,输出三态门打开,转换结果的数字量输出到输出总线上。
图1-3ADC0809信号的时序配合
2.数据处理及控制芯片AT89S51
AT89S51是低功耗,高性能CMOS8位单片机,图1-4为内部总体结构,AT89S51内部含4K字节闪速存储器,128字节RAM,32个I/O口线,两个数据指针,两个16位定时器、计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时S51可降至0HZ的静态逻辑操作,并支两种软件可选的节电工作模式,空闲方式停止CPU的工作,但允许RAM,定时、计数器,串行通信口及中断系统继续工作,直到下一个硬件复位,由于将多功能8位CPU和闪烁存储器组合在单个芯片中。
图1-489S51芯片内部总体结构
(1)主要性能参数
与MCS-51产品指令系列完全兼容
4K字节在系统编程闪速存储器
1000次擦写周期
4.0~5.5V的工作范围
全静态工作模式0HZ~33MHZ
三级程序加密码锁
128个字节内部RAM
32个可编程I/O口线
2个16位定时器/计数器
6个中断源
全双工串行UART通道
低功耗空闲和掉电模式
中断可从空闲模式唤醒系统
看门狗(WDT)及双数据指针
掉电标志和快速编程特性
灵活的系统编程
(2)AT89S51的引脚:
AT89S51芯片为40引脚双列直插式封装,其引脚排列图为1-5
图1-5AT89S51引脚图
(3)P2口:
P2口是一个内部提供上的拉电阻的8位双向I/O口,P2的输出缓冲器可驱动4个TTL逻辑门电路,对P2口管脚写入”1”后,被内部上拉电阻拉高,可作用输入。
P2口被外部下拉为低电平时,将输出电流,这事由于内部有上拉电阻的缘故,P2口当用于外部程序或16位地址外部数据存储器进行存取时,P2口输出地址的高8位,在访问8位地址外部数据存储器时,P2口线上的内容,在访问整个期间不改变P2口在编程和校验时接收高8位地址信号和控制信号。
(4)P3口:
P3是一个内部提供上拉电阻的8位双向I/O口,P3口的输出缓冲器可驱动4个TTL逻辑门电路,对P3口写1后被内部上拉电阻拉高,可作用输入,P3口被外部下拉电阻拉低时,将输出电流,这是由于内部上有上拉电阻的缘故,P3口除了一般I/O口的功能外,还有重要的第二功,
P3口同时为编程和校验接收一些控制信号。
1.VCC:
电源电压
2.DND;
接地
3.P0口:
P0口试一组8位漏极开路双向I/O口,每位引脚可驱动8个TTL逻辑门电路,对P0口写1时,被定义为高阻抗输入,在访问外部数据存储器或程序存储器时,它可以定义为地址总线和数据总线的低八位
4.P1口:
是一个内部提供上拉电阻的8位双向I/O口,它可驱动4个TTL逻辑门电路,对P1写1,被上拉电阻拉高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部有上拉电阻,在编程和校验时,P1口作为低8位地址接收,且具有第二功能。
如图表1-2
表1-2
5.RST:
复位输入,当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间
6.ALE/RPOG:
当访问外部存储器时,地址锁存器允许的输出电平用于锁存地址的地位字节,编程时此引脚用于输出编程脉冲,在平时ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,因此它可用作对外部输出脉冲或用于定时目的。
每当用作外部存数据存储器时,将跳过一个ALE脉冲,如想禁止ALE的输出可在SFR8EH地址上置0,此时ALE只有执行MOVX,MOVC指令时ALE才起作用,该引脚被略微拉高,如果微处理器在外部执行状态ALE禁止,置为无效。
7.PSEN:
外部程序存储器的选通信号,在由外部程序存储器去指期间,每个机器周期两次/PSEN有效,在访问外部数据存储器时,这两次有效的信号,将不出现。
8.EA/VPP:
当保持低电平时,则在此期间外部数据存储器,不管是否有内部数据存储器,注意加密方式为1时,/EA将内部锁定为RESET,当/EA保持高电平时,此间内部程序存储器,在编程期间此引脚用于12V编程电源(VPP)
9.XTAL1:
片内高增益反向放大器的的输入内部时钟工作的电路的输入
10.XTAL2:
片内高增益反向放大器的的输出端。
(5)AT89S51的复位电路
AT89S51的复位电路如图1-6,当单片机一上电,立即复位,另外,如果在运行中,外界干扰等因素使单片机的程序陷入死循环状态,就可以通过按键使它复位,复位也是使单片机退出低功耗工作方式而进入正常状态的一种操作。
图1-6复位电路
电容C和电阻R1实现上电自动复位,增加按键开关S和电阻R2,又可实现按键复位功能,R2的作用是在S按下的时候,防止电容C放电电流过大烧坏开关S的触点,因保证R1/R2>
10,一般去C=10μf,R2=100Ω,R1=8.2Ω
(6)AT89S51和ADC0809的连接
AT89S51和ADC0809的连接电路图位1-7它的三个问题
1.启动端送一个100ns宽的启动正脉冲
2.在获取EOC端上的状态信息,因为是A/D转换的结束标志。
3.给“三态输出锁存器”分配一个端口地址,也就是给OE端送一个地址译码器的输出信号。
1-7AT89S51和ADC0809的连接电路图
(7)驱动芯片74HC245
74HC245为三态输出的8组总线收发器,在本实验中作为驱动芯片使用,用于驱动数码管的点亮,1-8为引脚图。
图1-874HC245引脚图
1.A;
A总线端
2.B;
B总线端
3./G:
三态存储器(低电平有效)
4.DIR:
方向控制端
5.VCC:
电源
6.GND:
三、程序设计
1.主程序设计
初始化中主要对AT89S51和ADC0809的管脚和数码管的为选及所用到的内存呢单元70H,78H,79H,7AH,进行初始化设置。
准备工作做好后便启动ADC0809对IN0脚输入进的0~5V电压模拟信号进行数据采集并转换成相对应的0~255十进制数字量
在数据处理子程序中,运用标度变换知识,编写输入法0~255十进制数字量转换成0.00~5.00V的数据,输出到显示主程序进行显示,
整个主程序就是A/D转换,数据处理及显示程序循环执行,整个流程图如下图1-9
图1-9
2.子程序设计
(1)A/D转换子程序
启动ADC0809对模拟量输入信号进行转换,通过判断EOC来确定转换是否完成,若EOC为0则继续等待,若EOC为1则把EOC=1,则把OE置位,将转换完成的数据存到70H中。
子程序流程图1-10
图1-10子程序流程图
(2)数据处理子程序
数据处理子程序主要根据标度变换公示1-1
程序流程图为1-11
图1-11数据处理子程序流程图
(3)显示子程序
采用动态扫描法实现三位数码管的数值显示,测量所得的A/D转换数据放在70H内存单元中,测量数据在显示时需要转成十进制BCD码放在78H~7AH单元中,寄存器R1用作显示数据地址指针,程序流程图如图1-12
图1-12程序流程图
源程序:
ORG0000H
LJMPSTART
ORG0003H
RETI
ORG000BH
ORG0013H
ORG001BH
ORG0023H
ORG002BH
ORG0030H
初始化参数:
STARTCLRA
SETBP3.7
CLRP3.0
CLRP3.1
CLRP3.2
MOVP2,A
MOV70H,A
MOV78H,A
MOV79H,A
MOV7AH,A
MOVA#0FFH
MOVP0,A
MOVP1,A
主程序:
MAINLCALLAD_SUB
LCALLTURN_SUB
0.00~5.00
LCALLDISP_SUB
LIMPMAIN
A/D转换子程序
AD_SUB:
CLRA
MOVR0,#70H
LCALLAD_ST
WAIT:
JBP3.7,DATASAVE
AJMPWAIT
AD_ST:
SETBP2.3
NOP
CLRP2.3
SETBP2.4
CLR2.4
RET
采样转换的数据储存
DATASAVESETBP2.5
MOVA,P0
MOV@R0,A
CLRP2.5
MOVA,#0FFH
将0!
255转换为0.00~5.00
TURN_SUB:
MOVA,@R0
MOVB,#51
DIVAB
MOVA,B
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
JBF0,LOOP1
ADDA,#5
LOOP1MOV79H,A
SUBBA,#1AH
MOVB,#51
JBF0,LOOP2
ADD,A,#5
LOOP2:
显示子程序
DISP_SUB:
MOVR1,#78H
MOVP1,#0FFH
ANLP2,A
LCALLPLAY
CLRP1.7
SETBP3.0
LCALLDELAY
INCR1
SETBP3.1
SETBP3.2
位码显示
PLAY:
MOVA,@R1
MOVDPDR,#TAB
MOVCA,@A+DPTR
延时程序
DELAY:
MOVR6,#10H
DL1:
MOVR7,#10H
DL2:
DJNZR7,DL2
DJNZR6,DL1
心得与体会
.