蓝桥杯论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 440|回复: 0

蓝桥杯单片机开发板--PCF8591数字转模拟(DA)输出功能详解

[复制链接]

20

主题

23

帖子

190

积分

注册会员

Rank: 2

积分
190
发表于 2018-3-29 19:26:08 | 显示全部楼层 |阅读模式
蓝桥杯单片机开发板--PCF8591数字转模拟(DA)输出功能详解




      近两天有个别朋友在说群里说,今年比赛可能会考到PCF8591的模拟转数字(DA)输出功能,闹得人心惶惶,咱暂且不说具体考不考,毕竟不到考场这咱也不知道具体考试内容。但我希望大家参考初赛试题讲解最后一讲“考前经验分享”,遇事不要惊慌、不要失措,沉着冷静对待,毕竟万一今年出题有我们平时没学到的东西,我们要明白大多人参赛的同学都是不会的,自己不会也没关系。近几天考察了解到,很多没有选择我们视频学习的考生,目前为止还停留在各个模块的学习,基本没有做过赛题,大家又何必过于担心呢。咱能拿个一等奖能进国赛就行了,何必争一等奖当中的第一呢,这样压力大心情焦躁,多不好。

      废话少说,既然一个小小的PCF8591的DA输出让个别同学如此焦躁不安,我们就来看一下他是有多么的简单吧。

首先:我们知道PCF8591用的是IIC通信,其中AD功能用到IIC通信的读出,没用到写入;另外一个模块EEPROM的用到了IIC通信的读出写入功能,这我相信大家都没疑问。那么好戏来了:

其次:PCF8591的数模转换(AD输出),用到的就是IIC通信的写入功能,修改器件地址,然后写入数据,就可以输出了;写入数据0--255,对应输出电压是0--5V;代码如下:
  1. void IIC_write(uchar dat)  //IIC写子函数
  2. {
  3.         iicstrat();
  4.         writebyte(0x90);//PCF8591器件地址
  5.         ack();
  6.         writebyte(0X40);//PCF8591操作命令字,注意这个地方是0X40,代表要写数据,
  7.         ack();
  8.         writebyte(dat);//写要输出的电压
  9.         ack();
  10.         iicstop();
  11. }
复制代码
最后:调用这个子函数,调用参数为0--255,对应输出电压就是0--5V了,So  easy!!!   当然了输出电压要用万用表测量的。


补充讲解:有朋友可能会问,为什么是写0x40,考场上我怎么会知道是0X40,难道要猜吗,这当然不是,其实冷静思考一下,看看说明书我们不难发现的,说明书部分截图如下:

[img]file:///C:\Users\langtaosha\AppData\Roaming\Tencent\Users\565178656\QQ\WinTemp\RichOle\W(W5F6$~O]SB4P6GLV$[`AF.png[/img]

[img]file:///C:\Users\langtaosha\AppData\Roaming\Tencent\Users\565178656\QQ\WinTemp\RichOle\W(W5F6$~O]SB4P6GLV$[`AF.png[/img]


AD采集我们都用烂了,我相信一看就明白,根据AD采集判断出DA输出应该也不难,虽然是英文,但我相信“ANALOGUE OUTPUT ENABLE FLAGanalogue output active if 1)”这句话大学生基本都能看懂吧。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|蓝桥杯论坛

GMT+8, 2018-12-16 23:39 , Processed in 0.175645 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表