📄 pwm.lst
字号:
C51 COMPILER V8.02 PWM 04/04/2008 02:45:51 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE PWM
OBJECT MODULE PLACED IN pwm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pwm.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2
3 名词解释:1、PWM(Pulse Width Modulation,脉宽调制)
4
5 2、占空比(Duty Cycle)
6 即: 在一串理想的脉冲序列中(如方波),
7 正脉冲的持续时间与脉冲总周期的比值。
8 例如:脉冲宽度为1s,信号周期为4s的脉冲序
9 列的占空比为0.25。
10
11 程序说明:通过调整单位时间内I/O口输出高电平持续的时间,
12 即可达到对占空比的调节,也即PWM,本程序即是
13 PWM的一个应用。
14
15 应用说明:图示仅画标出了占空比的几个特殊值可以适当调
16 整各个变量的初值,从而控制LED对应输出几个不
17 同的亮度级别。通过把周期设置的更小--频率
18 提高就可以达到0%--100%之间任意的亮度级别。
19 并且由于人眼的视觉暂留,看到的不是亮、灭的
20 跳变,而是明暗的均匀过渡。
21
22 (C)西安电子科技大学 测控技术与仪器 编写:郭世忠 日期:2008-04-04
23 */
24
25
26 ///////////////////////////////////////////////////////////////////////////
27 // 脉冲宽度 //
28 // | | //
29 // 0% 25% 50% |75% | 100% --->占空比 //
30 // __ ____ _____ ________ ___1 (高电平) //
31 // | | | | | | | | | //
32 // |________| |_______| |___| |__| | ___0 (低电平) //
33 // //
34 // | 500 | 500 | 500 | 500 | 500 | //
35 /* 500是一次高低电平变化的周期,可根据需要自定 */ //
36 // //
37 // 注意: 我们的学习板中,P1口的LED是低电平有效。因此, //
38 // 占空比为0%时最亮,占空比为100%时熄灭,注意区别。 //
39 ///////////////////////////////////////////////////////////////////////////
40
41
42
43 /**************************************************************************
44 功能:使P1口的八个LED发的光由 亮到暗 均匀过渡
45
46 说明:程序只会执行一个变化过程,要重复观察效果
47 可按 RST 键复位单片机,即可从头执行程序
48 /**************************************************************************/
49
50
51
52 #include<reg52.h> /*51寄存器头文件*/
53
54
55 void main(void) /*主程序*/
C51 COMPILER V8.02 PWM 04/04/2008 02:45:51 PAGE 2
56 {
57 1 unsigned int i,t; /*变量定义*/
58 1
59 1 while(1) /*主循环(死循环),单片机必须是死循环*/
60 1 {
61 2
62 2 //---------------------------------------------------------------------------
63 2 P1=0xff; //P1口输出高电平 即P1.7-----P1.0依次对应 1111 1111
64 2 for(i=0;i<t;i++); //延时,保持高电平,LED为熄灭状态
65 2 //----------------------------------------------------------------------------
66 2 P1=0x00; //P1口输出低电平 即P1.7-----P1.0依次对应 0000 0000
67 2 for(i=0;i<500-t;i++); //延时,保持低电平,LED为发光状态
68 2 //----------------------------------------------------------------------------
69 2 t++; //累加,脉宽步进,可适当调整,以改变明暗变化速度。
70 2 //----------------------------------------------------------------------------
71 2 if(t>500) //域值判断,如果为真,则表明一次完整的变化过程结束。
72 2 {
73 3 P1=0xff; //强制将P1口置高,如果没有这句,LED会出现亮暗跳变(试验并思考原因)
74 3 while(1); //进入死循环,程序挂起,使程序执行到这就停止,方便看效果
75 3 }
76 2
77 2 }
78 1
79 1 }
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 74 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -