STC单片机实现可调PWM输出的C51程序

发布者:RadiantWhisper最新更新时间:2015-05-12 来源: 51hei关键字:STC单片机  可调PWM  C51程序 手机看文章 扫描二维码
随时随地手机看文章
//以下是源程序,只需修改定义IO口就可以使用,#include < reg52.h >
#include < intrins.h >
sbit  K1 =P3^2 ;                    //增加键
sbit  K2 =P3^3 ;                    //减少键
sbit  BEEP =P3^1 ; //蜂鸣器
sbit  pp =P3^7 ;
unsigned char PWM=0x7f ;   //赋初值
void Beep();
void delayms(unsigned char ms);
void delay(unsigned char t);
/*********************************************************/
void main()
{  
     pp=1; 
    TMOD=0x21 ;
    TH0=0xfc ;             //1ms延时常数
    TL0=0x66 ;            //频率调节
    TH1=PWM ;            //脉宽调节
    TL1=0 ;
     EA=1;
     ET0=1;
     ET1=1;
    
     TR0=1 ;
   while(1)
   {
     do{
            if(PWM!=0xff)
           {PWM++ ;delayms(10);}
           else Beep() ; 
         }
     while(K1==0);
     do{
           if(PWM!=0x02)
          {PWM-- ;delayms(10);}
           else Beep() ; 
          }
     while(K2==0);
   }
}
/*********************************************************/
// 定时器0中断服务程序.
/*********************************************************/
void timer0() interrupt 1 
{  
    TR1=0 ;
    TH0=0xfc ;
    TL0=0x66 ;
    TH1=PWM ;
    TR1=1 ;
    pp=0 ;      //启动输出
}
/*********************************************************/
// 定时器1中断服务程序
/*********************************************************/
void timer1() interrupt 3 

    TR1=0 ;
    pp=1 ;     //结束输出
}
/*********************************************************/
//蜂鸣器子程序
/*********************************************************/
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++) ;
     }
}
关键字:STC单片机  可调PWM  C51程序 引用地址:STC单片机实现可调PWM输出的C51程序

上一篇:51单片机驱动DS18B20温度传感器程序及心得
下一篇:74LS164在单片机中的使用

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

在进行C51程序设计时如何精确延时的常见方法介绍
单片机因具有体积小、功能强、成本低以及便于实现分布式控制而有非常广泛的应用领域。单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖、数据传输等操作都要在程序中插入一段或几段延时,时间从几十微秒到几秒。有时还要求有很高的精度,如使用单总线芯片DS18B20时,允许误差范围在十几微秒以内,否则,芯片无法工作。为此我特意的将如何在C51程序中精确延时进行了一个小结。 用51汇编语言写程序时,这种问题很容易得到解决,而目前开发嵌入式系统软件的主流工具为C语言,因此很有必要了解用C51写延时程序时需要的一些技巧。 实现延时通常有两种方法: 一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能
[单片机]
在进行<font color='red'>C51</font><font color='red'>程序</font>设计时如何精确延时的常见方法介绍
STC单片机输出可调pwm
第一步:首先是要配置相关的PCA寄存器 比如我们配置CCP0引脚输出PWM。 // PCA0初始化 AUXR1 &= ~0x30; AUXR1 |= 0x10; //切换IO口, 0x00: P1.2 P1.1 P1.0 P3.7, 0x10: P3.4 P3.5 P3.6 P3.7, 0x20: P2.4 P2.5 P2.6 P2.7 CCAPM0 = 0x42; //工作模式 PWM PCA_PWM0 = (PCA_PWM0 & ~0xc0) | 0x00; //PWM宽度, 0x00: 8bit, 0x40: 7bit, 0x80: 6bit CMOD = (CMOD & ~0xe0) | 0x08
[单片机]
<font color='red'>STC单片机</font>输出<font color='red'>可调</font>的<font color='red'>pwm</font>
74HC595单片机C51驱动(源程序
#include reg52.h #define uchar unsigned char sbit HC595_CS=P1^0; //STcp ////锁存时钟-----74HC595 12# sbit HC595_CLK=P1^1; //SHcp ////移位时钟-----74HC595 11# sbit HC595_DAT=P1^2; //Ds ////数据---------74HC595 14# //延时子程序 void mDelay(uchar Delay) { uchar i; for(;Delay 0;Delay--) { f
[单片机]
STC单片机常用型号
一:STC15W204S系列有8脚、16脚,具体应用参考STC15系列单片机手册。 二:STC15W401AS系列有SOP16、SOP20、SOP28,具体应用参考芯片手册。
[单片机]
<font color='red'>STC单片机</font>常用型号
51单片机学习之陆 —— 1.2 第一个c51程序(点亮流水灯)
由于学校的板子跟我买的板子有些差异,为了大家的阅读,以后的所有程序编写烧录都以老师发的板子为主。 1 事先准备   a 驱动安装,注意群中已经发了,吧板子的驱动装好哦。   b 烧写软件(烧录器) stc - isp (这里说明下,板子上的芯片是stc的,你还能看到它的型号stc89c52RC,用stc的烧写软件就可以了)    提问:什么是烧写软件?     答:就是把你写好代码(C或者是汇编)专程的 机器语言 通过一定的方式下载到单片机中。称为烧写。(就先这样简单理解吧)   c 编写软件 keil uVision 4 (我仅用它编译生成hex 文件)         notpad++ (我用它写c51的代码,然
[单片机]
51单片机学习之陆 —— 1.2 第一个<font color='red'>c51</font><font color='red'>程序</font>(点亮流水灯)
C51程序控制激光广告仪系统
引言 当前,激光技术发展日趋完善,在基础研究、医疗、机械、通讯等领域广泛应用。目前多采用计算机进行可视化激光器控制,因为计算机有很高的速度和很大的存贮空间,可以控制大的系统。在控制中小型系统时,计算机的优势并不明显,而且软硬件复杂、成本较高。 采用简单的控制系统来取代计算机这样复杂的系统,可以解决以上问题。在一般控制系统中,单片机可以代替计算机,其中被广泛使用的是AT89C51单片机,它具有结构简单、价格便宜、控制性能良好、操作方便等优点。 该控制系统,本质上是控制四路TTL电源电平,这方面作者作了一些有效尝试。 本文利用单片机及C51程序控制激光器,使其在显示屏上描述图像。图像原始数据由AUTOCAD 等相关软件
[单片机]
<font color='red'>C51</font><font color='red'>程序</font>控制激光广告仪系统
MSP实时输出占空比可调pwm波形
// 占空比可调的PWM, 我没试过, 手里没单片机, 只是记下. #include msp430x14x.h void main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 |= XTS; // ACLK= LFXT1 = HF XTAL do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i 0; i--) { // Time fo
[单片机]
单片机读写24C01的C51程序
/*--------------------------24C01的IIC 读写的c51程序--------------------- 程序中很多NOP是冗余的,希望读者能进一步精简,但必须经过验证。 Atmel 24C01 比较特殊,为简约型. 51晶振为11.0592MHz ---------------------------------------------------------------*/ #include reg51.h #include intrins.h sbit SCL= P1^5; sbit SDA= P1^4; delay() { unsigned int i=1200; whi
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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