求:单片机80c51怎么做脉冲信号发生器
-
需要6个按键控制脉冲的占空比,1-99%2个数码管显示占空比,按键功能要求:数值加。减,启动,确认,调个位数值,调十位数值,频率1000HZ,输出电压5V!求高手解决需要图和程序,拜托各... 需要6个按键控制脉冲的占空比,1-99% 2个数码管显示占空比,按键功能要求:数值加。减,启动,确认,调个位数值,调十位数值,频率1000HZ,输出电压5V!求高手解决 需要图和程序,拜托各位高手 展开
全部评论(5条)
-
- liudj0532 2010-05-18 00:00:00
- 要一种芯片 功能很强大 郭天翔做过 你看看他的Z后个教程有 就一分钟片段
-
赞(5)
回复(0)
-
- 12903847 2010-05-18 00:00:00
- 试SY51单片机加DAC输出可控制的电压V1,然后将该电压V1和一个固定频率的(这里就1000Hz)锯齿波作通过比较器,然后就实现PWM波了.
-
赞(10)
回复(0)
-
- 结婚难办 2010-05-18 00:00:00
- 51的一般都有两个定时器吧 那好,现在分配。比如定时器一做周期定时器。也就是在一定周期内中断一次,这个时候你可以让一个单片机管脚输出电平取反。 另外一个定时器当然就是占空比时间调节定时了。1--99%的占空比调节 简单理解就是高电平占总周期的比值。比如整个周期是100的话。 那么占空比调节的定时器就是1--99变化的中断就行了 中断一次 你就让电平取反。 所以一般情况下你的占空比定期器中断时间要小于周期定时器时间。 默认让单片机管脚输出高电平 先占空比定时中断 取反为低电平 在周期定时器中断取反为高电平。 只要占空比变化你就把变化的数值送到占空比定时器,这样占空比就更新了。 至于按键就简单多了,建议键盘读取放到主程序中 比如每十几毫秒调用一次。 你说的1000HZ 周期时间你就自己算吧 输出电压不会是五V的 单片机高电平数去是5V 低就是0 有效值是5*(占空比)
-
赞(10)
回复(0)
-
- A丨A_想念_矡H 2017-09-22 00:00:00
- /***************************************************************************** * 程序名称:PWM占空比调整演示程序 * *程序思路说明: * * 只需要4个按键。 * *关于频率和占空比的确定,对于12M晶振,输出频率为1KHZ,这样定时中断次数设定为 * *10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样可以设 * *定占空比可从1-99%变化。即0.01ms*100=1ms * ******************************************************************************/ #include<regx51.h> #define uchar unsigned char #define uint unsigned int uchar timer0_tick,ZKB=1;//timer0_tick计数,ZKB占空比 uchar i=0,n=0,temp=0; code seven_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//1,2,3, 4, 5, 6, 7, 8, 9 code scan[2]={0xfd,0xfe}; uchar counter[2]={0,0}; sbit AN1=P3^2;//调整个位 sbit AN2=P3^3;//调整十位 sbit AN3=P3^4;//启动按键 sbit AN4=P3^5;//确认按键 void delay(uint z)//软件延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } static void timer0_isr(void) interrupt 1 using 0 //中断函数 { TR0=0; TL0=0xf6; TH0=0xff; TR0=1; if (ZKB>99) ZKB=1; if (ZKB<1) ZKB=99; counter[0]=ZKB%10; counter[1]=ZKB/10; n++; if(n==100) { n=0; i++; if(i==2) i=0; P0=seven_seg[counter[i]]; P2=scan[i]; } timer0_tick++; if(timer0_tick++==100) { timer0_tick=0; } if(AN2==0) { delay(100); if(AN2==0) { temp=1; counter[0]++; if(counter[0]==10) { counter[0]=0; } } } if(AN1==0) { delay(100); if(AN1==0) { temp=1; counter[1]++; if(counter[1]==10) { counter[1]=0; } } } ZKB=counter[0]+counter[1]*10; if(AN4==0) { delay(5); if(AN4==0) temp=0; } if(temp==1) P3_7=0;// P3_7为脉冲输出引脚 else { if (timer0_tick<=ZKB) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/ { P3_7=1; } else { P3_7=0; } } } static void timer0_initialize(void)//中断初始化 { EA=0; timer0_tick=0; TR0=0; TMOD=0x01; TL0=0xf6; TH0=0xff; PT0=0; ET0=1; TR0=1; EA=1; } void main(void) { STAR: delay(100); if(AN3!=0) goto STAR;//按键3启动脉冲 timer0_initialize(); while(1); } //按按键3启动脉冲器,初始设置占空比为1%,按键1调整十位, //按键2调整个位,一旦调整,输出为0,必须按确认键确认, //输出正确脉冲.可以占空比1-99%任意调节。
-
赞(15)
回复(0)
-
- 梦色未央 2017-09-28 00:00:00
- * 程序名称:PWM占空比调整演示程序 * *程序思路说明: * * 只需要4个按键。 * *关于频率和占空比的确定,对于12M晶振,输出频率为1KHZ,这样定时中断次数设定为 * *10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样可以设 * *定占空比可从1-99%变化。即0.01ms*100=1ms * ******************************************************************************/ #include<regx51.h> #define uchar unsigned char #define uint unsigned int uchar timer0_tick,ZKB=1;//timer0_tick计数,ZKB占空比 uchar i=0,n=0,temp=0; code seven_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//1,2,3, 4, 5, 6, 7, 8, 9 code scan[2]={0xfd,0xfe}; uchar counter[2]={0,0}; sbit AN1=P3^2;//调整个位 sbit AN2=P3^3;//调整十位 sbit AN3=P3^4;//启动按键 sbit AN4=P3^5;//确认按键 void delay(uint z)//软件延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } static void timer0_isr(void) interrupt 1 using 0 //中断函数 { TR0=0; TL0=0xf6; TH0=0xff; TR0=1; if (ZKB>99) ZKB=1; if (ZKB<1) ZKB=99; counter[0]=ZKB%10; counter[1]=ZKB/10; n++; if(n==100) { n=0; i++; if(i==2) i=0; P0=seven_seg[counter[i]]; P2=scan[i]; } timer0_tick++; if(timer0_tick++==100) { timer0_tick=0; } if(AN2==0) { delay(100); if(AN2==0) { temp=1; counter[0]++; if(counter[0]==10) { counter[0]=0; } } } if(AN1==0) { delay(100); if(AN1==0) { temp=1; counter[1]++; if(counter[1]==10) { counter[1]=0; } } } ZKB=counter[0]+counter[1]*10; if(AN4==0) { delay(5); if(AN4==0) temp=0; } if(temp==1) P3_7=0;// P3_7为脉冲输出引脚 else { if (timer0_tick<=ZKB) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/ { P3_7=1; } else { P3_7=0; } } } static void timer0_initialize(void)//中断初始化 { EA=0; timer0_tick=0; TR0=0; TMOD=0x01; TL0=0xf6; TH0=0xff; PT0=0; ET0=1; TR0=1; EA=1; } void main(void) { STAR: delay(100); if(AN3!=0) goto STAR;//按键3启动脉冲 timer0_initialize(); while(1); } //按按键3启动脉冲器,初始设置占空比为1%,按键1调整十位, //按键2调整个位,一旦调整,输出为0,必须按确认键确认, //输出正确脉冲.可以占空比1-99%任意调节。
-
赞(14)
回复(0)
热门问答
- 求:单片机80c51怎么做脉冲信号发生器
- 需要6个按键控制脉冲的占空比,1-99%2个数码管显示占空比,按键功能要求:数值加。减,启动,确认,调个位数值,调十位数值,频率1000HZ,输出电压5V!求高手解决需要图和程序,拜托各... 需要6个按键控制脉冲的占空比,1-99% 2个数码管显示占空比,按键功能要求:数值加。减,启动,确认,调个位数值,调十位数值,频率1000HZ,输出电压5V!求高手解决 需要图和程序,拜托各位高手 展开
2010-05-17 05:29:56
304
5
- :基于51单片机的脉冲信号发生器
- [1]输出信号约每秒1组脉冲,脉冲组间隔0.5-2秒可设置;[2]每组脉冲个数1-50可以设置,双极性脉冲和双极性方波;[3]脉冲频率5K-100K可以设置;[4]脉冲宽度可以1-100uS可以设置;我的92... [1] 输出信号约每秒1组脉冲,脉冲组间隔0.5-2秒可设置;[2] 每组脉冲个数1-50可以设置,双极性脉冲和双极性方波; [3] 脉冲频率5K-100K可以设置;[4] 脉冲宽度可以1-100uS可以设置; 我的 921313685@qq.com谢啦 展开
2014-10-15 08:40:21
215
2
- labview脉冲信号发生器
- 想用labview实现这样的功能:在测试周期内,当不断生成的随机数中,大于0.2时,产生一个gauss脉冲,并在时间轴上显示出来,否则不产生。请诸位前辈能不能分享一些idea?这是我编写的程... 想用labview实现这样的功能: 在测试周期内,当不断生成的随机数中,大于0.2时,产生一个gauss脉冲,并在时间轴上显示出来,否则不产生。请诸位前辈能不能分享一些idea? 这是我编写的程序。但是生成的脉冲只能在波形图中的固定位置产生,而不能在时间轴上显示。求指点! 展开
2014-09-10 01:08:04
423
2
- 脉冲信号发生器的特点
2018-11-23 02:46:40
268
0
- 脉冲信号发生器的指标
2018-02-10 00:22:54
354
1
- 双脉冲信号发生器是什么
2018-11-16 01:43:05
217
0
- 脉冲信号发生器的介绍
2018-11-24 02:01:32
398
0
- 急求eda课程设计一份:脉冲信号发生器的设计
- 题目:脉冲信号发生器的设计要用vhdl语言编程只要大概的思路与程序的大体框架即可当然全面了更好... 题目:脉冲信号发生器的设计 要用vhdl语言编程 只要大概的思路与程序的大体框架即可 当然 全面了更好 展开
2010-12-08 08:38:06
399
2
- 脉冲信号发生器怎么产生脉冲电流
2012-05-24 09:22:53
386
4
- 脉冲信号发生器怎么工作的
2016-03-05 21:51:06
290
1
- 如何用示波器检验脉冲信号发生器
- 大机组7200系列本特利转速表二次表校验用,需要用脉冲信号,需要用示波器检查频率发生器信号... 大机组7200系列本特利转速表二次表校验用,需要用脉冲信号,需要用示波器检查频率发生器信号 展开
2010-01-18 07:33:51
755
3
- 脉冲信号发生器 的偏置- 是什么意思
- DF1521B宁波中策脉冲信号发生器为例吧怎么调节脉冲电沉积制备铁纳米线用A.B.A+B哪个脉冲高手指点下... DF1521B宁波中策脉冲信号发生器 为例吧 怎么调节 脉冲电沉积制备铁纳米线 用A. B.A+B 哪个脉冲 高手指点下 展开
2009-04-27 18:29:53
1244
1
- 单片机正弦信号发生器
- 用的是82C51接上一个DAC0832,用汇编语言写程序,对正弦波一个周期取256个样点,然后放进表格,上半波是正数,数据从00H开始到FFH再到00H,但是下半波是负数应该怎么写?比如-6是FAH,... 用的是82C51接上一个DAC0832,用汇编语言写程序,对正弦波一个周期取256个样点,然后放进表格,上半波是正数,数据从00H开始到FFH再到00H,但是下半波是负数应该怎么写?比如-6是FAH,但是这在上半波已经出现了 展开
2012-12-28 04:22:02
355
2
- 单片机信号发生器怎么做
2011-06-23 00:43:14
373
2
- 已知80C51单片机系统使用6MHZ的外部晶体振荡器,请问:
- ①当单片机的定时器0(T0)工作在方式1时,T0的Z大定时间为多少?②当单片机的定时器0(T0)工作方式2时,要求每记满250us便产生一次定时器溢出,请问T0中需要预置的初值应为多少?... ①当单片机的定时器0(T0)工作在方式1时,T0的Z大定时间为多少?②当单片机的定时器0(T0)工作方式2时,要求每记满250us便产生一次定时器溢出,请问T0中需要预置的初值应为多少? 展开
2018-06-05 12:33:31
466
1
- 用555定时器做10Hz脉冲信号发生器
2012-06-07 16:53:35
277
1
- 基于fpga的多路脉冲信号发生器的设计
- (1)用Altera公司的FLEX10K器件,设计制作四路脉冲信号源,输出频率范围:25Hz~500Hz;(2)其中各两路信号源频率相同,但有相位差,要求相位差可以调节;(3)具有频率设置功能,频... (1)用Altera公司的FLEX10K器件,设计制作四路脉冲信号源,输出频率范围:25Hz~500Hz; (2) 其中各两路信号源频率相同,但有相位差,要求相位差可以调节; (3)具有频率设置功能,频率步进:1Hz; (4)输出信号频率稳定,输出信号占空比连续可调2.5% 至 80%; (5)输出信号上升/下降时间小于100ns; (6)扩展一显示器,分辨率为4位,能够显示频率值及相位差; (7)失真度:用示波器观察时无明显失真。 展开
2011-12-08 09:31:14
422
2
- 怎样设计msp430单片机一个延时脉冲信号电路
2017-07-06 03:50:03
606
1
- 基于fpga的多路脉冲信号发生器的论文(共5路) 急求论文 谢谢
2018-11-27 19:57:39
296
0
- 网上卖的 NE555脉冲信号发生器 可以为步进电机提供5V的脉冲信号吗
- 不知道谁用没用过大概就是这样的... 不知道谁用没用过 大概就是这样的 展开
2014-12-18 19:28:42
301
1
5月突出贡献榜
推荐主页
最新话题
-
- #激光粒度仪 #
- 电压击穿试验仪:藏在实验室里的“闪电制造者”...电压击穿试验仪:藏在实验室里的“闪电制造者”硬核真相:这台设备能在几秒内让绝缘材料“原地爆炸”!通过模拟极端高压环境(可达300kV以上),它用一道闪电般的电弧,揭穿材料绝缘性能的极限。魔鬼测试流程:温柔起步:以100V/s缓慢升压死亡凝视:实时监测微小漏电流致命一击:在击穿瞬间记录峰值电压(整个过程比科幻大片更刺激)安全玄机:• 防爆油箱:把击穿爆炸锁在40mm钢化玻璃后• 幽灵电压消除:放电后自动归零,防残余电击• 智能逃逸:检测到有毒气体自动启动排风反常识现象:某些纳米复合材料被击穿后会“自愈合”干燥空气的击穿电压≈3kV/mm,但SF₆气体可达89kV/mm
- 市场中的检测zeta电位的一种技术叫CF-P...市场中的检测zeta电位的一种技术叫CF-PALS,他是真的相位分析光散射吗?这种余弦拟合位相分析法,为什么叫"位相",而不是传统的“相位"?
参与评论
登录后参与评论