精华内容
下载资源
问答
  • 平时我们要求继电器处于断开状态,那就要让单片机的这个端口处于输出高电平的状态,但是如果这个单片机的端口在上电复位后是处于输出低电平的状态,这时候就会出现问题了,即使我们在程序中一开始就把这个端口置为...
  • 关于单片机检测高电平

    万次阅读 2011-04-13 20:59:00
    可以通过设置DDRx的值来设置输入输出(详见数据手册~~)3、切忌要将单片机的检测端口设置为输入,否则可能影响被检测模块端口的电压(如:被拉低电平至0v,或被拉高)4、注意单片机一般是TTL电平模式的,因此高电平...

    IO口检测高点平的问题,曾经而困扰我不少时间,呵呵。

    这几天做一个项目,又有点晕呼了,查了不少资料,做了一个总结,和大家分享~~

     

    1、51单片机的I/O 口检测高低电平是需要首先让该端口置为1的。此时这个引脚才被设置为输入。

    2、如果是avr单片机,可以通过设置DDRx的值来设置输入输出(详见数据手册~~)

    3、切忌要将单片机的检测端口设置为输入,否则可能影响被检测模块端口的电压(如:被拉低电平至0v,或被拉高)

    4、注意单片机一般是TTL电平模式的,因此高电平的最低应该是2V,低电平的最高应该是0.8V。(具体还是见数据手册比较保险一点)


    【每天进步一点点,让优秀成为一种习惯!!】

    展开全文
  • 利用51单片机输出pwm

    万次阅读 多人点赞 2017-05-18 13:31:52
    大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变
      51单片机是可以输出PWM的,比较的麻烦。此时需要用到内部定时器来实现,可用两个定时器实现,也可以用一个定时器实现。

      用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。

      下面重点介绍用一个定时器的实现PWM的方法。以周期为1ms(1kHZ)为例,要产生其它频率的PWM波,程序中只需作简单修改即可。用一个定时器时(如定时器T0),首先要确定PWM的周期T和占空比D,确定了这些以后,就可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n。

      因为这里我们是产生周期为1ms(1kHZ)的PWM,所以可设置中断的时间基准为0.01ms,,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:

       1、当time>=100时,time清零(此语句保证频率为1kHZ);

       2、当time>n时(n应该在0-100之间变化开),让单片相应的I/O口输出低电平;

       3、当time<=n时,让单片相应的I/O口输出高电平,此时占空比就为%n。

     下面程序产生30%占空比的pwm:

    #include<reg51.h>
    #define uint unsigned int
    #define uchar unsigned char
    
    sbit PWM=P2^0;//  P2.0输出pwm
    uchar time;  // 定义占空比的变量
    
    void main()
    {
    	TMOD=0x01;//定时器0工作方式1
    	TH0=0xff;//(65536-10)/256;//赋初值定时
    	TL0=0xf7;//(65536-10)%256;//0.01ms
    	EA=1;//开总中断
    	ET0=1;//开定时器0中断
    	TR0=1;//启动定时器0 
    	while(1)
    	{			
    	}			
    }
    
    void tim0() interrupt 1
    {
    	TR0=0;//赋初值时,关闭定时器
    	TH0=0xff;//(65536-10)/256;//赋初值定时
    	TL0=0xf7;//(65536-10)%256;//0.01ms
    	TR0=1;//打开定时器
    
    	time++;
    	if(time>=100)  //1khz
    	  time=0;   
    	if(time<=30)   //占空比%30,可改
    	  PWM=1;  
    	else PWM=0;
    }


       最后的到波形,在示波器上显示如下图所示:


       如果想修改占空比,直接在程序里面修改下面这句即可。
        if(time<=30)//占空比%30,可改占空比

       当然我们可以加入其它的手段来动态改变占空比,比如按键,上位机等。
    按键动态调节占空比可参考我另一篇博客:http://blog.csdn.net/dmfylb/article/details/72605221


    展开全文
  • 感觉自己的PWM程序写的没有问题,但是调试的时候PWM一直是高电平,不知道什么原因。...第一个参数时设置PWM的定时器,第二个参数是输出PWM的高电平的时间。这个值如果大于周期的值,将会与周期保持一致。用第二个参

    感觉自己的PWM程序写的没有问题,但是调试的时候PWM一直是高电平,不知道什么原因。
    出错的原因:
    1、配置引脚的错误
    在这里插入图片描述

    2、选择复用模式为定时器的时候,选择参数错误,特别注意这里的复用引脚功能要选择对,很多时候都是这里出了问题
    在这里插入图片描述

    3、PWM选择初始化的通道错误
    要看清楚设置PWM的定时器是通道几,要选择相应的通道函数来初始化。
    在这里插入图片描述
    4、比较定时器的寄存器函数没有写或者写的值超出了范围
    第一个参数时设置PWM的定时器,第二个参数是输出PWM的高电平的时间。这个值如果大于周期的值,将会与周期保持一致。用第二个参数除以周期就得占空比。
    在这里插入图片描述

    展开全文
  • 5 1 单 片 机 输 出 方 波 精品资料 精品资料 仅供学习与交流如有侵权请联系网站删除谢谢 仅供学习与交流如有侵权请联系网站删除谢谢2 51单片机输出万波 从P1.0上输出一个方波高电平 5ms,低电平10ms #in clude<reg51...
  • 51单片机输出方波问题

    千次阅读 多人点赞 2020-03-06 12:06:03
    今天分享一个题目,有关51单片机输出方波的问题,好了,进入正题 二:题目 已知8051单片机的时钟频率为6MHZ,通过定时器1的工作方式1在P1^1引脚输出一个1KHZ占空比为60%的矩形波。 三:分析题目 1、首先第一个条件,...

    一:NOTE

    今天分享一个题目,有关51单片机输出方波的问题,好了,进入正题

    二:题目

    已知8051单片机的时钟频率为6MHZ,通过定时器1的工作方式1在P1^1引脚输出一个1KHZ占空比为60%的矩形波。

    三:分析题目

    1、首先第一个条件,时钟频率6MHZ,从这里我们可以得出它的时钟周期为1/f=2us
    2、第二个条件,定时器1,工作方式1,那么对应TMOD寄存器也就是0x10。
    3、第三个条件,输出一个1KHZ占空比60%,这里其实有两个条件,第一个输出1KHZ,他告诉我们输出的波形周期是1/f=1ms,然后是占空比,推出高电平为1ms*60%=600us,那么低电平就是400us,到这里,题目所有条件都分析完毕

    四:理论储备

    1、机器周期=时钟周期*12;
    2、定时器工作方式1:定时时间=(65536-初值)*机器周期(知道为什么要算机器周期了吧)这里带入值可以算出初值是50
    3、拓展:定时器方式0:定时时间=(8192-初值)*机器周期
    定时器方式2:定时时间=(256-初值)*机器周期

    五:编程思路

    我的思路是定时器初值设100us,然后开始的时候开启定时器并且给高电平,然后给一个标志tt,当tt加到6的时候,给低电平,这样就实现方波的形成,下面给出程序。

    六:程序演示

    #include<reg51.h>
    sbit wave=P1^1;
    sbit temp=P1^0;
    int tt=0;
    
    void main()
    {
    	TMOD=0x10;//定时器1,工作方式1
    	EA=1; //总中断
    	ET1=1;//定时器1中断
    	TH1=(65536-50)/256;
    	TL1=(65536-50)%256;
    	TR1=1;
    	wave=1;
    	while(1);
    	
    	
    }
    
    void exter3() interrupt 3
    {
    	TH1=(65536-50)/256;
    	TL1=(65536-50)%256;
    	tt++;
    	if(tt==6)			 
    		wave=0;
    	if(tt==10)
    	{
    	 	tt=0;
    		wave=1;
    //		TR1=0;
    	}
    } 
    

    七:仿真演示

    八:没有啦,拜拜!

    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/202003/29/1585494233_220346.png) 单片机仿真后全部出高电平 我又试了另外的代码#include void main() { P3_4=0; } 还是全部出高电平
  • 在学习板P3.3接外部脉冲,脉冲是24V金属接近开关输出信号,用39k、10k电阻分压至5V左右,输入单片机P3.3引脚。用检测外部中断程序测试,中断一直不响应,无论外部脉冲是、低电平,测量P3.3和GND电压一直是4V多。...
  • 利用51单片机输出PWM波

    千次阅读 多人点赞 2020-07-23 10:11:55
    利用51单片机输出PWM波 用一个定时器时(如定时器T0),首先确定PWM的周期T和占空比D,确定了这些以后,用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则DT=nt,类似的可以求出PWM低电平...
  • 使用51单片机输出PWM控制舵机

    万次阅读 多人点赞 2014-11-08 19:36:19
    舵机、使用51单片机的定时器中断实现PWM
  • 51单片机PWM控制电机

    万次阅读 多人点赞 2015-01-02 17:38:19
    小时候玩的四驱车,给直流马达接... 电源电压输出是固定的,电机的转速也因此是固定的,为了调节电机的转速,就得改变电源电压的输出。how?用PWM调制的方法,把恒定的直流电源电压调制成频率一定宽度可变的脉冲电压序
  • 51单片机之步进电机实验

    万次阅读 多人点赞 2019-05-19 19:30:38
    步进电机是将脉冲信号转变为角位移或线位移的开环控制元件。在非超载情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一...
  • 电子设计(4)高电平、低电平复位电路

    万次阅读 多人点赞 2020-01-09 23:29:01
    初学51单片机,可能不太理解复位电路,复位电路有高电平和低电平两种,C51是高电平复位,现在一般的MCU都是低电平复位。
  • 1.基本原理:http://www.51hei.com/bbs/dpj-103111-1.html 补充: 1.TMOD定时器/计数器工作方式寄存器 ...2.1T0/T1控制外部引脚输出方波 1.设计思路:设置定时计数器工作在定时工作方式,在中断服...
  • 51单片机C语言编程输出方波脉冲,可以看到led发光二极管闪亮。
  • 51单片机驱动继器模块点灯

    千次阅读 2020-08-19 09:40:47
    51单片机驱动继器模块点灯的使用ESP32与ESP8266简介ESP8266接口视图ESP32功能框图基于arduino的ESP32/ESP8266开发环境搭建基于arduino的ESP32/ESP8266开发环境烧录固件官方FLASH下载软件烧录固件总结 ESP32与ESP...
  • <p><br></p>
  • 基于51单片机的电子时钟

    千次阅读 2021-04-24 11:39:36
    基于51单片机的电子时钟设计 目录 基于51单片机的电子时钟设计 一、需求分析 1.1前言 1.2研究价值及意义 1.3 任务目标 一、总体设计 2.1 设计思路 2.2 总体框架 2.3 主要元件说明 2.3.1AT89C51单片机 ...
  • 51单片机之继

    万次阅读 2018-03-20 00:56:40
    2018/3/2051单片机讲道理,这玩意代码十分简单,用独立按键来控制继器的使用,由于继器是高点触发的,所以可以用按键来控制给继输出高低电平,但是最大的问题是本人硬件小白一枚,没有接受电路方面的练习...
  • 51单片机实战之电子时钟

    千次阅读 2020-09-10 11:01:15
    读写操作 写: 在进行操作之前先得将CE(也可说是RST)置高电平,然后单片机将控制字的位0放到I/O上,当I/O的数据稳定后,将SCLK置高电平,DS1302检测到SCLK的上升沿后就将I/O上的数据读取,然后单片机将SCLK置为低...
  • 使用51单片机驱动航模无刷电机

    千次阅读 多人点赞 2018-05-20 15:03:13
    话不多说直接上图: 使用的是89c52rc单片机,电调驱动使用50~500Hz的脉冲 , 我用的400Hz脉冲 P2.0作为输出,电调驱动脉冲高电平时间0.7~1.9ms , 开始做一个油门行程,输出1.9ms高电平脉冲,听到电机“哔哔”两声...
  • 51单片机A,和51单片机B; 用一根杜邦线连接A的P1.0引脚和B的P1.0引脚; 单片机A中,令P1.0 = 1;单片机B中,令P1.0 = 0; 问,单片机B的P1.0引脚为高电平还是低电平 x
  • 51单片机按键控制输出pwm的占空比

    万次阅读 多人点赞 2017-05-21 20:11:00
    之前说到利用51单片机输出pwm,但是输出的pwm是固定占空比的,如果想要改变占空比,还得回过头来修改程序并重新烧写进单片机。这样做的话不但麻烦、效率低,还又把芯片的可烧写次数减少了一次,虽然51的芯片现在很...
  • 初识51单片机

    2019-02-17 22:09:51
    数字电路中只有两种电平:高电平和低电平 高电平:5V或者3.3V,取决单片机电源。 低电平:0V RS232电平:计算机串口的电平 高电平:-12V 低电平:+12V 所以当我们用单片机跟电脑通信的时候,我们...
  • 占空比 = 高电平时间 /(高电平时间+低电平时间); */ //高电平时间(初始值为:0x02EE,即十进制750) uchar8 Timer0_TH0_High_Level_Time = 0x02; //定时器0高八位高电平时间; uchar8 Timer0_TL0_High_Level_...
  • 高电平输出状态下,电压虽然没有变化,但电流很小,这就使得单片机IO引脚是无法直接驱动直流电机的。 话不多说,上图 一个三极管放大够呛,没跑多久直接烧了(●—●),所以得上两个三极管 1k的电阻起限流作用,...
  • 详解51单片机

    2020-11-09 08:37:28
    初识51单片机 例如:AT89S51、STC89C51、...51单片机大多数采用TTL电平,是因为通常数据表示采用二进制,”5V“ 等于逻辑 ‘1’,“0V” 等价于逻辑 ‘0’,TTl电平规定高电平输出电压>2.4V,低电平输出电压<0.4V
  • 51单片机初学1-51单片机介绍

    千次阅读 多人点赞 2021-03-05 13:21:21
    学习单片机往往都是从简单的51单片机开始,这篇文章以STC89C52为例来介绍51单片机,使用一款单片机先从了解它开始...
  • 51单片机——51单片机入门基础知识

    万次阅读 多人点赞 2018-07-20 19:38:07
    MSC-51单片机指以8051为核心的单片机,由美国的Intel公司在1980年推出,80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。 单片机:在一片集成电路芯片上集成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,906
精华内容 3,162
关键字:

51单片机输出高电平