Ⅰ 關於stc90c52單片機驅動數碼管電路的問題
數碼管下面的三極體是驅動用的,com介面是選通用的,你的數碼管應該是採用掃描驅動的。掃描原理就是任意一個時刻,只有一個COM是通的,通的時候,單片機輸出對應於該位的數值,其它關斷。快速輪回顯示,這樣,由於人眼的視覺停留,看到的是所有數碼管同時顯示。這方面,你需要看一下掃描顯示原理。
R1~R8是對數碼管的8個欄位(7段碼加小數點)進行限流。比如說,你希望數碼管的電流限制為10mA,那麼(5V-1.6V)/10mA=340Ω。問題是,由於你採用掃描顯示,如果是4個數碼管掃描,那麼,其平均電流只有10mA的1/4,也就是2.5mA,為此,需要將限流電阻減小。限流電阻為100Ω時,實際導通電流約34mA,平均電流約8.5mA。
Ⅱ 如何用52rc單片機驅動微孔霧化片
應該是單片機管腳的驅動能力太弱,沒能驅動霧化片。用萬用表或者示波器看下管腳電壓。
STC的話可以設置成推挽輸出,驅動能力大大增強
Ⅲ 單片機AT80S52怎麼驅動蜂鳴器
AT80S52單片機io口的驅動能力很弱,如果把蜂鳴器的+接正電源蜂鳴器的-接單片機的io口,並在程序中把這個io口置「0」,也許會聽到很輕微的響聲,但是,如果把蜂鳴器的-接電源地,蜂鳴器的+接單片機的io口,並在程序中把這個io口置「1」,由於單片機的驅動能力嚴重不足,是聽不到響聲的。需要加驅動才可以。
Ⅳ 52單片機如何增加輸出PWM波形的驅動能力
直流輸出
Ⅳ 誰能幫忙寫個52單片機驅動74hc595控制LCD1602的程序
你敢不敢給點分
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LcdBus P0
sbit LED1602_RS=P2^6; //LCD埠定義
sbit LED1602_RW=P2^5 ;
sbit LED1602_EN=P2^4 ;
void LcdIni(void);
void WrOp(uchar dat);
void WrDat(uchar dat);
void ChkBusy(void);
void print_LCD(uchar disp[],uchar num);
//延時n ms子程序
void delayms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<120;j++);
}
main()
{
uchar disp1[16]={'S','u','n','J','i','e',' ','m','a','d','e',' ','a','t',' ',' '};
uchar disp2[16]={'2','0','0','8',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
while(1)
{
LcdIni();
WrOp(0x80); //數據指針地址第一行
print_LCD(disp1,16);
WrOp(0xc0); //第二行
print_LCD(disp2,4);
delayms(3000);
WrOp(0x01);
}
}
/******************************************************************************************
名稱:led1602顯示 程序模塊
功能:驅動1602 包括數據口 P1 三個控制口
編譯:keil
作者:孫傑
時間:2008-8-9
*******************************************************************************************/
void print_LCD(uchar disp[],uchar num) //顯示數組disp 顯示長度為num
{
uchar i;
for(i=0;i<num;i++)
{
WrDat(disp[i]);
delayms(300);
}
}
void LcdIni()
{
WrOp(0x38);
WrOp(0x06); //游標加1
WrOp(0x0f); //開顯示 游標閃爍
// WrOp(0x0c); //開顯示 游標不閃爍
}
void WrOp(uchar dat)
{
//uchar i;
ChkBusy();
LED1602_RS=0; //RS=0
LED1602_RW=0; //RW=0
LED1602_EN=0; //EN=0
LcdBus=dat; //送數據
LED1602_EN=1; //EN=1
delayms(10); //延時
LED1602_EN=0; //EN=0
}
void WrDat(uchar dat)
{
//uchar i;
ChkBusy();
LED1602_RS=1; //rs=1
LED1602_RW=0; //rw=0
LED1602_EN=0; //en=0
LcdBus=dat; //送數據
LED1602_EN=1; //en=1
delayms(10);; //延時
LED1602_EN=0; //en=0
}
void ChkBusy()
{
LED1602_RS=0; //RS=0
LED1602_RW=1; //RW=1
LED1602_EN=1; //EN=1
while(LcdBus&0x80); //送數據
LED1602_EN=0; //en=0
}
Ⅵ 二項四線步進電機用52單片機的話,選用什麼驅動晶元
建議用L297+L298做驅動器:它能自己生成步進電機工作所需相序,在很大程度上能夠減輕軟體設計的負擔,控制比較簡單,只需要發送脈沖即可;ULN2003其實也可以(如果做比較小的東西的話),ULN2003是一個非門電路,包含7個單元,單獨每個單元驅動電流最大可達350mA,能夠直接驅動直流電機或步進電機,但是,ULN2003不能產生步進電機工作相序,需要在程序部分設計好電機如何工作!
Ⅶ 52單片機驅動蜂鳴器,我這樣寫為什麼不對,求大神
#include<reg52.h>
void yanshi();
sbit beep=P3^6;
void main()
{
while(1){
beep=0;
yanshi();
beep=1;
yanshi();
}
}
void yanshi()
{
int i;
for(i=100;i>=0;i--);
}
程序這樣就行了,如果你的是有源可以,無源也可以。需要高電平打開三極體開關。