單片機之動態數碼管篇

思來想去還是決定要出這期教程,因爲我看很多同學在這個數碼管的問題上都還是有點迷惑,特別是這個動態數碼管的工作原理,以及這個相應代碼該如何編寫,那麼教程來了~

首先看一下一位數碼管內部原理,以及各個引腳的標識
使用LED顯示器時,要注意區分這兩種不同的接法。爲了顯示數字或字符,必須對數字或字符進行編碼。七段數碼管加上一個小數點,共計8段。因此爲LED顯示器提供的編碼正好是一個字節。實驗板用共陰LED顯示器,根據電路連接圖顯示16進制數的編碼見下方:

共陽數碼管顯示數組=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86, 0x8e};//顯示0~F的值

共陰數碼管顯示數組={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值

多位數碼管的工作原理與一位相同,不同的是多爲數碼管相較於一位數碼管多了位選,連接時只需要把各個位選連接不同的單片機引腳,再寫好程序加以控制就行,下面是四位數碼管的引腳標識
在這裏插入圖片描述
這次主要是想給大家分享一個關於動態數碼管的教程,所以咱們需要8位數碼管,實際焊接中可以選用兩個四位數碼管組成,陰極陽極都可以,編程時代碼顯示不要出錯就好了,我這裏仿真用的是八位陰極數碼管,仿真電路如下:
在這裏插入圖片描述
動態數碼管顯示程序代碼如下:

#include"reg52.h"  //頭文件
typedef unsigned char uchar;
typedef unsigned int uint;
unsigned char z;  //定義無符號字符型變量z
unsigned char code duan_xuan[10]=    //數碼管段選
	{
	0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
	0x7f,0x6f
	};	
unsigned char code wei_xuan[8]=    //數碼管位選
	{
	0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F
	};
unsigned char dat[8]={8,7,6,5,4,3,2,1};    //數碼管顯示字符12345678

void delay(unsigned int x)   //調用延時函數delay
{
	unsigned char i;
	while(x--)
	{
		for(i=0;i<120;i++);
	}
}
void main()        //主函數
{
	P2=0x00;      //初始化數碼管
	while(1)
	{
		for(z=0;z<8;z++)  //利用for循環一次讓數碼管顯示數字1~8
		{
			P2=duan_xuan[dat[z]];
			P1=wei_xuan[z];
			P1=0XFF;
			delay(5);
		}
	}
}

希望對大家有所幫助,能幫到大家那就非常開心了,喜歡的話可以關注我,記得幫忙點個贊哦 !o( ̄▽ ̄)ブ 非常非常感謝❤❤❤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章