1. 程式人生 > 其它 >51微控制器-靜態數碼管

51微控制器-靜態數碼管

51微控制器

靜態數碼管

問題一:點亮LED6 並顯示數值6

開發板為A2學習開發板(普中) 數碼管連線到138譯碼器上
由上圖可知 如果要點亮LED6可知要在譯碼器的P22 P23 P24 輸入二進位制 101(5即是LED6)

由於74HC245晶片的作用
問題是點亮LED6 顯示數值6
可知本要向 數碼管輸入1011 1110 經過74HC245晶片可知要向P00埠寫入 0111 1011 即是 0x7D


程式碼如下:



void main(){

	P2_4 = 1;
	P2_3 =0;
	P2_2 = 1;  //138譯碼器  指定 101  等於 5 LED6被選中
	P0 = 0X7D;
	while(1){
	
		
	
	
	}



} 

通過switch迴圈和 陣列可以實現對8個數碼管的0-9數值顯示

程式碼如下


unsigned char NixieTable[] = {0x3f,0x06,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}	;
void Nixie(unsigned char Location,number){

		  switch(Location){
		  
		  	case 1:
				P2_4 = 1;
				P2_3 = 1;
				P2_2 = 1;
				break;
			case 2:
				P2_4 = 1;
				P2_3 = 1;
				P2_2 = 0;
				break;
			case 3:
				P2_4 = 1;
				P2_3 = 0;
				P2_2 = 1;
				break;
			case 4:
				P2_4 = 1;
				P2_3 = 0;
				P2_2 = 0;
				break;
			case 5:
				P2_4 = 0;
				P2_3 = 1;
				P2_2 = 1;
				break;
			case 6:
				P2_4 = 0;
				P2_3 = 1;
				P2_2 = 0;
				break;
		  	case 7:
				P2_4 = 0;
				P2_3 = 0;
				P2_2 = 1;
				break;
			case 8:
				P2_4 = 0;
				P2_3 = 0;
				P2_2 = 0;
				break;
		  }

	   P0 = NixieTable[number];
}
void main(){

	//P2_4 = 1;
	//P2_3 =0;
	//P2_2 = 0;  //138譯碼器  指定 101  等於 5 LED6被選中
//	P0 = 0X7D;
	Nixie(7,2);
	while(1){
	
		
	
	
	}



}

***到此結束