基
于
51
单
片
机
控
制
灯
泡
亮
度
********
*******
目录
一、51 单片机及其特点---------------------------------------1
二、基本控制原理-------------------------------------------1
2.1.系统控制基本原理--------------------------------------------2
2.2.按键控制单元------------------------------------------------2
2.3.过零检测组件------------------------------------------------2
2.4.驱动电路单元------------------------------------------------3
三、总电路原理图-------------------------------------------4
四、系统软件(控制程序)-----------------------------------5
五、元器件参数列表-----------------------------------------8
基于 51 单片机控制灯泡亮度
一、51 单片机及其特点
8051 单片机最早由 Intel 公司推出,其后,多家公司购买了 8051 的内核,
使得以 8051 为内核的 MCU 系列单片机在世界上产量最大,应用也最广泛,有人
推测 8051 可能最终形成事实上的标准 MCU 芯片。
51 系列特点之一是它从内部的硬件到软件有一套完整的按位操作系统,称
作位处理器,或布尔处理器。它的处理对象不是字或字节而是位。它不光能对片
内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进
行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机
也具有位处理功能,但能进行位逻辑运算的实属少见。51 系列在片内 RAM 区间
还特别开辟了一个双重功能的地址区间,十六个字节,单元地址 20H~2FH,它
既可作字节处理,也可作位处理作位处理时,合 128 个位,相应位地址为 OOH~
7FH,使用极为灵活。
总体来看 51 单片机有以下特点:有优异的性能价格比;集成度高、体积小、
有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,
减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其
体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作;控制功能
强。为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、
I/O 口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同
一档次的微机;低功耗、低电压,便于生产便携式产品;外部总线增加了 I
C(Inter-Integrated Circuit)及 SPI(Serial Peripheral Interface)等串行总
线方式,进一步缩小了体积,简化了结构;单片机的系统扩展和系统配置较典型、
规范,容易构成各种规模的应用系统。
二、基本控制原理
在日常生活中,我们常常需要对灯光的亮度进行调节。本调光控制器通过单
片机控制双向可控硅的导通来实现白炽灯(纯阻负载)亮度的调整。双向可控硅的
特点是导通后即使触发信号去掉,它仍将保持导通;当负载电流为零(交流电压
过零点)时,它会自动关断。所以需要在交流电的每个半波期间都要送出触发信
号,触发信号的送出时间就决定了灯泡的亮度。调光的实现方式就是在过零点后
一段时间才触发双向可控硅开关导通,这段时间越长,可控硅导通的时间越短,
灯的亮度就越低;反之,灯就越亮。
控制部分:选择可多次写入的可编程器件——ATMEL 的 AT89C51 单片机。
驱动部分:要驱动的是交流,可以用继电器或光耦+可控硅来驱动。可控硅
在电路中能够实现交流电的无触点控制,以小电流控制大电流,并且不象继电器
那样控制时有火花产生,而且动作快、寿命长、可靠性高。所以这里选用的是可
控硅控制。
负载部分:本电路以单片机控制白炽灯的亮度变化。
C1
30p
C2
30p
XTAL1
XTAL1
12MHZ
XTAL2
XTAL2
RST
VCC
RST
C3
10u
R1
10k
19
18
9
29
30
31
1
2
3
4
5
6
7
8
U1
XTAL1
XTAL2
RST
PSEN
ALE
EA
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
P2.0
P2.1
P2.2
P3.0
P3.2
2.1.系统控制基本原理
按键控制单元
过零检测组件
驱动电路单元
负载(白炽灯)
CPU
80C51
控制基本原理图
2.2.按键控制单元
按键单元采用高电位无效低电位有效地输入方式,使得输入的电流不大,保
护单片机芯片安全。按键操作有两种方式:一种是短时间按动按键,只调整一个
台阶(亮或暗);另一种是长时间按住按键,根据时间长度连续调整亮暗变化。
2.3.过零检测组件
由于系统采用的是延时给脉冲的工作方式,必须准确计算延时的时间,延时
必须每次在工频信号的过零点开始算起,因此需准确采集工频信号的零点。下图
为过零检测的电路图:
工频信号经整流、二极管、光耦后会输出一个频率为 100Hz 的脉冲信号,
过零检测原理
脉冲对应工频信号的过零点。此脉冲信号作为系统的中断输入(P3.2 口),控制
过零信号波形时序图
延时计算的开始。
2.4.驱动电路单元及负载
系统采用双向可控晶闸管控制电路通断,给脉冲后管子导通,过零后自动关
断。脉冲的给定是在中断延时到后有 CPU 的 P3.0 口输出到驱动电路,控制管子
导通。负载则为一盏白炽灯(或纯阻性负载)。触发信号电路如下图:
主电源导通区间和触发信号时序关系
触发信号直接决定晶闸管的导通时间,从而控制主电源输出有效值,间接调
控灯泡亮暗。
三、总电路原理图
同步信号作为系统的中断输入(经全桥整流 DB107,光耦隔离 P521,从 P3.2
口输入),控制延时计算的开始;8051 执行程序,触发信号由 8051 的 P3.0 口提
供一个输出控制脉冲,再经光耦 MOS3022 间接控制电源导通。
VCC
R4
10k
R3
10k
R12
10k
P2.0
P2.1
P2.2
AC1
AC2
U4
L401E3
AC1
AC2
R7
5.1K
P3.2
P3.0
VCC
R8
5.1k
R9
270
U5
1
2
MOC3022
6
4
R10
180
R11
1k
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
P2.0
P2.1
P2.2
P3.0
P3.2
XTAL1
XTAL2
RST
XTAL1
XTAL2
12MHZ
RST
R1
10k
VCC
C1
30p
C2
30p
C3
10u
AC1
AC2
R5
R6
30k
30k
U2
KBP206
U3
A
1
2
TPL521
19
18
9
29
30
31
1
2
3
4
5
6
7
8
U1
XTAL1
XTAL2
RST
PSEN
ALE
EA
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
80C51
VCC
6
5
4
主电路原理
四、系统软件(控制程序)
0000H
MAIN
0003H
OUTPUT
0050H
SP,#30H
IT0
EA
EX0
R0,#7FH
ORG
SJMP
ORG
AJMP
ORG
MAIN:
MOV
SETB
SETB
CLR
MOV
UNHOLD:
ORL
P2,#01H
LCALL
DELAYKEY
C,P2.0
UNHOLD
MOV
JC
CLR
C
START:
ORL
P2,#01H
LCALL
DELAYKEY
MOV
JNC
SETB
MOV
ORL
C,P2.0
UNHOLD
EX0
P1,R0
P2,#06H
LCALL
DELAYKEY
JNB
P2.1,UPR0
;主程序入口
;中断输出子程序入口
;初始化,设置中断
;初始亮度为中间值
;开机键扫描
;低电平开机
;开机运行程序
;关机键扫描
;低电平关机
;开中断
;档位变化键扫描
;进入降低亮度子程序
JNB
AJMP
UPR0:
MOV
ADD
JC
MOV
LJMP
UPFULL:
MOV
LJMP
DOWNR0:
MOV
SUBB
JC
MOV
LJMP
P2.2,DOWNR0
;进入增加亮度子程序
;判断极值
START
A,R0
A,#0FH
UPFULL
R0,A
START
R0,#0FFH
START
A,R0
A,#0FH
DOEMPUTY
;判断极值
R0,A
START
DOEMPUTY:
MOV
LJMP
R0,00H
START
OUTPUT:
PUSH
SETB
MOV
ACC
P3.0
A,R0
LCALL
DELAY
;输出子程序