1 / 40

吴振宇

第一章 单片机原理与应用. 吴振宇. 概述. 8051 有两个 16 位定时 / 计数器。 可设置为定时和计数两种模式,在每种模式下又可设置为 4 种工作方式。 工作方式不同则最大定时 / 计数值不同。 加 1 计数器,计数超过所在工作方式的最大值时发生溢出,回零,同时产生中断。. 控制寄存器 TCON. 8 位寄存器,可按位寻址。 TR0/1 :定时器 0/1 启停控制。 TF0/1 :定时器 0/1 溢出标志,硬件复位。 中断请求受 EA , ET0/1 控制。. 方式寄存器 TMOD. 8 位寄存器,不可按位寻址。 GATE :门控信号。

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. 概述 • 8051有两个16位定时/计数器。 • 可设置为定时和计数两种模式,在每种模式下又可设置为4种工作方式。 • 工作方式不同则最大定时/计数值不同。 • 加1计数器,计数超过所在工作方式的最大值时发生溢出,回零,同时产生中断。

  3. 控制寄存器TCON • 8位寄存器,可按位寻址。 • TR0/1:定时器0/1启停控制。 • TF0/1:定时器0/1溢出标志,硬件复位。 • 中断请求受EA,ET0/1控制。

  4. 方式寄存器TMOD • 8位寄存器,不可按位寻址。 • GATE:门控信号。 • C/T:设置工作模式为定时器或计数器。 • M1 M0:工作方式设置 00 01 10 11。

  5. 控制逻辑 • 定时器:对振荡器的12分频计数。 • 计数器:对T0引脚输入脉冲计数。 • 检测T0引脚下降沿需要2个机器周期。通常,T0上输入的脉冲频率小于100KHz。

  6. 控制逻辑 • GATE决定INT0引脚信号是否参与对T0的控制。 • 若GATE=0,T0只受TR0控制。 • 若GATE=1,T0受INT1信号和TR0共同控制。此时INT0不再作为中断请求输入线。 • 门控信号可用于脉冲宽度的测量。

  7. 测频与测周 • 测频与测周均为测量脉冲信号频率的方法。 • 测频:在单位定时时间内对被测信号脉冲进行计数。 • 测周:在被测信号一个周期时间内,对某一基准时间脉冲进行计数。 • 主要误差是由于计数器只能进行整数计数而引入的±1误差。 • 高频测频,低频测周。

  8. 原理示意 • 定时/计数器是16位SFR,分为TH0和TL0两个8位。 • 工作方式决定最大计数值。 • 初值是人为设置的, 期待计数值 = 最大值 –初值。 • 如果计数脉冲的间隔相等,则计数值就代表了时间的流逝。

  9. 工作方式 - 0 • 13位加1计数器,兼容48系列单片机。 • 由TH的8位和TL的低5位组成,TL高3位弃之不用。 • 最大计数值:2^13 = 8192 • 计满8192,再加1则溢出归零,产生中断请求。 • 如要再次使用,需要手动再次装入初值。

  10. 工作方式 - 1 • 16位计数器,TH和TL全部参与。 • 最大计数值:2^16 = 65536 • 其余特性与方式-0相同。

  11. 工作方式 - 2 • 8位自装入计数器。 • 最大计数值:2^8 = 256 • 自装入即计数器溢出归零后,自动装入前一次的初值。 • TH保存初值,仅用TL进行计数。 • 初始化时对TH和TL送相同值。

  12. 工作方式 - 3 • 前三种方式,T0和T1完全相同。而方式-3一般只应用于T0。 • T0:两个独立的8位计数器。 • TL0可设定为定时或计数模式,仍由TR0控制,并用TF0作溢出标志。 • TH0只能作定时器,借用TR1和TF1。 • 一般只有将T1用作串口波特率发生器时,才将T0设置为方式-3,以增加一个计数器。

  13. 初始化步骤 • 根据需要,选择适当的模式和方式,写入TMOD。 • 根据期待的计数值和所选工作方式,计算初值,写入TH和TL。 • 开放中断,设置优先级,写入IE和IP。 • 控制定时/计数器的起停,操作TCON。

  14. 初值的计算 • 计数模式:TC = M – C • TC:初值 M:所选方式最大计数值 C:期待计数值 • 定时模式:TC = M – T/Ts • T:期待定时时长 Ts:时钟周期的12倍 • 最大定时时间(以12MHz晶振为例) • 方式0:Tmax = 2^13 × 1us = 8.192ms • 方式1:Tmax = 65.536ms • 方式2和3:Tmax = 0.256ms

  15. 初值计算举例 • 假设采用12MHz晶振,要定时2ms,如何设置初值? • 方式2、3最大只能定时0.256ms,不用。 • 若采用方式0: • TC = 2^13 – 2ms/1us = 6192 = 1830H • 即TH = 0xC1 TL = 0x10 • 若采用方式1: • TC = 2^16 – 2ms/1us = 63536 = F830H • 即TH = 0xF8 TL = 0x30

  16. 初值计算举例 • 假设采用12MHz晶振,要定时1s,如何设置初值? • 4种方式最大只能定时65.536ms,都不满足要求。 • 类似情况可采用软件定时。 • 比如,用定时器定时10ms,再额外维持一个变量,在每次溢出中断中对其加1。变量值等于100时,即得到1s,清零该变量。

  17. 软件定时示例 volatile unsigned char cnt = 0; …… void ISR_Timer0() interrupt 1 { cnt ++; if( cnt == 100 ) { // your task here cnt = 0; } // reload TH0 & TL0 } • 关键字 volatile 指示编译器不要优化该变量。 • 如果某个变量可能会被“并行”地修改,应将其声明成 volatile 。 • 例如,某变量的值可能在中断服务程序中被修改,而在主程序中检测其值,则应用 volatile 声明之。

  18. 应用举例 • 采用12MHz晶振,在P1.0上输出周期为2.5秒,占空比为20%的脉冲信号。 • 选取合适的定时时间,太小导致频繁中断,影响效率。此例中选10ms。 • 高电平50次中断,低电平200次中断。

  19. 应用举例 • 2个方波信号,频率 f1 = 50KHz,f2 = 50Hz,分别用测频、测周法测量其频率,并比较误差。 • 测频法:T0定时模式,开放50ms闸门;T1计数模式,对引脚脉冲计数。 • 测周法:待测信号高电平作时间闸门,T1定时模式。

  20. 测量结果 • 高频测频,低频测周。

  21. 串行通信 • 并行通信:数据的各位同时发送或接收。 • 串行通信:数据一位一位按顺序发送或接收。 • 相同时钟频率下,并行比串行速度快。(为什么SATA硬盘代替了IDE硬盘?) • 并行使用的传输线多,远距离传输时耗费资源。

  22. 串行通信分类 • 按照串行数据的同步方式,可以分为同步通信和异步通信两类。 • 1100 1010 0100 1110 • 同步通信是利用软件识别同步字符来实现数据的发送和接收。 • 异步通信是利用字符的再同步技术的通信方式。

  23. 异步通信 • 数据以字节为单位组成字符帧传送。 • 依靠字符帧的格式来协调数据的发送和接收,即确定数据的开始与结束。 • 1100 1010 0100 1110 • 发送端和接收端使用各自的时钟来控制数据收发,彼此独立,互不同步。

  24. 字符帧格式 • 起始位:逻辑0低电平,向接收设备指示开始发送一帧数据。 • 数据位:根据需要可以取5~8位,低位在前高位在后。 • 奇偶校验位:可以选择奇校验或偶校验。 • 停止位:逻辑1高电平,向接收端指示一帧数据发送完毕。 • 空闲位:位于两相邻帧之间,根据需要,可有可无。

  25. 波特率 • 每秒钟传送二进制码的位数,单位是bps(bit per second)。 • 用于表征数据传输的速度。 • 收发双方必须保持波特率一致。 • 码元传输时间:传输一位需要的时间,为波特率的倒数。 • 8051系列一般最高使用9600bps。

  26. 同步通信 • 异步通信中每帧的起始、停止位降低了有效数据的传输速率。 • 同步通信一次只传送一帧数据,但一帧中可以包含若干字符。 • 要求收发两端始终保持严格同步,故传输数据的同时还要传输时钟。 • 同步通信速率比异步通信高,但更复杂。

  27. 同步通信帧格式 • 同步字符用于确认数据字符的开始。 • 数据字符个数不受限制,由所需传输的数据块长度决定。 • 校验字符用于接收端对接收到的数据字符的正确性检验。

  28. 串行通信的制式 • 按数据传输方向,可分为单工、半双工、双工三种制式。单工基本已经淘汰。 • 半双工(Half Duplex):允许信息在两个方向上传输,但收发双方间只有一个通信回路,分时发送与接收。

  29. 串行通信的制式 • 全双工(Full Duplex):存在两个通信回路,在任何时刻,通信中的每一方可以同时发送和接收。

  30. 电平转换 • RS-232C采用负逻辑,逻辑“0”为+5 ~ +15V,逻辑“1”为-15 ~ -5V。 • 接收端+3V ~ +15V识别为“0”,-3V ~ -15V识别为“1”,噪声容限2V。 • 若采用TTL电平,经过长距离传输,可能使发送端的“1”到达接收端是衰减成“0”。 • 该接口与TTL电平连接时需要进行电平转换。常用芯片为MAX232/3232。

  31. 8051的串行口 • 51内部有一个全双工的串行口,可实现串行异步通信。 • 若在输入/输出引脚加上电平转换器,可构成标准的RS-232接口。 • 有4种工作模式。 • 串口主要由SCON和PCON中的SMOD位控制。

  32. 串口控制寄存器SCON • SM0/1:串口方式控制。 • SM2:多机通信控制位。 • REN:允许接收位。 • TB8/RB8:发送/接收数据位8,用于模式2和3。 • TI:发送中断标志,发送完一帧后硬件置位,发送前软件复位。 • RI:接收中断标志,收取完一帧后硬件置位,读取后软件复位 • TI和RI合用一个中断向量,可以在响应中断后读取TI和RI值,以确定产生的是哪一个中断。

  33. 工作方式-0 • 同步移位寄存器 • 相当于一个并入串出的移位寄存器。 • 并行数据由内部总线进入SBUF,由TxD线串行送出。 • SM2,TB8,RB8应设置为0。 • 波特率固定为 fosc/12 • 一般用于外接移位寄存器扩展并口。

  34. 工作方式-1 • 10位异步通信。1位起始位 + 8位数据位 + 1位停止位。 • SM2应设置为0。 • 波特率可变,受定时器控制。 • 发送过程: • 确保TI = 0; • 将待发送数据装入SBUF(SBUF = 0xAA)。 • 硬件自动在数据两端添加起始和停止位。 • 在时钟作用下,在TxD线上依次出现10位。 • 完毕后维持TxD为高,并将TI置位。

  35. 工作方式-1 • 接收过程: • 确保RI = 0和REN = 1。 • 检测到起始位后,在时钟作用下依次检测RxD上出现的8位数据。 • 检测到停止位后,将8位数据放入SBUF,并将停止位放入RB8。 • 用户从SBUF中读出数据(rxbuf = SBUF),并清除RI中断。

  36. 工作方式-2,3 • 11位异步收发,方式2为固定波特率,方式3波特率可变。 • 发送时将第9位数据装入TB8,既可为奇偶校验位,也可为控制位。 • 接收时: • 若SM2 = 0,无论第9位是什么,都把数据放入SBUF,并产生中断。适用于奇偶校验。 • 若SM2 = 1,只有第9位是“1”时,才把数据放入SBUF,并产生中断。

  37. 波特率计算 • 方式0: 固定为 fosc / 12。 • 方式2: • 方式1,3:

  38. 波特率计算 • T1作波特率发生器时,通常工作在方式2,避免繁琐的重复装入初值,以及由此带来的定时误差。 • 因为定时器初值只能为整数,造成生成的波特率有一定误差。 • 如果要稳定通信,波特率误差要控制在2%以下。 • 可以通过调整单片机晶振频率的方法来消除误差。

  39. 波特率计算 • 时钟分别为12MHz和11.0592MHz情况下,使用T1方式2产生9600bps波特率。 • 误差 8.5% • 误差 0

  40. 谢谢!

More Related