㈠ 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)單片機靜態數碼管顯示擴展閱讀
對於74HC573,形象一點,我們只需要將其理解為一扇大門,只不過這扇大門是單向的,其中11引腳(LE)控制著門的開、關狀態,高電平為大門打開,低電平為大門關閉。
D0-D7為輸入,Q0-Q7為輸出,在LE = 1,即輸入高電平時,輸入端=輸出端,輸入是什麼,輸出也就原封不動的輸出;在LE = 0 ,即輸入高電平時,大門關閉,實現鎖存,不再輸出。了解之後,我們按照電路圖,來進行編程,代碼實現。
在實現數碼管的靜態顯示中,用到了兩個鎖存器,兩個I/O口,P1.6和P1.7,分別是位選和段選。
首先定義了個數碼管位選數組,也就是十六進制代碼,這便是後來數碼管顯示數字的核心,接著,用 sbit 定義了位選和段選埠,分別是 P1.6 和 P1.7 ,定義了一個延時函數,其實這一串代碼很有意思,開關開關思想,貫穿始終。
首先把位選打開,送入位選數據後,關閉鎖存器,實現鎖存,進入循環,隨之打開段選鎖存器,送入段選數據後,再次關閉段選。
接下來,這個延時操作對於實際看到數碼管的顯示效果特別重要,因為程序在段選後之後,會馬上消隱,顯示的時間之後幾個微秒,這顯然不太合理,需要在關閉段選後加上延時,這樣一來,才會讓每位數碼管亮度保持均勻。
㈡ 51單片機與led數碼管靜態顯示實驗目的
51單片機與led數碼管靜態顯示實驗的目的有以下幾點:
1. 熟悉51單片機的IO口編程方法:通過對51單片機的IO口編程,可以更好地了解51單片機的工作原理,為後續的單片機編程打下基礎。
2. 熟悉led數碼管的驅動原理:led數碼管是常見的數字顯示設備,通過數字電路將數字信號轉換為led點陣信號,控制點亮不同的led燈來顯示數字。了解led數碼管的驅動盯坦原理,能夠更好地理解數字電路的工作原理。
3. 掌握數碼管凱瞎桐靜態顯示的方法:靜態顯示是將數碼管中的每個數字分別映射到單片機的IO口上,並按照一定的時序信號將對應的數字信息發送到數碼管上進行顯示。掌握數碼管靜態顯示的神正方法,能夠進一步理解數字電路的設計和實現。
4. 綜合應用:通過將51單片機的IO口編程和數碼管的驅動技術應用到實驗中,實現了一個數字計時器的設計和實現。這個實例能夠讓學生更深入地了解嵌入式系統的設計和應用方法。
通過這些目的的實現,學生可以加深對數字電路和嵌入式系統的理解和應用,為以後的工作和學習打下良好的基礎。
㈢ 51單片機靜態顯示可以實現6位數碼管123456的顯示嗎
多位數碼管無法實現靜態顯示,物理上正備它們就存在沖突。除非每一位顯示的內容都相同……
如果執著於用靜態顯示,行卜可以用6個1位數碼管,缺點是需要大量的舉帶毀管腳來控制(可以用串擴並方案或地址映射擴展方案,成本上得不償失)。