|
我使用的板子上有8個動態數碼管。可以根據自己的動態數碼管個數修改。動態數碼管和靜態數碼管的區別是:動態數碼管多了個位選。我使用板子上有一個74HC138芯片,叫做3-8譯碼器,使用該芯片控制動態數碼管位選。下面簡單介紹一下這個芯片:該芯片A0~A2是輸入口,Y0~Y7是輸出口,輸入輸出受E1,E2,E3控制,E1、E2要接地,E3接VCC才可以正常輸出。大家可以自行在網上搜索該芯片的真值表來進行編程。使用該芯片驅動動態數碼管有兩個好處:
1. 大大節約單片機的I/O口,尤其是51單片機。
2. 增強對動態數碼管的驅動能力,顯示更清楚。(相比直接用8個I/O口驅動)
段選接了74HC245芯片,該芯片非常簡單,總結一句話就是:I/O口輸出高電平,它的輸出端就輸出高電平。
我分別用了兩種方法實現了動態數碼管的顯示,下面直接上代碼。
單片機源程序如下:
- #include "reg52.h"
- typedef unsigned char u8;
- typedef unsigned int u16;
- /* 對三線-八線譯碼器的三個輸入引腳定義 */
- sbit LSA = P2^2;
- sbit LSB = P2^3;
- sbit LSC = P2^4;
- /* 用數組儲存0~F的值,共陰碼表 */
- //u8 code smgduan[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
- // 0x7c,0x39,0x5e,0x79,0x71};
- /* 定義一個1314-520 數碼 */
- u8 code smgduan[8] = {0x06,0x4f,0x06,0x66,0x40,0x6d,0x5b,0x3f};
- /* 聲明一個直接控制數碼管位的函數 */
- //void direct_control();
- /* 延時函數 */
- void delay(u16 i)
- {
- while(i--);
- }
- /* 定義八個數碼管顯示器的位選函數 ,掃描數碼管 */
- void Digdisplay()
- {
- u8 i;
- for(i = 0; i < 8; i++)
- {
- switch(i)
- {
-
- case (0):
- LSA = 0; LSB = 0; LSC = 0; break; // 000
- case (1):
- LSA = 1; LSB = 0; LSC = 0; break; // 001
- case (2):
- LSA = 0; LSB = 1; LSC = 0; break; // 010
- case (3):
- LSA = 1; LSB = 1; LSC = 0; break; // 011
- case (4):
- LSA = 0; LSB = 0; LSC = 1; break; // 100
- case (5):
- LSA = 1; LSB = 0; LSC = 1; break; // 101
- case (6):
- LSA = 0; LSB = 1; LSC = 1; break; // 110
- case (7):
- LSA = 1; LSB = 1; LSC = 1; break; // 111
- }
- P0 = smgduan[i];
- delay(100); //改變參數的值能實現滾動顯示。最大為65535,否則會溢出。
- P0 = 0x00; //清空數碼管,以防止出現重影。
- }
- }
- void main(void)
- {
-
- while(1)
- {
- Digdisplay();
- // direct_control();
- }
- }
- /* 直接控制數碼管位 函數的定義 */
- /*void direct_control()
- {
- u8 i;
- for(i = 0; i < 8; i++)
- {
- switch(i)
- {
- case (0): P1 = 0xfe; break;
- case (1): P1 = 0xfd; break;
- case (2): P1 = 0xfb; break;
- case (3): P1 = 0xf7; break;
- case (4): P1 = 0xef; break;
- case (5): P1 = 0xdf; break;
- case (6): P1 = 0xbf; break;
- case (7): P1 = 0x7f; break; //直接控制8位數碼管,不使用3-8譯碼器
- }
- P0 = smgduan[i];
- delay(100);
- P0 = 0x00;
- }
- } */
復制代碼
所有資料51hei提供下載:
DT_S_M_G.zip
(19.43 KB, 下載次數: 10)
2020-3-29 18:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
-
1.png
(27.32 KB, 下載次數: 41)
下載附件
2020-3-29 18:26 上傳
3線-8線譯碼器邏輯圖
|