登录  | 立即注册

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

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[学习笔记] 蜂鸣器

[复制链接]
发表于 2018-2-23 16:40:39 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 蜂鸣器的使用
开始时间: 2018-02-23
结束时间:
上下拉电阻
上拉电阻就是将不确定的信号通过一个电阻拉高高电平,
同时次电阻起到一个限流作用,下拉就是下拉到低电平

用途
1. OC门(开漏I/O)要输出高电平,外部必须加上拉电阻
2. 加大普通I/O口的驱动能力(电流输出能力)
3. 起到限流作用
4. 抵抗电磁干扰(减小单片机功耗)

上拉电阻的选取原则,
2. 从确保足够的引脚驱动能力考虑应该足够小,电阻小,电流才能增大
3. 开漏输出时,过大的上拉电阻会导致信号上升沿变缓

28BYJ-48步进电机
反应式步进电机:结构简单成本低,发热大可靠性低
永磁式步进电机:动态性能好,力矩较大,误差相对大,价格低,广泛用在消费性产品
混合式进步电机:力矩大,动态性能好,步距角小 ,精度高,
但是结构复杂价格高,广泛用于工业

28 ————步进电机的有效最大外径是28mm
B  ————表示是步进电机
Y  ————表示是永磁式
J  ————表示是减速型
48 ————表示四相八拍

#include"CType.h"
#include "delay.h"

sbit buzz = P1^3;

void openBuzz(uint32 frequ);
void stopBuzz();
uint8 t0rh = 0;
uint8 t0rl = 0;

void main()
{
        EA = 1;
        TMOD = 0x01;

        while(1){       
                openBuzz(4000);
                delay_ms(500);
                stopBuzz();
                delay_ms(500);
                openBuzz(1000);
                delay_ms(500);
                stopBuzz();
                delay_ms(500);

        }
}

void openBuzz(uint32 frequ)
{
        uint32 reload;

        reload = 65536 - (32000000)/(frequ*2);
        t0rh = (uint8)(reload>>8);
        t0rl = (uint8)(reload);

        TH0 = 0xff;
        TL0 = 0xfe;
        ET0 = 1;
        TR0 = 1;
}
void stopBuzz()
{
        ET0 = 0;
        TR0 = 0;
}

void T0() interrupt 1
{
        TH0 = t0rh;
        TL0 = t0rl;
        buzz =~buzz;
}
要使无源蜂鸣器发出声音需要给它一定的脉冲
这里用到中断就是给他高低电平,也就是脉冲,脉冲的频率决定了蜂鸣器发声的音阶
上面的例子是用了社团的延时程序,  #include "delay.h" 头文件和代码在都是寒假包里的


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

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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