文章目錄
- 前言
- 仿真圖
- 如何去繪制一個數字
- 示例代碼
- 選擇某個數碼管
- 顯示某個數字
- 示例代碼
- 總結
前言
在嵌入式系統的世界中,單片機扮演著至關重要的角色。51單片機,作為最早的微控制器之一,至今仍被廣泛應用在各種設備中。本文將介紹如何使用51單片機點亮數碼管,這是每個學習單片機的初學者都必須掌握的基本技能。我們將通過實際的操作步驟,讓你了解如何編程控制單片機,以驅動數碼管顯示數字或字符。
仿真圖
搜索7seg即可,MPX+數字,其中數字為數碼管的個數,CA為共陽,CC為共陰,我們這里使用共陽
電路圖:
如何去繪制一個數字
下面就是單個數碼管的圖片,我們輸入對應的高低電平給對應的led就可以點亮對應的led
在共陽數碼管中,你需要輸入0給led,即可點亮他
共陰就是反一下。
示例代碼
選擇某個數碼管
共陽數碼管當該引腳為高電平時,即選中了他,比如1輸入高電平,就可以操作顯示0這個數碼管了
void Choose(unsigned char index)
{P1 = 0;P1 = (1 << index);
}
顯示某個數字
unsigned char num[6] = {0xC0, // ?? 00Xf9, // ?? 10Xa4, // ?? 20Xb0, // ?? 30X99, // ?? 40X92, // ?? 5
};void show(unsigned char digit)
{P2 = num[digit]; // ????????????P2??
}
這段代碼是用來驅動數碼管顯示數字的。首先,我們來看看這個數組num
:
unsigned char num[6] = {0xC0, // ?? 00Xf9, // ?? 10Xa4, // ?? 20Xb0, // ?? 30X99, // ?? 40X92, // ?? 5
};
這個數組存儲了6個16進制數,每個數對應一個數字(0到5)在數碼管上的顯示方式。這些數是通過設置數碼管的各個段(一般為7段或8段)的亮滅來顯示對應的數字。
然后,我們看看show
函數:
void show(unsigned char digit)
{P2 = num[digit];
}
這個函數接收一個數字(0到5),然后將這個數字對應的數碼管顯示方式(也就是num
數組中對應的那個數)賦值給P2
。在這里,P2
是一個端口,它連接著數碼管。通過改變P2
的值,我們就可以改變數碼管的顯示。
所以,這段代碼之所以能點亮數碼管,是因為它通過改變連接數碼管的端口P2
的值,來改變數碼管的顯示。
如果你想添加新的字符,可以看這張圖,1為開,0為關,寫出對應的二進制,然后轉換為16進制,放到num中即可
示例代碼
#include <regx52.h>typedef unsigned char u8;unsigned char num[10] = {0xC0, // ?? 00Xf9, // ?? 10Xa4, // ?? 20Xb0, // ?? 30X99, // ?? 40X92, // ?? 5
};void delay(unsigned int ms) {unsigned int i, j;for(i = ms; i > 0; i--)for(j = 120; j > 0; j--);
}void Choose(unsigned char index)
{P1 = 0;P1 = (1 << index);
}// ???????
void show(unsigned char digit)
{P2 = num[digit]; // ????????????P2??
}char ix = 0;void main()
{P0 = 0;Choose(1); // ????????show(1); // ????1while(1){Choose(ix);show(ix);ix++;ix%=6;delay(10);}
}
總結
通過本文的學習,我們了解了如何使用51單片機來點亮數碼管。這個過程雖然看似簡單,但它涵蓋了許多重要的概念,如I/O編程,寄存器操作,以及時序控制等。掌握了這些,你就已經邁出了成為一名嵌入式系統工程師的第一步。希望你能繼續探索51單片機的更多功能,并將其應用到更復雜的項目中去。記住,每個偉大的發明都始于簡單的想法,而最重要的是你已經開始了這個旅程。祝你學習愉快!