① 單片機控制七段數碼管顯示,為什麼要加三極體驅動啊
數碼管需要的工作電流大,單片機的驅動電流不夠。一般的做法,就是利用單片機的輸出,做三極體的基極驅動,然後讓三極體的發射極做輸出的驅動,輸出更高的電壓和大的電流。這樣才能驅動數碼管的顯示。
所以工作中,一般選擇共陽的。一段接電源,負端接單片機,但是為了增加驅動,一般也把單片機的輸出口經過一個非門後,接數碼管的負極。這樣電路的輸出電流和電壓才能達到要求。
希望能對你
有用!!
② 用51單片機程序顯示3位7段數碼管,求具體程序
假設為共陰極數碼管,驅動輸入端接單片機P1口,共陰極接P2口的0.1.2.腳。我的程序如下,當前顯示數字123
#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef long int uint32;
code uint8 number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay_ms(uint16 x)//1ms延時
{
uint8 i = 121;
while(x > 0)
{
i = 121;
while(i > 0)
i --;
x --;
}
}
void xianshi(uint16 x)
{
uint8 i=0;
for(i=0;i<=2;i++)
{
P2=~(1<<i);
switch(i)
{
case 0:P1=number[(x/1)%10];break;
case 1:P1=number[(x/10)%10];break;
case 2:P1=number[(x/100)%10];break;
default:break;
}
delay_ms(10);
}
}
main()
{
while(1)
{
xianshi(123);
}
}
③ 求單片機實驗七段數碼管顯示實驗程序
/* ch03-3-4.c - 七段LED數碼管實驗程序 */
//==聲明區=================================================
#include<reg51.h> //定義8051寄存器的頭文件,P2-17~19
#define SEG P0 //定義七段LED數碼管接至Port 0
/*聲明七段LED數碼管驅動信號數組(共陽)*/
char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99, //數字0-4
0x92,0x83,0xf8,0x80,0x98}; //數字5-9
void delay(int); //聲明延遲函數
//==主程序==========================================
main() //主程序開始
{ unsigned char i; //聲明無符號變數i
while(1) //無窮循環,程序一直跑
for(i=0;i<10;i++) //顯示0-9,共10次
{ SEG=TAB[i]; //顯示數字
delay(500); //延遲500×1m=0.5秒
} //for循環結束
} //主程序結束
//==子程序==========================================
/* 延遲函數,延遲約x×1ms */
void delay (int x) //延遲函數開始
{ int i,j; //聲明整形變數i,j
for (i=0;i<x;i++) //計數x次,延遲x×1ms
for (j=0;j<160;j++); //計數120次,延遲1ms
} //延遲函數結束
④ 共陽極四位七段數碼管(12個引腳)怎麼連接到單片機上啊
哦,這個啊……
正面看的話,上面6腳,下面6腳,共12腳
上面從左到右是1,a,f,2,3,b
下面從左到右是e,d,dp,c,g,4
其中1,2,3,4是4個數碼管的位選,因為是共陽,所以這幾腳高電平時才有可能點亮數碼管,記得要三極體驅動,9013就可以了.9013的C加個限流電阻接電源,B接單片機,E接1,2,3,4.單片機給高電平時選中.
a,b,c,d,e,f,g,dp是段碼,低電平有效,一般也送單片機控制