单片机产生占空比可调方波(PWM)

发布者:zonheny最新更新时间:2015-04-30 来源: 51hei关键字:单片机  占空比  可调方波  PWM 手机看文章 扫描二维码
随时随地手机看文章
/****************************************************************                                                       

            程序名称:   发光二极管D1进行亮度控制
            版本:      VER1.0
            适用板本:  51hei学习板      
利用定时器控制产生占空比可变的PWM波对发光二极管D1进行亮度控制
按S2,PWM值增加,则占空比减小,D1灯变亮。
按S3,PWM值减小,则占空比增加,D1灯变暗。
当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。
*****************************************************************/

#include
#include
sbit  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 ;           //频率调节
    TH1=PWM ;            //脉宽调节
    TL1=0xff ;
EA=1;
ET0=1;
ET1=1;
    TR0=1 ;


   while(1)
   {
 do{
     if(PWM!=0xff)
    {PWM++ ;delayms(10);}
        else Beep() ; 
   }
    while(S3==0);

 do{
      if(PWM!=0x02)
     {PWM-- ;delayms(10);}
      else Beep() ; 
   }
    while(S2==0);
  }
}

/*********************************************************/
// 定时器0中断服务程序  (频率)
/*********************************************************/
void timer0() interrupt 1 
{  
    TR1=0 ;
    TH0=0x00;
    TL0=0x00 ;
    TH1=PWM ;
    TR1=1 ;
    P1=0xfe ;      //启动输出
}

/*********************************************************/
// 定时器1中断服务程序 (脉宽)
/*********************************************************/
void timer1() interrupt 3 

    TR1=0 ;
    P1=0xff ;     //结束输出
}

/*********************************************************/
//蜂鸣器子程序
/*********************************************************/

void Beep()     
  {
    unsigned char i  ;
    for (i=0  ;i<100  ;i++)
      {
        delay(100)  ;
        BEEP=!BEEP  ;                //Beep取反
      } 
    BEEP=1  ;                        //关闭蜂鸣器
 delayms(100);
  }

/*********************************************************/
// 延时子程序
/*********************************************************/  
void delay(unsigned char t)
 { 
   while(t--)   ;
 }

/*********************************************************/
// 延时子程序
/*********************************************************/
void delayms(unsigned char ms)

{
   unsigned char i ;
   while(ms--)
    {
      for(i = 0 ; i < 120 ; i++) ;
    }
}

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

关键字:单片机  占空比  可调方波  PWM 引用地址:单片机产生占空比可调方波(PWM)

上一篇:51单片机舵机控制程序
下一篇:单片机定时器实现实时时钟程序-lcd1602显示

推荐阅读最新更新时间:2024-03-16 14:00

基于单片机的数字通信系统位同步提取的设计及分析
在 数字通信系统 中,发送端按照确定的时间顺序,逐个传输数码脉冲序列中的每个码元。而在接收端必须有准确的抽样判决时刻才能正确判决所发送的码元,因此,接收端必须提供一个确定抽样判决时刻的定时脉冲序列。这个定时脉冲序列的重复频率必须与发送的数码脉冲序列一致,同时在最佳判决时刻(或称为最佳相位时刻)对接收码元进行抽样判决。可以把在接收端产生这样的定时脉冲序列称为码元同步,或称位同步。   实现位同步的方法和载波同步类似,有直接法(自同步法)和插入导频法(外同步法)两种,而直接法又分为滤波法和锁相法。本文介绍的方法就是用直接法中的 锁相环 实现的。   1 数字锁相位同步提取原理   数字通信系统接收端位同步提取通常采用如图1所示的数字
[模拟电子]
基于<font color='red'>单片机</font>的数字通信系统位同步提取的设计及分析
PIC单片机人机接口模块独立式按键的程序设计
  下面是查询方式下的键盘程序,程序中没有使用散转指令,也没有软件防抖动措施,只包括按键查询、键功能程序转移。FP0~FP7为功能程序入口地址标号,PROM0~PROM7分别为每个按键的功能程序。   程序清单(设I/O口为P1口)如下:   由此程序可以看出,各按键由软件设置了优先级,优先级顺序依次为0~7。   本节所讲的模块中,在按键按下或弹起时经常会出现一些毛刺,所以在首次检测到输入的值后应添加一个延时程序DELAY。   这个延时程序延时100ms左右,延时后再检测输入的值,如果改变了,则证明此时按键按下或弹起时读出的值是不准确的,再调用延时程序DELAY,延时100ms之后,再继续查看。   本例采
[单片机]
PIC<font color='red'>单片机</font>人机接口模块独立式按键的程序设计
数模转换器DAC7724与AT89S51单片机的接口及程序设计
摘要:介绍了一种性能优良的低功耗4通道12位并行D/A转换器DAC7724的功能特点和工作过程,给出了DAC7724与51单片机的接口电路及其汇编语言应用程序,最后提出了一种利用DAC输出大范围电压(-20V~+20V)的实现方法。 关键词:数/模转换;单片机;汇编语言;DAC7724 0 引言 在微计算机电机控制的机电设备中,常常需要把数字信号变成模拟信号,以驱动机电设备的运行。在这个过程中,D/A转换是一个十分重要的环节,同时也是微计算机电机控制系统重要的组成部分。 1 DAC7724的主要特点 DAC7724是TI公司生产的12位并行输入4通道D/A转换器,该转换器具有以下特征: ◇±15V以内的双电源工作;
[单片机]
数模转换器DAC7724与AT89S51<font color='red'>单片机</font>的接口及程序设计
MCU今年销售年增率 IC Insights调高1倍
全球总体经济回温,加上穿戴装置等新应用百花齐放,为近几年成长陷入停滞的MCU(微控制器)市场注入活水。研调机构IC Insights出具最新报告,将今年对MCU销售额的年增率预估由3%调高为6%。IC Insights并看好,全球MCU明、后年成长性更看俏,估计销售额将再年增7%、9%。 IC Insights表示,由于国际经济不确定因素发酵、智慧卡市场呈现衰退、以及强烈的价格压力等不利因素影响,MCU市场规模于2011~2013年间几乎零成长。根据IC Insights统计,2012年MCU销售额年减3%来到151.7亿美元,2013年的151.9亿美元,也仅与2012年约略持平。 不过受益于经济局势趋于稳健和新
[单片机]
单片机加1指令使用举例说明
加1 指令 INC A INC Rn INC direct INC @Ri INC DPTR 用途很简单,就是将后面目标中的值加1。例:(A)=12H,(R0)=33H,(21H)=32H,(34H)=22H,DPTR=1234H。执行下面的指令: INC A (A)=13H INC R2 (R0)=34H INC 21H (21H)=33H INC @R0 (34H)=23H INC DPTR ( DPTR)=1235H 后结果如上所示。 说明:从结果上看INC A和ADD A,#1差不多,但INC A是单字节,单周期指令,而ADD #1则是双字节,双周期指令,而且INC A不会影响PSW位,如(A)=
[单片机]
并行通讯和串行通讯
在数据传输时,如果一个数据编码字符的所有各位都同时发送、并排传输,又同时被接收,则将这种传送方式称为并行通讯方式。并行通讯使用几条数据线,将数据分段同时进行传输,传输速度快,信息率高,但传送距离较短。并行通讯方式如图1所示。 图1 并行通讯示意图 在数据传输时,如果一个数据编码字符的所有各位不是同时发送,而是按一定顺序,一位接着一位在信道中被发送和接收,则将这种传送方式称为串行通讯方式。在长距离通信中,出于通信线路和中继设备成本的考虑,常常采用串行通信方式,串行通信广泛应用在单片机系统与系统和外围设备之间的数据传输过程中。串行通讯方式如图2所示。 图2 串行通讯示意图
[单片机]
并行通讯和串行通讯
单片机读写U盘闪盘超精简C源程序,不用子程序库
/* 这个程序用180行C代码就能够读取FAT16文件系统U盘的根目录,可以看到根目录下的文件名,并可显示 首文件内容,不过,该程序很不严谨,也没有任何错误处理,对U盘兼容性较差,只是用于简单试验,作为参考. 这个程序可以支持WINDOWS按FAT16格式化的U盘,因为程序精简,所以只兼容超过50%以上的U盘品牌,如果换 成CH375A芯片则兼容性可提高到85%,当然,如果使用公司的子程序库或者正式版本的C源程序兼容性更好。 下面贴出的程序注释较少,如果需要加注释的C源程序,请到楼下的跟贴中下载, 欢迎各位将本源程序转贴到其它网站,比较一下,如何做出最简洁的单片机读写U盘文件的程序 :-) 测试以下U盘通过:郎科/超稳经典64M/
[单片机]
基于DDS技术三相功率可控PWM信号的FPGA实现
    0 引言     脉宽调制技术(PWM)目前广泛应用在电力、电子、微型计算机、自动控制等多个学科领域。本设计采用基于FPGA的直接数字频率合成(DDS)技术,通过D/A转换进行程控放大,实现了三相功率可控的PWM信号。 1 系统的设计原理和实现过程 1.1 DDS的设计原理     直接数字频率合成器(DDS)的组成见图1。fc为时钟频率,K为频率控制字,N为相位累加器的字长,W波形存储器地址线位数,L为ROM数据线宽度(一般也为D/A转换器的位数),fo为输出频率。相位累加器按照时钟脉fc的时序,对输入频率控制字K进行累加,相位累加器的输出作为波形存储器的地址输入。相位累加器的输出对应于该时刻合成周期信号的相位,由于
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved