• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > PCF8591的一个小问题,找时序图没找到问题在哪,求指教

PCF8591的一个小问题,找时序图没找到问题在哪,求指教

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了pcf8591时序图,pcf8591时序,pcf8591,pcf8591中文资料,pcf8591工作原理等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: PCF8591的一个小问题,找时序图没找到问题在哪,求指教
描述:

*-----------------------------------------------
名称:IIC协议 PCF8591 AD/DA转换
论坛:www.doflye.net
编写:shifang
修改:无
内容:使用4路AD中的1路检测外部模拟量输入
------------------------------------------------*/ 
#include <reg52.h> 
#include "i2c.h"
#include "delay.h"
#include "display.h"
#define AddWr 0x90 //写数据地址 
#define AddRd 0x91 //读数据地址
extern bit ack;
unsigned char ReadADC(unsigned char Chl);
bit WriteDAC(unsigned char dat);
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
unsigned char num=0;
Init_Timer0();
while (1) //主循环
{
num=ReadADC(0);
TempData[0]=dofly_DuanMa[num/100]; 
TempData[1]=dofly_DuanMa[(num%100)/10];
TempData[2]=dofly_DuanMa[(num%100)%10];
//主循环中添加其他需要一直工作的程序
DelayMs(100);
}
}
/*------------------------------------------------
读AD转值程序
输入参数 Chl 表示需要转换的通道,范围从0-3
返回值范围0-255
------------------------------------------------*/
unsigned char ReadADC(unsigned char Chl)
{
unsigned char Val;
Start_I2c(); //启动总线
SendByte(AddWr); //发送器件地址
if(ack==0)return(0);
SendByte(0x40|Chl); //发送器件子地址
if(ack==0)return(0);
Start_I2c();
SendByte(AddWr+1);
if(ack==0)return(0);
Val=RcvByte();
NoAck_I2c(); //发送非应位
Stop_I2c(); //结束总线
return(Val);
}
串口:
#include<reg52.h>
void main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
while(1)
{
if(RI==1)
{
RI=0;
P1=SBUF;
}
}
}
void s() interrupt 0
{
RI=0;
P1=SBUF;
}
为什么在ReadDAc()函数SendByte(0x40|Chl); //发送器件子地址
要是0x40|chl,为什么不直接是chl;
还有就是 为什么器件地址是0x40


解决方案1:

从哪看出来器件地址是0x40;数据手册上看是有3个硬件地址引脚,但都不会为0x40啊。
0x40|chl,首先chl肯定是你选用的模拟通道;其次看控制寄存器0x40表明允许模拟输出,是将control寄存器的第6位置1,这样才允许模拟输出,在Fig.4 Control Byte中有说明。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PCF8591的一个小问题,找时序图没找到问题在哪,求指教

相关文章

  • 2017-06-05 vxbus模式进行pci设备驱动开发无法挂接中断
  • 2017-06-05 siebmeyer变频器调试串口调试反馈指令有误
  • 2017-06-05 at91的bootsharp里边添加新的nandflash,参数如何获取
  • 2017-06-05 真正的高手请推荐一本嵌入式学习方面的好书///
  • 2017-06-05 wince60CreateThead后,实际并没有执行线程里的程序
  • 2017-06-05 rs232收发文件和命令
  • 2017-06-05 电信与网通各放一台服务器,一个域名,怎么实现访问的
  • 2017-06-05 新手冒泡:关于quartus调用IP的问题
  • 2017-06-05 并口编程的入门问题
  • 2017-06-05 LWIP+ENC28J60+组播可以接收组播数据,不能发送组播数据,怎么回事?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 64位WIN7系统,通用即插即用硬件加速置灰不可用
    • 求一段简单代码:对pci卡进行操作?(如configurationregister和memoryregister)
    • RegMon改造问题,请教大家
    • 光圈优先快门优先域名解析优先级问题
    • usbfirmware中对BulkOUT传输的数据包如何判断包的开始和结束
    • 对于初学lua与cocos2dx结合做游戏,应该怎么起步呢
    • 如何在U盘上实现引导扇区的写入?
    • 请问machine文件是什么文件?
    • lua中table的__index对于自身有什么作用?
    • NRF24l01在D:0x00~0x17发送和接收部分看看对不对

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有