Ⅰ 51单片机测方波占空比,下面是我写的程序,在仿真的时候计算的结果在液晶上不显示啊,大神们帮我看看啊。
我写两个程序,占空比为50%周期为500微妙的大铅程序 P1口输出测的话示波器直接测,干嘛那么复杂。滚改好
中断方法歼悄: ORG 0000H
LJMP START
ORG 000BH
LJMP TLINT
ORG 001BH
START: MOV SP,#30H
MOV TMOD,#01H
MOV TH0,#0FFH
MOV TL0,#83H
SETB EA
SETB ET0
SETB TR0
SJMP $
TLINT: MOV TH0,#0FFH
MOV TL0,#83H
CPL P1
RETI
END
查询方法: ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#30H
MOV TMOD,#01H
SETB TR0
LOOP:
SETB P1.0
MOV TH0,#0FFH
MOV TL0,#83H
JNB TF0,$
CLR P1.0
CLR TF0
MOV TH0,#0FFH
MOV TL0,#83H
JNB TF0,$
CLR P1.0
CLR TF0
SJMP LOOP
END
Ⅱ 51单片机产生40KHZ方波
程序为:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit Waveout=P1^0;
uchar
void main()
{
TMOD=0x01;
TH0=0xFF;
TL0=0xE8; //TL0=(65536-24)%256=232,即E8
EA=1;
ET0=1;
TR0=1;
while(1);
}
void T0_time() interrupt 1
{
TH0=0xFF;
TL0=0xE8;
Waveout=!Waveout;
}
(2)51单片机方波仿真扩展阅读
使用方法
1.将仿真器插入需仿真的用户板的CPU插座中,仿真器由用户板供电;
2.将仿真器的串行电缆和PC机接好,打开用户板电源;
3.通过KeilC 的IDE开发仿真环境UV2 下载用户程序进行仿真、调试。
硬件说明
1、使用用户板的晶振:仿真器晶振旁有两组跳线用来切换内部晶振和用户板晶振,当两个短路块位于仿真器晶振一侧时,默认使用仿真板上的晶振(11.0592MHz), 当两个短路块位于电容一侧时,使用用户板的晶振。
2、为便于调试带看门狗的用户板,仿真器的复位端未与用户板复位端相连;故仿真器的复位按钮只复位仿真器,不复位用户板;若要复位用户板,请使用用户板复位按钮。
参考资料来源:网络-51单片机
Ⅲ 请问如何用51单片机生成频率可调的方波请给出方案或者修改我的方案(如下)
P0 口,应该加上上拉电阻。山瞎
AD 转换的结果,应该是:0~255。
使用真实的硬件,结果是多少?
可以在 P2 口,接上八个 LED,当场显示出来看看。
另外,对于这一批数据,你所期望得到的频逗族空率范围,究穗丛竟是多少?
还有,采用软件定时,并不准确。
Ⅳ 新手求助!!用51单片机产生20KHZ的方波,不知怎么仿真不出结果
程序除
sbitp1_0=p1^0要写成
sbitp1_0=P1^0;
外其它没错。你在proteus中没首禅打亮睁开虚拟示波敬芹岁器吧,每格50us,刚好20kHZ
Ⅳ 关于51单片机产生方波信号
如果单片机有PWM的功能就可以用PWM产生方波,如果没有也可能用I/O口先输出高电平延时,再输出低电平,就可以得到所要的方波了,要改变幅度 频率 空占比可调,可以设置几个按键开关,按一次就可以改变延时时间,这样就可以改频率了。其它要调的也可是如此
Ⅵ 程序问题:51单片机如何精确产生频率占空比可调的方波
首先选择一个i/o设置为输出模式,这个模轮就是用于输出腔慧方波的硬件接口。
频率可调,可以根据你要想要的频率,换算成中断周期,实质上是一个计数器。建议弄一个300k的中断服务。那么可以这样整:如果要30k的频率,那么每10次中断视为一次完整的周期,执行一次你要的处理。
占空比问题,比如30%的占空比,那么你前三次中断都把状态设置为1,后面七次都设置为0状态。照这个思路就实现你的占空比了。当然这些中断次数的旦圆信依据需要你自己对占空比的要求进行换算得到。在中断服务程序中去操作i/o口状态,当然你还可以在该程序结束的时候或者开始的时候,再次修改中断时间从而调整输出频率。
Ⅶ 51单片机用定时器输出1HZ方波 为什么我的程序仿真以后io口狂闪 并不是1HZ 12M晶振
你的if语句后多加了一个分号或差,所以单片机一个仔手while循衫戚皮环就一直在执行led=~led,所以io就狂闪
Ⅷ 急!!!!!希望实现利用C51单片机输出频率及占空比可调的方波,我需要protues仿真的电路图及源代码。我
//P2^0和P2^1;接2个按钮,
//P2^0控制频率10HZ到50HZ,按压改变
//P2^1控制占比10%到90%,按压改变
//假设晶振为12MHz
#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
uintt=0,f=100,w=50;
sbitP10=P1^0;//输出端
sbitKF=P2^0;//改变频率按钮
sbitKW=P2^1;//改变占宽按钮
voidinit()
{
TMOD=0x21;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
TR0=1;
EA=1;
}
voidtime0()interrupt1
{
TH0=(65536-1000)/256;厅桥饥
TL0=(65536-1000)%256;
t++;//t为1ms
if(t>=f)t=0;
}
voidmain()
{
init();
while(1)
{
if(KF==0)//改变频率
{f=f-10;
if(f<=10)f=100;
while(KF==0);
w=f/10;
}
if(KW==0)//改变占比
{w=w+f/10;
if(w>=f)w=f/10;
while(KW==0);
}
if(t<w)P10=1;//单个周期
elseP10=0;
}
}
如果图片看不清,请先“查看大图”,此时另存到你的电脑里,再查看更大的图片。
****************************
后补充:根据你的“问题补充”,需要增扮返加一个AD转换器,常用的并口有ADC0809,串口有ADC0834,单片机扫描AD转换输出的数据,送到上述的频率f和占比w两个变量。就可以改变。幅度改变很简单消塌,用电位器的分压直接输出就可以了。要把整个写出来,需要一定的篇幅,上面给你提供思路,望你自己多动手电脑,得到满意的结果。
Ⅸ 用51单片机产生方波
这个就不需要什么电路了吧,有个51最小系统板+LCD1602液晶+几个按键就OK了,因为你是输出脉冲嘛,51也就只能输出高低电平的脉冲了,外加一个液晶显示即可。你到网上查一下液晶的连接电路就OK,一大把的。
另外你说的程序也并不难啊,频率这么低,用定时计数器就可以实现了。可以做一个公式,用频率或者占空比算出具体的定时器的计数值。公式嘛,当然也是你想一下了,呵呵。
综合来看,难点就在于键盘控制而已,要读入键盘值,然后进行数据整合处理。
Ⅹ 帮忙解决下:使用51单片机,产生方波、锯齿波、三角波等波形,频率可调。并且能实现在protues中的仿真
基本知识点:
1、定时器
2、PWM
方波、三角波的实现方法:
1、PWM固定占空比1:1,实现对称方波输出
2、方波后连接积分电路,可将方波变为同频率的三角波。
实现以上功能较容易,且可实现的频率范围较宽。
锯齿波实现方法:
锯齿波实现方法稍显麻烦,不过硬件电路原理与三角波类似。
区别在于锯齿波在一个周期内输出若干个占空比不同的方波,每个方波的占空比除了最后一个点之外,呈线性递增。这样出来的信号还不是锯齿波,需要经过积分电路才能转变为锯齿波。由于一个周期需要输出多个方波(个数越多,精度越高),因此,锯齿波的频率不能太高。
锯齿波个人建议采用AD或专用的信号发生器电路。