当前位置:文档之家› 单片机课程知识点总结

单片机课程知识点总结

单片机应用技术课程总结大作业
1.单片机C51语言
单片机C51语言与C语言的差别不大,应用的基本语法一致,算法可以套用,但C51语言多了一些C语言中没有的关键字如图1-1,其中大多数都与存储器相关,这也是在编程中特别需要注意的。

图1-1 C51扩展关键字
2.51单片机的内部硬件知识
51单片机在一块芯片上集成了CPU,RAM,ROM、定时器/计数器和多种1O功能部件,具有一台微型计算机的基本结构,主要包括下列部件:一个8位的CPU、一个布尔处理机、一个片内振荡器、128B的片内数据存储器、4KB的片内程序存储器(8031无)、外部数据存储器和程序存储器的寻址范围为64KB,21字节的专用寄存器、4个8位并行10接口、一个全双工的串行口、2个16位的定时器/计数器、5个中断源、2个中断优先级111条指令、片内采用单总线结构。

图 2-1为51系列单片机的内部结构框图。

图2-1 51单片机的结构框图
在编程的时候不仅要根据单片机内部硬件资源配置,还要注意每一种硬件外设对应的引脚,这样在大项目中便于充分利用所有的引脚,节约资源;另外合理的分配引脚会尽可能多的拓展单片机的资源,在51单片机中大多采用40引脚的双列直插式的封装(DIP),引脚图如图 2-2所示,有图可以知道,P0~P3中,除标准输出输入引脚P1外,其他引脚都有第二功能,只需将相应外设配置好,就可以利用第二功能。

图2-2 51单片机外部引脚图和总线结构图
单片机有最小工作系统,包括电源电路,复位电路,时钟电路等,只有这些单元与单片机按照要求结合在一起,单片机才能正常工作。

51单片机的最小工作系统如图2-3所示:
存器用于存放需要输出的数据,每个端口的8位输出锁存器构成一个特殊功能寄存器,且冠名与端口相同输入缓冲器用于对端口引脚上输入的数据进行缓冲,因此各引脚上输入的数据必须一直保持到CPU把它读走为止。

输出方式:
单片机的端口可以输出高低电平,由图3-1可以知道,实际输出的高低电平可以通过向锁存器写值即可,也即给单片机相应的位赋值,另外在赋值时既可以按位赋值也可以按字节赋值。

但是由于单片机直接驱动负载的能力较弱,且不同端口的硬件结构有所不同,故在驱动负载时要考虑是否需要上拉电阻,是否需要额外的电流放大电路,也即驱动电路。

另外,在编程时,要注意运用51单片机直接操作寄存器的特点,总结一个端口在
连接有规律的负载时代码表,这样可以大大降低程序的复杂度。

运用内部函数库实现循环左移循环右移。

图3-1 P0~P3端口硬件结构图
输入方式:
在51单片机由于其特殊的硬件结构原因,会出现两种读取方式:读取外部引脚状态和读取锁存器,这两种方式有CPU自行处理,取决于程序的运用方式,而没有具体区别的读取方法不同,如:51单片机里对某一个I/O口进行读--改--写操作时,读取的是与之对应的锁存器的输出,而不是实际物理引脚的电平;(所谓读改写指的是在读取引脚的值后,又对引脚进行运算后,将其又赋给这个引脚),其他非读--改--写指令读取的是引脚电平。

(即单纯的读取该引脚状态)
另外需要特别注意的点是:在读取引脚状态时,要先将引脚电平置1,这样做的本质原因是51单片机IO口硬件结构的缺陷,也是本身逻辑上容易忽略的地方。

这是编程中必须养成的习惯,当然实际中遇到读取单个电平的情况比较少。

在编程输入时,要区分各种不同类型的输入信号,其输入信号是由外部电路决定的,可以分为两大类:电平信号、脉冲信号。

这两类信号可以通过闸刀开关、按钮开关两类开关来模拟。

同时,对按钮开关要有更加深入的认识,实际电路中出现的抖动现象,要用延时去处理,以减少硬件成本。

4.中断系统
51单片机有5个中断源、2个中断优先级,通过4个专用中断控制寄存器(IE,IP,TCON,SCON)进行中断管理。

在用C51语言编程时,有专门的C51中断函数结构形式。

所以重点在于理解中断,优先级,各个特殊功能寄存器中每一位的含义。

图4-1 51单片机中断系统结构图
由图4-1可以清楚的看到各个中断允许寄存器IE及中断优先级寄存器IP的作用,寄存器IE中EA位控制整个中断的屏蔽与否,EX0,ET0,EX1,ET1,ES位分别用于开启五个中断:外部中断0,定时器/计数器溢出中断0,外部中断1,定时器/计数器溢出中断1,串行接收发送中断,当位为1时,开启各自中断。

寄存器IP中用于配置外部中断的优先级,优先级的配置能够实现系统运行的稳定,高优先级可以打破低优先级的中断服务程序,但要注意由于51单片机只有两个优先级,故在实际中要考虑系统默认的中断优先级即向量表的扫描方式,如图4-2所示。

图4-2 系统默认优先级排列
另外由于中断需要标志位,便于程序的校准,故还有TCON和SCON两个寄存器,
在TCON中,有外部中断触发方式选择位IT0和IT1,当位为1时,为脉冲触发;当位为0时,为电平触发,还有IE0、IE1、TF0和TF1,这些为中断请求标志位,发生中断时,该为由硬件置1。

在SCON中有TI和RI,分别为发送一帧数据结束,接收一帧数据完成时,由硬件置1.
在编程时,要特别注意外部信号的撤除,错误的外部信号撤除方式会导致程序无法按照预定的逻辑运行。

定时器/计数器溢出中断,外部中断为响应中断服务函数后硬件清零,串口中断为软件清零,这便于数据发送/接收的准确性,另外,要特别注意的式,当外部中断为电平触发时,外部信号输入时间的确定,不能因外部信号输入时间太长,导致程序的错误。

51单片机为了中断服务函数工作区的确定,中断向量入口的方便,引入了关键字:interrupt,这为程序的编写提供了大大的便利。

5.定时器/计数器
51单片机内部有两个可编程的16位定时器/计数器,通过其结构图的学习,这对编程时的思路更加清晰,如图5-1所示:
图5-1 定时器内部结构图
由结构图可以看出,定时器由三类特殊功能寄存器控制。

THX与TLX用于存放计数初值,THX为高8位,TLX为低八位,该寄存器根据具体计数和定时值进行配置,该寄存器由硬件实现当所检测的脉冲来时的加一,直到寄存器值溢出,溢出后清零。

TCON用于控制定时器/计数器的开启,其中的TRX为1时,定时器开启,为0时,定时器关闭,TFX是溢出的标志位,通过查询该为也能实现计数和定时的作用。

TMON寄存器用于定时器的模式控制,GATE位,用于决定定时器的开启方式,为0,则只需通过TRX位即可实现控制,为1,则需在INTX引脚产生高电平才能实现定时器的开启;C/T位,用于决定
计数器是工作在计数模式还是定时器模式,计数模式是计数外部脉冲,定时器模式则是计数的内部时钟分频后的脉冲,根绝不同的时钟信号源,有不同的计数周期,但总的原则是时钟信号源的12分频后得到的周期;M0和M1位决定计数器的工作模式,实际中常用模式1和模式2,即配置成01或10,但要注意不同模式下计数值和定时值配置的差别。

图5-2 工作模式1
图5-3 工作模式2
如图5-2为工作模式1,在工作模式1下,两个初值寄存器都会用到,计数定时值较大,如图5-3为工作模式2,在这种情况下,只有一个寄存器用于计数时的加,另一个寄存器保存初值称为预装载寄存器,通过这个寄存器,可以避免定时时间超过寄存器值时,重新给寄存器赋初值所需的时间,从而提高定时时间准确性,减少程序的复杂性。

在应用时,要熟悉定时器的配置步骤:TMOD寄存器设定、计数器的计数初值X、中断系统管理、定时器/计数器启动。

6.串行口
51单片机内部有一个全双工的串行接口,这个接口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。

其帧格式有8位、10位和11位,并能设置各种波特率,使用十分灵活。

与前面所学51单片机内部资源一样,首先是熟悉外设结构图,如图6-1所示:
图6-1 串行接口结构图
由结构图可以看出,只需注意配置PCON、SCON和SBUF寄存器即可,其中,PCON 寄存器中只有最高位有效,用于设置波特率是否倍增,SCON寄存器中8位数据均有效,SM0和SM1用于串行口工作方式选择位,SM2位为多机通信控制位,该位的出现主要是减少多机通信中出错率,REN位为允许接收位,该位的设置是为了发送与接收编程逻辑上的便利性,TB8和RB8跟SM2起一样的作用,最后就是TI和RI,中断标志位,在串口中,中断标志位的设计,可以一定程度上减少数据接收和发送的错误。

通过以上分析可以看到51单片机关于串行口相关寄存器的配置很简单,但是其内部结构还是比较麻烦的,另外,由于有多种模式的选择,不同模式下,有不同的设置方式,这就大大增加了串口的难度。

串口有四种工作模式,四种工作模式的特点如图6-2所示:由表可以清楚的观察到四种方式的优缺点,模式0和模式2相对配置简单,因为少了定时器配置波特率,但这也限制了与其通信设备的广泛度,另外,模式1和模式3配置相对复杂,但其波特率可以根据具体设备进行修改,其通信的广度增加。

图6-2 51单片机串口通信的四种方式
最后就是关于编程的部分了,对串行口的结构熟悉过后,编程也就相对简单,具体配置步骤如下:(1)定好波特率;(2)填写控制字;(3)串行通信可采用两种方式,即查询方式和中断方式。

相关主题