单片机

这2个单片机编程的思想,请你掌握。

参考了市面上各种各样的嵌入式书籍,MCS-51,AVR ,ARM 等都有看过,但是没有发现有哪本是介绍设计思想的,就算有也是凤毛麟角。写程序不难,但是程序怎么样才能写的好,写的快,那是需要点经验积累的。

想学会单片机?先搞懂这八个技术点~

01、复位电路设计

简化单片机的几个基本概念,你都了解吗?

我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令。

那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?

这个地方就是单片机内部的只读存储器即ROM。

01、单片机数的本质和物理现象

我们知道,计算机可以进行数学运算,这令我们非常难以理解,它们只是一些电子元器件,怎么可以进行数学运算呢?

我们人类做数学题如37+45是这样子做的,先在纸上写37,然后在下面写45,然后大脑运算最后写出结果,运算的原材料是37和45,结果是82都是写在纸上的,计算机中又是放在什么地方呢?

为了解决这个问题,先让我们来做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用‘0’和‘1’来代替这两种状态:规定亮为‘1’不亮为‘0’。

现在放上三盏灯,一共有几种状态呢?我们列表来看一下:000 / 001 / 010 / 011 / 100 / 101 / 110 / 111。

学好单片机,必须要了解的的8个电路设计!

1、单片机上拉电阻的选择

博客分享:单片机内部FLASH的字节操作

一般32位单片机的内部FALSH是不支持字节操作的,有的可以按字节读取,但是不能按字节写入。

而且,一般单片机内部FALSH擦除的最小单位都是页,如果向某页中的某个位置写入数据,恰好这个位置的前面存了其他数据,那么就必须把这页擦除,存的其他数据也会丢失。

实际上就是说内部的FALSH不好做改写的操作,如果有很多数据需要存放,最好是分页存储。这也是FALSH与E2PROM最大的区别,后者支持按字节操作且无需擦除,即使某一个地址写坏了,也不影响其他地址。

下面介绍一种方法让内部FLASH"支持"字节操作,且同一页的其他数据不受影响。

方法原理很简单,下面简单介绍下原理:

1.根据要写入地址,计算出该地址位于哪一页;

2.读出整个页,存入缓存BUF;

3.将要写入的数据按位置更新到BUF中;

4.擦除该页;

5.写入整个BUF。

可以看出这种方法弊端很明显:

1.耗时长 每次写都要读整个BUF,然后还要先把数据存到BUF里,然后再写入整个BUF;

2.FALSH擦写次数增加,降低使用寿命;

下面给出测试代码:

单片机测量PWM占空比的三种方法

PWM(Pulse Width Modulation),一般指脉冲宽度调节,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,比如LED亮度调节、电机转速控制等。

而在某些特殊应用中,我们也需要通过测量输入PWM的占空比,来实现不同的输出控制,这就需要使用到PWM占空比的测量方法。这里介绍三种不同的测量方法:阻塞方式、中断方式以及定时器捕获功能。

1. 阻塞方式

MCU阻塞方式测量PWM占空比的原理比较简单,也只需要使用到一个普通的IO端口(设置为输入模式,对于51而言那就是一个普通的双向口)。具体实现流程为:

博文分享:单片机C语言之串口通信协议

现实生活中, 我们总是要与人打交道,互通有无。单片机也一样,需要跟各种设备交互。例如汽车的显示仪表需要知道汽车的转速及电动机的运行参数,那么显示仪表就需要从汽车的底层控制器取得数据。而这个数据的获得过程就是一个通信过程。类似的例子还有控制器通常是单片机或者PLC与变频器的通信。通信的双方需要遵守一套既定的规则也称为协议,这就好比我们人之间的对话,需要在双方都遵守一套语言语法规则才有可能达成对话。

通信协议又分为硬件层协议和软件层协议。硬件层协议主要规范了物理上的连线,传输电平信号及传输的秩序等硬件性质的内容。常用的硬件协议有串口,IIC, SPI, RS485, CAN和 USB。软件层协议则更侧重上层应用的规范,比如modbus协议。

好了,那这里我们就着重介绍51单片机的串口通信协议,以下简称串口。串口的6个特征如下。

(1)、物理上的连线至少3根,分别是Tx数据发送线,Rx数据接收线,GND共用地线。

(2)、0与1的约定。RS232电平,约定﹣5V至﹣25V之间的电压信号为1,﹢5V至﹢25V之间的电压信号为0 。TTL电平,约定5V的电压信号为1,0V电压信号为0 。CMOS电平,约定3.3V的电压信号为1,0V电压信号为0 。其中,CMOS电平一般用于ARM芯片中。

单片机的这几个基本概念你都了解吗?

我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令。

那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?

这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。

太秀了!单片机内置ADC实现高分辨率采样?

相信ADC的应用或多或少都会用到,在很多场合都有分辨率要求,要实现较高分辨率时,第一时间会想到采用一个较高位数的外置ADC去实现。可是高分辨率外置ADC往往价格都不便宜,这就带来一对矛盾:高指标与低成本。其实利用单片机片上的ADC利用过采样技术就能很好的解决这样一对矛盾体,本文来聊聊这个话题。

什么是过采样?

在信号处理中,过采样是指以明显高于奈奎斯特速率的采样频率对信号进行采样。从理论上讲,如果以奈奎斯特速率或更高的速率进行采样,则可以完美地重建带宽受限的信号。奈奎斯特频率定义为信号带宽的两倍。过采样能够提高分辨率和信噪比SNR,并且通过放宽抗混叠滤波器的性能要求,有助于避免混叠和相位失真。

在很多项目应用中,需要测量信号的动态范围较大,且需要参数的微小变化。例如,ADC需要测量很大的温度范围(比如工业中甚至要求从-200℃~500℃),但仍要求系统对小于1度的变化做出响应。常见的单片机片上ADC位数为12位,如要实现高于12位分辨率要怎么做呢?我们知道奈奎斯特-香农采样定理可知:

干货 | 单片机控制板PCB设计需要注意的原则和一些细节

1、元器件布局

在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU的时钟输入端都易产生噪声,在放置的时候应把它们靠近些。