如果是模拟出来的话,频率是1Mhz,首先你要有一个1Mx2的定时,这个2Mhz的定时每次计数到达的时候将对应的io口翻转,频率为1M周期为1us的方波就出来了。大部分单片机都有pwm功能直接配置寄存器使能就可以输出对应的频率方波。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站制作、成都外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的临洮网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
普通51的话需要模拟PWM,如果是加强版51有内置PWM模块,PIC和AVR以及430还有STM也有集成PWM的型号!如果是单纯输出方波的话就简单了。
可以产生弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率(最大790HZ)和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。
诊断服务程序可以用来读取这个计数值并进行计算。
1);} void T0() interrupt 1 { if(++ms==600){ms=0;P2_0=~P2_0;} } 以上按占空比50%计算。
看看芯片有没有支持蜂鸣器接口,有的话,直接改变寄存器就可以了 不同的音效,就是改变频率,改变频率,就是改变时间。输出脚,就用I/O口。程序内设计一个时间中断,如40us中断或更短。
你要看一下你使用的单片机的PWM或者时钟模块,里面会有一项功能,捕捉单片机PIN脚上的电平变化,通常叫输入捕捉。
50Hz的周期T=1/F=0.02s。即20ms。周期由重复性的 正脉冲+负脉冲 构成,方波 的正脉冲宽度=负脉冲宽度。所以:方波的脉冲宽度=T/2=10ms,即 每10ms 取反一次 IO口,即可输出 50Hz方波。
50Hz的方波对应的周期为20毫秒,也就是20000微秒,但程序中使用定时中断翻转的话,那就得设计为10000微秒,中断2次输出一个周期的方波。
使用定时器实现1秒定时;初始值要看单片机配置的晶振频率了,若12M晶振,初始值为TH0=0x3c;TL0=0xb0;这才是50ms,还要一个单元做计数器,计数20次才是1秒 方波?在定时中断里求反一次。
如果是模拟出来的话,频率是1Mhz,首先你要有一个1Mx2的定时,这个2Mhz的定时每次计数到达的时候将对应的io口翻转,频率为1M周期为1us的方波就出来了。大部分单片机都有pwm功能直接配置寄存器使能就可以输出对应的频率方波。
如果是模拟出来的话,频率是1Mhz,首先你要有一个1Mx2的定时,这个2Mhz的定时每次计数到达的时候将对应的io口翻转,频率为1M周期为1us的方波就出来了。大部分单片机都有pwm功能直接配置寄存器使能就可以输出对应的频率方波。
通过中断的方式,使用定时器0来提供1KHz的方波,蜂鸣器引脚定义为P0。
void T0() interrupt 1 { if(++count=4) //4次就是500微秒 {count=0;P1_0=~P1_0;} /*每500微秒P0取反,周期1毫秒,占空比0.5。
100K的方波对51来说要求太高了,尽量不要用,这个程序如果频率不对,对 “TH0=0XF6;//初始值246”这句里的0xf6调整下,向上增加数值会提高精度。