51单片机知识大汇总看你了解有多少
2. 51单片机的外设:我们在学习单片机时,所做的第一个实验都是一样的,点灯。也许你已经学会了用单片机做出好看的花样灯,或者用单片机驱动数码管显示出数字或字母。或者可以检测按键了。不错,我们仔细想想这些是什么,无非,你就是控制那一排排引脚输出高低电平,我们称这些引脚叫I/O口,输入输出,按键是输入,点灯是输出。其实你以为你学了三样东西,其实,你只学了一样东西,I/O控制。所以这些内容并不是单片机的内容,我们称之为单片机的外设,现在你应该很明确了,所谓的LCD液晶,AD芯片什么的都是单片机的外设。但是我们为什么要学习这些单片机的外设呢?还是为了熟悉单片机,你驱动的芯片多了,自然对编程模型就熟悉了。其实,我们用单片机就是在驱动外设,然后你问那定时器,中断,串口通信又是什么?对于中断,现在单片机在做一件事,突然,我给个信号,现在出了一个意外,你赶快去做另一件事,做完另一件再回来,就是这样。对于定时器,我举个例子,现在对于一盏灯,我要他每天晚上六点打开,每天早上六点关闭,我们会怎么做?设定一个计时器,假设当前是晚上六点,现在我让I/O口输出高电平点灯,同时打开计时器,定12个小时,12个小时一到,给一个中断,去把I/O口取反,关灯,是不是这样控制的。所以中断,定时器只是为了更好的让单片机进行控制工作。现在你应该很熟悉了,单片机就是一款自动控制的芯片。注意,是芯片,你做的工作就是如何编程来是这款芯片工作,是这款芯片在规定的程序下干活……怎么让单片机干活呢?五个字,配置寄存器。3.配置寄存器:学习51单片机,不管你是刚刚开始学,还是学习有一段时间了,你应该很熟悉的字眼,寄存器。我想说单片机的基本思想就是五个字:配置寄存器。单片机怎么工作,比如,你让I/O口输出高电平,怎么输出,在C语言里,你是通过P1=0xFF来实现的,为什么这么写,你去看看头文件reg51.h里的内容,它定义了一个寄存器为P1,然后你向这个寄存器里写入了8个1,于是输出高电平。你是通过配置寄存器的内容来控制I/O口的。我们再想一下,定时器你是怎么配置的,同样的原理,你是通过配置TMOD,TCON,TH,TL等若干个寄存器完成的吧,然后给单片机定了一个时间,当然,你说这些是简单的,还有复杂的呢?那我就再举个例子吧,只要是写单片机程序,你基本都是在配置寄存器,例如,STC系列的单片机带了PWM功能,你如何让单片机输出一个符合你要求的PWM信号呢,你绝对是通过给某个寄存器写入一个值,这个值控制频率。再给一个寄存器写入一个值,这个值控制占空比,然后通过哪个脚输出,你又是通过一个寄存器来控制的。所以整个过程都是控制寄存器。那么你说,51是这样的,其他的呢?stm32,高端的单片机,工作起来也是配置寄存器,STM32时钟信号的选择,是通过控制RCC,I/O的控制是通过控制GPIO,当然,它采用的方式是存储器统一编址,就是你定义某个寄存器不再是51的sfr和sbit,而是用指针直接访问地址的方式,比如访问某个寄存器,从器件手册上查找该寄存器的地址为0xXXXXXXXX,那么配置时使用*(long unsigned *)(0xXXXXXXXX)=0xFFFFFFFF的方式,本质不变。这样看来,那么msp430,PIC都是这样的,只是他们的寄存器不同,配置方式不同,写入的值不同而已。如果你真的懂了51单片机,真的懂了单片机配置寄存器的原理。你只要花两个小时看懂芯片手册,熟悉了开发环境,一天就能上手新的芯片……题外话就是,看arm等等芯片很高端,如果是裸机编程的话,那么跟也是配置寄存器,原理一样,当然加了操作系统就不同了,操作系统的框架就是重要的了。
4.关于通信协议:对于任何单片机来说,最为难的问题就是通信协议了,对于这个问题,我不想说的太多,毕竟不是在做通信原理,只是要说明的一点就是,“有通信就有协议,这是什么意思?就是说单片机在驱动任何芯片的时候,必须要服从这款芯片的的时序,比如先使能这个芯片,然后给出写信号或者读信号,然后芯片在发出响应信号,再对芯片进行操作。为什么要这样呢?首先,对于芯片来说,它有自己的操作方式,如果没有固定的方式,那就乱套了,其实联想到人身上也是这样的,中国人和美国人交流时,如果没有翻译,就需要打手势,这个手势双方都能懂,于是就能通信。芯片协议也是这样的,单片机和芯片都能理解,于是他们都能工作。还有一点就是像有些芯片带了SPI的协议,IIC的协议等等,如果它自带了,那么他协议已经设置好了,回归到本质,使用这个协议又是配置寄存器了。比如51单片机的串口协议,
51单片机 相关文章:
- 基于实时时钟芯片X1228的电源控制器设计(03-14)
- 以89C51单片机为控制核心的开关电源优化设计(07-25)
- 一种单片机控制的多功能交流稳压电源(07-30)
- 单片机AT89S51与ADC0809设计一个数字电压表(08-06)
- 多路可编程PWM芯片设计(08-09)
- 直流数控可调稳压电源设计简介(11-10)