51如何用单片机控制舵机问题

“ 畅学电子 ” 一键关注,轻松学习电子知识畅学电子网·订阅号每天更新电子行业技术文章,及单片机最新资讯,随时随地轻松学习一、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么?MCS-51单片机在一块芯片中集成了 CPU 、RAM、ROM、定时/计数器、多功能 I/O 口 和中断控制等基本功能部件。 单片机的核心部分是 CPU ,CPU 是单片机的大脑和心脏。 程序存储器用于存放编好的程序或表格常数。数据存储器用于存放中间运算结果、数据 暂存和缓冲、标志位等。 定时/计数器实质上是加法计数器,当它对具有固定时间间隔的内部机器周期进行计数时 ,它是定时器;当它对外部事件进行计数时,它是计数器。 I/O 接口的主要功能包括:缓冲与锁存数据、地址译码、信息格式转换、传递状态(外 设状态)和发布命令等。 中断控制可以解决 CPU 与外设之间速度匹配的问题,使单片机可以及时处理系统中许 多随机的参数和信息,同时,它也提高了其处理故障与应变能力的能力。二、MCS-51单片机的 EA、ALE和PSEN 端的功能是什么?答:ALE——ALE 为地址锁存允许信号,在访问外部存储器时,ALE 用来锁存 P0送出的低 8 位地址信号。 PSEN ——外部程序存储器的读选通信号。当访问外部 ROM 时, PSEN 产生负脉冲作 为外部 ROM的选通信号;在访问外部 RAM或片内 ROM时,不会产生有效的PSEN 信 号。 PSEN 可驱动 8 个LSTTL 门输入端。 EA ——访问外部程序存储器控制信号。对 8051 和8751 ,它们的片内有 4KB 的程序存 储器。当 EA 为高电平时,CPU 访问程序存储器有两种情况:一是访问的地址空间在 0 ~4K 范围内,CPU 访问片内程序存储器;二是访问的地址超出 4K 时,CPU 将自动执 行外部程序存储器的程序。对于 8031 ,EA 必须接地,只能访问外部 ROM。三、MCS-51单片机的 P3口具有哪些功能?答:P3口是双功能口,除了作为准双向通用 I/O 口使用外,每一根口线还具有第二种功能 ,P3口的各位如不设定为第二功能则自动处于第一功能。P3的第二功能涉及到串行口 、外部中断、定时器,与特殊功能寄存器有关。四、89C51单片机有几个中断源?它们的中断标志位分别是什么?这些中断标志位是如何产生的?又是如何清“0”的?答:5个,外部中断0:IE0,开放中断后,当INTO引脚有下降沿或者低电平时产生,响应中断后自然清0定时器0:TF0外部中断1:IE1开放中断后,当INT1引脚有下降沿厚着低电平时产生,响应中断后自然清0定时器1:TF1开放中断后,当定时或计数时间到产生,响应中断后自然清0.另外如果不开放中断,采用软件判断是,需要软件清0.串口:RI/TI,通信开始后当接收完或者发送完一帧后产生,响应中断后需要软件清0.五、如果采用晶振的频率为 3MHz ,定时/计数器工作方式 0、1、2 下,其最大的定时时间为多少?答:内部定时脉冲周期=机器周期=12/3Mhz=4us工作方式 0:Tmax=8192*4us=32.768ms工作方式 1:Tmax=65536*4us=262.144ms工作方式 2:Tmax=256*4us=1.024ms六、定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?答:其计数脉冲由单片机振荡脉冲 12 分频输出的机器周期脉冲提供,定时时间与工作方式、晶振频率和预置数等因素有关。七、定时/计数器的工作方式 2 有什么特点?适用于哪些应用场合?答:工作方式2 具有初值自动重新加载和循环工作的特点,适用于产生固定脉宽的脉冲信号,和作为串行口波特率发生器使用。八、一个定时器的定时时间有限,如何实现两个定时器的串行定时,来实现较长时间的定时?答:方法一:让一个定时器先定时,溢出后,再启动另一个定时器定时;方法二:在第一个中断处理子程序中加入计数器,计数器满后,就去启动另一个定时器定时,把要处理的事件放第二个中断处理子程序中。九、简述串行口接收和发送数据的过程。答:MCS-51单片机内部有一个全双工的异步串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据,也可以发送数据,串行口发送的过程是:先从累加器 A 中读入 8 位数据到 SBUF,随后在串行口有硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的控制下,由 TXD端串行输出,一个字符帧发送完后,使 TXD输出线维持在 1 状态下,并将 SCON 寄存器的 TI置1,通知 CPU 可以发送下一个字符帧。串行口接收的过程是:SCON 的REN 位应处于允许接收状态(REN=1),在此前提下,串行口采样 RXD端,当采样到从 1 向0 的状态跳变时,就认定是接收到起始位,随后在移位脉冲的控制下,把通过位采样脉冲接收到的数据位移入接收寄存器中,直到停止位到来之后把停止位送入 RB8 中,并置位中断标志位 RI ,通知 CPU 从SBUF 取走接收到的一个字符。十、为什么定时/计数器 T1用做串行口波特率发生器时,应采用方式 2?若已知时钟频率、通信波特率,如何计算其初值?答:因为方式 2 是有自动重装载计数值的功能,从而可以产生精确的波特率。串行工作方式0 和方式 2 波特率是固定的,所以不用设初值;串行工作方式 1 和方式 3 时:波特率:BR = (2SMOD×Td)/32溢出一次的时间:1/ Td = (256-TH1)*12/ fosc溢出率:Td = fosc/[12×(256-TH1)]初值:TH1 = 256- fosc/(12* Td)十一、单片机应用系统中为什么要进行系统扩展?答:8031 、8032 等单片机不提供用户程序存储器,必须进行程序存储器的扩展,以存放控制程序、数据表格等;8751 等单片机虽然向用户提供 EPROM 程序存储器,但程序存储器空间容量不大,程序存储空间不足时,还必须扩展外部程序存储器。MCS-51系列单片机内部通常有 128B至256B的片内数据存储器,用于一般的控制及运算是足够的,但若用于数据存储,其容量是不足的,在这种情况下,必须扩展数据存储器。MCS-51系列单片机对外提供 32 条I/O 口线,但其 P0口作为地址/数据复用口,P2口用于提供高 8 位地址,而其 P3口具有第二功能,若扩展了程序存储器或数据存储器,单片机的 I/O 口往往也不够用,有时必须进行 I/O 口的扩展。应用系统中有时还涉及到数据的输入、输出、人机交互信息等接口问题,必须进行有关接口电路扩展。十二、A/D 及D/A 转换的含义是什么?答:A/D 转换是指将模拟信号转换为数字信号,主要用于微机控制系统的模拟信号数据采集。D/A 转换是指将数字信号转换为模拟信号,主要用于恢复模拟信号或进行模拟控制。十三、DAC0832器件有哪些主要技术指标?其含义是什么?答:DAC0832是将数字信号转换为模拟信号的器件。它的主要技术指标及含义如下:分辨率:8 位,可以将 8 位数字量转换为模拟量;建立时间:1μS ,即从数字量写入 8 位DAC寄存器到产生与输入数字量对应的模拟量输出的时间;输入信号:与 TTL 电平兼容的二进制信号;输出信号:与输入二进制信号对应的电流信号;电源:单一+5V 电源;十四、ADC0809器件有哪些主要技术指标?其含义是什么?答:ADC0809是将模拟信号转换为数字信号的 AD器件,它的主要技术指标及含义如下:分辨率:8 位,可以将输入模拟量转换为与之对应的 8 位数字量;信号输入范围:0-5V;转换时间:即完成一次 A/D 转换所需时间,与外加时钟信号频率有关,外部时钟信号为500KHz 时转换时间为 128μS ;输出信号:与输入模拟信号对应的 8 位二进制数字量,信号电平与 TTL 电平兼容;电源:单一+5V 电源.& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &如何分享到朋友圈点击右上角
在弹出菜单选择
分享到朋友圈如何关注 & 畅学电子 &1. 在微信上点击右上角”+& 点击“添加朋友& → 在&查找公众号&里搜索& 畅学电子 &即可查找并关注2. 搜索微信号& 畅学电子 &也可查找并关注我们如何查看往期的历史消息点击右上角图标进入&账号资料& → &查看历史消息&畅学电子订阅号微信名:畅学电子每天更新电子行业各种知识,及单片机最新资讯,来开启你的视觉盛宴吧畅学电子服务号微信名:畅学电子一个新型的知识分享平台,在线查看畅学电子网的最新文章、在线视频等,带你进入电子工程师技术开发学习的世界==& 前往
学习更多知识! 
 文章为作者独立观点,不代表微头条立场
的最新文章
课程详情:
《畅学智能循迹小车实战教程》由畅学电子专业的电子工程师团队设计规划,并独家录制。本课程主3.3V-5V电平转换电路如上图,左端接3.3V CMOS电平,可以是STM32、FPGA等的IO口,右端输一、引线形式(一)两线制在热电阻感温元件的两端各连一根导线,该形式配线简单,安装费用低,但要带进引线电阻的附PT4107 用于18-20W 的LED 日光灯方案如图1 所示图1 全电压20W 日光灯开关恒流源电原理图作为嵌入式工程师,写一个效率高效,思路清晰的C语言程序是我们的终极目标,那么,怎么才能写好这样的程序呢?首先一、前言峰值检测电路(PKD,Peak Detector)的作用是对输入信号的峰值进行提取,产生输出Vo =做视频,同步分离电路可能是最常用的了,总结一下这么多年在产品设计中用过的同步分离电路,其实不容易啊。最常用的关于畅学课程:畅学电子网是一个专业电子工程技术学习社区,是一个电子工程师网络在线课堂。课程内容涵盖单片机、嵌课程详情:
《超声波测距模块实战教程》由畅学电子专业的电子工程师团队设计规划,并独家录制。本课程主要通我们在设计接插件的时候要注意,引脚相邻距离,在不断的插拔过程中,引脚可能弯曲,这样会引起严重的断路事故,这是1.错误原因即解决办法Linux环境运行,使用g++编译,观察如下代码,会出现: invalid initi运算放大器组成的电路五花八门,令人眼花瞭乱,是模拟电路中学习的重点。在分析它的工作原理时倘没有抓住核心,往往方法一:第一步:打开ORCAD 的设计工程文件,选中设计文件*.DSN,接着选择菜单Edit->Find…,在PCB设计中,我们经常需要对某些信号线增加一些测试点,以便在产品调试中对其信号进行测试。在PADSLayo关于畅学课程:畅学电子网是一个专业电子工程技术学习社区,是一个电子工程师网络在线课堂。课程内容涵盖单片机、嵌课程详情:
《畅学PCB板设计速成教程》由畅学电子专业的电子工程师团队设计规划,并独家录制。本课程将讲1. 请你谈谈你自己,或者做一个简短的自我介绍。透过这个面试问题,招聘主管可以在很短的时间内了解你,也可以藉方法/步骤mS级带参数延时子程序void delay_ms(uint z) //延时子程序{uint x,y这几天在调试新项目的充电电路,因为有一些疑惑,所以研究了一下不同平台的充电电路,先后看了Qualcomm、M问:电路设计中用0欧电阻还是磁珠来隔离数字地和模拟地?我做了个实验板,不太清楚应该用0欧电阻还是磁珠来进行数当你使用3.3V的单片机的时候,电平转换就在所难免了,经常会遇到3.3转5V或者5V转3.3V的情况,这里介单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信关于畅学课程:畅学电子网是一个专业电子工程技术学习社区,是一个电子工程师网络在线课堂。课程内容涵盖单片机、嵌课程详情:
《摇臂MG995舵机模块实战教程》由畅学电子专业的电子工程师团队设计规划,并独家录制。本课最近,四楼热水器又坏了,为此,又一次的找来了师哥为我们解决热水器的问题。后来反思了一下:这种事情一直找师哥也1. const int * ,const * int ,int * const区别;前面两个是指向的值不能电路上电不复位的原因可能是多方面的,特别是stm32f030和外围电路均需要复位的情况,因此各个模块可能需要前两次都参加了校赛,但是并没有参加暑期的培训,所以并不清楚其中的行为模式和解题思路,只是想着最后一个暑假还能1、电源与地之间接电容的原因有两个作用,储能和旁路储能:电路的耗电有时候大,有时候小,当耗电突然增大的时候如一、电路图先发个图来看看,这个图是LM4890在MPN中常用到的电路。二、LM48920介绍1、大概描述LM关于畅学课程:畅学电子网是一个专业电子工程技术学习社区,是一个电子工程师网络在线课堂。课程内容涵盖单片机、嵌芯片设计者在将一个运放的敏感引脚引出芯片的时候,会关心这个引脚将被如何对待。用户会认真处理这个引脚吗?还是只本套课程共分为15讲,每节课的内容大纲如下:第1课 C语言概述1、几种常见的程序设计语言2、C语言出现的历史图1是一款适合电子爱好者自制的有线双工对讲机(又可称有线对讲电话机)电路图。该机有呼叫、双向对讲、微功耗待机相关问题记录以及解决方法:1、 问题描述:这链接JTag时出错,一直连接不上。错误提示:Error conn通常从设计原理图导入到PCB到有两个是很重要“机械层”和“钻孔层”,这两个都属于机械加工范畴,同时两个层也有第一个版本:就是我所说的adsl modem和PC通过RS232的接口这个电路图图1这个图通信是没有问题的,关于畅学课程:畅学电子网是一个专业电子工程技术学习社区,是一个电子工程师网络在线课堂。课程内容涵盖单片机、嵌典型的RCD吸收回路如图:下图为RCD吸收的工作分析过程:t0-t1: 正向导通时间, 在Vds稍小于Vin可能是接地错误,不过还有许多其它常见错误。这些主要是疏忽大意造成的,工程师是人不是神,也可能会丢三落四。别忘与电压反馈放大器相比,电流反馈放大器具有更高的转换速率。因此,电流反馈放大器比电压反馈放大器能更好地解决高速课程详情:
《人体红外感应模块实战教程》由畅学电子专业的电子工程师团队设计规划,并独家录制。本课程主要在高速电路中,工程师常常建议在高速总线上加33Ω串联电阻,理由有三:用于阻抗匹配可以降低电压波动与振铃效应,利用LM317制作一个1.5V的可调节电源,在一些电子产品中,有的使用单节7号电池,想制作一个交流变直流的电硬开关电路设计实例硬开关电路是将2节7号电池的串联电压通过DC/DC转换器MAX756转换成3.3 V的电压Flyback的次级侧整流二极管的RC尖峰吸收问题,觉得大家在处理此类尖峰问题上仍过于传统,其实此处用RCD今天继续对其用法进行深入学习。ADSP-BF533处理器提供1个通用异步接收/发送(UART)端口,它与PC课程详情:
《畅学CAN模块由入门到实战教程》由畅学电子专业的电子工程师团队设计规划,并独家录制。本课changxuedianzi谢谢关注畅学电子网,让我们一起开启知识的大门吧!热门文章最新文章changxuedianzi谢谢关注畅学电子网,让我们一起开启知识的大门吧!22:43 提问
51控制舵机,这样的一段程序怎么让舵机转得慢一点
/*为9克迷你舵机量身打造的精简51程序。开机后舵机有旋转。之后按下按键key1,舵机开始旋转*/
/*欢迎志同道合的朋友私信交流*/
#define uint unsigned int
#define uchar unsigned char
//k表示总时间 因为定时器中断要用到k,所以放在程序头
sbit PWM1=P1^0;
sbit key1=P3^7;
//舵机启动开关
void init()
TMOD=0X01;
void jiman20()
//51模拟PWM波函数
static uchar flag=0,j=0;
//flag当做PWM高电平变宽/变窄的标志;
//j表示高电平持续的时间;k表示总时间.因为重复调用该函数
if(k==200)
//第一步:判断计时满20ms.
if(flag==0)
//标志为0时,高电平标志增加
//标志为1时,高电平标志减小
//当j=25时,高电平持续时间为2.5ms,此时角度为180.
//必须改变宽/窄标志。
//当j=0时,高电平持续时间为0ms,此时角度为0.
//必须改变宽/窄标志。
//第二步:在20ms判断结束的基础上,输出PWM
//因为每20ms,k就归0.所以能通过判断k&j,输出高电平
else PWM1=0;
void main()
uint i=60000;
while(i--)
//一开机就让舵机有一个转动
jiman20();
while(key1==0)
//当开关打开,启动定时器,进入转动程序并循环
jiman20();
//当开关关闭,关闭定时器,舵机保持最末时刻状
void timer() interrupt 1
//定时器计时0.1ms,即模拟PWM是以0.1s为分度,
//高电平逐渐增加/减少
按赞数排序
可能是让计时器计时的时间长一点,及TH0 TL0的数小一点
其他相似问题
相关参考资料专题字母分类:  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
您现在的位置: >
51单片机控制继电器
) 为什么要明白这个图的原理? 单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA级以下.而要把它用于一些大功率场合,比如控制电动机,显然是不行的.所以,就要有一个环节来衔接,这个环节就是所谓的"功率驱动".继电器驱动就是...
51单片机+PNP三极管(9012)+继电器 问题:三极管C和E的哪一极接负载?比如继电器?两种方法有区别吗? ? 答案:加C极还是E极是有区别的,而且是很大区别。 所遇问题描述: 今天想做一个51单片机通过三极管驱动继电器,然后通过...
图中所使用的单片机为AT89C2051,R1/R2/R3均为5K1电阻 当使用图1时,单片机输出高电平,继电器可以吸合,如无意外情况,电路可以正常工作。单片机与NPN三极管之间串接电阻R1,是进行限流,为了防止三极管饱和导通时流过三极管...
继电器一般为强电弱点共存。和单片机公用一块板一般没有问题,关键: 1,驱动电路和单片机电源地的隔离。 2,强电不能和弱点有任何电器接触。 3,最好是用光耦。 4,布板强电不能靠近单片机。 一般驱动方法: 单片机I/O口端串一电阻(1K)至...
用于一些大功率场合,比如控制电动机,显然是不行的.所以,就要有一个环节来衔接,这个环节就是所谓的"功率驱动".继电器驱动就是一个典型的、简单的功率驱动环节.在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是...
这个是简单的电路图,因为单片机上电时,各IO口有个瞬间高电平脉冲; 这里选用PNP三极管来驱动。 至于你说的按任意键启动。。。。这个没多大意义了,这里给你的是按 键开、关继电器。 //按K1 继电器吸合 //按K2 继电器断开...
用单片机控制继电器 首先看看继电器的驱动 这是典型的继电器驱动电路图(图1),这样的图在网络上随处可以搜到,并且标准教科书上一般也是这样的电路图.(我们一位老师说过,中国的教科书,大都是你抄我,我抄你,甚至连图也照搬,所谓的教授们只为了...
  在增强型51实验板的P2.4口接了一个蜂鸣器,如果给它送一个高电平,再马上送一个低电平,它就会发出滴嗒的声音。下面是一个蜂鸣器发声的实例程序:   程序运行后,就可以听到蜂鸣器的响声啦。      只要把蜂鸣器的高、低电平延时时间改变...
51单片机的特点   1、有优异的性价比。   2、集成度高、体积小、有很高的可靠性。   3、控制功能强。   3、扩展性能好,非常容易构成各种应用系统。51单片机S系列与C系列区别   两者主要的区别是AT89S51支持ISP(In...
、暂停、复位及结束等问题。 采用51系列单片机作为控制核心,主要包括电源部分、水位检测及模式、电机控制电路、洗衣机洗衣状态、数码显示。主要组成部件有:51单片机、继电器、指示灯、数码管显示器、74HC000逻辑控制器、电动机、电磁阀、电动...
Mail: Copyright by ;All rights reserved.舵机控制板和51单片机通讯 | TOROBOT Robot Kits
/*********************************************************************
* 本程序在STC89C51RC单片机中进行过测试,完全正常(晶振11.0592M)
*用户可以根据晶振不同自行修改,建议用户先连接PC,通过PC的串口调试
* 助手来验证程序是否有效
* P30: RXD
* P31: TXD
**********************************************************************/
#include &reg52.h&
#ifndef _DG_TYPE_
#define _DG_TYPE_
typedef unsigned char
typedef unsigned int
#define CMD_LEN 75 // 命令长度
#define CMD_TAG 1 // 提示符长度
void UartInit();
void UartSendChar(unsigned char ch);
void UartSendStr(uchar *pStr);
void UartCharPro(uchar ch);
void UartCmdPro();
uchar g_ucCmd[CMD_LEN + 1] = {0};
uchar g_ucLen = 0; // 命令长度
uchar g_ucCur = 1; // 光标位置
void main()
UartInit();
UartSendStr(&#0T100\r\n”); // S1号舵机在时间100ms内移动到PWM1500的位置
// UartSendStr(&#\r\n”); // 执行第一个动作组,循环执行2次
/************************************************************
* Name: UartInit
* 串行通信初始化
* uchar ch: 发送的字符
* Return: None
***********************************************************/
void UartInit()
SCON = 0x50; // SCON: serail mode 1, 8-bit UART
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80; // SMOD=+;
TH1 = 0xFA; // Baud:9600 fosc=+.0592MHz
TL1 = 0xFA;
IE |= 0x90; // 使能串行中断
TR1 = 1; // 启动TIMER1
/************************************************************
* Name: UartSendChar
* 向串口发送一个字符
* uchar ch: 发送的字符
* Return: None
***********************************************************/
void UartSendChar(unsigned char ch)
while(TI==0);
/************************************************************
* Name: UartSendStr
* 向串口发送以0结尾的字符串
* uchar *pStr: 发送的字符指针
* Return: None
***********************************************************/
void UartSendStr(uchar *pStr)
while(*pStr != 0)
SBUF = *pStr++;
while(TI==0);
void UartSrv() interrupt 4
unsigned char
ch = SBUF;
//UartSendChar(ch);
UartCharPro(ch);
/************************************************************
* Name: UartCharPro
* 字符处理过程函数。根据输入的普通字符或控制字符判断回显。
* uchar ch: 判断的字符
* Return: None
***********************************************************/
void UartCharPro(uchar ch)
switch(ch)
case ‘\b’: // 退格键
if(g_ucCur & CMD_TAG) {
UartSendChar(‘\b’);
UartSendChar(‘ ‘);
UartSendChar(‘\b’);
if(g_ucLen) {
g_ucLen–;
g_ucCur–;
case ‘\r’: // 回车键
UartSendChar(‘\r’);
UartSendChar(‘\n’);
g_ucCmd[g_ucLen] = 0;
UartSendStr(g_ucCmd);
UartSendChar(‘\r’);
UartSendChar(‘\n’);
UartSendChar(‘&’);
g_ucLen = 0;
g_ucCur = 1;
default: // 其它字符
UartSendChar(ch);
g_ucCur++;
if(g_ucLen & CMD_LEN) {
g_ucCmd[g_ucLen++] =
g_ucCmd[g_ucLen] = 0;
本条目发布于。属于分类。作者是。

我要回帖

更多关于 单片机控制舵机程序 的文章

 

随机推荐