单片机产生可调方波(c语言),单片机产生占空比可调方波(PWM)

/****************************************************************

程序名称: 发光二极管D1进行亮度控制

版本: VER1.0

适用板本: 51hei学习板

利用定时器控制产生占空比可变的PWM波对发光二极管D1进行亮度控制

按S2,PWM值增加,则占空比减小,D1灯变亮。

按S3,PWM值减小,则占空比增加,D1灯变暗。

当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。

*****************************************************************/本文引用地址:http://www.eepw.com.cn/article/201612/324604.htm

#include#includesbit S2 =P3^4 ; //PWM值减少键

sbit S3 =P3^5 ; //PWM值增加键

sbit BEEP =P2^3 ; //蜂鸣器

unsigned char PWM=0x03 ; //赋初值

///

void Beep();

void delayms(unsigned char ms);

void delay(unsigned char t);

/*********************************************************/

void main()

{

P1=0xff;

TMOD=0x00 ;

TH0=0x00 ; //延时常数

TL0=0x00 ; //频率调

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一份汇编代码示例,但需要先了解一些基础知识。 首先,PWM(脉冲宽度制)波是一种周期性的数字信号,在单片机中可以使用定时器/计数器来产生比是高电平与周期之比,可以通过设置定时器计数值和比较值来控制。 在51单片机中,有两个定时器/计数器,分别为Timer0和Timer1。以下是一个使用Timer0产生PWM波的汇编代码示例: ``` ; 定义端口和常量 PWM_PORT equ P1 ; PWM输出端口 PWM_FREQ equ 100 ; PWM频率为100Hz PWM_DUTY equ 50 ; PWM比为50% ; 初始化Timer0 MOV TMOD, #0 ; 定时器模式,使用模式1 MOV TH0, #0 ; 定时器初值为0 MOV TL0, #0 ; 定时器初值为0 ; 计算定时器计数值和比较值 MOV A, #256 ; Timer0为8位计数器,最大计数值为256 MOV B, #((10000/PWM_FREQ)/256) ; 计算定时器计数值 MOV R1, #((PWM_DUTY*256)/100) ; 计算比对应的比较值 ; 开始产生PWMPWM_LOOP: SETB PWM_PORT ; 设置PWM输出端口为高电平 MOV TH0, B ; 设置定时器计数值 MOV TL0, #0 ; 定时器初值为0 SETB TR0 ; 启动Timer0 DJNZ R1, $ ; 比较值不为0时继续输出高电平 CLR TR0 ; 停止Timer0 CLR PWM_PORT ; 设置PWM输出端口为低电平 MOV TH0, A ; 设置定时器计数值 MOV TL0, #0 ; 定时器初值为0 SETB TR0 ; 启动Timer0 DJNZ R1, PWM_LOOP ; 比较值不为0时继续输出低电平 CLR TR0 ; 停止Timer0 SJMP PWM_LOOP ; 循环输出PWM波 ``` 在上述代码中,通过设置Timer0的计数值和比较值,实现了产生比的PWM波。其中,变量B表示定时器计数值,变量R1表示比对应的比较值,通过循环输出高电平和低电平来实现PWM波的产生。 需要注意的是,上述代码中的PWM输出端口为P1口,您需要根据实际硬件连接情况进行修改。另外,由于Timer0的计数值和比较值的设置与PWM频率和比有关,需要根据实际要求进行计算和整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值