(全新)单片机实训 模拟量输入输出设计与实现.pptVIP

(全新)单片机实训 模拟量输入输出设计与实现.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
陳慶逸、林柏辰編著---文魁資訊 ARM嵌入式系统 模拟量输入输出设计与实现 模/数、数/模转换 模拟量I/O接口的作用 实际工业生产环境——连续变化的模拟量 例如:电压、电流、压力、温度、位移、流量 计算机内部——离散的数字量 二进制数、十进制数 工业生产过程的闭环控制 模拟量I/O通道的组成 ADC0809模数转换器 ADC0809是8通道8位的,以逐次逼近原理进行模—数转换 的器件; 内部有一个8通道模拟多路开关,它可以根据地址码锁存 译码后的信号,只选通8路模拟输入信号中的一个进行A/D 转换; A/D转换后的数据由 三态锁存器输出; 片内没有时钟,需 外接时钟信号。 ADC0809主要特性 8路8位A/D转换器,即分辨率8位; 具有转换起停控制端; 转换时间为100μs; 单个+5V电源供电; 模拟输入电压范围0~+5V,不需零点和满刻度校准; 工作温度范围为-40~+85摄氏度; 低功耗,约15mW。 ADC0809外部特性一 ADC0809芯片有28条引脚,采用双列直插式封装 IN0~IN7:8路模拟量输入端; D0~D8:8位数字量输出端; ADDA、ADDB、ADDC:3位地址输 入线,用于选通8路模拟输入中 的一路; CLK:时钟脉冲输入端; REF(+)、REF(-):基准电压; Vcc:电源,单一+5V; GND:地; 通道选择表 ADC0809外部特性二 ALE:地址锁存允许信号,输入,高电平有效。 START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 ADC0809工作过程 首先输入3位地址,并使ALE=1,将地址存入地址锁存器中; 此地址经译码选通8路模拟输入之一到比较器; START上升沿将逐次逼近寄存器复位; 下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行; 直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请; 当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。 模数转换显示程序 模数转换显示流程图 模数转换显示程序 工作模块1 数字电压表设计与实现 使用AT89S52单片机,采用动态显示的方式,把8通道模数转换器ADC0808采样的电压值的大小经单片机处理后由数码管显示出来,量程为0-5V,显示格式:X.XXX。 数字电压表电路设计 由于需要显示多位,因此数码管采用了较节省I/O口线的动态显示方式。 认识数码管(P132) 数码管结构图 数码管电路图 共阴数码管 共阳数码管 数码管的编码规则 数字电压表程序设计 数码管显示电压值实现分析 模数转换采用的是8位的ADC0808,因此其分辨力为5*1/2^8 V,即19.6mV。为了得到各位待显示的数字的大小,采取了除法和取余相结合的方式: dat[3]=tmp/10000; /最高位 dat[2]=tmp/1000%10; dat[1]=tmp/100%10; dat[0]=tmp/10%10; /最低位 数字电压表控制C语言程序 C语言结构体类型 结构体与前面介绍过的数组一样,是一种构造类型的数据,它是将若干个不同类型的数据变量有序地组合在一起而形成的一种数据的集合体。 组成该集合体的各个数据变量称为结构成员。 整个集合体使用一个单独的结构变量名。 一般来说结构中的各个变量之间是存在某些关系的,如时间数据中的时、分、秒等。 结构体类型的定义 定义一个结构体类型的一般形式为: struct 结构体名 { 成员项列表 }; 其中“struct”是关键字,作为定义结构体类型的标志; “结构体名”由用户自行定义; “成员列表”为该结构体中的各个成员,由于结构体可以由不同类型的数据组成,因此对结构体中各成员都要进行数据类型的说明。 结构体类型变量的定义 结构体定义好以后,就可以指明该结构体的具体对象,即定义该种类型的变量,结构体类型变量的定义主要有如下三种方式: 先定义结构体类型,再定义变量名 在定义结构体类型的同时定义结构体变量名 直接定义结构体变量 先定义结构体类型,再定义变量名 定义一个表示时间的结构体类型。 struct time { ?unsigned char hour; ? unsigned char minute; ?

文档评论(0)

xiaofei2001129 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档