登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 蜂鸣器

[复制链接]
发表于 2022-2-9 19:10:11 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 单片机
开始时间: 2022-02-08
结束时间: 2022-02-09
控制蜂鸣器的发声频率 ,让其发出不同种声音

#include <reg52.h>


sbit pwm = P1^3;


unsigned char T0RH = 0;
unsigned char T0RL = 0;
unsigned int i;


void OpenPwm (unsigned int frequ);
void StopPwm ();


void main()
{
  EA = 1;        //打开中断
  TMOD = 0x01;//打开定时器
       
       
       
        while(1)
        {
          OpenPwm(4000);//设置频率
                for(i=0;i<40000;i++);
                StopPwm();
                for(i=0;i<2000;i++);
          OpenPwm(1000);
                for(i=0;i<40000;i++);
                StopPwm();
                for(i=0;i<40000;i++);




        }
}


void OpenPwm (unsigned int frequ)
{
unsigned int reload;
       
        reload = 65536 -(12000000/12)/(frequ*2);//计算溢出
        T0RH = (unsigned char) (reload>>8);
        T0RL = (unsigned char) reload;
        TH0 = 0xFE;
        TL0 = 0xFE;
        ET0 = 1;
        TR0 = 1;
}
void StopPwm()
{
  ET0 = 0;
        TR0 = 0;
}


void InterruptTimer0() interrupt 1
{
  TH0 = T0RH;
        TL0 = T0RL;
        pwm = ~pwm;
}

好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表