![](https://img-blog.csdnimg.cn/20200311203114193.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
单片机应用
介绍单片机的原理、及典型应用方法
fxfreefly
注重技术落地的应用型工程师
展开
-
CRC校验的原理及实现方法
一、CRC校验介绍原创 2020-12-11 19:07:20 · 19510 阅读 · 3 评论 -
51单片机(三十二)—— 串口通信实例测试
在《51单片机(三十一)—— 串口通信介绍》中,我们介绍了51单片机串口的工作原理及寄存器定义,在本文中,我们通过一个实例来熟悉51单片机的串口使用方法。本文的资源中有实例的源码。在源码中首先是串口的初始化代码,如下所示。void init_UART(void){ SCON = 0x50; //串口工作方式1,8位数据位,使能接收 TM...原创 2020-03-08 21:18:22 · 3330 阅读 · 0 评论 -
51单片机(三十一)—— 串口通信介绍
随着单片机系统的广泛应用和计算机网络技术的普及,单片机的通信功能越来越显得重要。通信有并行和串行两种方式。在单片机系统中,信息的交换多采用串行通信的方式。 并行通信通常是将数据字节的各位用多条数据线同时进行传送,每一位数据都需要一条传输线,如下图所示。 在8位数据总线的通信系统,一次传送8位数据,需要8条数据线。这种方式只适合短距离传输。...原创 2020-03-08 11:04:09 · 7205 阅读 · 0 评论 -
51单片机(三十)—— 矩阵键盘计算器
在《51单片机(二十九)—— 矩阵键盘输入实验》中,我们对矩阵键盘的原理及使用方法进行了介绍。在本文中,我们采用矩阵键盘设计一个计算器,实现简单的计算器功能。 这个实验的代码的主函数如下所示。main(){ init_T0(); for(;;) { keyma=KEYscan(); keyvalue=Keychange(keyma); ...原创 2020-03-06 17:34:22 · 10454 阅读 · 1 评论 -
51单片机(二十九)—— 矩阵键盘输入实验
一、矩阵键盘原理介绍 在之前的文章中,我们介绍过独立按键的使用,独立按键需要每个按键使用一个IO口进行读取,如果按键比较多,对IO资源的占用比较多。...原创 2020-03-06 16:45:41 · 10507 阅读 · 0 评论 -
51单片机(二十八)—— 外部中断实验
一、外部中断介绍 在前面文章中,我们对中断的概念进行了介绍。STC89C516单片机内部有6个中断源,它们分别为:INT0—外部中断0,由P32端口线引入,低电平或下降沿触发中断。INT1—外部中断1,由P33端口线引入,低电平或下降沿触发中断。T0—定时器/计数器0中断,由T0计数器计满回零引起。T1—定时器/计数器1中断,由T1计数器计满回零引起。T2—...原创 2020-03-06 11:12:21 · 9816 阅读 · 0 评论 -
51单片机(二十七)—— 蜂鸣器播放音乐
1、实验原理介绍 蜂鸣器是电路中经常使用的发声器件,我们一般使用蜂鸣器发出“嘀嘀”的声音,用它作为提示音。有没有想过用蜂鸣器还可以播放音乐呢? 本文使用蜂鸣器来播放音乐。为了深入了解此实验的原理,先介绍一下音乐的基础知识,音乐中的每个音调都有其固定的音高,简谱记谱法由7个基本唱名组成,它们分别用1、2、3、4、5、6、7表示。每个唱名对应固定的音高。由声学角度看...原创 2020-03-06 10:19:07 · 70202 阅读 · 7 评论 -
51单片机(二十六)—— 独立按键数码管显示
在这片文章中,我们对独立按键的使用进行进一步研究,用数码管来显示按键的状态。这个实验的主要代码如下所示。main(){ for(n=0;n<8;n++) //给showdata数组赋初值 showdata[n]=0; KEY1=1; KEY2=1; KEY3=1; KEY4=1; KEY5=1; ...原创 2020-03-04 21:11:25 · 10525 阅读 · 2 评论 -
51单片机(二十五)—— 独立按键控制LED
在51单片机的前面的文章中,我们主要讲述了单片机IO口的输出功能的应用,如LED控制、数码管控制等。这篇文章我们来讲解如何用单片机的IO口读取按键的状态,并根据按键的状态来控制LED。关于51单片机按键输入功能的介绍可以参考文章《51单片机(二十四)—— 独立按键工作原理》 在本文中,实例的代码如下所示。#define KEY P2 //定义按键输入端口...原创 2020-03-04 20:11:40 · 4850 阅读 · 0 评论 -
51单片机(二十四)—— 独立按键工作原理
按键是单片机应用中必不可少的输入器件,本文我们基于51单片机来介绍独立按键的工作原理。 在我们使用的开发板上,独立按键的电路如下图所示。 在使用51单片机读取按键转态时,将按键连接的单片机接口赋值1(这种方式适合51单片机,但不一定适合其他单片机),如果按键按下,则端口被拉低。因此,通过读取单片机接口的电平状态就可以判断按键是否按下,如果输入...原创 2020-03-04 18:20:20 · 17648 阅读 · 0 评论 -
51单片机(二十三)—— 数码管中断扫描
在之前的数码管的文章中,我们对数码管的扫描都是以延时的方式实现,这样做比较浪费单片机资源,在延时的过程,单片机一直在计数,不能执行其它功能。在学习了定时器的定时功能后,我们可以通过定时器进行定时,在定时器的中断函数中对数码管进行扫描。这篇文章我们就对数码管的中断方式扫描进行研究。采用定时器0进行定时,定时器0的初始化代码如下所示。void init_T0(void){ ...原创 2020-02-20 20:00:01 · 1669 阅读 · 1 评论 -
51单片机(二十二)—— 定时器2功能测试
在本文中,我们对51单片机的定时器2的功能进行测试。包含两个实验,一个是定时器2递增计数功能的测试,另一个是定时器2递减计数功能的测试。实验1:递增计数 这个实验使用了定时器2的16位自动重装模式的递增计数功能。RCAP2H和RCAP2L寄存器内的值是重新加载的值。当TH2和TL2的计数值溢出时,将RCAP2H和RCAP2L寄存器内的值装载到TH2和TL2中重...原创 2020-02-20 19:50:20 · 2599 阅读 · 0 评论 -
51单片机(二十一)—— 定时器计数功能
在本文,我们对51单片机定时器的计数功能进行测试,采用定时器0通过方式2产生10KHz的方波,并通过单片机的P1.0口输出。定时器1采用方式1的计数功能,即对外部输入的脉冲进行计数。T1与P3.5引脚复用。实验时,需要用杜邦线将单片机的P1.0引脚,与P3.5引脚连接在一起。T0输出的脉冲又通过P3.5引脚输入给定时器1的计数器。定时器1对脉冲进行计数,设置为5000个脉冲溢出一次...原创 2020-02-20 18:54:25 · 5373 阅读 · 2 评论 -
51单片机(二十)—— 定时器产生方波信号
在本文中,我们用定时器0来产生方波信号,包含两个实验,实验1产生一个频率为10kHz的方波信号,实验2产生一个频率为100Hz的方波信号。实验1 实验1 中定时器0的初始化代码如下所示。void init_T0(void){ TMOD|= 0x02; //使用方式2,8位自动重装载定时器 TH0=256-50; //...原创 2020-02-20 18:36:38 · 25451 阅读 · 1 评论 -
51单片机(十九)—— 定时器1实例测试
在本文中,我们对51单片机的定时器1进行测试。用定时器1来定时,并用来控制LED闪烁。定时器1的初始化代码如下所示。void init_T1(void){ TMOD|= 0x10; //使用方式1,16位定时器 TH1=(65536-50000)/256; //给TH1和TL1初初值,计数器由15536开始计数,到65535溢出 TL1=(655...原创 2020-02-20 18:06:21 · 5604 阅读 · 1 评论 -
51单片机(十八)—— 定时器0实例测试
在本文中,我们对51单片机的定时器0进行测试。用定时器0来定时,并用来控制LED闪烁。定时器0的初始化代码如下所示。void init_T0(void){ TMOD|= 0x01; //使用方式1,16位定时器 TH0=0x00; //给TH0和TL0赋初值,计数器由0开始计数,到65535溢出 TL0=0x00; EA=1; ...原创 2020-02-20 17:59:45 · 2359 阅读 · 2 评论 -
51单片机(十七)—— 定时器2寄存器介绍及功能描述
这篇文章,我们对51单片机的定时器2的寄存器和功能进行介绍。1 定时器2控制寄存器T2CON 定时器2是一个16位定时器/计数器,通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为定时器或计数器。定时器2有3中模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON进行设置。T2CON寄存器的字节地址为C8H,单片机复位时T2C...原创 2020-02-19 21:38:46 · 11368 阅读 · 1 评论 -
51单片机(十六)—— 定时器0和定时器1寄存器介绍及功能描述
这篇文章,我们对51单片机的定时器0和定时器1的寄存器和功能进行介绍。1 定时器/计数器工作方式寄存器TMOD 定时器/计数器工作方式寄存器在特殊功能寄存器中,字节地址为89H,不能位寻址,TMOD用来确定定时器T0和T1的工作方式及功能选择,单片机复位时,TMOD全部被清0,TMOD寄存器的定义如下。定时器/计数器工作方式寄存器TMOD这个寄存...原创 2020-02-19 21:29:58 · 29586 阅读 · 2 评论 -
51单片机(十五)—— 定时器模块介绍
STC89C516单片机内部有3个16位可编程的定时器/计数器,即定时器T0、T1和T2。它们既有定时又有计数功能。通过设置相关的特殊功能寄存器可以选择启动定时功能或计数功能。需要注意的是,这个定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部控制线连接并相互作用。CPU一旦开启定时功能后,定时器便在晶振的作用下自动开始计时,当定时器的计数器计满后,会产生中断,即通...原创 2020-02-19 21:18:50 · 4584 阅读 · 0 评论 -
51单片机(十四)—— 中断功能介绍
中断是单片机的一个重要功能,本文我们就对51单片机的中断进行介绍。 所谓“中断”,通俗一点讲,就是单片机停止正在执行的任务,转去执行其它的急需解决的任务,当这个任务完成之后,在回到原来的任务继续执行。中断就是为了使单片机能够对外部或内部随机发生的事件进行实时处理而设计的。中断功能的存在,很多程度上提高了单片机处理外部或内部事件的能力。中断功能是我们在学习单片机过程中必须掌...原创 2020-02-19 20:31:09 · 9898 阅读 · 1 评论 -
51单片机(十三)—— 看门狗功能测试
一、看门狗介绍 在由单片机构成的系统中,由于单片机的工作有可能受到外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预测的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗(Watch Dog)”。 加入看门...原创 2020-02-19 20:15:37 · 10002 阅读 · 1 评论 -
51单片机(十二)—— 单片机复位
一、复位介绍 复位为单片机提供了一条从已知初始条件启动处理的途径。复位期间,大部分控制和状态寄存器被迫使用初始值,单片机的外围模块被禁止,单片机用于复位的复位源有加电复位、外部RESET管脚复位、看门狗复位等。 我们实验对应的硬件复位电路,如下图所示。 这个图中集成了51单片机和AVR单片机的复位电路,对于51单片机,将J12上的跳线帽...原创 2020-02-19 19:50:38 · 11470 阅读 · 0 评论 -
51单片机(十一)—— 8位数码管-四位累加
一、原理介绍 关于数码管的控制电路,在《51单片机(八)》中有详细的介绍,硬件电路如下图所示。 在这个实验中,我们用数码管的前4位设计一个累加器。在进行实验时,需要将单片机的P00~P07引脚与J44相连。接口的对应关系是(P00—D0),……,(P07—D7)。将单片机的P10和P11引脚与J45相连,P10与J45上的DM对应,P11与WM对应。二、...原创 2020-02-16 18:50:39 · 3326 阅读 · 0 评论 -
51单片机(十)—— 8位数码管-数码管扫描
一、原理介绍 关于数码管的控制电路,在《51单片机(八)》中有详细的介绍,硬件电路如下图所示。在这个实验中,我们对数码管进行扫描。在进行实验时,需要将单片机的P00~P07引脚与J44相连。接口的对应关系是(P00—D0),……,(P07—D7)。将单片机的P10和P11引脚与J45相连,P10与J45上的DM对应,P11与WM对应。二、实例介绍 这...原创 2020-02-16 18:28:06 · 5269 阅读 · 0 评论 -
51单片机(九)—— 8位数码管-显示一位
一、原理介绍 关于数码管的控制电路,在《51单片机(八)》中有详细的介绍,硬件电路如下图所示。在这个实验中,我们对8位数码管的一位进行控制,在进行实验时,需要将单片机的P00~P07引脚与J44相连。接口的对应关系是(P00—D0),……,(P07—D7)。将单片机的P10和P11引脚与J45相连,P10与J45上的DM对应,P11与WM对应。二、实例介绍 ...原创 2020-02-16 18:18:54 · 11530 阅读 · 0 评论 -
51单片机(八)—— 数码管电路介绍
在51单片机关于数码管的实验电路中,采用的硬件是一个八位八段共阴极数码管,通过两个锁存器74HC573来控制。数码管电路的原理图如下图所示。 所谓“八位”指的是数码管上有八个子单元。每个子单元如下图所示。实际上开发板上的八位数码管是由两个四位八段共阴数码管组成。 所谓“八段”指的是每个子单元由8个发光二极管组成,如上图所示,八段分别为:A、...原创 2020-02-16 16:27:53 · 16679 阅读 · 0 评论 -
51单片机(七)—— LED进阶控制
在《51单片机(五)》和《51单片机(六)》中,我们对LED的控制比较简单,都只是点亮的操作,在本文中,我们进行一些相对复杂的操作,来更加熟悉单片机IO口的使用。一、闪灯 在这个实验中,我们只对LED1进行控制,让它闪烁,代码如下所示#include<reg52.h> //包含头文件,一般情况不需要改动,sbit LED1=P0^0; ...原创 2020-02-15 20:43:26 · 1522 阅读 · 0 评论 -
51单片机(六)—— GPIO控制多路LED
本文中,我们对多路LED进行控制,硬件电路如下图所示在《51单片机(五)—— GPIO点亮一个LED》中,已经对这个电路做了详细介绍,这里不再详述。在这个实验中,我们采用两种方法对多路LED进行控制,实验是需要把J21接口的8个引脚与单片机的P0口的8个引脚分别连接在一起。方法一:实现代码如下所示#include<reg52.h> //包含头文...原创 2020-02-15 20:18:53 · 3187 阅读 · 1 评论 -
51单片机(五)—— GPIO点亮一个LED
一、LED控制介绍 发光二极管是半导体二极管的一种,可以把电能转化成光能,常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电特性。当给发光二极管加上正向电压时就会发光,光的强弱与工作电流成正比。一般情况下,LED的正向工作电流在10mA左右,如果电流过大就会烧坏LED,因此使用时必须串联限流电阻以控制通过二极管的电流。 普通发光二极管的...原创 2020-02-15 19:49:03 · 4192 阅读 · 1 评论 -
51单片机(四)—— 51单片机仿真芯片的使用
在前面的文章中,我们都是直接用串口将程序烧写到单片机中运行,在这种开发方式下,如果程序有问题,很难找到问题所在,用过一些高端单片机的人可能知道,一般单片机是可以用调试器调试的,可以单步调试、设置断点等,对于查找程序的问题比较方便。51单片机比较低端,本身不支持在线调试,但是可以使用仿真芯片进行调试。本文我们就来介绍如何使用仿真芯片SST89E516RD。 SST8...原创 2020-02-12 20:22:03 · 5373 阅读 · 0 评论 -
51单片机(三)—— 51单片机集成开发环境介绍
一、开发环境安装 能够进行51单片机的集成开发环境比较多,比较常用的是Keil C51,可以从相应的网站上下载,如下图所示为Keil C51的安装文件点击“Setup.exe”,出现如下图所示的窗口。点击上图中的“Full Version”,出现如下图所示的窗口点击“Next”,出现如下图所示的窗口。点击“Yes”,出现如下图所示的窗口这个...原创 2020-02-12 20:00:24 · 4601 阅读 · 1 评论 -
51单片机(二)—— 如何烧写51单片机程序
学习单片机很重要的一步就是为单片机烧写程序,烧写程序是初学者体验单片机并快速入门的第一步,51单片机由于比较简单,并且为了节省学习成本,一般很少使用调试器,而是直接用单片机的串口烧写程序。下图是我使用的开发板,这个开发板上已经集成了USB转串口芯片。 要为单片机烧写程序首先要安装USB转串口芯片的驱动,不同的芯片的驱动程序也不一样,我这里的USB转串口芯片为P...原创 2020-02-11 20:23:09 · 17180 阅读 · 0 评论 -
51单片机(一)—— 51单片机简介
一、51单片机标识信息 通常我们所说的51单片机是指以51内核扩展出的单片机。生产51单片机的厂商很多,51单片机的型号也很多。下表列出了一些51单片机的厂商和型号。 公司 产品 AT(Atmel) AT89C51,AT89C52,AT8 9C53,AT89C55,AT89LV52,AT89S51,A...原创 2020-02-11 20:01:35 · 17890 阅读 · 0 评论 -
飞思卡尔16位单片机(十五)—— 如何批量烧写芯片
我们在进行飞思卡尔单片机开发时,一般使用CodeWarrior软件和usbdm调试器进行。但是在实际生产过程中,采用这种方式烧写芯片效率比较低,而且很多情况下,程序的源码不希望对生产人员开放,本文就是为了这个目的,给大家讲解一下,如何进行芯片的批量烧写。 在进行批量烧写之前,我们默认大家已经安装了飞思卡尔单片机的开发环境,包括软件、调试器驱动。下面我们就进行批量烧...原创 2020-02-10 20:29:44 · 3849 阅读 · 1 评论 -
飞思卡尔16位单片机(十四)—— CAN总线模块测试
一、CAN模块介绍 这个实验我们来研究XEP100单片机内部的CAN模块。 XEP100单片机的CAN的基本特性如下:• 实施CAN协议—2.0A/B版— 标准和扩展数据帧— 0-8字节数据长度— 高达1Mbps的可编程比特率— 支持远程帧• 5个具有FIFO存储机制的接收缓冲器• 3个具有使用“本地优先”概念的内部优先顺序的发送缓冲器...原创 2020-02-10 19:47:31 · 2504 阅读 · 1 评论 -
飞思卡尔16位单片机(十三)—— SPI模块测试
一、SPI模块介绍 串行外围器件接口(SPI)模块提供单片机和外围器件间的全双工、同步和串行通信。这些外围器件可以包括其他微控制器、模数移位器、移位寄存器、传感器和存储器等。SPI运行在主模式中最高可运行在总线时钟除以2的波特率上,在辅模式中最高可运行在总线时钟除以4的波特率上。 SPI的中心元件是SPI移位寄存器。数据写入双缓冲发射器(写入SPIDR),然后...原创 2020-02-09 19:08:13 · 2309 阅读 · 0 评论 -
飞思卡尔16位单片机(十二)—— IIC模块测试
一、IIC模块介绍 目前市场上很多单片机都已经具有硬件IIC总线控制单元,这类单片机在工作时,IIC总线状态由硬件监测,无需用户介入,操作方便。 IIC总线是双线、双向的串行总线,是与其它芯片交换数据的有效手段。XEP100单片机的IIC模块的功能框图如下图所示。 IIC总线由一个双向的时钟线SCL和一个双向的数据线SDA组成。该实验通过II...原创 2020-02-09 18:49:17 · 1685 阅读 · 0 评论 -
飞思卡尔16位单片机(十)——PIT模块测试
一、PIT模块介绍 PIT是周期中断定时器模块的简称,XEP100单片机的PIT定时器是一系列24位定时器的阵列。可以用来触发单片机的外围设备,也可以用来产生周期性的中断。XEP100单片机的PIT模块具有如下特性:1、8个具有独立的溢出时间周期的定时器用作模数递减计数器。2、溢出周期可以在1到个总线周期数之间选择。溢出时间等于m×n个总线周期数,其中1<=m<...原创 2020-02-09 17:46:54 · 2217 阅读 · 1 评论 -
飞思卡尔16位单片机(九)——ECT模块测试
一、ECT模块介绍 XEP100单片机的增强型捕捉定时器模块(ECT)是在标准定时器模块(TIM)的基础上增加了一些功能而发展起来的定时器模块,ECT特别适合汽车的ABS、ESP等系统的应用。ECT模块包括一个16位的可编程的计数器,ECT有多种功能,最主要的功能是:输入捕捉(IC)、输出比较(OC)、脉冲累加(PAI)和模数递减计数(MDC)。本文主要对最常用的输入捕捉和输出比...原创 2020-02-08 19:41:06 · 3301 阅读 · 2 评论 -
飞思卡尔16位单片机(八)——PWM模块测试
一、PWM模块介绍 PWM在工业领域应用很广,是实现D/A转换和精确脉冲序列输出的有效手段。许多单片机都设置了PWM输出功能。XEP100单片机的PWM模块具有如下特点:(1) XEP100单片机具有8个可编程的PWM通道,与单片机的PP0—PP7管脚复用。每个通道的周期和占空比是可以独立控制的,8个通道都是8位精度的。通过设置寄存器PWMCTL可以将相邻的两个通道连接成...原创 2020-02-08 18:43:30 · 2051 阅读 · 0 评论