新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PCF8591A/D D/A之間轉(zhuǎn)換

        PCF8591A/D D/A之間轉(zhuǎn)換

        作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
        /********************
        A/D D/A之間轉(zhuǎn)換
        ********************/
        #include
        #define uint unsigned int
        #define uchar unsigned char
        #define PCF8591 0x90//PCF8591的地址
        sbit sda=P2^0;
        sbit scl=P2^1;
        sbit LS138A=P2^2;//138譯碼器的3位 控制數(shù)碼管的
        sbit LS138B=P2^3;
        sbit LS138C=P2^4;
        uint Ledout[8];//8位數(shù)碼管
        uchar AD_change;
        uint num0,num1,num2,num3;
        uint count;
        uchar code table[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f};//段選
        void delay()//執(zhí)行空語句,微秒級延時函數(shù)
        {;;}
        void delay1ms(uint z)//延時1ms
        {
        uint x,y;
        for(x=z;x>0;x--)
        {
        for(y=0;y<=110;y++)
        {
        }
        }
        }
        void init()//初始化狀態(tài)下SCL和SDA都為高電平
        {
        scl=1;
        delay();
        sda=1;
        delay();
        }
        void start()//在SCL為高電平時SDA由高電平到低電平
        {
        sda=1;
        delay();
        scl=1;
        delay();
        sda=0;
        }
        void respons()
        /*
        應(yīng)答信號,SCL在高電平期間,SDA被從設(shè)備拉為低電平表示應(yīng)答。
        (sda==1)和i<255相與,表示若在一段時間內(nèi)沒有從器件的應(yīng)答則主器件
        默認從器件已經(jīng)收到數(shù)據(jù)而不再等待應(yīng)答信號
        */
        {
        uchar i;
        scl=1;
        delay();
        while((sda==1)&&(i<250))
        {
        i++;
        }
        scl=0;
        delay();
        }
        void stop()//SCL在高電平期間,SDA一個上升沿停止信號
        {
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        }
        void write_byte(uchar date)//寫一個字節(jié)
        {
        uchar i,temp;
        temp=date;
        for(i=0;i<8;i++)
        {
        temp=temp<<1;
        scl=0;//只有在SCL為0期間才允許SDA數(shù)據(jù)線上的狀態(tài)才允許變化
        delay();
        sda=CY;//PSW的寄存器的CY進位標志位
        delay();
        scl=1; //SCL時鐘信號為高電平期間數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定 delay();
        delay();
        }
        scl=0;
        delay();
        sda=1;//釋放總線
        delay();
        }
        uchar read_byte()
        {
        uchar i,k;
        scl=0;
        delay();
        sda=1;//釋放總線
        delay();
        for(i=0;i<8;i++)
        {
        scl=1;
        delay();
        k=(k<<1)|sda;
        scl=0;
        delay();
        }
        //delay();here is a bug
        return k;
        }

        上一頁 1 2 下一頁

        關(guān)鍵詞: PCF8591ADD

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 莆田市| 巴塘县| 米易县| 吉林市| 铁岭市| 洱源县| 吉林省| 红安县| 雷波县| 昌黎县| 佳木斯市| 钦州市| 汕头市| 茂名市| 田林县| 正阳县| 奉贤区| 嘉兴市| 四平市| 波密县| 田林县| 织金县| 平湖市| 宁河县| 越西县| 镇江市| 庄浪县| 肥乡县| 菏泽市| 琼中| 蕲春县| 格尔木市| 巨野县| 渝中区| 当涂县| 江陵县| 龙门县| 双桥区| 堆龙德庆县| 盐池县| 建水县|