打印

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

[复制链接]
5090|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wealqm|  楼主 | 2010-11-29 20:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
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 大哥 给点建设性的意见吧,我不是问代码规不规范。

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

2.JPG (13.96 KB )

2.JPG

使用特权

评论回复
5
wealqm|  楼主 | 2010-11-29 22:52 | 只看该作者
手绘的图,实际都是直线,没有抖动。

使用特权

评论回复
6
maychang| | 2010-11-29 23:01 | 只看该作者
楼主在4楼发的图,高电平与低电平之间缺一段时间,没有任何显示,这是不可能的。

使用特权

评论回复
7
lai832| | 2010-11-30 00:29 | 只看该作者
mmax 大哥 给点建设性的意见吧,我不是问代码规不规范。

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


结果是一样的.

如果没猜错,
你的示波器还是电子管那种.....示波器测到的图就是方波来的

使用特权

评论回复
8
lai832| | 2010-11-30 00:31 | 只看该作者
楼主在4楼发的图,高电平与低电平之间缺一段时间,没有任何显示,这是不可能的。
maychang 发表于 2010-11-29 23:01


我想4楼的第二个图是用系统的"画笔"画的.
没有认直画造成的.

使用特权

评论回复
9
maychang| | 2010-11-30 00:47 | 只看该作者
估计楼主用的是模拟示波器。
但模拟示波器不可能显示如4楼图那样,方波在模拟示波器上是上下两行虚线,虚线一定是交错的,即上面“空”的地方下面一定是“实”,不会出现“缺一段”现像。
模拟示波器上一般都有校准信号,校准信号是相当标准的方波,楼主可以将探头接到校准信号上看看就明白了。

使用特权

评论回复
10
maychang| | 2010-11-30 00:54 | 只看该作者
8楼:
4楼的图,把上面的波形copy到下面,再拿“画笔”里面的橡皮擦擦,擦掉竖线,不就很好了?
实际上,示波器屏幕看到的波形,就是竖线擦掉了的模样。之所以被擦掉,当然是因为光点移动速度快。

使用特权

评论回复
11
roc_qiu| | 2010-11-30 08:56 | 只看该作者
哈哈!
由单片机引脚出方波谈论到了示波器的范畴,然后又谈到了如何画图的范畴。高!实在是高!
这就叫:一石激起千层浪!

使用特权

评论回复
12
jack_shine| | 2010-11-30 09:17 | 只看该作者
蝴蝶效应

使用特权

评论回复
13
tyw| | 2010-11-30 09:25 | 只看该作者

使用特权

评论回复
14
wealqm|  楼主 | 2010-11-30 09:28 | 只看该作者
谢谢各位大侠帮忙分析。

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

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

另外用示波器自己的测试能看到竖线。
我发的就看不到。

使用特权

评论回复
15
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;
}

代码先在精简成这样进行测试的,还是没有竖线。

使用特权

评论回复
16
hankchen86| | 2010-11-30 09:45 | 只看该作者
这条竖线真有那么重要吗?看不到竖线,证明你高低电平的切换速度快啊:lol
要不你把方波的频率调成跟示波器那个频率一样再试一试。

使用特权

评论回复
17
maychang| | 2010-11-30 09:47 | 只看该作者
14楼:
7楼所说“电子管的”就是指模拟示波器,其显示确实是电子管,一种比较特殊的电子管,通常叫示波管。但内部X轴Y轴放大还有触发扫描等等电路现在一般都是晶体管,甚至集成电路。
与之对应的是数字示波器,其显示是液晶屏。内部有A/D转换,输入信号经放大并A/D转换后还要经CPU处理,然后再显示到液晶屏上。
区分二者,只要看看显示是否液晶。用液晶的一定是数字示波器,不用液晶的一定是模拟示波器。

使用特权

评论回复
18
wealqm|  楼主 | 2010-11-30 09:49 | 只看该作者
我后面要驱动步进电机驱动器,我用P1^6脚想发方波驱动它,它是上升沿有效,

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

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

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

所以我以为是没有上升那条线的问题呢。

使用特权

评论回复
19
wealqm|  楼主 | 2010-11-30 10:26 | 只看该作者
那我的是模拟示波器。

使用特权

评论回复
20
zhangjunye| | 2010-11-30 12:16 | 只看该作者
楼主驱动步进电机,最好用pwm驱动,噪音的问题也许和你的硬件有关,虽然换上plc好用,但是plc和单片机io的驱动电流也是有区别的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

77

帖子

1

粉丝