单片机实训--模拟量输入输出设计与实现PPT课件_第1页
单片机实训--模拟量输入输出设计与实现PPT课件_第2页
单片机实训--模拟量输入输出设计与实现PPT课件_第3页
单片机实训--模拟量输入输出设计与实现PPT课件_第4页
单片机实训--模拟量输入输出设计与实现PPT课件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、模拟量输入输出设计与实现,教学目的,掌握模/数、数/模转换芯片与单片机的连接方法及典型应用。 掌握用查询方式、中断方式完成模/数、数/模转换程序的编写方法。,模/数、数/模转换,模拟量I/O接口的作用 实际工业生产环境连续变化的模拟量 例如:电压、电流、压力、温度、位移、流量 计算机内部离散的数字量 二进制数、十进制数 工业生产过程的闭环控制,模拟量I/O通道的组成,ADC0809模数转换器,ADC0809是8通道8位的,以逐次逼近原理进行模数转换 的器件; 内部有一个8通道模拟多路开关,它可以根据地址码锁存 译码后的信号,只选通8路模拟输入信号中的一个进行A/D 转换; A/D转换后的数据由

2、 三态锁存器输出; 片内没有时钟,需 外接时钟信号。,ADC0809主要特性,8路8位AD转换器,即分辨率8位; 具有转换起停控制端; 转换时间为100s; 单个5V电源供电; 模拟输入电压范围05V,不需零点和满刻度校准; 工作温度范围为-4085摄氏度; 低功耗,约15mW。,ADC0809外部特性一,ADC0809芯片有28条引脚,采用双列直插式封装 IN0IN7:8路模拟量输入端; D0D8:8位数字量输出端; ADDA、ADDB、ADDC:3位地址输 入线,用于选通8路模拟输入中 的一路; CLK:时钟脉冲输入端; REF(+)、REF(-):基准电压; Vcc:电源,单一5V; G

3、ND:地;,通道选择表,ADC0809外部特性二,ALE:地址锁存允许信号,输入,高电平有效。 START:AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC:AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。,ADC0809工作过程,首先输入3位地址,并使ALE=1,将地址存入地址锁存器中; 此地址经译码选通8路模拟输入之一到比较器; START上升沿将逐次逼近寄存器复

4、位; 下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行; 直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可用作中断申请; 当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。,模数转换显示程序,模数转换显示流程图 模数转换显示程序,工作模块1 数字电压表设计与实现,使用AT89S52单片机,采用动态显示的方式,把8通道模数转换器ADC0808采样的电压值的大小经单片机处理后由数码管显示出来,量程为0-5V,显示格式:X.XXX。,数字电压表电路设计,由于需要显示多位,因此数码管采用了较节省I/O口线的动态显示方式。,认识数

5、码管(P132),数码管结构图,数码管电路图,共阴数码管,共阳数码管,数码管的编码规则,数字电压表程序设计,数码管显示电压值实现分析 模数转换采用的是8位的ADC0808,因此其分辨力为5*1/28 V,即19.6mV。为了得到各位待显示的数字的大小,采取了除法和取余相结合的方式: dat3=tmp/10000; /最高位 dat2=tmp/1000%10; dat1=tmp/100%10; dat0=tmp/10%10; /最低位 数字电压表控制C语言程序,C语言结构体类型,结构体与前面介绍过的数组一样,是一种构造类型的数据,它是将若干个不同类型的数据变量有序地组合在一起而形成的一种数据的集

6、合体。 组成该集合体的各个数据变量称为结构成员。 整个集合体使用一个单独的结构变量名。 一般来说结构中的各个变量之间是存在某些关系的,如时间数据中的时、分、秒等。,结构体类型的定义,定义一个结构体类型的一般形式为: struct 结构体名 成员项列表 ; 其中“struct”是关键字,作为定义结构体类型的标志; “结构体名”由用户自行定义; “成员列表”为该结构体中的各个成员,由于结构体可以由不同类型的数据组成,因此对结构体中各成员都要进行数据类型的说明。,结构体类型变量的定义,结构体定义好以后,就可以指明该结构体的具体对象,即定义该种类型的变量,结构体类型变量的定义主要有如下三种方式: 先定

7、义结构体类型,再定义变量名 在定义结构体类型的同时定义结构体变量名 直接定义结构体变量,先定义结构体类型,再定义变量名,定义一个表示时间的结构体类型。 struct time unsigned char hour; unsigned char minute; unsigned char second; ; 定义好一个结构体后,就可以用它来定义结构体变量。 一般格式为: struct 结构体名 结构体变量名1,结构体变量名2,.结构体变量名n; 用结构体time来定义时间的结构体变量: struct time time1; 结构体变量time1具有struct time类型的结构,可以使用该结构

8、体中的数据。,定义结构体类型的同时定义结构体变量名,一般格式为: struct 结构体名 成员列表 结构体变量名1,结构体变量名2,.结构体变量名n;,直接定义结构体变量,一般格式如下: struct 成员列表 结构体变量名1,结构体变量名2,.结构体变量名n; 第三种方法直接省略了结构体名,一般不提倡。,结构体变量的引用,定义了一个结构体变量之后,就可以对它进行引用,既可以进行赋值、存取和运算。 结构体变量的引用是通过对其成员的引用来实现的。 引用结构体变量中的成员 格式为:结构体变量名.成员名 其中“.”是引用结构体成员的运算符。例如: time1.hour = 20,表示给结构体变量ti

9、me1中的成员hour赋值。 对结构体变量中的各个成员可以像普通变量一样进行赋值、存取和运算。,结构体变量的初始化,对结构体变量可以在定义的时候进行初始化; 也可以在定义后对各个成员单独进行初始化。 例如: time1.hour = 20; /结构体成员赋初值 time1.minute = 35; time1.second = 55;,结构体变量需要注意的地方,结构体类型与结构体变量是两个不同的概念。 定义一个结构体类型时只给出了该结构体的组织形式,并没有给出具体的组织成员,因此结构体不占用任何存储空间。 结构体变量则是一个结构体中的具体对象,会给结构体变量分配存储空间,因此可以对结构体变量名进行赋值、存取和运算。 一个结构体中的成员还可以是另外一个结构体类型中的变量,既可以形成结构体的嵌

温馨提示

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

评论

0/150

提交评论