若DSP的指令周期为100ns,试编写一段程序,从XF0引脚输出11个频率为1MHz的方波?

【pwm是如何控制电机转速】

【89C51系列单片机产生pwm波】


【pwm是如何控制电机转速】

在本科学习中,学生所做的小车多数为使用lm298n或者tb6612来驱动简单的直流电机,我们需要单片机输出pwm波来控制直流电机转速。

直流电机的PWM调速原理为:通过调节驱动电压脉冲宽度的方式,并与电路中一些相应的储能元件配合,改变了输送到电枢电压的幅值,从而达到改变直流电机转速的目的。

【89C51系列单片机产生pwm波】

89c51单片机没有自带pwm发生器,如果想要使用传统的51单片机产生pwm,只能通过软件模拟的方法来产生pwm。

软件模拟可以分为软件延时和定时器两种方法。

1、软件延时输出pwm

使用延时函数产生频率为1kHz的pwm方波(@12MHz晶振)

使用简单的延时函数即可简单地模拟出pwm波。但是这种方法缺点很明显,就是在输出pwm时占用大量机器周期,此时若进行其他操作时会影响pwm的准确度。所以这种方法我们很少使用。

使用定时器的溢出中断,在中断服务程序中改变IO口的电平高低,可以在多操作情况下输出比较准确的pwm波形。

比如我们使用定时器0。

定时器工作模式:我们设置定时器0工作模式为方式1,16位自动重载模式,这样可以获得较宽的调频范围。

定时器中断:16位自动重载模式下最多可以记65536个数,一旦超出这个数值,便会进入中断。定时器初值可以使用定时器计算器计算,方便快捷。

使用定时器0产生占空比可调,频率为100Hz的pwm波。

由仿真结果来看,所得波形还是不算很精准,实际应用过程中还会有很多误差,但是这样已经比延时函数产生pwm的结果可靠的多。

我在做循迹小车时使用的是stc12c5a60s2单片机。stc12c5a60s2单片机集成了两路可编程计数器阵列(PCA)模块,可用于软件定时器、外部脉冲的捕捉、高速输出以及脉宽调制(PWM)输出。

使用stc12c5a60s2单片机的PCA模块可通过程序设定,使其工作于8位PWM模式,通过P13和P14输出。

PWM输出频率取决于PCA定时器的时钟源。

 由于所有模块共用仅有的PCA定时器,所以它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕获寄存器[EPCnL, CCAPnL]有关。当寄存器CL的值小于[EPCnL,CCAPnL]时,输出为低;当寄存器CL的值等于或大于[EPCnL, CCAPnL]时,输出为高。当CL的值由FF变为00溢出时,[EPCnH, CCAPnH]的内容装载到[EPCnL, CCAPnL]中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。

 PCA时钟输入源频率由于PWM是8位的,所以

当某个I/O口作为PWM使用时,该口状态:

强推挽输出/强上拉输出,要加输出限流电阻1K-10K
强推挽输出/强上拉输出 强推挽输出/强上拉输出,要加输出限流电阻1K-10K

//PWM0占空比(调节此处值调节PWM占空比)

//PWM0占空比(调节此处值调节PWM占空比)

//PWM1占空比(调节此处值调节PWM占空比)

//PWM1占空比(调节此处值调节PWM占空比)

此时产生的就是占空比为50%的PWM波。使用示波器可以在P13和P14口测得PWM输出波形。

正在运行的内核和系统信息

# uptime # 显示系统开机运行到现在经过的时间

# dmesg # 检测到的硬件和启动的消息

在 Windows 上,DNS 配置于每个网络接口。要显示配置的 DNS 和清空 DNS 缓存可是使用:

Dig 是你测试 DNS 设置的好朋友。举个例子,用于测试的 DNS 服务器为

租约(lease)的全部信息存储在:

  • -A 显示每个包清晰文本(除了报头)
  • -l 使标准输出变为缓冲行形式
  • -D 显示所有可用网络接口

是一个用于 OS 探测的端口扫描工具,她通常在许多发行版上有安装,并且同样可用于 Windows。如果你不扫描你的服务器,骇客们会为你做这些...

流量控制管理着一个网络的队列、流量监控、调度以及其他流量设置(traffic parameters)。以下简单实用的示例使用 Linux 和 FreeBSD 的能力来更好的利用带宽。

DSL 或有线调制解调器有一个很长的列队来提高上传吞吐量(upload throughput)。然而用一个快速的设备(如以太网)填充这个列队将大大减少交互性。这就是限制设备上传速度有用的原因,以匹配调制解调器的实际能力,这可以有效提高交互性。设置大约为 modem 最大速度的 90%。

FreeBSD 使用 dummynet来控制带宽,其配置工具为 ipfw。Pipe 用来设置限制带宽的单位[K|M]{比特/秒|字节/秒},0 意味着没有限制。使用同样的 pipe 数字可重新配置它。举个例子,限制上传带宽为 500K。

使用 tc 的优先级队列来优化 VoIP。在 或 上可以看到完整的例子。假设 VoIP 使用 UDP 端口 并且使用 eth0 设备(也可为 ppp0 或 so)。下列命令定义了三个队列,并且用

使用公钥认证而不是密码连接主机。方法是附加你的公钥文件到远程主机。本例中我们用客户端产生的 key 从 host-client 连接到 host-server。

    客户端产生的密钥需要在 OpenSSH 服务器上进行转换。可以使用 ssh-keygen 命令来完成。

    • 使用 客户端产生的公钥到服务器的 ~/.ssh 目录。
    • 一旦这些公钥导入后,加密或解密一个文件会非常简单:

      # gpg -d f 文件,因此你知道文件将创建在哪里。以下是 f \

      该证书申请由 CA 签发确认,这个步骤通常由供应商完成。注意:在下面命令中替换 "servername" 成你的服务器名称。

      这里是。还有一个很好的 。

      一些基本的正则表达式同样可用于 sed。作为一个良好的启蒙,可看 。

      \ # 转义特殊字符,当成普通字符对待 * # 重复前项 0 次或多次 . # 单个字符除换行符 ^ # 匹配字符串行开始处 $ # 匹配字符串行结尾处 .$ # 匹配字符串行最后一个字符 ^ $ # 匹配单个空格的行

      下列命令对于包含于一个脚本或者单行命令来说很有用。

      我使用一种小伎俩来一次更改许多文件的扩展名。举个例子,从 .cxx 到 .cpp。排除最后的 | sh 先测试一下。你同样可以使用命令 rename来做这些,如果安装了的话。或者使用 bash 内建命令。

来一个稍微现实一点的 C++ 程序,我们在一个头文件(IPv4.h)中创建一个类并且实现它(IPv4.cpp),然后创建一个程式来使用其功能。这个类的成员方法实现了 IP 地址从一串整数转换成我们熟知的点分格式。这是一个最小化的 C++ 程式和多源文件(multi-source)的编译。

使用 ldd脚本检查并列出可执行程序所依赖的共享库文件。这个命令同样可以用来检查共享库的丢失。

相应的最小化多源文件(multi-source)编译 Makefile 显示如下。每一个命令行必须以 tab开始!可以将一个较长行使用反斜线"\"来分解为多行。

我要回帖

更多关于 若存储周期为100ns 的文章

 

随机推荐