⑴ 單片機連接發光二極體的方式不明白求解答,單片機的
單片機連接發光二極體不明一般是由於通過LED的電流太小,一般3~10mA都能明;
單片機連接發光二極體明而不白一般是由於LED的選型不對,請選擇白光LED.
⑵ 您好,你有自動檢測並控制燈光亮度的電路或者C語言程序嗎(燈是發白光的發光二極體,用單片機控制的)
用單片機輸出pwm波,通過改變他的占空比調節亮度,我有avr單片機控制pwm輸出的程序,你要可以發你
⑶ 單片機led發光二極體怎麼選擇
一般做指示燈用的LED工作電流10mA左右,電流過大影響壽命。並且因為不同顏色的LED端壓降不同,比如藍光、白光的通常3v左右,高亮的2.5v左右,普通亮度的1.5-2v左右。
如果不清楚可以用下面的公司來計算,然後取最接近的有的標稱電阻;
公式應該是:電流10mA時電阻R=(U-2)/0.01=? 或者R=(U-3)/0.01=? 例如5v時R=(12-2)/0.01= 或者R=(12-3)/0.01=
電流20mA時電阻R=(U-2)/0.02=? 或者R=(U-3)/0.02=? 例如5v時R=(5-2)/0.02= 或者R=(5-3)/0.02=
補充:剛剛找到的一個好網址,輸入要求,直接計算:
實在不行換一個 或者在硬之城上面找找這個型號的資料
⑷ 如何用單片機控制LED 想讓LED發出不同顏色的光 怎麼用單片機進行控制
聽你的問題應該是剛入門不久的,如果可以的話,用三基色LED做,用PWM調光,實現全彩色顯示。
⑸ 單片機怎樣控制t12電烙鐵
T12白光電烙鐵控制電路的工作過程,很早以前就有網友分析,一直看得有點糊塗,今日仔細分析了動作過程,已經完全理解了,特寫出心得如下:
控制板的電路一般如下:
①、電路中358的2腳預置了熱電偶在規定溫度下的信號電壓值(mV級的),當電路上電時,3腳電壓低於2腳,1腳輸出低電平,T4將6腳箝位為低電平,7腳會輸出高電平,三極體飽和,TPC8107的G極點位降低而導通,電源開始為T12供電。
②、電源為T12供電時,電源電壓通過電阻103為電容器C103充電,短時可使3腳的電平高於2腳,1腳翻轉為高電平。
③、T4將1腳的高電平隔離,6腳通過電阻205給電容104緩慢充電,延時到6腳電位高於5腳時,7腳輸出低電平,三極體截止,TPC8107截止,停止向T12供電。
④、一旦TPC8107截止,停止向T12供電。則358的3腳電壓將迅速變為低電平。這里要注意了,這個低電平實際上等於從T12端通過電阻103傳來的熱電偶的信號電壓。如果此時熱電偶的信號電壓還低於預置的2腳電平,則電路狀態將重復①的狀態,進行①②③④循環。 如果此時熱電偶的信號電壓已經高於預置的2腳電平,則意味著烙鐵頭溫度已經達到預設值,358將不會翻轉,一直等待3腳的電平再次降低到2腳的預置值以下,才開始再次翻轉為T12供電。這樣的動作保持著T12頭子的恆溫狀態。
以上紅色字體部分,是以前的分析資料沒有明確說清楚的,這是這個控制電路能控制T12白光溫度的精髓所在。
總言之,控制電路是脈沖狀態地為T12供電,脈沖寬度取決於運放5腳上205的電阻給104電容充電的速度。脈沖間隔很小,取決於運放3腳上103電容器的電荷經103的電阻再經T12的發熱絲泄放的速度。在脈沖間隔期間,電路才真正檢測熱電偶的信號,確定脈沖供電是否應該繼續進行,從而實現烙鐵頭的恆溫。
⑹ led線路板上的G R B +分別是什麼意思我想讓這燈只發白色光怎麼整
為什麼要用單片機,單片機很復雜的,你有專用設備嗎?你能編碼嗎?有示波器嗎?對電路了解多少啊?單片機就是一種微型電腦,這個這么簡單還用單片機簡直就是大材小用,可以用集成電路,好像有一種工作方式開關集成電路可以按照多重運行方式來運行,具體是什麼型號我忘了,看你需要什麼運行方式,
⑺ 請看下圖,我想知道日本白光FX-888焊台(936焊台的升級版)上貼片IC是什麼型號。
HAKKO 05701 033A我的焊台,這晶元易壞
⑻ 麻煩大神幫我看一下這個白光T12控制板是STC的還是STM的
顯然是STC的單片機,第一張圖中能看到單片機上的STC Logo
⑼ 買了一個藍底白光1602的液晶,但是通過排座插到單片機時,只顯示底下一行黑塊。
調試過程總結一下:
1)由於找不到de1620資料,不知道它de操作時序。看到一些帖子說1620和1602沒區別,還shi有點將信將疑。後面用網友編寫de1602程序試驗,才知道它們倆沒啥區別。
2)關於shi否檢測LCD處於空閑,覺得還shi最好在寫指令和寫數據時都加上。不檢測,會導致顯示結果不正常。
3)由於連線很多14根(加上背光就shi16根),如果有一根除了問題就會影響到顯示。所以我shi用萬用表一根線一根線量了之後才通電試驗de。
4)看到很多帖子都建議在初始化LCD前延時幾十毫秒。本例中並沒有延時,顯示也正常。
5)總de說來,不shi很難。在遇到問題時只要能夠仔細分析,就能找出原因和解決方法。自己前幾天在試程序時就shi顯示結果不對,一直在檢查自己de程序,沒想到原來shi單片機deFlash到壽命了……那個郁悶啊…………
頭文件中有五個函數:
Function1.unsigned char AskBusy(void) 詢問LCD1620shi否空閑, 返回值"1"空閑, "0"為忙;
Function2.WritEDAta(char data) 寫數據到LCD1620;
Function3.WriteCommand(char command) 寫指令到LCD1620;
Function4.PutOneCharLCD(x,y,*Disp) 在LCD1620上顯示一個字元, x,y定義位置
Function5.PutStringLCD(a,b,*DispString) 在LCD1620上顯示一個字元串, a,b定義初始位置. Function6.LCD_Init() 初始化LCD
在使用此頭文件之前,必須有以下宏定義:
#define DataPortPullup PORTx
#define DataPortDirection DDRx
#define ReadLCDPin PINx
#define CtrlPortPullup PORTx
#define CtrlPortDirection DDRx
#define RS_Bit Px?
#define RW_Bit Px?
#define E_Bit Px?
其中「x」代表B,C,D(mega8中無A口),"?"代表「0~1」
完整頭文件如下(解釋搞了一大堆,也學學用英語……):
/*******************************************************/
/* Project :1620 Display Headfile */
/* Date :2008,3,11 */
/* Author :lhy */
/* Version :v1.1 */
/* Rework :lhy */
/* Rework Date :2008.4.28 */
/* */
/* Comments : */
/* 1 Function Description */
/* Function1.unsigned char AskBusy(void) */
/* --Calls this Fun to ask if LCD is busy, */
/* 1--free,0--busy; */
/* Function2.WritEDAta(char data) */
/* --Write data to LCD */
/* Function3.WriteCommand(char command) */
/* --write command to LCD */
/* Function4.PutOneCharLCD(x,y,*Disp) */
/* --Put one char to LCD. */
/* Function5.PutStringLCD(a,b,*DispString) */
/* --Put String to LCD. Max length 32bits. */
/* */
/* 2 How to use */
/* Before use this HeadFile, */
/* need to define as below: */
/* #define DataPortPullup PORTx */
/* #define DataPortDirection DDRx */
/* #define ReadLCDPin PINx */
/* #define CtrlPortPullup PORTx */
/* #define CtrlPortDirection DDRx */
/* #define RS_Bit Px? */
/* #define RW_Bit Px? */
/* #define E_Bit Px? */
/* x -> A,B,C,D... */
/* ? -> 0,1,2,3,4,5,6,7 */
/* And set control port output,like this: */
/* CtrlPortDirection |= */
/* (1<<E_Bit) | (1<<RS_Bit) | (1<<RW_Bit); */
/* 3 Add the Function "LCD_Init(void)" */
/* Before this Fun, you must set control port */
/* output. */
/*******************************************************/
#ifndef _LCD1620_h
#define _LCD1620_h
//Calls this Fun to ask if LCD is busy,1--free,0--busy
unsigned char AskBusy(void)
{
DataPortDirection = 0x00;
DataPortPullup = 0xff;//enable pullup res
CtrlPortPullup |= (1<<RW_Bit);//Set RW
CtrlPortPullup &= ~(1<<RS_Bit);//Clear RS
CtrlPortPullup |= (1<<E_Bit);//set enable pin
if((ReadLCDPin & (1<<7))==0)
return 1;//lcd is free
else
return 0;//lcd is busy
}
//wait until LCD was free
void WaitForFree(void)
{
unsigned char BusyBit;
do
{
BusyBit = AskBusy();
}
while(BusyBit !=1);
CtrlPortPullup &= (~1<<E_Bit);//Clear enable pin
}
//Write data to LCD
void WritEDAta(char data)
{
WaitForFree();
CtrlPortPullup &= ~(1<<RW_Bit);//Clear RW
CtrlPortPullup |= (1<<RS_Bit);//Set RS
DataPortDirection = 0xff;
DataPortPullup = data;
CtrlPortPullup |= (1<<E_Bit);//set E
CtrlPortPullup &= ~(1<<E_Bit);//Clear E
}
//write command to LCD
void WriteCommand(char command)
{
WaitForFree();
CtrlPortPullup &= ~(1<<RS_Bit);//Clear RS
CtrlPortPullup &= ~(1<<RW_Bit);//Clear RW
DataPortDirection |= 0xff;
DataPortPullup = command;
CtrlPortPullup |= (1<<E_Bit);//set E
CtrlPortPullup &= ~(1<<E_Bit);//Clear E
}
//Write one char to LCD.
void PutOneCharLCD(unsigned char x,unsigned char y,unsigned char *Disp)
{
unsigned char Location;
if(x == 0)
{
Location = y | (1<<7);
}
else if(x == 1)
{
Location = y | (1<<6) |(1<<7);
}
WriteCommand(Location);
WritEDAta(*Disp);
}
//Write String to LCD. Max length 32bits(determined by the location of the first byte).
void PutStringLCD(unsigned char a,unsigned char b,unsigned char *DispString)
{
do
{
PutOneCharLCD(a,b,DispString);
b ++;
DispString ++;
}
while((b <= 15) && (*DispString));
if(*DispString)
{
a ++;//Jump to 2nd row.
b = 0;
do
{
PutOneCharLCD(a,b,DispString);
b ++;
DispString ++;
}
while((b <= 15) && (*DispString));
}
}
//Initialize the LCD1620
void LCD_Init(void)
{
WriteCommand(0x38);//16X2,5X7 lattice,8 bit for transmit
WriteCommand(0x08);//Close the display and cursor
WriteCommand(0x0f);//Set cursor and enable dispaly
WriteCommand(0x06);
WriteCommand(0x01);//Clear the screen
}
#endif
把此頭文件包含到主程序中:
/*******************************************************/
/* Project :1620 Display Function */
/* Compiler :ICCAVR 6.03A */
/* Date :2008,4,28 */
/* Author :lhy */
/* Chip type :Atmega8 */
/* Comments : */
/*******************************************************/
#i nclude "iom8v.h"
#define DataPortPullup PORTD
#define DataPortDirection DDRD
#define ReadLCDPin PIND
#define CtrlPortPullup PORTC
#define CtrlPortDirection DDRC
#define RS_Bit PC0
#define RW_Bit PC1
#define E_Bit PC2
#i nclude "LCD1620.h"
void main()
{
OSCCAL=0XA5;
CtrlPortDirection |= ((1<<E_Bit)|(1<<RS_Bit)|(1<<RW_Bit));
LCD_Init();
PutStringLCD(0,0,"Li Heng Yuan is a good boy!!");
⑽ 怎樣用單片機測量白光t12烙鐵芯溫度
你需要溫度感測器,將溫度感測器與單片機連接然後編程獲取溫度