<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > msp430DA應(yīng)用,可鍵盤程控

          msp430DA應(yīng)用,可鍵盤程控

          作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
          自己剛剛學(xué)習(xí)msp430不久,寫(xiě)的一個(gè)小程序:

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

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

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

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

          #include
          //共陽(yáng)數(shù)碼管的表格為:
          //本表格通過(guò)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設(shè)置為輸出
          P2OUT=0x00;//使按鍵按下時(shí)能產(chǎn)生中斷
          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開(kāi)啟 LFXT1工作在低頻模式 ACLK不分頻 最高的標(biāo)稱頻率
          DCOCTL=DCO2+DCO1+DCO0;//DCO為最高頻率
          //初始化時(shí)鐘
          BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2開(kāi)啟 LFXT1工作在低頻模式 ACLK不分頻 最高的標(biāo)稱頻率
          DCOCTL=DCO2+DCO1+DCO0;//DCO為最高頻率
          do
          {
          IFG1&=~OFIFG;//清除振蕩器失效標(biāo)志
          for(i=255;i>0;i--);
          }while(IFG1&OFIFG);//判斷XT2是否起振
          BCSCTL2=SELM1+SELS;//MCLK SMCLK時(shí)鐘源為TX2CLK不分頻

          _EINT();//打開(kāi)中斷

          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; //點(diǎn)亮數(shù)碼管LED1,


          }
          }


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

          void da5615(uint da) //5615的驅(qū)動(dòng)程序,即產(chǎn)生10位二進(jìn)制數(shù)函數(shù)
          {

          uchar i;
          //uchar j; //此為實(shí)驗(yàn)程序便于觀察
          //uchar k; //此為實(shí)驗(yàn)程序便于觀察
          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);} //此為實(shí)驗(yàn)程序便于觀察

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

          }

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


          }


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

          for(i=255;i>0;i--);//延時(shí),消除抖動(dòng)

          for(i=0;i<4;i++)//掃描4列
          {
          colpos &= 0xf0;//保持P1.4~P1.7為輸出,屏蔽P1.0~P1.3
          P2OUT=colpos;//輸出列
          _NOP();//延時(shí)
          _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;//右移一位,進(jìn)行下一列掃描
          colpos|=0x80;//高位補(bǔ)1,因?yàn)槭堑洼敵鲇行?,右移時(shí)高位是補(bǔ)0的
          }
          P2OUT=0x00;//恢復(fù)原來(lái)的值,使下次按鍵按下時(shí)能產(chǎn)生中斷

          P2IFG=0x00;//清除中斷標(biāo)志位
          }



          關(guān)鍵詞: msp430DA鍵盤程

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();