導航:首頁 > 操作系統 > 單片機6個數碼管

單片機6個數碼管

發布時間:2023-07-02 11:00:53

Ⅰ 51單片機共陰數碼管利用靜態顯示,讓六個數碼管顯示1~6,程序怎麼寫

代碼如下:

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

#define data P0 //P0口宏定義

/* ***************************************************** */

// 數碼管位選數組定義

/* ***************************************************** */

uchar code leddata[] =

{ 0x3F, //"0"

0x06, //"1"

0x5B, //"2"

0x4F, //"3"

0x66, //"4"

0x6D, //"5"

0x7D, //"6"

0x07, //"7"

0x7F, //"8"

0x6F, //"9"

0x77, //"A"

0x7C, //"B"

0x39, //"C"

0x5E, //"D"

0x79, //"E"

0x71, //"F"

0x76, //"H"

0x38, //"L"

0x37, //"n"

0x3E, //"u"

0x73, //"P"

0x5C, //"o"

0x40, //"-"

0x00, //熄滅

0x00 //自定義};

};

/* ***************************************************** */

// 位定義

/* ***************************************************** */

sbit = P1^7; //段選定義

sbit we = P1^6; //位選定義

/* ***************************************************** */

// 函數名稱:DelayMS()

// 函數功能:毫秒延時

// 入口參數:延時毫秒數(ValMS)

// 出口參數:無

/* ***************************************************** */

void delay(uint z)

{

uint x,y;

for(x = 0; x < z; x++)

for(y = 0; y < 113; y++);

}

/* ***************************************************** */

// 函數名稱:main()

// 函數功能:數碼管靜態顯示

// 入口參數:無

// 出口參數:無

/* ***************************************************** */

void main(void)

{

uchar i;

we = 1;//位選開

data = 0x00;//送入位選數據

we = 0;//位選關

while(1)

{

 for(i = 0;i < 16 ; i++)

 {

 = 1; //段選開

data = leddata[i]; //送入段選數據

 = 0; //段選關

 delay(500); //延時

 }

}

}

(1)單片機6個數碼管擴展閱讀

對於74HC573,形象一點,我們只需要將其理解為一扇大門,只不過這扇大門是單向的,其中11引腳(LE)控制著門的開、關狀態,高電平為大門打開,低電平為大門關閉。

D0-D7為輸入,Q0-Q7為輸出,在LE = 1,即輸入高電平時,輸入端=輸出端,輸入是什麼,輸出也就原封不動的輸出;在LE = 0 ,即輸入高電平時,大門關閉,實現鎖存,不再輸出。了解之後,我們按照電路圖,來進行編程,代碼實現。

在實現數碼管的靜態顯示中,用到了兩個鎖存器,兩個I/O口,P1.6和P1.7,分別是位選和段選。

首先定義了個數碼管位選數組,也就是十六進制代碼,這便是後來數碼管顯示數字的核心,接著,用 sbit 定義了位選和段選埠,分別是 P1.6 和 P1.7 ,定義了一個延時函數,其實這一串代碼很有意思,開關開關思想,貫穿始終。

首先把位選打開,送入位選數據後,關閉鎖存器,實現鎖存,進入循環,隨之打開段選鎖存器,送入段選數據後,再次關閉段選。

接下來,這個延時操作對於實際看到數碼管的顯示效果特別重要,因為程序在段選後之後,會馬上消隱,顯示的時間之後幾個微秒,這顯然不太合理,需要在關閉段選後加上延時,這樣一來,才會讓每位數碼管亮度保持均勻。

Ⅱ 51單片機靜態顯示可以實現6位數碼管123456的顯示嗎

多位數碼管無法實現靜態顯示,物理上正備它們就存在沖突。除非每一位顯示的內容都相同……
如果執著於用靜態顯示,行卜可以用6個1位數碼管,缺點是需要大量的舉帶毀管腳來控制(可以用串擴並方案或地址映射擴展方案,成本上得不償失)。

Ⅲ 請問一下基於51單片機的多功能秒錶怎樣實現六個數碼管的顯示

用定時器定時10mS中斷一次,每次中斷毫秒計數器加10,若亳秒大於1000,清零亳秒,秒加1,若秒等於60,秒清0,分加1
主程序中只管計算分離分,十分,秒,十秒,十毫秒,百毫秒,並不斷地查七段碼表並刷新數碼管

閱讀全文

與單片機6個數碼管相關的資料

熱點內容
epc的演算法 瀏覽:274
創造與魔法如何提前進入伺服器 瀏覽:89
高考復習壓縮語段 瀏覽:71
程序員的正裝視頻 瀏覽:830
程序員下班兼職做什麼好 瀏覽:596
怎麼安裝京喜app 瀏覽:522
androidthings是什麼 瀏覽:891
文件夾變應用程序怎麼打開 瀏覽:224
蘋果7震動加密 瀏覽:849
java實現事件 瀏覽:655
java許可權菜單 瀏覽:378
pythonlist分配空間 瀏覽:565
數據挖掘中層次聚類演算法實驗 瀏覽:173
開發完app如何配置伺服器 瀏覽:819
汽車壓縮機工作但是壓力不變 瀏覽:86
開發編譯軟體好嗎 瀏覽:901
微信朋友圈發幾兆的圖片不會被壓縮 瀏覽:291
單片機怎麼讓燈循環流水 瀏覽:402
聯想伺服器是什麼晶元 瀏覽:712
山東西門子plc編程軟體 瀏覽:401