新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于IIC總線的AD轉(zhuǎn)換模塊PCF8591

        基于IIC總線的AD轉(zhuǎn)換模塊PCF8591

        作者: 時間:2016-12-02 來源:網(wǎng)絡 收藏
        /*本程序使用普中開發(fā)板調(diào)試*/

        #include
        #include
        #define uint unsigned int
        #define uchar unsigned char

        本文引用地址:http://www.104case.com/article/201612/324676.htm

        #define addw 0x90
        #define addr 0x91

        sbit scl=P2^0;
        sbit sda=P2^1;

        sbit rs=P2^6;
        sbit rw=P2^5;
        sbiten=P2^7;

        uchar Ch0value,Ch1value;

        void delayms(int i)
        {int x,y;
        for (x=i;x>0;x--)
        for(y=110;y>0;y--);
        }

        void usdelay()
        {
        _nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();
        }


        void start()//開始信號
        {//時鐘線在高電平時,數(shù)據(jù)線由高變低即為開始信號由高變低即為開始信號
        sda=1;
        usdelay();
        scl=1;
        usdelay();
        sda=0;//數(shù)據(jù)線由高變低即為開始信號
        usdelay();
        scl=0;
        }

        void stop()//結(jié)束信號
        {//時鐘線在高電平時,數(shù)據(jù)線由低變高即為結(jié)束信號
        sda=0;
        usdelay();
        scl=1;
        usdelay();
        sda=1;
        usdelay();
        sda=0;//這句可有可無
        scl=0;//這句可有可無
        }

        void ack()//應答信號
        {uchar i;
        scl=1;
        usdelay();
        while((sda==1)&&(i<200))i++;
        scl=0;
        usdelay();
        }

        void Noack() //不應答
        {
        sda=1;//時鐘線高電平時,數(shù)據(jù)線高,即為不應答
        usdelay();
        scl=1;
        usdelay();
        scl=0;
        usdelay();
        }


        void send_byte(uchar dat)
        {
        uchar i;
        for(i=0;i<8;i++)
        {
        scl=0;
        usdelay();
        sda=(bit)(dat&0x80); //數(shù)據(jù)傳送是由高到低
        //(bit)為強制轉(zhuǎn)換命令,把數(shù)據(jù)變?yōu)榉?即1的一位數(shù)據(jù)庫
        usdelay();
        scl=1;
        usdelay();
        dat<<=1;
        }
        scl=0;
        usdelay();
        sda=1;//釋放總線
        usdelay();
        }

        uchar read_byte()
        {

        uchar i,k;
        scl=0;
        usdelay();
        sda=1; //釋放總線
        usdelay();
        for(i=0;i<8;i++)
        {
        scl=1;
        usdelay();
        k=(k<<1)|sda;//判斷8次,移位7次
        scl=0;
        usdelay();
        }
        return k;
        }


        上一頁 1 2 下一頁

        關(guān)鍵詞: IIC總線AD轉(zhuǎn)換PCF859

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 肃北| 略阳县| 宜昌市| 钟山县| 镇康县| 青神县| 台中县| 双柏县| 米脂县| 山阴县| 鱼台县| 丹寨县| 永仁县| 科技| 莱州市| 宁都县| 慈溪市| 大田县| 青田县| 介休市| 德格县| 巩义市| 建平县| 张家口市| 嘉峪关市| 苍溪县| 三门县| 边坝县| 寿光市| 镇雄县| 奉新县| 民勤县| 蓬莱市| 县级市| 额济纳旗| 平乐县| 永靖县| 高平市| 尚义县| 安新县| 清河县|