1. 程式人生 > >51微控制器【三】靜態驅動數碼管

51微控制器【三】靜態驅動數碼管

void DigDisplay(void)
{
	unsigned char i = 0;

	// 首先確定位碼,選中最左側數碼管,注意查38譯碼器的真值表,gagbgc為38譯碼器的ABC埠
	gA = 0;
	gB = 0;
	gC = 0;
	// 依次顯示0-F
	for (i=0; i<16; i++)
	{
		DIG_PORT = gDuanMa[i];/*這個陣列已經定義16個元素對應0-f的段碼,DIG_PORT是共陰極數碼管段碼經74HC573接P0埠*/
		//Delay();
		delay800ms();

上面是38譯碼器簡單點說就是輸入三個訊號輸出八種訊號,因為三種0或1可以有八種組合

上面是74HC573是將電壓放大使二極體發亮強度更大,邏輯上並不存在。

上面是38譯碼器的真值表可以通過查詢此表判斷輸入那三個值使8個led中的那個亮

驅動過程是這樣的

1.選擇哪一組led亮

使用38譯碼器選擇一組led燈使之一側電壓為低 其他全部為高

2.使這組顯示確切的數字

從CPU引腳到73再到數碼管 給的全是高電壓因此只有選中的那組可以亮 下面通過p0埠將段碼輸入產生確切的高低電壓使每顆正確的led發光出確切的數字