1、2 数字电压表设计与调试数字电压表设计与调试1 并行并行ADC实现数字电压表实现数字电压表2 串行串行ADC实现数字电压表实现数字电压表项目项目2 数字电压表设计与调试数字电压表设计与调试子项目子项目1并行并行ADC实现数字电压表实现数字电压表教学目标教学目标u掌握掌握ADC0808用法;用法;u完成程序设计与调试。完成程序设计与调试。任务任务1 十六进制显示电压表十六进制显示电压表 利用单片机控制利用单片机控制ADC0808,对变阻器电压进行,对变阻器电压进行实时数据采集,并将电压数据按照两位十六进制形实时数据采集,并将电压数据按照两位十六进制形式显示在数码管上。式显示在数码管上。一、任务说
2、明一、任务说明任务任务1 十六进制显示电压表十六进制显示电压表1.硬件分析硬件分析(1)关于)关于ADC0808*概述:概述:ADC0808是是8位位8模拟量输入通道的逐次逼近型模拟量输入通道的逐次逼近型A/D转换器。转换器。8通道多路转换器能直接连通通道多路转换器能直接连通8个单端模拟信号个单端模拟信号中的任何一个中的任何一个,输出输出8位二进制数字量。位二进制数字量。二、任务分析二、任务分析任务任务1 十六进制显示电压表十六进制显示电压表*ADC0808的引脚的引脚ADDC ADDB ADDA通道 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1
3、1 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7任务任务1 十六进制显示电压表十六进制显示电压表ADC0808为为28脚双列直插式封装,各引脚功能如下:脚双列直插式封装,各引脚功能如下:IN0IN7:8路模拟量输入端,信号电压范围为路模拟量输入端,信号电压范围为05V。ADDA、ADDB、ADDC:模拟输入通道地址选择线,:模拟输入通道地址选择线,其其8种编码分别对应种编码分别对应IN0IN7。ALE:地址锁存允许输入信号线,该信号的上升沿将地:地址锁存允许输入信号线,该信号的上升沿将地址选择信号址选择信号A、B、C地址状态锁存至地址寄存器。地址状态锁存至地址寄存器。STAR
4、T:A/D转换启动信号,其下降沿启动内部控制逻转换启动信号,其下降沿启动内部控制逻辑开始辑开始A/D转换。转换。EOC:A/D转换结束信号,当进行转换结束信号,当进行A/D转换时,转换时,EOC输输出低电平,转换结束后,出低电平,转换结束后,EOC引脚输出引脚输出高电平高电平,可作中断,可作中断请求信号或供请求信号或供CPU查询。查询。任务任务1 十六进制显示电压表十六进制显示电压表OUT1OUT8:8位数字量输出端,接单片机并行口。位数字量输出端,接单片机并行口。OE:输出允许控制端,高电平有效。高电平时将:输出允许控制端,高电平有效。高电平时将A/D转换转换后的后的8位数据送出。位数据送出
5、。CLOCK:时钟输入端,它决定:时钟输入端,它决定A/D转换器的转换速度,其转换器的转换速度,其频率范围为频率范围为101280KHz,500KHz时对应转换速度约为时对应转换速度约为128us。VREF(+)、VREF(-):内部:内部D/A转换器的参考电压输入端。转换器的参考电压输入端。Vcc:+5V电源输入端,电源输入端,GND为接地端地。一般为接地端地。一般REF(十十)与与VCC连接在一起,连接在一起,REF(一一)与与GND连接在一起。连接在一起。任务任务1 十六进制显示电压表十六进制显示电压表*ADC0808的工作过程的工作过程EOC=0EOC=1任务任务1 电路图电路图共阳极
6、共阳极数码管数码管500K信信号源号源generators滑线变滑线变阻器阻器POT-HG电位器电位器(参照)(参照)模拟量模拟量通道通道1任务任务1 十六进制显示电压表十六进制显示电压表 任务要求对变阻器电压进行实时采集和显示,设计任务要求对变阻器电压进行实时采集和显示,设计的程序应该不断将采集到的模拟电压转换为数字量并按的程序应该不断将采集到的模拟电压转换为数字量并按照两位十六进制数显示在数码管上。照两位十六进制数显示在数码管上。所以程序应该是数码管动态显示模块(所以程序应该是数码管动态显示模块(void display())和)和AD转换模块(转换模块(void adc0808())的无
7、限循环。)的无限循环。2.软件分析软件分析任务任务1 十六进制显示电压表十六进制显示电压表#include“reg51.h“/51单片机头文件单片机头文件 sbit ADDA=P20;/定义关键引脚定义关键引脚sbit ADDB=P21;sbit ADDC=P22;sbit START=P23;sbit OE=P24;sbit EOC=P25;unsigned char dat=0;/数字量电压值数字量电压值unsigned char seg16=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 x88,0 x83,0
8、xC6,0 xA1,0 x86,0 x8E;/共阳极七段码共阳极七段码0f2.软件分析软件分析变量定义部分变量定义部分任务任务1 十六进制显示电压表十六进制显示电压表void display()/2位动态显示子函数位动态显示子函数unsigned char k;P3=0 x01;/通过通过P3口选中个位数码管口选中个位数码管P1=segdat%16;/电压值对电压值对16取余,余数就是个位显示值,取余,余数就是个位显示值,/从数组从数组seg中取对应的七段码送字型口中取对应的七段码送字型口P1for(k=0;k150;k+);/总线延时总线延时P3=0 x02;/通过通过P3口选中十位数码管口
9、选中十位数码管P1=segdat/16;/电压值除以电压值除以16,商就是十位显示值,从数,商就是十位显示值,从数 /组组seg中取对应的七段码送字型口中取对应的七段码送字型口P1for(k=0;k150;k+);/总线延时总线延时2.软件分析软件分析数码管动态显示部分数码管动态显示部分任务任务1 十六进制显示电压表十六进制显示电压表2.软件分析软件分析AD转换部分转换部分EOC=0EOC=1任务任务1 十六进制显示电压表十六进制显示电压表void main()/主函数主函数while(1)display();adc0808();2.软件分析软件分析主函数主函数任务任务1 十六进制显示电压表十
10、六进制显示电压表三、任务实施三、任务实施任务任务1 十六进制显示电压表十六进制显示电压表四、任务拓展四、任务拓展显示原始电压值,例如显示原始电压值,例如2.25V。任务任务2 原始电压显示电压表原始电压显示电压表 利用单片机控制利用单片机控制ADC0808,对变阻器电压进行,对变阻器电压进行实时数据采集,并将原始电压数据显示在数码管上,实时数据采集,并将原始电压数据显示在数码管上,如如2.25。一、任务说明一、任务说明任务任务2 原始电压显示电压表原始电压显示电压表1.原始电压值求取思路(以原始电压值求取思路(以2.25V为例)为例)变阻器电压经过变阻器电压经过ADC0808转换之后得到数字量
11、转换之后得到数字量dat=2.25*255/5=115=73H将将dat(73H)转化回原始电压转化回原始电压2.25V有两种方法有两种方法(1)dat除以除以51(255/5=51),即),即115/51=2.25(2)dat乘以分辨率乘以分辨率(5/255=0.0196),即,即115*0.00196=2.25 二、任务分析二、任务分析任务任务2 原始电压显示电压表原始电压显示电压表2.原始电压值转换程序原始电压值转换程序 无论哪一种方法都需要编程取出个位、十分位和百分位无论哪一种方法都需要编程取出个位、十分位和百分位的显示值的显示值2、2、5,送交数码管显示,个位数码管的小数点,送交数码
12、管显示,个位数码管的小数点需要单独点亮。需要单独点亮。因此先定义显示代码数组因此先定义显示代码数组 char dis3,分别存放个位、,分别存放个位、十分位和百分位的显示值。十分位和百分位的显示值。(1)dat除以除以51dis2=数字量数字量dat对对51取商(个位)取商(个位)dis1=上次运算的余数扩大十倍再对上次运算的余数扩大十倍再对51取商(十分位)取商(十分位)dis0=上次运算的余数扩大十倍再对上次运算的余数扩大十倍再对51取商(百分位)取商(百分位)任务任务2 原始电压显示电压表原始电压显示电压表(2)dat乘以分辨率乘以分辨率 直接乘以直接乘以0.0196得到得到2.25,不
13、方便取显示值,应乘以,不方便取显示值,应乘以1.96,得到得到225,然后取显示值。,然后取显示值。因此先定义变量因此先定义变量 int vol;vol=dat*1.96;或者或者vol=dat*500.0/255;dis2=vol对对100取商(个位)取商(个位)dis1=vol对对100取余再除以取余再除以10(十分位)(十分位)dis0=vol对对10取余(百分位)取余(百分位)任务任务2 原始电压显示电压表原始电压显示电压表3.电电压压值值的的显显示示 电压值个位电压值个位显示值的七显示值的七段码跟相与段码跟相与清零最高位清零最高位(字段(字段dp)点亮小数点点亮小数点任务任务2 原始
14、电压显示电压表原始电压显示电压表三、任务实施三、任务实施任务任务2 原始电压显示电压表原始电压显示电压表四、任务拓展四、任务拓展1.如何实现如何实现4位电压显示(增加千分位)?位电压显示(增加千分位)?2.如何实现多路电压巡回检测?如何实现多路电压巡回检测?任务任务3 八路巡检电压表八路巡检电压表一、任务说明一、任务说明 利用单片机控制利用单片机控制ADC0808完成八路模拟量完成八路模拟量电压循环检测并显示。电压循环检测并显示。数码管最高位显示模拟量支路编号,其余数码管最高位显示模拟量支路编号,其余3位显示支路电压原始值每秒切换检测支路。位显示支路电压原始值每秒切换检测支路。任务任务3 八路
15、巡检电压表八路巡检电压表二、任务分析二、任务分析1.硬件分析硬件分析 在任务在任务1的电路中添加另外的电路中添加另外7个模拟量电压个模拟量电压输入量,使得输入量,使得ADC0808的每个模拟量输入通道的每个模拟量输入通道都输入一个可变化的模拟量电压,如下图所示。都输入一个可变化的模拟量电压,如下图所示。任务任务3 电路图电路图支路支路编号编号电压电压值值任务任务3 八路巡检电压表八路巡检电压表2.软件分析软件分析-整体分析整体分析 利用定时器定时利用定时器定时1秒,主函数完成定时器和中断秒,主函数完成定时器和中断初始化后,不断重复调用显示子函数和初始化后,不断重复调用显示子函数和AD转换子函数
16、。转换子函数。每到每到1秒,在中断服务子函数中修改支路编号,秒,在中断服务子函数中修改支路编号,完成新支路的电压转换和显示。完成新支路的电压转换和显示。任务任务3 八路巡检电压表八路巡检电压表2.软件分析软件分析-函数构成函数构成任务任务3 八路巡检电压表八路巡检电压表2.软件分析软件分析-变量定义变量定义 新定义无符号字符型全局变量新定义无符号字符型全局变量count(统计中断次(统计中断次数)、数)、number(存放支路编号)。(存放支路编号)。任务任务3 八路巡检电压表八路巡检电压表2.软件分析软件分析-主函数主函数无限无限循环循环TMOD=?TH0=?TL0=?ET0=?EA=?TR
17、0=?任务任务3 八路巡检电压表八路巡检电压表2.软件分析软件分析-定时中断服务子函数定时中断服务子函数否否否否任务任务3 八路巡检电压表八路巡检电压表2.软件分析软件分析-支路编号判断子函数支路编号判断子函数任务任务3 八路巡检电压表八路巡检电压表三、任务实施三、任务实施任务任务3 八路巡检电压表八路巡检电压表四、任务拓展四、任务拓展利用利用6位数码管显示位数码管显示8路巡检电压,如下图所示路巡检电压,如下图所示项目项目2 数字电压表设计与调试数字电压表设计与调试子项目子项目2 串行串行ADC实现数字电压表实现数字电压表教学目标教学目标u掌握串行掌握串行DAC用法;用法;u完成程序设计与调试
18、。完成程序设计与调试。任务任务1 原始电压显示电压表原始电压显示电压表利用利用TLC549实现模拟电压的实时检测,实现模拟电压的实时检测,并将原始电压值显示在数码管上。并将原始电压值显示在数码管上。一、任务说明一、任务说明任务任务1 原始电压显示电压表原始电压显示电压表1.硬件分析硬件分析(1)芯片简介)芯片简介TLC549是美国德州仪器公司生产的是美国德州仪器公司生产的8位串行位串行A/D转换器芯转换器芯片,可与通用微处理器、控制器通过片,可与通用微处理器、控制器通过CLK、CS、DATA OUT三条口线进行串行接口。具有三条口线进行串行接口。具有4MHz片内系统时钟和片内系统时钟和软、硬件
19、控制电路,转换时间最长软、硬件控制电路,转换时间最长17s。一、任务分析一、任务分析任务任务1 原始电压显示电压表原始电压显示电压表(2)芯片引脚)芯片引脚SCLK:串行串行I/O时钟输入端。时钟输入端。CS:芯片选用通端。芯片选用通端。SDO:数字量输出端。数字量输出端。AIN:模拟信号输入端。:模拟信号输入端。REF+、REF-:基准电压输:基准电压输入端。入端。任务任务1 原始电压显示电压表原始电压显示电压表(2)芯片工作时序)芯片工作时序CSCS变低,变低,DODO输出输出上次上次ADAD转换数转换数字量最字量最高位高位每个每个CLOCKCLOCK的的下降沿下降沿读读1 1位数位数第第
20、8 8个个CLOCKCLOCK的的下降沿后将下降沿后将CSCS置置1 1,再次启,再次启动动ADAD转换,此转换,此时时DODO保持高阻保持高阻状态状态CSCS再次变低,再次变低,DODO输出上次输出上次ADAD转换数字转换数字量最高位量最高位任务任务1 电路图电路图任务任务1 原始电压显示电压表原始电压显示电压表2.软件分析软件分析整体分析整体分析整体程序应该是数码管动态显示模块(整体程序应该是数码管动态显示模块(void display())和)和AD转换模块(转换模块(void tlc549())的无)的无限循环。程序结构参照子项目限循环。程序结构参照子项目1的任务的任务2。任务任务1
21、原始电压显示电压表原始电压显示电压表2.软件分析软件分析TLC549工作流程工作流程8次次任务任务1 原始电压显示电压表原始电压显示电压表三、任务实施三、任务实施任务任务1 原始电压显示电压表原始电压显示电压表四、任务拓展四、任务拓展利用利用4片片TLC549实现实现4个支路的电压巡检。个支路的电压巡检。任务任务2 四路巡检电压表四路巡检电压表一、任务说明一、任务说明利用利用4片片TLC549实现实现4个支路的电压巡检。个支路的电压巡检。任务任务2 四路巡检电压表四路巡检电压表二、任务分析二、任务分析1.硬件分析硬件分析4片片TLC549通过各自的通过各自的CS端轮流选中(置零),端轮流选中(
22、置零),任意时刻只有一片任意时刻只有一片549选中,选中的芯片选中,选中的芯片SDO端可以读数,其余三个芯片端可以读数,其余三个芯片SDO端输出为高阻端输出为高阻状态(状态(Z状态),因此可以采用以下接线方法:状态),因此可以采用以下接线方法:4个芯片的个芯片的CS端采用独立连接端采用独立连接4个芯片的个芯片的SCLK共用共用4个芯片的个芯片的SDO端构成单向数据总线端构成单向数据总线当EN1、EN2、EN3轮流为高电平 1,且任何时刻只能有一个三态输出门工作时,则输入信号A1B1、A2B2、A3B3 轮流以与非关系将信号送到总线上,而其它三态输出门由于EN=0 而处于高阻状态,与总线断开。总
23、线 用三态输出门构成单向总线用三态输出门构成单向总线 数字电路基础:三态输出门应用数字电路基础:三态输出门应用任务任务2 电路图电路图任务任务2 四路巡检电压表四路巡检电压表2.软件分析软件分析-整体分析整体分析 利用定时器定时利用定时器定时1秒,主函数完成定时器和中断初秒,主函数完成定时器和中断初始化后,不断重复调用显示子函数和始化后,不断重复调用显示子函数和AD转换子函数。转换子函数。每到每到1秒,在中断服务子函数中修改支路编号,完秒,在中断服务子函数中修改支路编号,完成新支路的电压转换和显示。成新支路的电压转换和显示。任务任务2 四路巡检电压表四路巡检电压表2.软件分析软件分析-函数构成函数构成任务任务2 四路巡检电压表四路巡检电压表三、任务实施三、任务实施任务任务2 四路巡检电压表四路巡检电压表四、任务拓展四、任务拓展如何利用如何利用10位串行位串行ADC实现数字电压表?实现数字电压表?项目项目2 数字电压表数字电压表项目项目2总结总结项目项目2 数字电压表数字电压表项目结束项目结束
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。