久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

立即注冊 登錄
返回首頁

uid:202598的個人空間

日志

AVR PCF8591 AD&DA數(shù)碼管顯示

已有 901 次閱讀2017-5-19 16:46

#include "iom16v.h"

#include "macros.h"

#define uchar unsigned char

#define uint unsigned int

/*******************************************

TWSR中數(shù)據(jù)的各種狀態(tài),#include "iom16v.h"

#include "macros.h"

#define uchar unsigned char

#define uint unsigned int

/*******************************************

TWSR中數(shù)據(jù)的各種狀態(tài),參照mega 16手冊172

*******************************************/

//主模式啟動狀態(tài)

#define START 0X08//啟動總線

#define RESTART 0X10//再啟動總線

//主機(jī)發(fā)送模式各種狀態(tài)

#define MT_SLA_ACK 0X18//SLA_W寫地址已發(fā)送,收到應(yīng)答位

#define MT_SLA_NACK 0X20//SLA_W寫地址已發(fā)送,收到非應(yīng)答位

#define MT_DATA_ACK 0X28//寫數(shù)據(jù)已發(fā)送,收到應(yīng)答位

#define MT_DATA_NACK 0X30//寫數(shù)據(jù)已發(fā)送,收到非應(yīng)答位

#define MT_ARB_LOST 0X38//SLA_W或者數(shù)據(jù)仲裁失敗

//主接收模式各種狀態(tài)

#define MR_ARB_LOST 0X38//SLA_W或者數(shù)據(jù)仲裁失敗

#define MR_SLA_ACK 0X40//SLA_R已發(fā)送,收到應(yīng)答位

#define MR_SLA_NACK 0X48//SLA_R已發(fā)送,收到非應(yīng)答位

#define MR_DATA_ACK 0X50//收到數(shù)據(jù),返回應(yīng)答位

#define MR_DATA_NACK 0X58//收到數(shù)據(jù),返回非應(yīng)答位

//IIC操作

#define Start() (TWCR=BIT(TWINT)|BIT(TWSTA)|BIT(TWEN))

#define Stop() (TWCR=BIT(TWINT)|BIT(TWSTO)|BIT(TWEN))

#define TestACK() (TWSR&0Xf8)//TWSR前五位狀態(tài)

#define Send() (TWCR=BIT(TWINT)|BIT(TWEN))

#define SendAck() (TWCR|=BIT(TWEA))

#define SendNoAck() (TWCR&=~BIT(TWEA))

#define ReadNoAck()   (TWCR=BIT(TWEN)|BIT(TWINT))

#define ReadAck() (TWCR=BIT(TWINT)|BIT(TWEN)|BIT(TWEA))

#define Wait() while(!(TWCR&BIT(TWINT)))//等待TWINT1

uint i;

////////////////////////////////////

void twi_init()

{

    TWBR=0X12;

         TWSR=0;

         TWCR=0X44;

}

////////////////////////////////////////////////////////////////寫函數(shù)

uchar write_data(uchar add, uchar data,uchar data1)

{

    Start();

         Wait();

         if(TestACK()!=START)

         {

           PORTA=0x01;

         }

         TWDR=add;

         Send();

         Wait();

         if(TestACK()!=MT_SLA_ACK)

         {

            PORTA=0x04;

         }

         TWDR=data;

         Send();

         Wait();

         if(TestACK()!=MT_DATA_ACK)

         {

            PORTA=0x10;

         }

         TWDR=data1;

         Send();

         Wait();

         if(TestACK()!=MT_DATA_ACK)

         {

            PORTA=0x20;

         }

         Stop();

         delay(1);

        

        

}

//////////////////////讀函數(shù)//////////////////////////////////////////////////

uchar Read(uchar data)

{

uchar team;

Start();

Wait();

if(TestACK()!=START)

         {show(8,1);

           PORTA=0xfe;

         }

         TWDR=0x90;

         Send();

         Wait();

         if(TestACK()!=MT_SLA_ACK)

         {show(8,1);

            PORTA=0xfb;

         }

         TWDR=data;

         Send();

         Wait();

         if(TestACK()!=MT_DATA_ACK)

         {show(8,1);

            PORTA=0xff;

         }

         Start();

         Wait();

         if(TestACK()!=RESTART)

         {show(8,1);

           PORTA=0xff;

         }

         TWDR=0x91;

         Send();

         Wait();

         if(TestACK()!=MR_SLA_ACK)

         {show(8,1);

            PORTA=0xff;

         }

         ReadNoAck();

         Wait();

         delay(1);

         if(TestACK()!=MR_DATA_NACK)

         {show(0,1);

            PORTA=0xff;

         }

 

         team=TWDR;

          Stop();

          return team;show(8,0);

        

}

///////////////////////////////////////////////////////////////////////

const  table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,

                              0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

const  table1[]={0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

void delay(uint ms)

{

        uint i,j;

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

            {

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

       }

}

 

void show(uchar j,uchar k)

{

         DDRB=0XFF;

         DDRD=0X03;

         PORTD=0X02;   

         PORTB=table[j];

         PORTD=0X01;

         PORTB=table1[k];

    delay(1);

}

///////////////////////////////////////////////////////////

main()

{

uint a=0,temp;

twi_init();

DDRA=0XFF;

while(1){

a++;

write_data(0x90,0x44,a);

if(a>200) {a=0;}

temp=Read(0x42);

 

show(temp/100,1);

show(temp%100/10,2);

show(temp%100%10,3);

}

}參照mega 16手冊172

*******************************************/

//主模式啟動狀態(tài)

#define START 0X08//啟動總線

#define RESTART 0X10//再啟動總線

//主機(jī)發(fā)送模式各種狀態(tài)

#define MT_SLA_ACK 0X18//SLA_W寫地址已發(fā)送,收到應(yīng)答位

#define MT_SLA_NACK 0X20//SLA_W寫地址已發(fā)送,收到非應(yīng)答位

#define MT_DATA_ACK 0X28//寫數(shù)據(jù)已發(fā)送,收到應(yīng)答位

#define MT_DATA_NACK 0X30//寫數(shù)據(jù)已發(fā)送,收到非應(yīng)答位

#define MT_ARB_LOST 0X38//SLA_W或者數(shù)據(jù)仲裁失敗

//主接收模式各種狀態(tài)

#define MR_ARB_LOST 0X38//SLA_W或者數(shù)據(jù)仲裁失敗

#define MR_SLA_ACK 0X40//SLA_R已發(fā)送,收到應(yīng)答位

#define MR_SLA_NACK 0X48//SLA_R已發(fā)送,收到非應(yīng)答位

#define MR_DATA_ACK 0X50//收到數(shù)據(jù),返回應(yīng)答位

#define MR_DATA_NACK 0X58//收到數(shù)據(jù),返回非應(yīng)答位

//IIC操作

#define Start() (TWCR=BIT(TWINT)|BIT(TWSTA)|BIT(TWEN))

#define Stop() (TWCR=BIT(TWINT)|BIT(TWSTO)|BIT(TWEN))

#define TestACK() (TWSR&0Xf8)//TWSR前五位狀態(tài)

#define Send() (TWCR=BIT(TWINT)|BIT(TWEN))

#define SendAck() (TWCR|=BIT(TWEA))

#define SendNoAck() (TWCR&=~BIT(TWEA))

#define ReadNoAck()   (TWCR=BIT(TWEN)|BIT(TWINT))

#define ReadAck() (TWCR=BIT(TWINT)|BIT(TWEN)|BIT(TWEA))

#define Wait() while(!(TWCR&BIT(TWINT)))//等待TWINT1

uint i;

////////////////////////////////////

void twi_init()

{

    TWBR=0X12;

         TWSR=0;

         TWCR=0X44;

}

////////////////////////////////////////////////////////////////寫函數(shù)

uchar write_data(uchar add, uchar data,uchar data1)

{

    Start();

         Wait();

         if(TestACK()!=START)

         {

           PORTA=0x01;

         }

         TWDR=add;

         Send();

         Wait();

         if(TestACK()!=MT_SLA_ACK)

         {

            PORTA=0x04;

         }

         TWDR=data;

         Send();

         Wait();

         if(TestACK()!=MT_DATA_ACK)

         {

            PORTA=0x10;

         }

         TWDR=data1;

         Send();

         Wait();

         if(TestACK()!=MT_DATA_ACK)

         {

            PORTA=0x20;

         }

         Stop();

         delay(1);

        

        

}

//////////////////////讀函數(shù)//////////////////////////////////////////////////

uchar Read(uchar data)

{

uchar team;

Start();

Wait();

if(TestACK()!=START)

         {show(8,1);

           PORTA=0xfe;

         }

         TWDR=0x90;

         Send();

         Wait();

         if(TestACK()!=MT_SLA_ACK)

         {show(8,1);

            PORTA=0xfb;

         }

         TWDR=data;

         Send();

         Wait();

         if(TestACK()!=MT_DATA_ACK)

         {show(8,1);

            PORTA=0xff;

         }

         Start();

         Wait();

         if(TestACK()!=RESTART)

         {show(8,1);

           PORTA=0xff;

         }

         TWDR=0x91;

         Send();

         Wait();

         if(TestACK()!=MR_SLA_ACK)

         {show(8,1);

            PORTA=0xff;

         }

         ReadNoAck();

         Wait();

         delay(1);

         if(TestACK()!=MR_DATA_NACK)

         {show(0,1);

            PORTA=0xff;

         }

 

         team=TWDR;

          Stop();

          return team;show(8,0);

        

}

///////////////////////////////////////////////////////////////////////

const  table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,

                              0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

const  table1[]={0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

void delay(uint ms)

{

        uint i,j;

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

            {

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

       }

}

 

void show(uchar j,uchar k)

{

         DDRB=0XFF;

         DDRD=0X03;

         PORTD=0X02;   

         PORTB=table[j];

         PORTD=0X01;

         PORTB=table1[k];

    delay(1);

}

///////////////////////////////////////////////////////////

main()

{

uint a=0,temp;

twi_init();

DDRA=0XFF;

while(1){

a++;

write_data(0x90,0x44,a);

if(a>200) {a=0;}

temp=Read(0x42);

 

show(temp/100,1);

show(temp%100/10,2);

show(temp%100%10,3);

}

}


路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

返回頂部
主站蜘蛛池模板: 91一区二区 | 一本一道久久a久久精品蜜桃 | 羞羞的视频免费观看 | 91在线网站 | 91精品国产一区二区在线观看 | 中文字幕久久久 | 国产精品亚洲第一 | 可以看黄的视频 | 久久免费精品 | 日韩成人av在线 | 欧美成人精品一区二区男人看 | 国产色黄| 97超碰在线免费 | 天天操天天干天天曰 | 久久免费视频网 | 欧美一区二区三区久久精品 | 亚洲精品一区二区三区免 | 久久综合一区 | 欧美一级片在线观看 | 精品一二三区 | 四季久久免费一区二区三区四区 | av一级毛片 | 久久精品一区 | 精品国产一区久久 | 日韩a视频| 成人在线免费网站 | www.成人.com | 亚洲国产精品久久久久秋霞不卡 | 999精品视频 | ririsao久久精品一区 | 欧美成人自拍 | 国产欧美日韩在线观看 | 少妇淫片aaaaa毛片叫床爽 | 最新免费黄色网址 | 一区二区三区在线观看免费视频 | 免费在线观看av片 | 黄色网址在线免费观看 | 欧美理伦片在线播放 | 国产精品jizz在线观看老狼 | 国产真实乱对白精彩久久小说 | 狠狠爱免费视频 |