在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 嵌入式系統(tǒng) > 設計應用 > msp430DA應用,可鍵盤程控

            msp430DA應用,可鍵盤程控

            作者: 時間:2016-11-13 來源:網(wǎng)絡 收藏
            自己剛剛學習msp430不久,寫的一個小程序:

            就是應用10位串行DA 5615將數(shù)字量轉化為模擬量,用數(shù)碼管顯示輸入10位二進制數(shù)的數(shù)值。用矩陣建??刂?0位二進制數(shù)字量的輸入,我設置了+1、-1、+10、-10。然后從5615的out端輸出轉化得到的模擬量。

            本文引用地址:http://www.biyoush.com/article/201611/316338.htm

            //動態(tài)顯示方式 P300
            //例如,要在8個數(shù)碼管上分別顯示"1""2""3""4",動態(tài)掃描顯示的C語言程序如下(共陽極方式):

            //針對本開發(fā)板,修改了部分代碼

            #include
            //共陽數(shù)碼管的表格為:
            //本表格通過LEDSET軟件可以快速得到

            #define uchar unsigned char
            #define uint unsigned int

            unsigned char const dofly[]={0X84, 0XBD, 0XE0, 0XB0, 0X99, 0X92, 0X82, 0XBC, 0X80, 0X90, 0X88, 0X83, 0XC6, 0XA1, 0XC2, 0XCA };
            const uchar KeyCode[16]=
            {
            //0->key17
            0xE7,
            //1->key18
            0xD7,
            //2->key19
            0xB7,
            //3->key20
            0x77,
            //4->key21
            0xEB,
            //5->key22
            0xED,
            //6->key23
            0xDB,
            //7->key24
            0xDD,
            //8->key25
            0xBB,
            //9->key26
            0xBD,
            //10->key27
            0x7B,
            //11->key28
            0x7D,
            //12->key29
            0xEE,
            //13->key30
            0xDE,
            //14->key31
            0xBE,
            //15->key32
            0x7E
            };
            uchar KeyValue=0xFF;

            uchar keyscan(void);
            void delay(uint i);
            void da5615(uint da);

            void main(void)
            {
            uchar i=0;

            uint daben;
            uint love=0x66;
            WDTCTL = WDTPW + WDTHOLD; //??撮T狗
            P6DIR |= 0x07; //P6.1,p6.2,p6.3輸出
            P4DIR = 0XFF;//P4作為段輸出
            P5DIR = 0X0F;//P5作為位輸出
            P4OUT = 0XFF;//熄滅所有數(shù)碼管
            P5OUT = 0X00;//熄滅所有數(shù)碼管
            P2DIR=0xF0;//P2.4 P2.5 P2.6 P2.7設置為輸出
            P2OUT=0x00;//使按鍵按下時能產生中斷
            P2IE=0x0F;//P2.0 P2.1 P2.2 P2.3中斷允許
            P2IES=0x0F;//P2.0 P2.1 P2.2 P2.3下降沿觸發(fā)中斷
            P1DIR |= BIT0+BIT1+BIT2;

            BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2開啟 LFXT1工作在低頻模式 ACLK不分頻 最高的標稱頻率
            DCOCTL=DCO2+DCO1+DCO0;//DCO為最高頻率
            //初始化時鐘
            BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2開啟 LFXT1工作在低頻模式 ACLK不分頻 最高的標稱頻率
            DCOCTL=DCO2+DCO1+DCO0;//DCO為最高頻率
            do
            {
            IFG1&=~OFIFG;//清除振蕩器失效標志
            for(i=255;i>0;i--);
            }while(IFG1&OFIFG);//判斷XT2是否起振
            BCSCTL2=SELM1+SELS;//MCLK SMCLK時鐘源為TX2CLK不分頻

            _EINT();//打開中斷

            for(;;)
            {
            for(i=0;i<4;i++)
            {
            if(KeyValue==KeyCode[0])
            {
            KeyValue = 0xff;
            if(love+1>1023)love=1023;
            else love=love+1;
            delay(1000);
            }
            if(KeyValue==KeyCode[1])
            {
            KeyValue = 0xff;
            if(love<1)love=0;
            else love=love-1;
            delay(1000);
            }
            if(KeyValue==KeyCode[2])
            {
            KeyValue = 0xff;
            if(love+10>1023)love=1023;
            else love=love+10;
            delay(1000);
            }
            if(KeyValue==KeyCode[3])
            {
            KeyValue = 0xff;
            if(love<10)love=0;
            else love=love-10;
            delay(1000);
            }
            }
            delay(1000);
            da5615(love);
            daben=love;
            P4OUT =dofly[daben/1000];
            daben=daben%1000;
            P5OUT = 0x01;
            delay(1000);
            P4OUT =dofly[daben/100];
            daben=daben%100;
            P5OUT = 0x02;
            delay(1000);
            P4OUT =dofly[daben/10];
            daben=daben%10;
            P5OUT = 0x04;
            delay(1000);
            P4OUT =dofly[daben];
            P5OUT = 0x08; //點亮數(shù)碼管LED1,


            }
            }


            void delay(uint i)//延時函數(shù)
            {
            while(i--);
            }

            void da5615(uint da) //5615的驅動程序,即產生10位二進制數(shù)函數(shù)
            {

            uchar i;
            //uchar j; //此為實驗程序便于觀察
            //uchar k; //此為實驗程序便于觀察
            uint han;
            da<<=6;

            P1OUT=0xf9;
            P1OUT=0xf8;

            for (i=0;i<12;i++)
            {
            han=(da&0x8000);
            if(han==0x8000)
            {P1OUT|=0xf2;}
            else P1OUT&=0xfd;
            //for(j=0;j<8;j++){delay(60000);} //此為實驗程序便于觀察

            P1OUT|=0xf1;
            da<<=1;
            P1OUT&=0xfe;

            }

            P1OUT|=0xf4;
            P1OUT&=0xfe;
            delay(1000);
            //for(k=0;k<8;k++)delay(40000); //此為實驗程序便于觀察


            }


            #pragma vector=PORT2_VECTOR
            __interrupt void Port2INT(void)
            {
            uchar i;
            uchar colpos=0x70;//列位置
            uchar keytemp=0xff;

            for(i=255;i>0;i--);//延時,消除抖動

            for(i=0;i<4;i++)//掃描4列
            {
            colpos &= 0xf0;//保持P1.4~P1.7為輸出,屏蔽P1.0~P1.3
            P2OUT=colpos;//輸出列
            _NOP();//延時
            _NOP();
            keytemp=P2IN & 0x0f;//獲取值,屏蔽P1.4~P1.7
            keytemp |= colpos;//得到行列值,P1.0~1.3為行值,P1.4~P1.7為列值
            if((keytemp&0x0f)!=0x0f) KeyValue=keytemp;//判斷是否有按鍵按下
            colpos>>=1;//右移一位,進行下一列掃描
            colpos|=0x80;//高位補1,因為是低輸出有效,右移時高位是補0的
            }
            P2OUT=0x00;//恢復原來的值,使下次按鍵按下時能產生中斷

            P2IFG=0x00;//清除中斷標志位
            }



            關鍵詞: msp430DA鍵盤程

            評論


            技術專區(qū)

            關閉