实验45 用定时器产生方波
单片机源程序如下:
- /*********************************************************************************
- * 【作 者】: 清翔电子:03
- * 【版 本】: 1.0
- * 【实验平台】: QX-MCS51 单片机开发板
- * 【外部晶振】: 11.0592mhz
- * 【主控芯片】: STC89C52
- * 【编译环境】: Keil μVisio3
- * 【程序功能】: 本程序演示用定时器的方法产生一PWM方波,其周期为1ms(0.001s,1KHz);
- 占空比为1/5(高电平持续200us)。若产生其他参数的PWM波,只需更改
- 程序中的相关参数即可。(同学们也可试着设计可调的PWM输出)
- pwm波由P1^0口输出。可观察到其对应发光二极管在闪烁
- (熄灭持续时间为200us,点亮持续时间为800us,闪烁周期为1ms)
-
- 下载程序后我们看到的现象是灯一直亮,是因为熄灭时间太短人眼分辨不出
- 调节占空比 占空比越大灯的亮度越暗
- * 【使用说明】:
- * 说明:免费开源,不提供源代码分析.
- **********************************************************************************/
- #include<reg52.h>
- #define uint unsigned int
- uint pp;
- sbit pwm=P1^0;
- void main()
- {
- TMOD=0x01; //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。
- TR0=1; //打开定时器
- TH0=0Xff; //定时器设置,每隔100微秒发起一次中断。
- TL0=0Xa4;
- ET0=1; //开定时器0中断
- EA=1; //开总中断
- while(1)
- {
- if(pp<=2) //调节占空比 占空比越大灯的亮度越暗
- pwm=1;
- else
- pwm=0;
- if(pp==10)
- pp=0;
- }
- }
- void time0() interrupt 1
- { TH0=0Xff;
- TL0=0Xa4;
- pp++;
- }
复制代码
所有资料51hei提供下载:
【实验45】用定时器产生方波0.rar
(9.37 KB, 下载次数: 56)
|