新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 使用PCF8591進(jìn)行ADDA轉(zhuǎn)換

        使用PCF8591進(jìn)行ADDA轉(zhuǎn)換

        作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
        void display(uchar ge,uchar shi,uchar bai)
        {
        P0=0xff;
        LS138A=1;   //第一位
        LS138B=1;
        LS138C=1;
        P0=table[ge];
        delay_1ms(5);
        P0=0xff;
        LS138A=0;   //第二位
        LS138B=1;
        LS138C=1;
        P0=table[shi];
        delay_1ms(5);
        P0=0xff;
        LS138A=1;   //第三位
        LS138B=0;
        LS138C=1;
        P0=table[bai];
        delay_1ms(5);
        }
        void main()
        {      
        uchar num,ge,shi,bai;
        init();
        while(1)
        {
        display(ge,shi,bai);
        num=read_add(0x40);
        ge=num;
        num/=10;
        shi=num;
        num/=10;
        bai=num;
        }
        }

        3.DA轉(zhuǎn)換

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

        //I2C總線很強(qiáng)大
        //程序功能:通過(guò)DA轉(zhuǎn)換把輸出電壓逐漸增大,使加在上面的發(fā)光二級(jí)管慢慢變亮
        // 到最亮后再變暗,如此循環(huán)
        #include 
        #define uchar unsigned char
        #define uint unsigned int
        #define PCF8591 0x90 //PCF8591 地址
        sbit SCL=P2^1;      //串行時(shí)鐘輸入端
        sbit SDA=P2^0;  //串行數(shù)據(jù)輸入端
        void delay()       //延時(shí)4-5個(gè)微秒
        {;;}
        void delay_1ms(uint z)
        {
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--)
        ;
        }
        void start()//開(kāi)始信號(hào)
        {
        SDA=1;
        delay();
        SCL=1;
        delay();
        SDA=0;
        delay();
        }
        void stop()      //停止信號(hào)
        {
        SDA=0;
        delay();
        SCL=1;
        delay();
        SDA=1;
        delay();
        }
        void respons()//應(yīng)答 相當(dāng)于一個(gè)智能的延時(shí)函數(shù)
        {
        uchar i;
        SCL=1;
        delay();
        while((SDA==1)&&(i<250))
        i++;
        SCL=0;
        delay();
        }
        void init()      //初始化
        {
        SDA=1;
        delay();
        SCL=1;
        delay();    
        }
        void write_byte(uchar date)      //寫(xiě)一字節(jié)數(shù)據(jù)
        {
        uchar i,temp;
        temp=date;
        for(i=0;i<8;i++)
        {
        temp=temp<<1; //左移一位 移出的一位在CY中
        SCL=0;                      //只有在scl=0時(shí)sda能變化值
        delay();
        SDA=CY;
        delay();
        SCL=1;
        delay();            
        }   
        SCL=0;
        delay();
        SDA=1;
        delay();
        }
        void write_add(uchar control,uchar date)
        {
        start();
        write_byte(PCF8591);        //10010000 前四位固定 接下來(lái)三位全部被接地了 所以都是0 最后一位是寫(xiě) 所以為低電平
        respons();
        write_byte(control);
        respons();
        write_byte(date);
        respons();
        stop();
        }
        void main()
        {
        uchar a;
        init();
        while(1)
        {
        write_add(0x40,a);
        delay_1ms(5);
        a++;
        if(a>250)
        a=0;                
        }
        }

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

        關(guān)鍵詞: PCF8591ADDA轉(zhuǎn)

        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 汉源县| 墨竹工卡县| 永济市| 黎城县| 万山特区| 石首市| 大荔县| 临沂市| 保康县| 宁强县| 富裕县| 萍乡市| 独山县| 旬邑县| 瑞安市| 乡宁县| 陵水| 留坝县| 尼木县| 江北区| 安龙县| 台前县| 滦平县| 叙永县| 万载县| 万全县| 桂平市| 奈曼旗| 和平县| 通榆县| 日喀则市| 巴彦县| 龙里县| 孟连| 衢州市| 电白县| 张家口市| 宝应县| 新巴尔虎左旗| 伊宁县| 时尚|