1 / 45

吴振宇

第一章 单片机原理与应用. 吴振宇. 什么是单片机( MCU ). 将微处理器( CPU )、数据 存储器、程序存储器、 I/O 接口电路和相应的实时控制器件集成在一块芯片上 ,形成一个单芯片的微型计算机,称为单片机,也称微控制器( MCU )。 单片机不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上 想想 PC 的结构, CPU 、内存、硬盘 ,以及 键盘 、 鼠标 、 显示器等输入 / 输出设备。 二者 组成 结构类似,差别在体积、性能、价格,这也决定了其不同的用途。. 单片机的特点. 功能强: 可编程, 实时性好 体积小 ,功耗低

ulric-wells
Download Presentation

吴振宇

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第一章 单片机原理与应用 吴振宇

  2. 什么是单片机(MCU) • 将微处理器(CPU)、数据存储器、程序存储器、I/O接口电路和相应的实时控制器件集成在一块芯片上,形成一个单芯片的微型计算机,称为单片机,也称微控制器(MCU)。 • 单片机不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上 • 想想PC的结构,CPU、内存、硬盘,以及键盘、鼠标、显示器等输入/输出设备。 • 二者组成结构类似,差别在体积、性能、价格,这也决定了其不同的用途。

  3. 单片机的特点 • 功能强:可编程,实时性好 • 体积小,功耗低 • 可靠性高:高度集成,大量数据都在芯片内部传送 • 开发方便:外围电路简单,资料丰富 • 价格低廉,性价比高 • 研制周期短,易产品化

  4. 主流单片机 • 8051 最普及,多种新型高性能51 • MSP430 低功耗,抗干扰,工业仪表 • AVR RISC,高速,高可靠性 • PIC 体积小,抗干扰,成本低 • Freescale 产品线丰富,汽车电子 • ARM 32位,高性能,外设丰富

  5. 时钟源 T0 T1 时钟电路 SFR和RAM ROM 定时/计数器 系 统 总 线 CPU 并行端口 串行端口 中断系统 TXD RXD P0 P1 P2P3 INT0 INT1 51单片机的基本结构 • 一个8位微处理器(CPU) • 数据存储器RAM和特殊功能寄存器SFR • 内部程序存储器ROM • 四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出 • 一个串行端口,用于数据的串行通信 • 两个定时/计数器,用以对外部事件进行计数,也可用作定时器。 • 中断控制系统 • 内部时钟电路

  6. 程序存储器 • 存放用户程序、数据、查找表等信息 • 51可寻址64KB地址空间,AT89S51片内有4KB Flash • 复位后程序计数器(PC)内容为0000H • EA引脚对程序存储器的控制作用 • EA接高电平时,CPU先从内部程序存储器中读取程序,当PC值超过内部ROM容量时,自动转向外部ROM读取程序。 • EA接低电平时,CPU始终从外部程序存储器读取程序。

  7. 程序存储器 • 程序存储器中的特殊地址: • 0000H~0002H复位后的PC值为0000H,一般在此安排跳转指令 • 0003H ~ 002AH为中断向量表 • C语言中的const数据类型,以及code关键字,都将变量存储于程序存储器

  8. 数据存储器 • 保存程序中的变量,以及一些不怕断电后消失的数据 • 51具有256B内部数据存储器,并可寻址64KB外部存储器 • 低128B为用户数据RAM • 高128B为特殊功能寄存器

  9. 数据存储器 • 30H~7FH用户自由使用,一般把堆栈设置于此 • 20H~2FH该16字节(128位)存储单元具备按位寻址能力,即可以以位单位进行数据操作,而其他位置都必须以字节为单位操作。 • 位地址为00H~7FH • 00H~1FH共32个字节,被分为4个块(Bank),每个Bank包括8个寄存器(R0~R7),称为通用寄存器。通过PSW的RS0和RS1位组合,来选中每个Bank

  10. 51单片机存储器的一些特殊点 • 地址重叠:采用不同的指令、信号来区分重叠地址 • 片内RAM用MOV,片外RAM用MOVX,故片内、外低地址可以重叠 • 片内、外ROM都用MOVC指令,但可以靠EA区分 • 片外RAM和ROM具有相同地址,且共用地址、数据总线,但选通片外RAM的信号为RD和WE,选通片外ROM的信号是PSEN • 位操作能力:片内RAM中的20H ~ 2FH及SFR中的位地址;有专门的位操作指令 • 堆栈区:复位时SP = 07H,可任意设置到其他地址

  11. 51单片机时序 • CPU是一个复杂的同步时序电路,在时钟脉冲推动下工作。 • 执行指令时,CPU先从程序存储器中取出指令码,并译码,然后由时序部件产生一系列控制信号去完成指令的执行。这些控制信号在时间上的相互关系就是CPU时序。 • 标度时序信号的尺度有: • 时钟周期:时钟的震荡周期,是单片机时序中的最小单位 • 机器周期:51的1个机器周期固定为12个时钟周期 • 状态(S):每个机器周期分为6个状态(S1~S6) • 节拍(P):每个状态分为P1和P2两个节拍 • 指令周期:执行一条指令所需的时间 1个机器周期的12个时钟周期可表示为S1P1,S1P2,S2P1,……,S6P2 51单片机分为单周期指令、双周期指令和四周期指令 只有乘法和除法两条指令为四周期,其余均为单周期和双周期

  12. 指令时序 • 以采用12MHz晶振为例 • 1个时钟周期为? • 1/12 us • 1个机器周期为? • 1 us • 1个状态为? • 1/6 us • 1个节拍为 • 1/12us • NOP为单周期指令,耗时? • 1 us • DJNZ为双周期指令,耗时? • 2 us

  13. AT89S51引脚 • 电源引脚(2): • VCC • GND • 控制引脚(6): • ALE:地址锁存允许,平时输出1/6时钟频率的方波 • EA:外部程序存储器访问允许 • PSEN:片外ROM选通,执行MOVC时自动产生一个负脉冲来选通片外ROM • RST:复位维持2个机器周期以上高电平,使单片机复位 • XTAL1/2:时钟输入/输出

  14. AT89S51引脚 • 端口(32): • P0.7~P0.0: • 输入输出端口0 • 片外存储器地址总线低8位 • 片外存储器数据总线 • P1.7~P1.0: • 输入输出端口1 • P2.7~P2.0: • 输入输出端口2 • 片外存储器地址总线高8位 • P3.7~P3.0: • 输入输出端口3 • 外围部件信号线:串口收/发,外部中断输入,计数器计数输入,外部RAM读写选通

  15. AT89S51最小系统设计 • 以单片机为主、外围电路为辅组成的系统称为单片机系统。 • 最少外围电路组成、可使单片机工作的系统,称为单片机最小系统 • 最小系统包括: • 电源 • 复位 • 时钟 • ISP(可选)

  16. 电源及复位电路 • AT89S51工作电压4.0~5.5V,典型工作电压5V,最大6.6V。 • 工作在12MHz时,电流25mA。 • 可使用7805供电。 • 采用阻容复位电路,RST维持2个机器周期以上高电平即可。 • 右图上电时RST的高电平时间? • 想增加按键复位,按键加在哪?

  17. 单片机的复位源 • 上电复位 POR • 欠压复位 BOR:当电源电压低于某规定值时,单片机复位;当恢复到规定值时,启动欠压定时器,定时时间到时,欠压复位结束。BOR的作用是当电源低于某值时,停止单片机运行,以免造成运行错误或输出不确定电平,使外围电路工作异常。 • 外部复位:由单片机复位引脚的电平变化引起的复位,据此可以进行人工复位。 • 看门狗定时器复位 WDT:看门狗用于监测程序的运行,一旦程序跑飞、死锁,就不能定时清零看门狗定时器(即不能及时喂狗),则看门狗定时器产生溢出,引起单片机复位。 • AT89S51可进行外部复位和看门狗定时器复位。 • 对于没有欠压复位的单片机,为保证可靠性,需要外接专用复位芯片。

  18. 时钟电路 • X1和X2分别是内部用于构成振荡器的反相放大器的输入/输出端 • 反相放大器与晶体、电容共同构成自激振荡电路 • 电容值的选取 • 电容兼作去耦,不能太小 • 电容值过大,则振荡器启动太慢 • 典型值为30pF±10pF • 正常情况下,X2脚输出一个平滑的正弦波 • AT89S51最高工作频率33MHz

  19. 什么是中断 • 当计算机执行正常程序时,系统中出现某些急需处理的异常情况或特殊情况,CPU暂时中止现行程序,转去对随机发生的更紧迫事件进行处理;处理完毕后,CPU自动返回原来的程序继续执行。 • 中断是CPU自动执行中断服务程序(ISR)并返回原程序执行的过程。

  20. 中断的作用 • 提高CPU的工作效率 和外设交换信息时避免不必要的等待和查询。 • 提高系统的实时性 被控系统的实时数据和故障信息等可以通过中断立即通知CPU,远较系统查询及时。 • 一种I/O数据传送方式的基础

  21. 中断处理流程 • 1. 检测中断 CPU在每条指令的最后状态对中断请求进行一次检测,故从产生中断到它被CPU检测到不会超过一条指令的时间。如8051在S5P2和S6P1检测中断。 • 2. 响应中断 (1) 自动关闭中断,防止被其他中断干扰本次中断。 (2) 保护现场,转入执行中断服务程序前,保存当前程序断点,以及有关寄存器的内容,即将其压入堆栈。 (3) 按中断向量表自动转入相应的中断服务程序执行。 (4) 系统自动或通过指令手动清除中断请求标志,避免再次响应本次中断请求。 • 3.中断返回 中断服务程序执行结束,从堆栈中恢复现场,返回中断前的原程序继续执行。

  22. 8051中断源 1. 外部中断 • 8051具有INT0和INT1两条外部中断请求输入线 • 触发方式可设置为低电平触发或下降沿触发 • 电平触发检测1次,边沿触发需要检测2次 2. 定时器溢出中断 • 8051内部有2个定时/计数器 • 对内部定时脉冲或T0/T1引脚输入的外部定时脉冲计数。 • 计数到最大值时发生溢出,产生中断。 • 通常用于需要进行定时控制的场合。 3. 串口中断

  23. 中断标志 • 8051在S5P2时检测中断并使相应的中断标志位置位,在下一个机器周期检测这些标志位以决定是否响应中断。 • 开发时要尤其注意中断的产生条件,以及清除方式。 • 8051的中断标志位集中安排在TCON和SCON中。

  24. 中断标志

  25. 中断使能 • 中断的开放和关闭通过中断允许寄存器IE进行两级控制 • 中断允许总控EA和各中断源独立控制位 • 复位时,IE = 0,即所有中断关闭。

  26. 中断优先级 • 8051具有高、低2个优先级,每个中断源都可设置为高或低。 • 低级中断的ISR可以被高级中断打断,而不会被同一优先级中断打断。 • 若几个同级中断并发,则按CPU查询顺序响应:INT0 -> T0 -> INT1 -> T1 -> UART • 复位后,所有中断均为低优先级

  27. 中断优先级

  28. 中断控制

  29. 中断向量表 • 某中断请求被响应后,CPU会自动跳转到一个特定地址执行ISR,中断向量表即该入口地址表。 • 8字节不足以存放ISR。 • 一般在此处安排跳转指令,如 ORG 0003H LCALL 2000H

  30. 中断系统的初始化 • 若要使用某个中断源 …. (1) 针对该模块的设置(外部中断触发方式、定时器初值、串口通信参数等) (2) 设置中断优先级 (3) 使能总中断 (4) 使能该中断 • 已使能的中断必须有对应的ISR!

  31. 概述 • 输入/输出(I/O)接口是CPU和外设间信息交换的桥梁,实现和不同外设的速度、电平等的匹配。 • I/O可分为并行接口和串行接口 • 8051单片机具有4个8位的并行接口,分别为P0、P1、P2和P3,均为带有锁存输出的双向端口。 • 8051为外设端口和存储器统一编址,并行接口地址分别为80H、90H、A0H和B0H。

  32. P0口简介 • 功能: • 通用数据I/O端口 • 地址、数据复用总线 • 作为通用数据I/O端口时,具有较强的驱动能力(8个TTL负载),输出需要外加上拉电阻。 • 作为地址、数据复用总线时,P0口先作为地址总线,输出外部存储器的低8位地址。然后再作为数据总线,进行数据的输入或输出。此时,P0口不能再作为通用I/O口。

  33. P0口的位结构图 Vcc Vcc Vcc • 1个输出锁存器(D触发器) • 2个三态门(控制读引脚或读锁存器) • 与门和多路开关构成的输出控制电路 • 一对FET构成的输出电路 读锁存器 控制(=0时) 地址/数据 1/0 内部总线 P0.x 引脚 D Q 锁存器 CL /Q 写锁存器 MUX (控制=0时) 读引脚

  34. P0作为通用I/O的操作 • 在P0口作为通用I/O端口时,控制电路中的“控制”为低电平,多路开关MUX接入下方的锁存器的/Q端。 • 由于与门的一个输入端为“0”,所以它使上端的FET截止。这就是P0口在做I/O口时输出为“漏极开路(OD)” 结构的原因。 • 输出操作:在执行以口为目标的指令时,数据送到锁存器的“D”端,经“/Q”端送场效管应输出极。如:送“1”时,/Q=“0”,使下端的FET截止。这样出现输出极的两个FET全部截止。在这种情况下必须在端口线上外加上拉电阻,这样在上拉电阻的作用下,使端口为高电平。同理,若总线向口送“0”时,锁存器的/Q=1,使下端的FET导通(上面的FET仍然截止),这样端口呈现“0”电平。

  35. 开漏/开集(OD/OC)输出结构 • 改变输出电平 • 实现“线与”逻辑

  36. P0作为通用I/O的操作 • 输入操作: • a.读引脚:读外部送到端口引脚的电平,即通常所说的输入操作。此时,单片机控制“读引脚”的三态门,使引脚处的外部电平经三态门送入内部总线。 • b.读锁存器:将读取锁存器数据并进行处理,最后再写回锁存器的操作称之为: “读—修改—写”操作。在这种情况下, 读入的数据不是来自引脚,而是端口内部的锁存器的内容。 • 当前面完成一次端口的输出后,要再将前面输入的状态取回来,进行再处理,然后重新输出。在8051的指令系统中,这种“读—修改—写”的操作有: ORL 、XRL 、JBC 、CPL 、INC 、DEC 、DJNZ 、MOV Px,y 、 CLR Px,y和SET Px,y。

  37. P0作为通用I/O的操作 • c.读引脚前先写“1”:在端口电路中,可以发现一个问题:端口在输入(读引脚)时,原来锁存器的状态可能要影响引脚电平的输入。例如:原来锁存器的状态为“0”态,即输出极的下端FET是饱和导通状态,这样如果外电路向引脚输入高电平时,电路将不能正确读入。 • 解决方法就是让下端的FET截止,既事先向端口写一个“1”。

  38. P0作为总线的操作(扩展了外部存储器时) • 控制电路的“控制”=1,此时与门打开,MUX接向“地址/数据”信号。在这种情况下,输出极的两个FET都处于正常的工作状态 。 • 访问外部存储器的指令MOVX、MOVC ,就是使用P0口来输出外部存储器的低八位地址和输入、输出存储器的数据。 • 在进行单片机的硬件系统的设计中,如果使用了外部存储器,P0口成为整个系统的地址/数据复用总线。也就是说,P0口不能再作为通用的I/O端口与外部设备连接。

  39. P0口特点总结 • 作通用数据端口时,输出级上端的FET处于截止状态,所以与外围器件连接时,必须接“上拉电阻”,否则不能正确的输出高电平。 • 在输入操作前,为了保证正确性,必须先向端口写“1”。 • “读引脚”与“读锁存器”是不同的两个数据通道。凡是“读—修改—写” 的操作,CPU读的都是端口锁存器中的数据。 • 为了提高电路的可靠性,端口引脚不要直接与三极管一类的器件直接连接,应加隔离电路或与三极管之间加一个电阻。 • 在总线方式时,P0口不能再做通用的I/O端口。分时输出地址、数据总线的信息(此时引脚不用外接上拉电阻)。

  40. Vcc 读锁存器 内部上拉电阻 P1.x 引脚 D Q 锁存器 CL /Q 内部总线 写锁存器 读引脚 P1口结构 • P1口为单纯的通用I/O端口,负载能力为3个TTL输入。与P0口的区别在于内部具有上拉电阻,所以输出时不用外接上拉电阻。

  41. 地址/数据 1/0 Vcc 控制 读锁存器 内部上拉电阻 内部总线 P2.x 引脚 D Q 锁存器 CL /Q MUX (地址/数据=0) 写锁存器 读引脚 P2口结构 • 通用I/O端口 • 在扩展存储器系统中,作为外部存储器的高8位地址线

  42. Vcc 读锁存器 替代输出功能 P3.x 引脚 内部总线 D Q 锁存器 CL /Q 写锁存器 MUX (地址/数据=0) 读引脚 P3口结构 • 通用I/O端口: “替代输出功能”端为高电平,以保证与门打开。 • 多用途端口:在多用途情况下,P3口分别作为串行口、外中断输入、外部计数输入和系统扩展时使用的WR和RD信号的端口。在这种情况下,锁存器Q端为“1”电平以保证与门是打开的。

  43. 拉电流方式 输出高电平 点亮LED Vdd Vdd Vdd Px.y Px.y 灌电流方式 输出”0”点 亮LED 拉电流与灌电流输出 • “拉”和“灌”是从外围电路的角度描述 • 拉电流是单片机输出高电平,即电流被外围电路“拉走”。 • 灌电流是单片机输出低电平,即外围电路向其“灌入”电流。 • 51拉电流约为4mA,灌电流约为20mA。

  44. 谢谢!

More Related