51单片机

LED

简介

  LED:半导体发光二极管;电信号转换成光信号的发光器件。

c4fcadc18d734a269009f314a43f1f02.png单向(正向)导通;普通发光二极管工作压降:1.6V-2.1V,工作电流为1~20mA,LED光色不同,压降有所不同。

51单片机(普中款)LED灯部分原理图如下:

674b51f8605f4ebeb507e10f86717f8f.png

 点亮LED

8个LED(D1~D8),对应引脚号(P20~P27);共阳极的LED,为其IO口赋低电平即可点亮该LED灯,即赋值逻辑0。

若只点亮少量LED灯,单个使用P2引脚,只需用到0/1。需用到位定义的关键字“sbit”+“自定义名”+赋值运算符“=”+“引脚号”。例:(sbit LED1=P2^0;)点亮第一个LED灯。keil能明白P2原因是51头文件中有P2的地址。

若点亮多个LED灯,使用到多个引脚,需使用16进制。不用到关键字sbit。只用在main函数中为P2赋值16进制数点亮相应LED。例:(P2=0x04;)点亮第三个LED灯。

LED闪烁

单片机外部晶振11.0592;执行周期为1.085us;若无延时,则写的闪烁语句在实操中显示常亮,肉眼区分不了闪烁。

常用延时方法有:软件延时(浪费CPU资源)与定时器延时(操作内部寄存器)。

若要达到LED灯闪烁则需要使用循环,让其在亮灭之间往返;也要用到延时,让其闪烁现象明显,若延时低于20毫秒,则肉眼无法清晰辨别延时。(main函数本身可循环)

7906d8daa38c4c85a09eca30ad52dd54.png

流水灯

 毫秒级延时函数(预估值)自定义函数

75a4edc5346240ebb5e5d93a51c95794.png

需用到循环移位函数:(_crol_)左移,(_cror_)右移。使用循环移位函数必须要加头文件intrins.h(#include <intrins.h>)。在主循环while(1)中需用到延时函数让流水灯有明显现象;延时越短流水现象越快,反之越慢。例:

63f780c2c36941b38cbda2bd3743cb20.png

蜂鸣器

压电式蜂鸣器(价格低廉),电磁式蜂鸣器(普遍);振荡源(器)的有无可以分为有源蜂鸣器与无源蜂鸣器;有源蜂鸣器振荡频率固定,无源蜂鸣器可通过IO口给不同电压达到不同振荡频率。013770a586b94b6b860660a5026405ed.pnga810bc747bec452a877b3aab469603a9.png

 有源蜂鸣器给电就能发声;无源蜂鸣器需要给方波,连续的高低电平才能发声。

三极管 

蜂鸣器上会连接三极管;三极管有基极(B)、发射极(E)与集电极(C)。一般分为PNP型与NPN型

54929be1a0624afbb894f42a2924cc17.png

区分PNP与NPN的方法:箭头指向基极(B)为PNP;箭头指出基极(B)为NPN。

在PNP型中,EB电流大于1mA或者E的电压高于B0.7V则EC导通;有电流流过EC,三极管导通。

在NPN型中,BE电流大于1mA或者B的电压高于E0.7V则CE导通;有电流流过CE,三极管导通。

 13d96942030a4d12a842e303ca5e3e95.png原理图BEEP所对应引脚为P2^5;普中款没有三极管;有原理图可知给P2^5IO口赋逻辑0即可发声。

代码:

57e2423497cf472ba61e8898aa16ce4c.png

 周期延时越小,响度越大。

注意

不可以直接给单片机IO口赋高低电平给外设元器件供电驱动;因为单片机的作用是控制而非驱动;IO口电压是通过上拉电阻实现的高电压,而输出电流很小,不足以驱动外设元器件。其次,像电机、舵机等在断电瞬间有反冲电流,可能会烧毁单片机。

数码管

0~F(共阴极16进制):0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71

简介

数码管内部由8颗LED灯构成9cbb1a7679c04affb03206104d7ac0e6.png;可分为共阴极0d471096c5474073bc5c0b1f80578979.png(赋1亮)与共阳极ae7211cdd8ef485293b1a732acfc7260.png(赋0亮)

由普中单片机原理图可知其为共阴极,给对应IO口赋1(给P0赋值16进制)即可点亮对应LED灯(实现段选)。此过程需用到74HC245锁存器。20d05151137a499ebaa3b9d4160f896e.png

         数码管一般有8个LED灯,则可通过74HC138译码器实现位选(P2^2~P2^4)例:P2^2=1;P2^3=0;P2^2=0;表示点亮第二个数码管。P2^2=1;P2^3=1;P2^2=0;表示点亮第四个数码管。b860e44e817e4cab8a6ab760e92c2746.png

74HC138译码器

f0161dbabae2408cbe958e53c4cef705.png2830a54fa6cc400f91e95e36a5ddd26d.png

        A0~A2是输入,Y0~Y7是输出,被选中的输出管脚输出低电平;E1~E3为使能控制,上面有横线代表低电平有效,没横线代表高电平有效,即E1、E2、E3分别为0、0、1时才有控制使能;其次再是通过为A0~A2赋值选择是哪一个数码管导通。

        又叫38译码器;可以通过三个引脚来控制8个引脚。P22~P24默认为1,所以不为其赋值的情况下LED8可当作静态数码管来使用。通过位选选中一个数码管,由于该数码管是共阳极,则会将LED8电位拉高,其它LED电位为低,故为段选引脚赋0时只有LED8可以亮而其它数码管不能被点亮。

74HC245芯片(锁存器)

d801705ecefa46a1a1e61ca9607215ad.png

        可增加IO口输出电流,主要用于显示屏、做驱动芯片。三态双向输出,八路信号双向收发器。双向收发,DIR=1,是确定从A到B的输出;DIR=0,是确定从B到A的输出。OE是输出使能,上面有横线代表低电平有效。

静态

        每个数码管的段选必须接一个8位数据线来保持显示的字形码;需要用许多IO口,所以静态数码管不常用。

代码(LED8依次显示0~F):

9a7942e6b7034b528fd8e4a3a41d0dd6.png

         静态数码管不需要用到38译码器。

动态

        动态显示是利用减少段选线,分开位选线,利用位选线不同时选择通断,改变段选数据来实现的。

        将所有数码管的段选连在一起。通过多个数码管轮流显示、LED发光余辉以及人眼视觉暂留作用使人眼感觉多个数码管在一起显示。动态显示亮度低于静态显示亮度。

        数码管动态显示需要用到消影的一步,消除上个数码管的影响,即多出一步P0=0x00。

代码:(显示0~7)

uchar code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(uchar s)
{
    while(s--);
}
void display()
{
    uchar i;
    for(i=0;i<8;i++)
    {
        switch(i)
        {
            case 0:LC=1;LB=1;LA=1;break;
            case 1:LC=1;LB=1;LA=0;break;
            case 2:LC=1;LB=0;LA=1;break;
            case 3:LC=1;LB=0;LA=0;break;
            case 4:LC=0;LB=1;LA=1;break;
            case 5:LC=0;LB=1;LA=0;break;
            case 6:LC=0;LB=0;LA=1;break;
            case 7:LC=0;LB=0;LA=0;break;
        }
        P0 = smgduan[i];
        delay(50);
        P0 = 0x00;
    }
}

void main()
{
    while(1)
    {
        display();
    }
}

键盘

简介

        人机对话的重要组成部分,人向机器发出指令、输入信息的必须设备;是单片机应用系统中使用最广泛的一种数据输入设备,由多个按键组成。按键是一种常开型开关,常态下按键的两个触点处于断开状态。通常键盘有编码键盘(由硬件电路产生被按按键的键值码,所需程序简单、但硬件电路复杂,如计算机键盘)和非编码键盘(由软件编程来识别,硬件电路简单)两种;单片机组成的各种系统中,最常用的是非编码键盘。

        按下接通,松开断开。 

独立键盘

特点

        每个按键占用一个IO口,当按键数量较多时,IO口利用效率不高,但程序简单,适用于所需按键较少的场合。

原理图

9e64eec49a084823acabbfe098012719.png

 注意事项

        按键单次使用,比如实现某数的自增或自减,需用到防误触(延时一小会再判断按键按下)与松手检测(当按键被按下时陷入无循环体的死循环中)。4个按键齐用时,不能直接控制LED闪烁或流水灯。

代码

见D/keil51/独立键盘。(【0~9范围内】1、自增;2、自减;3、蜂鸣器;4、点亮奇数LED。)

矩阵键盘

特点

        电路连接复杂,提高了IO口的利用率,软件编程较复杂,适用于使用大量按键的场合。

        4行4列,一共16个按键;采用行扫描与列扫描来确定按键位置。列扫描时,将列上面所有IO口拉高,行上面所有IO口值拉低;一个按键被按下,则该按键所在列IO口值均被拉低,即可以确定被按下按键所在列;再利用行扫描同理来确定哪一行被按下,即可确定被按下按键位置。

原理图

2b3d231b89574bf49c961125589d59f7.png

注意事项

        需要进行防误触,要有松手检测;若用到动态数码管任需要使用消影。行扫描与列扫描应在同一判定条件下。例如:先列扫描,条件为P1!=0x0f;则先列扫描、再行扫面的情况下,松手检测条件应为行扫描给P1赋的值,即P1!=0xf0;且列扫描与行扫描确定按键位置时都需要在先扫描的条件下确定。

代码

见D/keil51/矩阵键盘。(动态显示被按下的矩阵按键的编号。

74HC595芯片(串转并)

原理图

cb7a6d3cda5d4880b0bd8f566617e120.png

06bd16bfab914fda80367b4d0f25f677.png

 工作原理

        是一种串行输入、并行输出的移位寄存器(其中并行输出位三态输出【即高电平、低电平和高阻抗】)。Q1~Q7是8位并行数据输出;Q7'(9脚):级联输出端,可接在下一个595芯片的DS端;DS(14脚):串行数据输入端,级联时接在上一595芯片的Q7'上;SH_CP(11脚):上升沿时数据从DS串行输入,进入移位寄存器(从高位到低位,高位先入栈);ST_CP(12脚):上升沿时数据从Q0~Q7并行输出;/MR(10脚):低电平时将移位寄存器的数据清零,常接VCC;/OE(13脚):高电平时禁止输出(高阻态),常接GND。

        当两片595级联时,由DS串行输入16位数据,由高位到低位进入595内部的寄存器(入栈),16位数据最高位进入下一级595内部寄存器栈底,最低位在本级595内部寄存器栈顶。即先入栈本级595,本级595满了后压入下级595。

用法

        两片595级联在一起来驱动点阵,可以达到仅使用2x三个IO口来控制2x八个IO口。SH_CP产生上升沿时从DS串行输入数据到移位寄存器中,再给ST_CP一个上升沿让寄存器内数据从Q1~Q7并行输出,达到使用三个IO口来控制八个IO口。

8x8点阵屏

简介、特点

        LED点阵屏由LED组成,以灯珠亮灭来显示文字、图片、动画、视频等。制作简单、安装方便。

原理图

ff5668591667407982ef1947c26b1c88.png

注意事项

        要使用595,给SH_CP所在引脚赋值0、1,并在中间加一小段延时达到产生上升沿的效果;ST_CP产生上升沿同理。由于DS端口串行输入,故需用到移位运算符配合SH_CP的上升沿共同使用。

        在while循环中,为行、列赋值以及消影的顺序会严重影响显示效果。

        显示数字、汉字、图形等时,赋值先行后列;消影先列后行。不然会产生不合理的效果。

代码

D/keil51/点阵(一排循环上移)。

D/keil51/点阵(电子人上心中)。

中断系统

简介

       中断是为了使单片机具有对外部或内部随机发生的事件实时处理而设置的。

        正常执行某程序时,发生了紧急事件或有特殊请求;CPU暂停执行该程序,转而去处理上述事件或请求,处理完毕后再重新执行某程序的过程就是中断。步骤:中断请求—中断响应—中断处理—中断返回。

        51子系列允许5个中断源:两个外部中断源,三个内部中断源。

        外:INT0(P3^2)与INT1(P3^3)均是低电平或下降沿触发。他们的中断源标志和触发方式控制位由特殊功能寄存器TCON的低4位控制。

        内:T0(定时器/计数器0中断)[T0回零溢出引起];T1(定时器/计数器1中断)[T1回零溢出引起];TI/RI(串行I/0中断)[串行端口完成一帧字符发送/接收后引起]。它们的控制位分别锁存在特殊功能寄存器TCON和SCON中。

优点

        分时操作、实时响应、可靠性高。

原理图

1、e3f27d106db944b89748751265a452fd.png

        在编写中断程序时,要注意打开总开关,令EA=1。若是外部中断还应该选择触发方式(IT1/IT0)为1即是下降沿触发、为0即是低电平触发。

        IE是中断允许寄存器(可进行可位寻址)

5c9ff8294b0f41428cc5c270894765a4.png

         TCON是中断请求寄存器(可进行可位寻址)6a4b9a05b54a4f75bcf56d5f525809d0.png

         IT0/IT1确定外部中断触发方式;确定了触发方式后、外部中断触发时发送中断请求,IE会自动被设为高电平。TR0/TR1是定时器的运行控制位(TR置1就允许T开始计数)。TF0/TF1是定时器/计数器溢出中断标志,当最高位产生溢出时,自动置1;由软件清0。高4位定时计数器、低4位外部中断。

 2、3eaaebd4a97f435daa8c6c651b4019ab.png

中断入口及中断优先级

84f834486be2410488b7753be19ab701.png

 注意事项

        终端服务函数必须加上关键字interrupt与中断入口(中断服务号)。中断服务号错了则无法进入到中断服务函数。

        要使用中断必须配置中断响应条件(打开总开关、选择中断类型、选择触发方式)。

        两个中断同时响应时,优先级高的先于优先级低的响应;在低优先级的中断中可以嵌套一个高优先级的中断。

        可通过寄存器修改中断优先级,若修改后优先级相同的中断同时触发;则系统根据默认中断优先级确认哪个中断先响应

外部中断

        外部中断0与外部中断1的引脚分别是P3.2、P3.3;与独立按键K3、K4共用IO口。触发方式仅有低电平与下降沿两种,由于中断允许与中断请求寄存器都支持可位寻址,故可直接对IT、EX、EA直接赋值。

注意事项

        单值的自增、自减用下降沿触发,低电位触发会造成较大误差。按键有时按下并没有触发中断。K_4按键不灵敏。

代码

见D/keil51/外部中断(flag自增)。

定时/计数器中断

CPU时序有关知识

        1、振荡周期;2、状态周期;3、机器周期;4、指令周期(1~4us)。一个状态周期等于2个振荡周期;一个机器周期等于12个振荡周期。例如:外接晶振为12MHz时,振荡周期=1/12us;状态周期=1/6us;机器周期=1us;指令周期=1~4us。

        1、51单片机有两组定时计数器,既可以实现定时、又可以实现计数;

        2、定时计数器与CPU相互独立,定时计数器工作过程自动完成,不需要CPU参与;

        3、51中定时计数器是根据机器内部的时钟或外部的(脉冲)信号。

简介

        51单片机中有2个16位定时器/计数器(T0:P3^4;T1:P3^5.)。工作在定时模式时,每经过一个机器周期内部的16位计数寄存器的值就会增一,当寄存器装满时就会溢出。

        工作在定时模式时最高单次定时时间为65535(16位二进制的最大值)*1.085us=时间(us)。

        工作在计数器模式时,T0、T1每来一个脉冲计数寄存器加一。

        定时器作用:定时计数器可以用于精确事件定时,PWM脉宽调试、波形发生、信号时序测量的方面。

        定时/计数器使用步骤:1、通过TCON控制器启动;2、通过TMOD控制器设定工作模式;3、读取TCON内的TF位、查询溢出(溢出会把TF致一)。

工作模式寄存器TMOD

33c0af5d55144808a49b9d94a82ece50.png

工作方式0:

2221f18f01e94042998cf26013e10ad4.png

 各工作方式的不同主要在于TL0与TH0。

注意事项

        由GATE来确定哪一个定时计数器被使用;由给C/T赋值来确定使用定时器还是计数器,为0就是定时模式、为1就是计数模式。M1M0来确定工作方式,通常只使用到模式1、2。控制寄存器TCON中,TF由硬件自动置1,CPU响应后由硬件自动清0等待下次响应;不适用中断的话用软件查询TF的值来判断定时计数器是否溢出。

定时器配置:1、对TMOD赋值,确定T0、T1工作方式;2、根据所需要的定时时间计算初值,写                       入TH0、TL0或TH1、TL1;3、如果使用中断,则对EA赋值,开放定时器中断;4、                       使TR0或TR1置位,启用定时/计数器定时或计数。

中断服务函数中,要继续为TH、TL赋初值(定时器配置函数中赋的初值)。

        若定时计数器的使用未用到中断则TF需要软件清零;TF置1的判断语句函数中,仍需要为TH、TL赋初值。

        若要同时使用定时计数器1、2,则为TMOD赋值应用到或运算 “ | ” 。

        计数器原理是通过方波信号产生TH与TL的自加,达到溢出时达中断条件,又从初值开始。

代码

定时:见D/keil51/定时器中断(数码管显示0-9);

计数:

串口通信

并行通信

简介

        将数据字节的各位用多条数据线同时进行传送。控制简单、传输速率快;传输线较多,长距离传输时成本高且接收方的各位同时接收存在困难。

串行通信

简介

        使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。传输线少、长距离传输时成本低,但数据传送控制比并行通信复杂。

异步通信

        通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的。

        异步通信发送字符时,发送端可在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志(开始位与停止位),传输的数据以字节为单位,每个字节前加上一个起始位、每个字节后加上停止位。好处是通信设备简单、便宜,但传输效率较低。

同步通信

        通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步,此时传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,既保持位同步,也保持字符同步。两种实现方式(1、外同步【595芯片】,2、自同步)(可省略开始位、停止位以及校验位,故而效率较异步通信高)

d22f0932f99e48de98deb6a7f80fb326.png23253696b257488ca917cf4958168aa3.png

内部结构:

c490de7ebf2a444b9d6a2c3791a3e890.png

99H:H是hex16进制的意思,代表地址在0x99。

逻辑上(实际)只有一个SBUF缓冲器,既表示发送寄存器,又表示接收寄存器(地址相同99H)

但有两个物理上的独立的接收、发送缓冲器SBUF(可接可发)

发送时:SBUF=a;接收时:a=SBUF。

相关寄存器配置

        设置T1工作方式(TMOD寄存器)

        计算T1初值(装载TH1、TL1)

        启动T1(TCON中的TR1位)

        确定串行口控制(SCON寄存器)

        若结合中断,设置IE寄存器。(EA:中断允许位;ES:串行口中断允许位)

        SCON(可位寻址):e1150b6757d74bb0ae676e90dddb8f98.png发送完后TI被硬件赋1,接收完后RI被硬件赋1。

注意事项

        1、通过SM0和SM1选择串口工作方式,允许串口接收位REN,以及设置波特率。若串口与中断配合使用还需要通过可位寻址到ES打开串口中断。

        2、接收标志位与发送标志位初值为0,接收/发送成功时由硬件赋1。所以在判断成功后需要软件归零。

       3、当时用串口助手的HEX模式时,缓存区的数字是16进制,若将其显示在数码管上(通过除法与取余运算后)则为10进制。若选择文本模式时则是按照字符的ASCII码来的。

e972601464304ca79f08b37c07b19111.png

        4、使用printf()、puts()、putchar()发送字符串时需要加上头文件:#include <stdio.h>;且在使用前都需要软件置位TI=1,如没有该操作,则会一直等待TI置1后再发送。

        5、使用文本模式时,配合定时器中断使用目前未成功。

代码

        见D/keiil51/串行通信(纯通信、纯通信(文本模式)、【发送、接收】串行通信)。

串行通信中的工作原理和协议

IIC:

        目前常用的微机与外设之间进行数据传输的串行总线有:(IIC与SPI主要是有时钟线,都是外同步,主机控制从机的时钟信号)

        UART:        异步通信(1条数据输入线、1条数据输出线)

        1-wire:        单总线(只有一条线)

        IIC:        同步串行2线方式进行通信(1条时钟线、1条数据线)

        SPI:        同步串行3线方式进行通信(1条时钟线、1条数据输入线、1条数据输出线)

        IIC:只有两根双向信号线,一根是数据线SDA(serial data I/O),另一根是时钟线SCL(serial clock)。其总线上可挂多个器件,每个器件都有唯一的地址;数据的通信方式采用主从方式,主机负责主动联系从机,而从机则被动回应数据。

        IIC总线通过上拉电阻接正电源,两根线默认为高电平。

        规定:时钟线(SCL)为低电平时才允许数据线(SDA)发生变化,SCL高电平期间,数据线上的数据必须保持稳定。SCl为高电平期间,SDA由高到低的变化表示起始,SDA由低到高表示终止。起始信号与终止信号都是主机产生的,从机制完成接收应答。

字节的传送与应答:

        每字节必须保证8位长度,数据传送时,先传最高位,每一个被传输的字节后都必须跟随一位应答位(一帧),共9位长度.

a4d95caf6af3424aab0bdaf272b201c1.png

        主机发送数据时,每发送一字节数据,都需要读取从机应答位,当从机空闲接收该字节数据时,从机发出应答(一帧数据的第九位为0),当从机非空闲不能接收该字节数据时,从机发出非应答(一帧数据的第九位为1),此时主机会发出终止信号停止数据的继续传输。

        主机接收数据时,在收到最后一个数据字节后,必须向从机发出一个结束传送的信号(对从机的非应答)。然后从机释放SDA线,允许主机产生终止信号。

数据帧格式

        IIC总线上的数据信号既有地址信号,又有真正的数据信号。在起始信号后必须传送一个7位的从机地址,第8位为数据传送方向位(R/T),0表示主机发送数据T,1表示主机接收数据R。数据传送总线总是由主机产生终止信号而结束,当多机通信时,主机完成向一个从机的数据传输后再向另一个从机进行数据传输则可以不产生终止信号而是马上发出起始信号,后传输另一从机的地址进行寻址。

        IIC协议明确规定:7位的寻址字节是起始字节后的第一个字节【起始位、从机地址、数据传送方向位】(D7-D1表示从机地址;D0为数据传送方向位【0发1读】)3b836c2e91504d88a15c23a3c0f5e659.png

        主机发送地址时,总线上的每个从机均将这七位地址码与自己的地址进行比较,若相同,则认为自己被主机寻址,再根据R/T位确认自己是发送器还是接收器。

        在通信时想有多个从机的情况,从机的地址是由地址位的固定部分和可编程部分组成;由可编程部分确定接入总线的该类器件的最大从机数目。(例:可编程部分有3位,则最大从机数目为8【2的3次方】)。AT24C02芯片(IIC):813ad3d629d54e5885923420d798913a.png

        我的单片机(STC89C52)内部有UART接口,但不带IIC总线接口,只能利用软件实现IIC总线的数据传送,即软件与硬件结合的信号模拟。

通信时序

        为保证数据可靠性,IIC总线的数据传送有严格的时序要求,各信号模拟时序:43f84261c2c24e9ab7e066edf67924dd.png

数据传输:

        最先传输高位。(A表示应答,非A表示非应答,阴影区域表示主机操作,非阴影区域表示从机操作)

        主机向从机发送数据且整个过程中传送方向不变:2e5a559158424957a7faf6ba516f826a.png

        主机在第一个字节后立即从从机读取数据且整个过程中传输方向不变:

a534d54aa4424a098fa69ee32862dd45.png

        传输过程中需要改变方向时,起始信号与从机地址都重复写一次,但读/写方向位相反:

f695276d3ad54da488060b50b4d3344e.png

传输方向

1、单工(单向的;收/发)

d2fd92ab7717482196388d88409b72a2.png

2、半双工(收发不同时进行)

7670a1d24b3f4fae8f0bbf9c78d59889.png

3、全双工(收发可同时进行)(单片机上的同心为全双工)

d387455fe63b453c92db01f84c6de255.png

传输速率

        比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。例如每秒传送240字符,每个字符格式包含10位(1起始位、1停止位、8数据位),比特率为:10x240=2400bps。

        采用RS-232C接口存在的问题:

        1、传输距离短(一般不超过15m)、传输速率低(最高为20Kbps);2、有电平偏移;3、刚干扰能力差。

PWM直流电机

        电机有两个电极,电极正接、电机正转,电极反接、电机反转。

        电机驱动电路:1、大功率器件直接驱动(不可改变方向);2、H桥驱动(可改变电压)05f36d3f5b7c4bf7bb170e2771caaff9.pngb9bfbc8542a54d3e9cb81d06985eabcc.png

        电机调速不能使用电位器调速。电机运转会有一个比较大的电流,使电阻发热严重直至损坏。

        PWM即脉冲宽度调制,在具有惯性的系统中,可通过对一系列脉冲的宽度进行调制,来有效获得所需要的模拟参量。占空比:Ton/Ts

        不断翻转IO口会消耗CPU。

        产生PWM的方法是计数器定时自增产生的值与用户设定的比较值作比,小于比较值部分PWM输出波形部分为0,大于比较值部分PWM输出波形部分为1。320db29d83e945738910e7ba8534f256.png

波形:add90e5c705d45ca8e6037979bd7acff.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值