新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ADC0832模數轉換MSP430單片機程序+電路圖

        ADC0832模數轉換MSP430單片機程序+電路圖

        作者: 時間:2016-11-30 來源:網絡 收藏

        /***********************************************
        sbit cs=P2^0;
        sbit clk=P2^1;
        sbit DI=P2^2;
        sbit DO=P2^6;
        *************************************************/
        uint adval;
        uchar temp;
        uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
        void delay(uint ms)
        {
        uchar j;
        while(ms--)
        {
        for(j=0;j<120;j++);
        }
        }
        void ADC_start()
        {
        P2OUT|=BIT0;//cs=1
        _NOP();
        P2OUT&=~BIT1;//clk=0
        _NOP();
        P2OUT&=~BIT0;//cs=0
        _NOP();
        P2OUT|=BIT2;//DI=1
        _NOP();
        P2OUT|=BIT1;//clk=1
        _NOP();
        P2OUT&=~BIT2;//DI=0;
        _NOP();
        P2OUT&=~BIT1;//clk=0;
        _NOP();
        }
        void ADC_read(uint CH)
        {
        uchar i;
        ADC_start();
        if(CH==0) //選擇通道0
        {
        P2OUT|=BIT2;// DI=1;
        P2OUT |=BIT1;//clk=1;
        _NOP();
        _NOP();
        P2OUT &=~BIT1;//clk=0;//第一個下降沿來DI=1
        _NOP();
        _NOP();
        P2OUT |=BIT2;//DI=0;
        P2OUT |=BIT1;//clk=1;
        _NOP();
        _NOP();
        P2OUT&=~BIT1;//clk=0;//第二個下降沿來DI=0,DI兩次為10,選ch0通道
        _NOP();
        _NOP();
        }
        else //選擇通道1
        {
        P2OUT|=BIT2;// DI=1;
        P2OUT |=BIT1;//clk=1;
        _NOP();
        _NOP();
        P2OUT &=~BIT1;//clk=0;//第一個下降沿來DI=1
        _NOP();
        _NOP();
        P2OUT |=BIT2;//DI=1;
        P2OUT |=BIT1;//clk=1;
        _NOP();
        _NOP();
        P2OUT&=~BIT1;//clk=0;//第二個下降沿來DI=0,DI兩次為11,選ch1通道
        _NOP();
        _NOP();
        }
        /****************下降沿讀數據*******************/
        P2OUT|=BIT1;//clk=1;
        _NOP();
        P2OUT&=~BIT1;//clk=0;再來下降沿讀書
        for(i=0;i<8;i++)
        {
        P2OUT|=BIT2;// DI=1;
        if(DO) // 判斷DO;
        {
        temp |=0x01;
        }
        else
        {
        temp &=0xfe;
        }
        P2OUT&=~BIT1;//clk=0;
        _NOP();
        _NOP();
        P2OUT|=BIT1;//clk=1;//上升沿來,左移1位
        temp=temp<<1;
        }
        adval=temp;
        }
        /********顯示數據********************************/
        void display(uint dat)
        {
        P2OUT &=~BIT3;//關閉個位顯示P2.3
        P2OUT &=~BIT4;//關閉十位顯示P2.4
        P2OUT |=BIT5;//開啟百位顯示P2.5
        P1OUT=tab[dat/100];
        delay(1);
        P1OUT=0xff;
        P2OUT &=~BIT3;//關閉個位顯示P2.3
        P2OUT |=BIT4;//開啟十位顯示P2.4
        P2OUT &=~BIT5;//關閉百位顯示P2.5
        P1OUT=tab[(dat%100)/10];
        delay(1);
        P1OUT=0xff;
        P2OUT |=BIT3;//開啟個位顯示P2.3
        P2OUT &=~BIT4;//關閉十位顯示P2.4
        P2OUT &=~BIT5;//關閉百位顯示P2.5
        P1OUT=tab[dat/10];
        delay(1);
        P1OUT=0xff;
        }
        void main()
        {

        WDTCTL = WDTPW + WDTHOLD;
        P2DIR =0x3f;
        P1DIR|=0x7f;
        while(1)
        {
        ADC_read(0);
        delay(1);
        display(adval);
        }
        }

        上一頁 1 2 下一頁

        關鍵詞: ADC0832模數轉換MSP43

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 丹棱县| 东乌珠穆沁旗| 新河县| 灵川县| 太仆寺旗| 登封市| 江陵县| 莲花县| 溧阳市| 宣化县| 金沙县| 汤原县| 丰城市| 武隆县| 堆龙德庆县| 邓州市| 临朐县| 恩施市| 民丰县| 平度市| 遵化市| 体育| 手游| 镇原县| 兰州市| 蓬安县| 大丰市| 鄂托克旗| 土默特左旗| 十堰市| 忻州市| 新闻| 仁怀市| 大同市| 雷山县| 马公市| 射阳县| 龙口市| 会东县| 无锡市| 仁布县|