⑴ 单片机连接发光二极管的方式不明白求解答,单片机的
单片机连接发光二极管不明一般是由于通过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烙铁芯温度
你需要温度传感器,将温度传感器与单片机连接然后编程获取温度