| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 713 人关注过本帖
标题:C51 的程序用 PCF8591 基于 89C52 的程序,求各位大神帮忙看看哪里错了
只看楼主 加入收藏
叶浅茗
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-7-2
收藏
 问题点数:0 回复次数:7 
C51 的程序用 PCF8591 基于 89C52 的程序,求各位大神帮忙看看哪里错了
#include<reg52.h>
#include<intrins.h>
#define  PCF8591 0x90
#define THCO   0xee
#define TLCO   0x0
sbit SDA=P3^7;
sbit SCL=P3^6;
bit ack;
unsigned char Val;
unsigned char num;
#include<I2c.h>
unsigned char  code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴极数码管,0-9段码表
unsigned char  Data_Buffer[4]={0,0,0,0};//四个数码管显示数值,数组变量定义
bit flag=0;//1秒时间到标志
sbit P24=P2^4;        //四个数码管的位码口定义
sbit P25=P2^5;
sbit P26=P2^6;
sbit P27=P2^7;
sbit P14=P1^4;
sbit LED1=P3^4; //两个指示灯
sbit LED2=P3^5;
unsigned char read()
    {
           Start_I2c();
            SendByte(0x90);
            if(ack==0) return 0;
        SendByte(0x40);
            Start_I2c();
            SendByte(0x91);  
            if(ack==0) return 0;
//             RcvByte();   
            Val=RcvByte();
//             Ack_I2c(1);           //发送非就答位
搜索更多相关主题的帖子: include 数码管 
2014-11-11 20:53
叶浅茗
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-7-2
收藏
得分:0 
//             RcvByte();   
            Val=RcvByte();
//             Ack_I2c(1);           //发送非就答位
2014-11-11 20:55
叶浅茗
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-7-2
收藏
得分:0 
//             RcvByte();   
            Val=RcvByte();
//             Ack_I2c(1);           //发送非就答位
2014-11-11 20:55
叶浅茗
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-7-2
收藏
得分:0 
这是怎么回事,,后半段怎么贴不上┭┮﹏┭┮
2014-11-11 20:56
叶浅茗
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-7-2
收藏
得分:0 
//             RcvByte();   
            Val=RcvByte();
//             Ack_I2c(1);           //发送非就答位
2014-11-11 20:57
叶浅茗
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-7-2
收藏
得分:0 
//             RcvByte();   
            Val=RcvByte();
//             Ack_I2c(1);           //发送非就答位
2014-11-11 20:57
叶浅茗
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-7-2
收藏
得分:0 
Stop_I2c();
            return Val;
        }
void main()
{   
    P14=0;
       TMOD=0x11;        //定时器0初始化
     TH0=THCO;
     TL0=TLCO;
     TR0=1;
     ET0=1;
     EA=1;
    num=Val;

     while(1)  
    {
     if(flag==1)
     {
         flag=0;
        Data_Buffer[0]=num/1000;
        Data_Buffer[1]=(num%1000)/100;        
         Data_Buffer[2]=((num%1000)%100)/10;        
        Data_Buffer[3]=((num%1000)%100)%10;
     }
    }
}

void timer0() interrupt 1
{
 static unsigned int count=0;//软计时变量定义
 static unsigned char Bit=0;    //静态变量,退出程序后,值保留
 TH0=THCO;
 TL0=TLCO;

 count++;
 if(count>=200)    //秒计时,定时器定时5ms,计200次为一秒
 {
   count=0;
  flag=1;
   }
 Bit++;   
 if(Bit>=4)Bit=0;
 P2|=0xf0;                    //先关位码
 P0=Duan[Data_Buffer[Bit]];    //开段码
 switch(Bit)                //送位码
 {
  case 0: P24=0;break;
  case 1: P25=0;break;
  case 2: P26=0;break;
  case 3: P27=0;break;
 }   
 }
I2c协议我写成头文件了,,然后我很菜,表示这个程序编译没问题,有两个警告貌似是说有子函数未调用,,然后,我PCF8591接的就是通道一所以控制字是0x40,为什么一直读不出来数值呢??求解┭┮﹏┭┮,,,数码管一直显示0000不会改变,,求各位大神这是怎么回事┭┮﹏┭┮谢谢,,我真的很菜,,,调了一天都没调好,,,哭瞎,~~o(>_<)o ~~谢谢~~~
2014-11-11 20:58
叶浅茗
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-7-2
收藏
得分:0 
终于贴上了,,┭┮﹏┭┮求教,,谢谢~~~
2014-11-11 20:59
快速回复:C51 的程序用 PCF8591 基于 89C52 的程序,求各位大神帮忙看看哪里错了 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034127 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved