MSP430-四位數碼管及其代碼講解


對於平常的七段數碼管我們應該是非常熟悉的,接出來8根線控制每一個燈的亮滅,那對於四位數碼管是如何用12根線來控制四個燈的亮滅的呢?下邊先講解一下共陽數碼管原理,然后附上MSP430的代碼

首先是他的接線原理圖(自己畫的比較丑)

原理圖

先忽略上邊的三極管的電路,單獨對這四個數碼管來說,我們是把他們的線都總到一起,本來是共接出8*4根線,現在只接出8根線(相同類型的),我們給他通電時,不考慮控制端的話他們是可以四個都會亮的,現在加上的控制端,即通過四個控制端來控制三極管的導通與截至,這樣每次上邊只會出現一個或者多個數碼管顯示同一個數字。

這時候可能有人有疑問了,既然顯示一次都是同一個數字那么比方說12怎么顯示的 ,其實數碼管是先在第一個管腳顯示1,再在第二個管腳顯示2,這樣來回循環,選好切換的時間延時,就可以在人體視覺上產生1和2同時顯示的錯覺。

引腳圖

 從左下方,逆時針依次增加

控制端:12    9      8      6   接到三極端集電極

接線端: 11    7    4      2      1     10    5      3  需要按照這樣的順序接出來

整體圖(摘自網絡,侵權必刪)

 實物圖(MSP430+自己外接的數碼管電路)

 

 

 依次顯示1,2,3,4的程序

 P3的低四位做控制端,P2做數碼管的顯示

#include <MSP430x14x.h>

//共陽數碼管的顯示表
unsigned char table[16]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 
                            0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};
//控制位依次循環
unsigned char sel[4]={0x0E,0x0D,0x0B,0x07};
void delay(void);

void main( void )
{
  unsigned char i; // 用於上邊兩個表的索引
  WDTCTL = WDTPW + WDTHOLD;//關閉開門狗
  
  P3DIR=0XFF;P3OUT=0X00;
  P2DIR=0XFF;P2OUT=0XFF;
  while(1)
  {
    for(i=0;i<4;i++)
    {
      P3OUT=sel[i]; //控制位依次開啟
      P2OUT=table[i+1];//顯示從1到4依次顯示
      delay();
      delay();
      delay();
      delay();
      delay();
      delay();
      delay();
    }
  }
  
  
}
void delay(void)
{
unsigned int tmp;

for(tmp = 12000;tmp > 0;tmp--);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM