找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2905|回复: 0
收起左侧

PCF8691-单片机C语言程序

[复制链接]
ID:188417 发表于 2017-4-11 12:54 | 显示全部楼层 |阅读模式
电路图详见:http://www.51hei.com/bbs/dpj-81234-1.html

#include <reg51.h>


sbit CLK=P1^1;

sbit SDA=P1^2;


sbit A=P2^0;

sbit M=P2^1;

sbit C=P2^2;


unsigned charnum[10]={0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f};

//-------------IIC--------------------

void IIC_Delay()

{;;}

void start()

{


    SDA=1;

    IIC_Delay();

    CLK=1;

    IIC_Delay();

    SDA=0;

    IIC_Delay();


}

void stop()

{

    SDA=0;

    IIC_Delay();

    CLK=1;

    IIC_Delay();

    SDA=1;

    IIC_Delay();

}

void answer()

{

   CLK=1;

   IIC_Delay();

   while(SDA==1);

   CLK=0;

   IIC_Delay();

}

void write_byte(unsigned char dat)

{

   unsigned char i;

   for(i=0;i<8;i++)

    {

      dat=dat<<1;


      CLK=0;

      IIC_Delay();


       SDA=CY;

      IIC_Delay();


      CLK=1;

      IIC_Delay();   

    }

   CLK=0;

   IIC_Delay();

   SDA=1;

   IIC_Delay();

}

unsigned char read_byte()

{

   unsigned char i,dat;

   CLK=0;

   IIC_Delay();

   SDA=1;

   IIC_Delay();

   for(i=0;i<8;i++)

    {

       CLK=1;

       IIC_Delay();


       dat=dat<<1;

       if(SDA)

        dat=dat|0x01;


       CLK=0;

       IIC_Delay();        

    }

   return dat;

}

//-------------IIC A/DD/A-----------------------

void DA_trans(unsigned char dat)

{

    start();

    write_byte(0x90);

    answer();

    write_byte(0x40);

    answer();

    write_byte(dat);

    answer();

    stop();

}

unsigned char AD_trans()

{

    unsigned char dat;

    start();

    write_byte(0x90);

    answer();

    write_byte(0x02);

    answer();


    start();

    write_byte(0x91);

    answer();

    dat=read_byte();

    stop();

    return dat;

}

//-----------------------------------------------

void delay(unsigned char Xms)

{

   unsigned int i,j;

   for(i=0;i<Xms;i++)

      for(j=0;j<114;j++);

}

//------------------------------------------------

void weixuan(char x,char y,char z)

{

A=x;

M=y;

C=z;  

}

void Display(unsigned char dat)

{

  weixuan(0,0,0);

  P0=num[dat/100];

   

  delay(5);

   

  weixuan(1,0,0);

  P0=num[(dat%100)/10];

   

  delay(5);

   

  weixuan(0,1,0);

  P0=num[dat%10];

   

  delay(5);   

}

//------------------------------------------------

main()

{   

    unsigned char dat;

    while(1)

    {      

       dat=AD_trans();

       Display(dat);

     }

}

PCF8591-单片机C语言程序--ADDA装换.docx

13.31 KB, 下载次数: 7, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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