一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 8671|回复: 6

[51单片机] 请教大家如何用51单片机实现1Hz~50Hz可调脉冲输出?

[复制链接]
发表于 2011-11-14 22:38 | 显示全部楼层 |阅读模式
最近开始学习单片机,看的是郭天祥的视频教程,好在有一点C语言基础,学起来不是很吃力。
最近想试着做一个信号发生器,用数码管显示,按键调整参数,实现从1Hz到50Hz 的信号输出,按一下键增加/减少1Hz,数码管显示当前频率数。

大体思路有了,数码管显示有了,键盘控制实现了,现在问题出在如何实现每按一次键频率增减1Hz,是应该用中断吧,发现延时的话对数码管是扫描有影响,应该将哪个参数作为变量呢?

void timer0() interrupt 1
{
TH0=(65536-cc)/256;
TL0=(65536-cc)%256;
aa++;
if (aa>bb) aa=0;//防止调整参数时aa数值超过bb
if(aa=bb)
{ beep=0;
  delay(5);
  beep=1;
  aa=0;
}



cc作为调整参数?或者是bb?

将变量按某种算法计算,来得到需要了频率?或者是设置一个数组?

请各位坛友帮我想想办法,在此先谢谢大家了。
发表于 2011-11-15 22:59 | 显示全部楼层
应该是bb吧
想实现多种波形的haunted
设置数组是一种很好的办法
回复

使用道具 举报

发表于 2011-11-16 21:22 | 显示全部楼层
俺是用汇编的,以前帮CT的一个朋友做过变Hz的输出方波。
回复

使用道具 举报

发表于 2011-11-17 19:32 | 显示全部楼层
本帖最后由 没事瞎转悠 于 2011-11-17 19:46 编辑

如果占空比是50%,是我的话我就用STC单片机的PCA来做,T0溢出做时钟源!12M晶振,T0定时器设为8位自动加载,TH0=TL0=(256-50);最大周期50us*65536*2=6.5s,设定pca捕获寄存器值10000就是50%占空比的1s的脉冲,设定pca捕获寄存器值200就是50%占空比的20ms的脉冲,计数值10000/1就是1Hz,10000/2就是2Hz,10000除30即30Hz;
    想要占空比可调就用STC的PWM,还是T0溢出做时钟源!由于PWM是8位的即1/256=3.90625ms,T0设16位定时器(想要提高精度就设定1T计数模式),TH0=(65536-3906)/256;TL0=(65536-3906)%256;3906/50就是50Hz,3906除2就是2Hz,CCAPnH的值在0-255之间就可以改变占空比!补充一点设定T0中断优先级最高!
     第一次写这么多,我当初是为了中文短信铃的LCD而注册一乐的,本人酷爱潜水,难得冒泡!
回复

使用道具 举报

 楼主| 发表于 2011-11-17 21:21 | 显示全部楼层
如果占空比是50%,是我的话我就用STC单片机的PCA来做,T0溢出做时钟源!12M晶振,T0定时器设为8位自动加载, ...
没事瞎转悠 发表于 2011-11-17 19:32 https://www.yleee.com.cn/images/common/back.gif



    写的很详细,非常感谢您对我的指点,我还是初学,受到大家的如此关照,再次谢谢大家,我一定要努力,不辜负大家的期望。
回复

使用道具 举报

发表于 2012-1-5 09:57 | 显示全部楼层
又学习了
回复

使用道具 举报

发表于 2012-2-20 12:15 | 显示全部楼层
学习
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-4 20:12 , Processed in 0.033915 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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