单片机渐变阶数_51单片机实现亮度渐变 - CSDN
  • 操作时序永远是使用IC芯片的关键所在,一个芯片的所有使用细节都包含在它的官方器件手册上。所以使用一个芯片,要做好的第一件事就是要把它器件手册上的所有内容提取并且掌握。介于我国目前芯片设计能力有限,大部分...

     

    操作时序永远是使用IC芯片的关键所在,一个芯片的所有使用细节都包含在它的官方器件手册上。所以使用一个芯片,要做好的第一件事就是要把它器件手册上的所有内容提取并且掌握。介于我国目前芯片设计能力有限,大部分器件都是外国几个IC巨头如TI、AT、MAXIM等这些公司生产的,器件资料自然是英文的,同时也可以提高下英语水平。

      首先来看1602的引脚定义,1602的引脚是很整齐的SIP单列直插封装,所以器件手册只给出了引脚的功能数据表:

        关注以下几个管脚:

      3脚:VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为0时可以得到最强的对比度。

      4脚:RS,数据/命令选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而此脚为低电平时,则是进行命令字节的传输操作。命令字节,即是用来对LCD1602的一些工作方式作设置的字节;数据字节,即使用以在1602上显示的字节。值得一提的是,LCD1602的数据是8位的。

      5脚:R/W,读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。此脚其实用处不大,直接接地永久置为低电平也不会影响其正常工作。但是尚未经过复杂系统验证,保留此意见。

      6脚:E,使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。

      7~14脚:8位并行数据口,使得对LCD1602的数据读写大为方便。


      现在来看LCD1602的操作时序: 


      在此,先不读出它的数据的状态或者数据本身。所以只需要看两个写时序:

      ①当要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。

      ②当要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。

      发现了么,写指令和写数据,差别仅仅在于RS的电平不一样而已。以下是LCD1602的时序图:

      大家要慢慢学会看时序图,要知道操作一个器件的精华便蕴藏在其中,看懂看准了时序,再操控芯片就是非常容易事了。1602的时序是最简单的时序: 


      1、注意时间轴,如果没有标明(其实大部分也都是不标明的),那么从左往右的方向为时间正向轴,即时间在增长。

      2、上图框出并注明了看懂此图的一些常识:

      (1)时序图最左边一般是某一根引脚的标识,表示此行图线体现该引脚的变化,上图分别标明了RS、R/W、E、DB0~DB7四类引脚的时序变化。

      (2)有线交叉状的部分,表示电平在变化,如上所标注。

      (3)应该比较容易理解,如上图右上角所示,两条平行线分别对应高低电平,也正好吻合(2)中电平变化的说法。

      (4)上图下,密封的菱形部分,注意要密封,表示数据有效,Valid Data这个词也显示了这点。

      3、需要十分严重注意的是,时序图里各个引脚的电平变化,基于的时间轴是一致的。一定要严格按照时间轴的增长方向来精确地观察时序图。要让器件严格的遵守时序图的变化。在类似于18B20这样的单总线器件对此要求尤为严格。

      4、以上几点,并不是LCD1602的时序图所特有的,绝大部分的时序图都遵循着这样的一般规则,所以大家要慢慢的习惯于这样的规则。

      也许你还注意到了上面有许多关于时间的标注,这也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。话说现在各种处理器的主频也是疯狂增长,日后搞不好出现个双核单片机也不一定就是梦话。下面是时序参数表:


      大家要懂得估计主控芯片的指令时间,可以在官方数据手册上查到MCU的一些级别参数。比如现在用AVR M16做为主控芯片,外部12MHz晶振,指令周期就是一个时钟周期为(2/12MHz)s,所以至少确定了它执行一条指令的时间是us级别的。以上给的时间参数全部是ns级别的,所以即便在程序里不加延时程序,也应该可以很好的配合LCD1602的时序要求了。怎么看这个表呢?很简单,在时序图里可以找到TR1,对应时序参数表,可以查到这个是E上升沿/下降沿时间,最大值为25ns,表示E引脚上的电平变化,必须在最大为25ns之内的时间完成。大家看是不是这个意思?


      总结

      当需要写命令字节时,时间由左向右,RS变为低电平,R/W变为低电平,注意观察这里是RS的状态先变化完成。然后DB0~DB7上数据进入有效阶段,接着,E引脚有一个整脉冲跳变,维持时间最小值tpw=400ns的E脉冲宽度。然后,E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令时序过程。


    http://mp.weixin.qq.com/s?__biz=MzA3OTIwODcyNQ==&mid=201202558&idx=2&sn=e58448f4fd53077f60e4a5bbfe2eec90&scene=5#rd

    展开全文
  • ... (采用5050LED 2W) RGB三色LED控制引脚分别为...LED正极接主电源(24V)正极,负极接驱动3颗三极管的集电极,单片机控制脚分别接3颗NPN三极管,三极管发射极接地,而单片机的供电是来自三端稳压器7805,祥细

    http://forum.eepw.com.cn/thread/213121/1


    一、硬件介绍:

     (采用5050LED 2W) RGB三色LED控制引脚分别为单片机P1.2 、 P1.1  、 P1.0。LED正极接主电源(24V)正极,负极接驱动3颗三极管的集电极,单片机控制脚分别接3颗NPN三极管,三极管发射极接地,而单片机的供电是来自三端稳压器7805,祥细原理如下:
    点击浏览下一页


     

    二、实物图片:

    点击浏览下一页

     

    三、软件部分:

    1、/*原理:
     
    先亮红灯(保持一会儿)----红绿过度(绿加1、红减1循环240次)------
    绿灯亮起(保持一会儿)----绿兰过度(兰加1、绿减1循环240次)
    -----兰灯亮起(保持)-----兰白过度(绿加1、红加1循环240次、兰不变)
    ---白红过度,技术支持网站:
    http://www.51hei.com/ 
    全部程序源代码:点此下载*/

    2、具体程序如下:
    #include<reg52.h>//MCU头文件
    #define uchar unsigned char//字浮型宏定义
    #define uint unsigned int//整型宏定义
    #define shudu 30//LED渐变速度调整
    #define dengji 1//LED变化等级调整
    sbit B1=P1^0;//红色灯控制IO口
    sbit G1=P1^1;//绿色灯控制IO口
    sbit R1=P1^2;//兰色灯控制IO口
    uchar Rout,Bout,Gout;//红绿兰3个变量
    /***************************************************/
    /**********************延时子程序*******************/
    /***************************************************/
    void delay(uint z)
    {
     uint x,y;//局部变量定义
     for(x=0;x<5;x++)//延时外循环
     for(y=0;y<z;y++);//延时内循环
    }
    /**********************************************/
    /**********PWM控制红绿兰3种灯亮灭时间**********/
    /**********************************************/
    void RGBpwm(uchar Rou,uchar Gou,uchar Bou)//3个局部变量,些部分为带参数函数
    {
     if(Rou!=0)//如果红灯变量不等于0就亮红灯
     {
      R1=1;//红灯亮
      delay(Rou);//红灯亮起时间
      R1=0;//红灯灭
     }
     if(Gou!=0)//如果红灯变量不等于0就亮红灯
     {
      G1=1;//绿灯亮
      delay(Gou);//绿灯亮起的时间 
      G1=0;//绿灯灭
     }
     if(Bou!=0)//如果红灯变量不等于0就亮红灯
     {
      B1=1;//兰灯亮
      delay(Bou);//兰灯亮起的时间
      B1=0;//兰灯灭
     } 
    }
      
    /***********************************************/
    /********************主程序*********************/
    /***********************************************/
    void main()
    {
     TMOD=0x01;//选择定时器在方式1下工作
     EA=1;//打开总中断
     ET0=1;//打开定时器中断
     TR0=1;//打开定时器
     R1=0;//开机将红灯关闭
     G1=0;//开机将绿灯关闭
     B1=0;//开机将兰灯关闭
     TH0=(65536-256)/256;//给定时器高8位赋值
     TL0=(65536-256)%256;//给定时器低8位赋值
     while(1)//程序主循环
     {
      RGBpwm(Rout,Gout,Bout);//调用RGBpwm子程序
     }
    }
    /*************************************************/
    /*中断服务子程序(控制LED红绿兰亮灭时间占空比例)*/
    /*************************************************/
    void zhong() interrupt 1//中断向量位为1
    {
     uint num;//定时器计数变量
     uint ji;//亮度等级控制变量
     TH0=(65536-256)/256;//给定时器高8位赋值
     TL0=(65536-256)%256;//给定时器低8位赋值
     num++;//将定时计数变自动增加1
     if(num==shudu)//如果速度变量等于定时计数器变量就执行下面大括号语句
     {
      num=0;//将计数器清0
      ji++;//将亮度等级控制变量加1
      if((ji>0)&&(ji<100))//如果亮度等级控制变量ji小于100,红灯亮起时间变量为240
      {
       Rout=240;//红灯亮起变量为240
       Gout=0;//绿灯亮起变量为0
       Bout=0;//兰灯亮起变量为0
      }
      if((ji>100)&&(ji<340))/*如果亮度等级控制变量ji大于100小于340(刚好240个等级),
      红灯亮起时间变量由原来的240,慢慢减小到0,同时绿灯由原来的0慢慢增到240,形成
      红灯到绿灯的渐变过程*/
      {
       Rout-=dengji;//将红灯变量减1。因为dengji为亮度变化等级(本程序变化等级为1),
       Gout+=dengji;//将绿灯变量加1
       Bout=0;//兰灯不变
      }
      if((ji>340)&&(ji<440))/*亮度等级控制变量ji大于340小于440时,让绿灯变量停一段时间
      这样就形成了当红灯过度到绿灯时,绿灯会停一会儿的效果。*/
      {
       Rout=0;//红灯灭
       Gout=240;//绿灯亮
       Bout=0;//兰灯灭
      }
      if((ji>440)&&(ji<680))//同理:亮度等级控制变量ji大于440小于680时,由绿灯到兰灯过度
      {
       Rout=0;//红灯变量不变
       Gout-=dengji;//将绿灯变量减1
       Bout+=dengji;//将兰灯变量加1
      }
      if((ji>680)&&(ji<780))//亮度等级控制变量ji大于680小于780时,让兰灯变量停一段时间
      {
       Rout=0;//红灯灭
       Gout=0;//绿灯灭
       Bout=240;//兰灯亮一会儿
      }
      if((ji>780)&&(ji<1020))//亮度等级控制变量ji大于780小于1020时,由兰灯到白灯过度
      {
       Rout+=dengji;//将红灯变量加1
       Gout+=dengji;//绿灯变量加1
       Bout=240;//兰灯不变
      }
      if((ji>1020)&&(ji<1025))//亮度等级控制变量ji大于1020小于1025时,由兰灯到白灯过度
      {
       Rout=240;//将红灯变量加1
       Gout=240;//绿灯变量加1
       Bout=240;//兰灯不变
      }
      if((ji>1025)&&(ji<1265))//亮度等级控制变量ji大于1025小于1265时,由白光到红光过度
      {
       Rout=240;//红灯变量不变
       Gout-=dengji;//绿灯变量自动减1
       Bout-=dengji;//兰灯变量自动减1
      }
      if(ji>1265)//当亮度等级控制变量ji大于1210时,就将它清0
      ji=0;//将亮度控制等级清0
     }
    }



    展开全文
  • 这是大二我做某实验室管理员,为了方便自己管理整理,都是一些51单片机的小作品,适合给刚学完51单片机的新手练手 一目录 1基于51单片机的火灾温度烟雾报警器 2基于51单片机的声光电子琴 3基于51单片机的音乐喷泉 4...

            这是我大二做某实验室管理员,为了方便自己管理整理,都是一些51单片机的小作品,适合给刚学完51单片机的新手练手!

                  时间好快,目前我已经研二了,没有想到底下会有这么多评论,谢谢各位学弟学妹捧场!我在这统一回复,这些是我总结的可以用来练手的关于51单片机的小项目,不过我自己没有做过,真的没有资料。          

    一目录

    1基于51单片机的火灾温度烟雾报警器

    2基于51单片机的声光电子琴

    3基于51单片机的音乐喷泉

    4基于51单片机的智能温控风扇

    5基于51单片机的超声波测距

    6基于51单片机的无线温湿度控制系统设计

    7基于51单片机脉搏心率计

    8.基于51单片机led音乐频谱

    9.基于51单片机的智能充电器

    10.基于51单片机的贪吃蛇游戏

    11.基于51单片机的电子秤

    12.基于51单片机的视力保护器

    13.基于51单片机防人水位检测报警系统

    14.基于51单片机的声光控制器设计

    15.基于51单片机的红外计数器

    16.基于51单片机的自行车码表设计

    17.基于51单片机的计算器的设计

    18.基于51单片机的酒精浓度测试仪设计

    19.基于51单片机的智能台灯设计

    20.基于51单片机的卫星定位

    21.基于51单片机防尘PM2.5灰尘设计

    22.基于51单片机的无线音乐门铃

    23基于51单片机的短信收发控制器

    24.基于51单片机的智能插座定时开关设计

    25.基于51单片机的4*4*4单片机的光立方设计

     

    二.作品参考图

     

    1基于51单片机的火灾温度烟雾报警器

     

     

     

     

     

    2基于51单片机的声光电子琴

     

     

     

     

    3基于51单片机的音乐喷泉

     

     

     

     

    4基于51单片机的智能温控风扇

     

     

     

     

    5基于51单片机的超声波测距

     

     

    6基于51单片机的无线温湿度控制系统设计

    7基于51单片机脉搏心率计

    8.基于51单片机led音乐频谱

    9.基于51单片机的智能充电器

    10.基于51单片机的贪吃蛇游戏

    11.基于51单片机的电子秤

    12.基于51单片机的视力保护器

    13.基于51单片机防人水位检测报警系统

    14.基于51单片机的声光控制器设计

    15.基于51单片机的红外计数器

    16.基于51单片机的自行车码表设计

    17.基于51单片机的计算器的设计

    18.基于51单片机的酒精浓度测试仪设计

    19.基于51单片机的智能台灯设计

    20.基于51单片机的卫星定位

    21.基于51单片机防尘PM2.5灰尘设计

    22.基于51单片机的无线音乐门铃

    23基于51单片机的短信收发控制器

     

    24.基于51单片机的智能插座定时开关设计

     

    25.基于51单片机的4*4*4单片机的光立方设计

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 滤波器的阶数

    2016-08-19 10:15:24
    滤波器的阶数   简述:滤波器的阶数是指在滤波器的传递函数中有几个极点.阶数同时也决定了转折区的下降速度,一般每增加一阶(一个极点),就会增加一20dBDec(一20dB每十倍频程)。 滤波器特性可以用其频率响应来...

    滤波器的阶数

     

    简述:滤波器的阶数是指在滤波器的传递函数中有几个极点.阶数同时也决定了转折区的下降速度,一般每增加一阶(一个极点),就会增加一20dBDec(一20dB每十倍频程)。 滤波器特性可以用其频率响应来描述,按其特性的不同,可以分为低通滤波器,高通滤波器,带通滤波器带阻滤波器等。

    一.滤波器说明性能的技术指标主要有:

      中心频率f0,即工作频带的中心

      带宽BW

      通带衰减,即通带内的最大衰减

      阻带衰减

      对于实际滤波器而言,考虑到实际的组成元件的品质因数的取值是一有限值(因为受限于材料与工艺的水平),所以所有工程上的实用滤波器都是有损滤波器,因此对于这些滤波器还应考虑通带内的最小插入衰减。

      现代滤波器设计,多是采用滤波器变换的方法加以实现。主要是通过对低通原型滤波器进行频率变换与阻抗变换,来得到新的目标滤波器。 集总低通原型滤波器是现代网络综合法设计滤波器的基础,各种低通、高通、带通、带阻滤波器大都是根据此特性推导出来的。正因如此,才使得滤波器的设计得以简化,精度得以提高。

      理想的低通滤波器应该能使所有低于截止频率的信号无损通过,而所有高于截止频率的信号都应该被无限的衰减,从而在幅频特性曲线上呈现矩形,故而也称为矩形滤波器(brick-wallfilter)。遗憾的是,如此理想的特性是无法实现的,所有的设计只不过是力图逼近矩形滤波器的特性而已。根据所选的逼近函数的不同,可以得到不同的响应。虽然逼近函数函数多种多样,但是考虑到实际电路的使用需求,我们通常会选用“巴特沃斯响应”或“切比雪夫响应”。

      “巴特沃斯响应”带通滤波器具有平坦的响应特性,而“切比雪夫响应”带通滤波器却具有更陡的衰减特性。所以具体选用何种特性,需要根据电路或系统的具体要求而定。但是,“切比雪夫响应”滤波器对于元件的变化最不敏感,而且兼具良好的选择性与很好的驻波特性(位于通带的中部),所以在一般的应用中,推荐使用“切比雪夫响应”滤波器。

     二.滤波器产品的分类:

     

    按所处理的信号分为模拟滤波器和数字滤波器两种。

    按所通过信号的频段分为低通、高通、带通和带阻滤波器四种。

    低通滤波器:它允许信号中的低频或直流分量通过,抑制高频分量或干扰和噪声。

    高通滤波器:它允许信号中的高频分量通过,抑制低频或直流分量。

     带通滤波器:它允许一定频段的信号通过,抑制低于或高于该频段的信号、干扰和噪声。

    带阻滤波器:它抑制一定频段内的信号,允许该频段以外的信号通过。

    按所采用的元器件分为无源和有源滤波器两种。

     无源滤波器: 仅由无源元件(R、L 和C)组成的滤波器,它是利用电容和电感元件的电抗随频率的变化而变化的原理构成的。这类滤波器的优点是:电路比较简单,不需要直流电源供电,可靠性高;缺点是:通带内的信号有能量损耗,负载效应比较明显,使用电感元件时容易引起电磁感应,当电感L较大时滤波器的体积和重量都比较大,在低频域不适用。

     有源滤波器:由无源元件(一般用R和C)和有源器件(如集成运算放大器)组成。这类滤波器的优点是:通带内的信号不仅没有能量损耗,而且还可以放大,负载效应不明显,多级相联时相互影响很小,利用级联的简单方法很容易构成高阶滤波器,并且滤波器的体积小、重量轻、不需要磁屏蔽(由于不使用电感元件);缺点是:通带范围受有源器件(如集成运算放大器)的带宽限制,需要直流电源供电,可靠性不如无源滤波器高,在高压、高频、大功率的场合不适用。

     

    实现差分方程
    先从简单的说起:
    filter([1,2],1,[1,2,3,4,5])
    实现  y[k]=x[k]+2*x[k-1]
    y[1]=x[1]+2*0 %(x[1]之前状态都用0)
       =1
    y[2]=x[2]+2*x[1]=2+2*1=4
    ...
    
    
    
    展开全文
  • 快速入门51单片机

    2019-08-04 20:17:25
    有些学生觉得单片机很难学其实掌握入门方法也不难 开发环境搭建,不用多说,看网上教程 拿到51单片机该如何做? 首先打开看51单片机的管脚分布,51单片机是8个引脚一组,为什么是8个一组呢? 因为它是8位...
  • 有些学生觉得单片机很难学其实掌握入门方法也不难 开发环境搭建,不用多说,看网上教程 拿到51单片机该如何做? 首先打开看51单片机的管脚分布,51单片机是8个引脚一组,为什么是8个一组呢?  因为它是8位...
  • 单片机实现呼吸灯

    2019-06-11 17:45:21
    渐变的PWM信号实现LED呼吸灯。 LED由暗逐渐变亮,再由亮逐渐变暗循环。 C语言代码如下: /*----------------------------------------------- Function: 用渐变的PWM信号实现LED呼吸灯 Description: LED由暗逐渐变...
  • 手机APP通过ESP8266 WIFI模块与51单片机通信控制LED灯的开关。下位机由单片机、ESP8266模块和LED灯组成,上位机由Android手机APP承担。我们在APP上发送LED灯的开关控制指令,ESP8266将收到的数据发送给单片机,从而...
  • 串口,作为单片机程序开发中最常用、最方便,也是应用最广泛的程序调试方法;无论是作为调试工具,打印出调试信息,还是对功能模块进行通信,串口是每个单片机开发人员最常用的单片机外设。 由于大部分51单片机不...
  • 单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们自己的定义,接下来,就谈谈本人对这两个概念的理解和感悟。 首先明确概念,什么是单片机单片机是一种...
  • 单片机控制步进电机-线路连接 说明:如何利用单片机去控制步进电机?本案例讲解的内容是硬件连接部分,采用常用的电子器件去实现单片机控制步进电机的功能。后续会分别讲解单片机程序,S曲线生成方法,上位机等...
  • 之前两篇都是在说与手机的连接,连接方法,和主动配对连接,都是手机与手机的操作,做起来还是没问题的,但是最终的目的是与单片机的蓝牙模块的通信。   下面是到目前为止尝试的与单片机的通信方法,没有成功,但是...
  • 【发现了一系列不错的文章】 很多电子爱好者,都想学习单片机这门技术。下面的这一系列教程是 www.51hei.com 专门为初学者入门而准备的,从底层硬件入手基于汇编和c两种语言,详细的介绍了单片机的原理,指令,...
  • 51单片机自动浇水系统/51单片机自动浇花系统 整个设计由51单片机模块、湿度传感器模块(土壤湿度传感器或者温度传感器或者温湿度传感器,都可以)、lcd1602液晶显示模块等组成,实现智能浇花和智能浇水功能。该系统...
  • 目标是实现单片机之间的通信。 1.串行通信的基本概念串行是与并行想对应的,并行通信是指数据的各位同时被传送。串行通信是将要传送的数据一位位的依次顺序发送。 串行通信实现的是两个对象之间的数据传递,对象...
  • 基于51单片机的无线遥控器制作 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。小到电话,玩具,手机,各类刷卡机,电脑键盘,彩电,冰箱,空调,电磁炉,大到汽车,工业自动控制,...
  • 基于51单片机的宿舍火警报警系统 基于单片机的智能报警系统设计 基于51单片机的报警系统实现 网上转载:本系统具备发送短信、接收短信,拨打电话、接听电话等功能。主控检测到有人入侵之后会立即产生高分贝的警报,...
  • ESP8266wifi模块与51单片机通信教程 准备两个200欧左右的电阻 准备6根杜邦线 然后将ES8266通过如图这种方式连接起来 注意:在连接单片机的RX和TX引脚时必须和ESP8266模块的RX和TX反接才能保证正常通信 将程序下载...
  • 51单片机之矩阵键盘

    2019-05-16 21:28:15
    独立键盘与单片机连接时,每一个按键都需要单片机的一个I/O口若某单片机系统需较多按键,如果用独立按键便会占用过多的I/O口资源。单片机系统中I/O口资源往往比较宝贵,当用到多个按键时为了节省I/O口口线,我们引入...
  • 用C 语言来开发单片机系统软件最大的好处是编写代码效率高、软件调试直观、维护升级方便、代码的重复利用率高等,因此C 语言编程在单片机系统设计中越来越广泛的运用。PIC 单片机的软件开发,同样可以用C 语言实现。...
1 2 3 4 5 ... 20
收藏数 153,130
精华内容 61,252
关键字:

单片机渐变阶数