共陰數碼管靜態顯示

數碼管電路原理圖

 

硬件實現原理

1.電路分析spa

首先經過M74HC573MIR鎖存器鎖存數據,首先經過Y7C使能端輸出段碼,Y6C使能端輸出位碼,這裏的電阻起到限流的做用。code

 

2.數碼管分析blog

共陽(陰)數碼管:每一個數碼管都是有八個二極管構成的,因此二極管的陽(陰)極是共用的並且連高(低)電平就共陽(陰)數碼管。it

段碼顯示:段碼顯示最高位從dp(h)->g->f->e->d->c->b->a。共陰數碼管點亮的二極管位置爲1,構成的二進制數轉換成十六進制數。class

 

代碼實現

 1 #include "reg52.h"
 2 
 3 typedef unsigned int u16;  4 typedef unsigned char u8;  5 
 6 /*u8 code smgduan[18]=  7  {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,  8  0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};*/ //共陽
 9          
10 u8 code smgduan[18]=
11         {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 12          0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 13 
14 void delay(u16 i) 15 { 16     while(i--); 17     while(i--); 18 } 19          
20 void HC138Init(u8 i) 21 { 22     switch(i) 23  { 24         case 4: 25             P2 = (P2 & 0x1f) | 0x80; 26         break; 27         
28         case 5: 29             P2 = (P2 & 0x1f) | 0xa0; 30         break; 31         
32         case 6: 33             P2= (P2 & 0x1f) | 0xc0; 34         break; 35         
36         case 7: 37             P2 = (P2 & 0x1f) | 0xe0; 38             
39  } 40 } 41 
42 void Display(u8 dat,unsigned pos) 43 { 44     HC138Init(6); // 數碼管的位置
45     P0 = 0x01 << pos; 46     HC138Init(7); // 數碼管的內容
47     P0 = dat; 48 } 49 
50 void DigDisplay() 51 { 52  u8 i,j; 53     for(i=0;i<8;i++) 54  { 55         for(j=0;j<10;j++) 56  { 57  Display(smgduan[j],i); 58             delay(60000); 59  } 60  } 61     for(j=0;j<16;j++) 62  { 63         HC138Init(6); 64         P0 = 0xff; 65         HC138Init(7); 66         P0 = smgduan[j]; 67         delay(60000); 68  } 69     
70 } 71 
72 void main() 73 { 74     while(1) 75  { 76  DigDisplay(); 77  }   
78 }
相關文章
相關標籤/搜索