在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)PCF8591AD-DA實(shí)驗(yàn)

            AVR單片機(jī)PCF8591AD-DA實(shí)驗(yàn)

            作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏

            未加入濾波函數(shù)所以數(shù)值有點(diǎn)晃動(dòng)



            //PCF8591 AVR單片機(jī)程序 默認(rèn)為輸入模式下通道0開(kāi)始通道0光敏電阻,通道1,熱敏電阻,通道2電位器,通道3外接電位器,如有標(biāo)點(diǎn)符號(hào)丟失格式錯(cuò)亂的情況可從這里下載源碼:http://www.51hei.com/f/avr8591.rar
            #include
            #include
            #define uchar unsigned char
            #define uint unsigned int
            #define k1 PIND_Bit4 //模擬量輸出值按鍵
            #define k2 PIND_Bit5 //模擬量輸入通道設(shè)定
            #define k3 PIND_Bit6 //輸入狀態(tài)鍵
            #define k4 PIND_Bit7 //輸出狀態(tài)鍵
            uchar output_val=0; //輸出值
            uchar input_val; //輸入值
            uchar channel=0; //通道值
            uchar mode=1; //輸入輸出狀態(tài)模式 1表示輸入2表示輸出 默認(rèn)為輸入狀態(tài)
            uchar st1[]=" Input mode ";
            uchar st2[]=" output mode ";

            void delay(uint k)
            {
            uint i,j;
            for(i=0;ifor(j=0;j<1140;j++);
            }
            #include "1602.h"
            void port_init() //I/O口初始化
            {
            PORTA=0xff;
            DDRA=0xff;
            PORTB=0xff;
            DDRB=0xff;
            PORTC=0xff;
            DDRC=0xff;
            PORTD=0xff;
            DDRD=0x0f;
            }
            //---------------TWI宏定義-------------
            #define TWINT 7 //TWI完成當(dāng)前操作允許應(yīng)用程序介入時(shí),置位
            #define TWSTA 5 //聲明自己希望成為主機(jī)TWI硬件檢測(cè)是否可用,若空閑則接口上產(chǎn)生START 信號(hào),若繁忙則一直等待直到一個(gè)STOP狀態(tài)
            #define TWSTO 4 //置位該位產(chǎn)生STOP狀態(tài)
            #define TWEN 2 //TWI接口激活 置位后I/O引腳切換到TWI模式

            //--------------TWI狀態(tài)字定義------MT主方式傳輸,MR主方式接受----------
            #define START 0x08 //start已經(jīng)發(fā)送
            #define RE_START 0x10 //重復(fù)Start已經(jīng)發(fā)送
            #define MT_SLA_ACK 0x18 //SLA+W已經(jīng)發(fā)送接受到應(yīng)答 進(jìn)入MT模式
            #define MT_SLA_NOACK 0x20 //SLA+W已經(jīng)發(fā)送接受到非應(yīng)答
            #define MT_DATA_ACK 0x28 //數(shù)據(jù)已經(jīng)發(fā)送接受到應(yīng)答
            #define MT_DATA_NOACK 0x30 //數(shù)據(jù)發(fā)送接受到非應(yīng)答
            #define MR_SLA_ACK 0x40 //SLA+R已經(jīng)發(fā)送接受到應(yīng)答
            #define MR_SLA_NOACK 0x48 //SLA+R已經(jīng)發(fā)送接受到非應(yīng)答
            #define MR_DATA_ACK 0x50 //接受到數(shù)據(jù)ACK已經(jīng)返回
            #define MR_DATA_NOACK 0x58 //接受到數(shù)據(jù)NOACK已經(jīng)返回
            //-------TWI常用操作(主模式寫(xiě),主模式讀)--------------
            #define start() (TWCR=(1<#define stop() (TWCR=(1<#define wait() {while(!(TWCR&(1<#define test_ack() (TWSR&0xf8) //測(cè)試應(yīng)答狀態(tài)
            #define set_ack() (TWCR|=(1<#define set_noack() (TWCR=~(1<#define twi() (TWCR=(1<#define write_byte(x) {TWDR=(x);TWCR=(1<
            //-----------------------------
            uchar ADC_read(uchar chl) //讀取函數(shù)設(shè)置通道變量
            {
            uchar temp; //讀取值
            start();
            wait();
            if(test_ack()!=START) return 0; //啟動(dòng)失敗返回0
            write_byte(0x90); //發(fā)送寫(xiě)方向
            wait();
            if(test_ack()!=MT_SLA_ACK) return 0;
            write_byte(0x40|chl); //發(fā)送寫(xiě)命令和通道值
            wait();
            if(test_ack()!=MT_DATA_ACK) return 0;
            start(); //再次啟動(dòng)
            wait();
            if(test_ack()!=RE_START) return 0;
            write_byte(0x91); //發(fā)送讀方向
            wait();
            if(test_ack()!=MR_SLA_ACK) return 0;
            twi();
            wait();
            if(test_ack()!=MR_DATA_NOACK) return 0;
            temp=TWDR;
            stop();
            return temp;
            }
            //------------------------------------------------
            uchar ADC_write(uchar data)
            {
            start();
            wait();
            if(test_ack()!=START) return 1;
            write_byte(0x90); //啟動(dòng)寫(xiě)方向
            wait();
            if(test_ack()!=MT_SLA_ACK) return 1;
            write_byte(0x40); //模擬量輸出設(shè)定
            wait();
            if(test_ack()!=MT_DATA_ACK) return 1;
            write_byte(data); //模擬量輸出值
            wait();
            if(test_ack()!=MT_DATA_ACK) return 1;
            stop();
            delay(10); //延時(shí)10ms 等待發(fā)送好
            return 0;
            }

            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: AVR單片機(jī)PCF8591AD-D

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉