请问51单片机能否用1个引脚发送方波

[复制链接]
6277|32
 楼主| wealqm 发表于 2010-11-29 20:52 | 显示全部楼层 |阅读模式
请问51单片机能否用1个引脚发送方波。

为什么我发出的是跳变的呢。跳变是否是方波。

sbit cp=P1^5

只在timer0里写了如下代码

TH0=(65536-500)/256;
TL0=(65536-500)%256;

i++;
if(i==2)
{
   i=1;
   cp=~cp;
}
mmax 发表于 2010-11-29 21:54 | 显示全部楼层
跳变? 没有说清楚哟~

i是全局变量吗?真佩服你的编程习惯。。

还有,你这段
i++;
if(i==2)
{
   i=1;
   cp=~cp;
}

跟直接
cp=~cp;
有啥区别?
 楼主| wealqm 发表于 2010-11-29 22:46 | 显示全部楼层
哦,确实是没区别,是为了以后改 i 的值才这样写的。我测试的时候有时候会给i 复制 3,4,5
i是全局变量,我只写了一小段代码。i 在初始化时是1
 楼主| wealqm 发表于 2010-11-29 22:52 | 显示全部楼层
mmax 大哥 给点建设性的意见吧,我不是问代码规不规范。

下边是图,这回您帮我看看。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| wealqm 发表于 2010-11-29 22:52 | 显示全部楼层
手绘的图,实际都是直线,没有抖动。
maychang 发表于 2010-11-29 23:01 | 显示全部楼层
楼主在4楼发的图,高电平与低电平之间缺一段时间,没有任何显示,这是不可能的。
lai832 发表于 2010-11-30 00:29 | 显示全部楼层
mmax 大哥 给点建设性的意见吧,我不是问代码规不规范。

下边是图,这回您帮我看看。
wealqm 发表于 2010-11-29 22:52


结果是一样的.

如果没猜错,
你的示波器还是电子管那种.....示波器测到的图就是方波来的
lai832 发表于 2010-11-30 00:31 | 显示全部楼层
楼主在4楼发的图,高电平与低电平之间缺一段时间,没有任何显示,这是不可能的。
maychang 发表于 2010-11-29 23:01


我想4楼的第二个图是用系统的"画笔"画的.
没有认直画造成的.
maychang 发表于 2010-11-30 00:47 | 显示全部楼层
估计楼主用的是模拟示波器。
但模拟示波器不可能显示如4楼图那样,方波在模拟示波器上是上下两行虚线,虚线一定是交错的,即上面“空”的地方下面一定是“实”,不会出现“缺一段”现像。
模拟示波器上一般都有校准信号,校准信号是相当标准的方波,楼主可以将探头接到校准信号上看看就明白了。
maychang 发表于 2010-11-30 00:54 | 显示全部楼层
8楼:
4楼的图,把上面的波形copy到下面,再拿“画笔”里面的橡皮擦擦,擦掉竖线,不就很好了?
实际上,示波器屏幕看到的波形,就是竖线擦掉了的模样。之所以被擦掉,当然是因为光点移动速度快。
roc_qiu 发表于 2010-11-30 08:56 | 显示全部楼层
哈哈!
由单片机引脚出方波谈论到了示波器的范畴,然后又谈到了如何画图的范畴。高!实在是高!
这就叫:一石激起千层浪!
jack_shine 发表于 2010-11-30 09:17 | 显示全部楼层
蝴蝶效应
tyw 发表于 2010-11-30 09:25 | 显示全部楼层
 楼主| wealqm 发表于 2010-11-30 09:28 | 显示全部楼层
谢谢各位大侠帮忙分析。

确实图是手绘制的。没有画的太好请见谅。

我用的示波器是GOS-620不知道是否是电子管的。

另外用示波器自己的测试能看到竖线。
我发的就看不到。
 楼主| wealqm 发表于 2010-11-30 09:30 | 显示全部楼层
#include<reg52.h>

sbit cpp=P1^6;

void init();


void main()
{
        init();
        while(1)
        {;}
}

void init()
{
        TMOD=0x01;
        TH0=(65536-1000)/256;
        TL0=(65536-1000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        cpp=0;
}

void timer0() interrupt 1
{

        TH0=(65536-1000)/256;
        TL0=(65536-1000)%256;
        cpp=!cpp;
}

代码先在精简成这样进行测试的,还是没有竖线。
hankchen86 发表于 2010-11-30 09:45 | 显示全部楼层
这条竖线真有那么重要吗?看不到竖线,证明你高低电平的切换速度快啊:lol
要不你把方波的频率调成跟示波器那个频率一样再试一试。
maychang 发表于 2010-11-30 09:47 | 显示全部楼层
14楼:
7楼所说“电子管的”就是指模拟示波器,其显示确实是电子管,一种比较特殊的电子管,通常叫示波管。但内部X轴Y轴放大还有触发扫描等等电路现在一般都是晶体管,甚至集成电路。
与之对应的是数字示波器,其显示是液晶屏。内部有A/D转换,输入信号经放大并A/D转换后还要经CPU处理,然后再显示到液晶屏上。
区分二者,只要看看显示是否液晶。用液晶的一定是数字示波器,不用液晶的一定是模拟示波器。
 楼主| wealqm 发表于 2010-11-30 09:49 | 显示全部楼层
我后面要驱动步进电机驱动器,我用P1^6脚想发方波驱动它,它是上升沿有效,

现在驱动器驱动电机总打架,噪音特别大,有时候还有啸叫声,我认为是我程序的问题。

用PLC连接这个驱动器驱动电机正常。

我在P1^6口后经过了74LS07N芯片处理接的驱动器CP口。

所以我以为是没有上升那条线的问题呢。
 楼主| wealqm 发表于 2010-11-30 10:26 | 显示全部楼层
那我的是模拟示波器。
zhangjunye 发表于 2010-11-30 12:16 | 显示全部楼层
楼主驱动步进电机,最好用pwm驱动,噪音的问题也许和你的硬件有关,虽然换上plc好用,但是plc和单片机io的驱动电流也是有区别的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

77

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部