單片機是控制器件而不是驅動器件,因為輸出電流很小,不足以驅動某些需要大電流的外設。 單片機的GPIO口驅動能力有限,不能直接驅動較大功率的負載。
標準51的P0口(雙向口)在作為I/O口使用時,是開漏結構,在實際應用中通常要添加上拉電阻(排阻)。 P1、P2、P3都是準雙向I/O,內部有上拉電阻,既可作為輸入又可以作為輸出。
P0三態門有三個狀態,即在其的輸出端可以是高電平、低電平,同時還有一種就是高阻狀態(或稱為禁止狀態)
惡補一些基礎概念,稍微了解下,原理看不懂跳過...
1.灌電流方式
LED正極接VCC,負極接IO口。 IO為高電平是LED兩極電平相同,沒有電流,LED熄滅;IO為低電平時,電流從VCC流入IO,LED點亮。
但是當你把LED正極接在IO接口,負極接GND時,將IO接口置于高電平,LED會亮,但因為IO接口上拉能力不足而使亮度不理想
2.三極管驅動
三極管全稱半導體三極管,也稱晶體三極管,是一種控制電流的半導體器件其作用是把微弱的電信號放大成幅度值較大的電信號,也用作無觸點開關,在電路中主要起開關和增大電流的作用。
NPN基極高于發射極電壓是導通,PNP發射極電壓高于基極電壓則導通。
NPN高電平時導通,PNP低電平時導通;
以共陽極4位數碼管為例,共陰極感覺電路復雜繁瑣,直接用專用IC驅動就好
PNP例子代碼用自學單片機04里面的代碼即可,NPN里面有
注意:唯一的區別【使用PNP三極管,基極為低電平時,才導通】
NPN三極管基極為高電平導通
3.使用專用IC提高驅動能力(74HC245)
74hc245是一種在單片機系統中常用的驅動器,在電路中的作用是:增加io口的驅動能力,比如說51單片機的io口本身的驅動電流較小但所帶的負載很大,這種時候就可以使用74hc245來增強io口的驅動能力
共陰極數碼管連接方式
共陰極數碼管代碼稍微改動下
1.顯示數字0-9的數組和共陽極不一樣不一樣
2.位碼低電平導通,位碼高電平截至沒有壓降
#include
#include "DelayXms.h"
#define led P2
const u8 a[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共陰極數碼管0-9
sbit bitcode0 = P1^0;
sbit bitcode1 = P1^1;
sbit bitcode2 = P1^2;
sbit bitcode3 = P1^3;
void display(u16 number);
void main()
{
u16 count=0;
while(1){
count++;
display(count);
if(10000 ==count)
count = 0;
}
}
void display(u16 number)
{
led = a[number/1000];//千位
bitcode0 = 0; //位碼低電平導通
DelayXms(9);
bitcode0 = 1;//位碼高電平導通
led = a[(number/100)%10];//百位
bitcode1 = 0;//位碼低電平導通
DelayXms(9);
bitcode1 = 1;//位碼高電平導通
led = a[(number/10)%10];//十位
bitcode2 = 0;
DelayXms(9);
bitcode2 = 1;
led = a[number%10];//個位
bitcode3 = 0;
DelayXms(9);
bitcode3 = 1;
}
-
led
+關注
關注
242文章
23153瀏覽量
658621 -
三極管
+關注
關注
142文章
3603瀏覽量
121677 -
單片機
+關注
關注
6032文章
44525瀏覽量
633261 -
GPIO
+關注
關注
16文章
1196瀏覽量
51934 -
灌電流
+關注
關注
0文章
55瀏覽量
9161
發布評論請先 登錄
相關推薦
評論