单片机C语言.ppt_第1页
单片机C语言.ppt_第2页
单片机C语言.ppt_第3页
单片机C语言.ppt_第4页
单片机C语言.ppt_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务1简易电子计分器 任务2方波信号发生器 任务3简易频率计 任务4主从呼叫器 任务1简易电子计分器 1 了解单片机中断概念及工作过程 2 掌握单片机外部中断相关寄存器的设置方法 3 掌握单片机外部中断初始化过程 中断处理及应用 4 能够设计并制作简易电子计分器 在举行一些体育比赛时 如乒乓球 羽毛球 排球和篮球等球类比赛 经常会用到电子计分器来给参赛的每一支队伍进行计分 多功能的电子计分器不仅可以显示比赛双方的分数 而且还可以显示获胜局数及倒计时等功能 本任务主要完成对比赛选手的计分功能 使用两位LED数码管显示参赛者的得分信息 并手动实现加 减分功能 由于是两位计数显示 因此最大计数值为99 当超过99时 重新从0开始计数 具体控制要求如下 1 单片机的P0口依次连接两位一体共阴数码管a g端 分别用于显示计数值的十位和个位 2 单片机的P2口任选两个端口作为两位共阴数码管的位选端 3 单片机的P3口作为按键输入端 按键具体功能见下表 一 中断的概念 当CPU正在处理某项事务时 如果外界或者内部发生了紧急事件 要求CPU暂停正在处理工作而去处理这个紧急事件 待处理完后 再回到原来中断的地方 继续执行原来被中断的程序 这个过程就成为中断 二 中断源 产生中断的请求源称为中断源 MCS 51单片机的中断源可分为两类 外部中断和内部中断 1 外部中断源外部中断0 INT0 来自P3 2引脚 采集到低电平或者下降沿时 产生中断请求 外部中断1 INT1 来自P3 3引脚 采集到低电平或者下降沿时 产生中断请求 2 内部中断源定时器 计数器0 T0 定时功能时 计数脉冲来自片内 计数功能时 计数脉冲来自片外P3 4引脚 发生溢出时 产生中断请求 定时器 计数器1 T1 定时功能时 计数脉冲来自片内 计数功能时 计数脉冲来自片外P3 5引脚 发生溢出时 产生中断请求 串行口 为完成串行数据传送而设置 单片机完成接受或发送一组数据时 产生中断请求 MCS 51单片机内部有5个中断源 但对于8052系列的单片机内部则增加了一个定时 计数器2 T2 的中断 即有6个中断源 三 中断特殊功能寄存器 IT0和IT1 外部中断0和1触发方式控制位IT0 IT1 1脉冲触发方式 下降沿有效 IT0 IT1 0电平触发方式 低电平有效 IE0和IE1 外部中断0和1请求标志位 1 定时 计数器控制寄存器 TCON 对脉冲触发方式的外部中断 CPU响应中断后硬件自动清除中断请求标志IE0和IE1 但对电平触发方式的外部中断 由于CPU响应中断速度较快 容易导致连续多次中断 因此 选择外部中断触发方式时 最好选择下降沿触发方式 2 中断允许控制寄存器 IE EA 中断允许总控制位EA 0中断总禁止 禁止所有中断 EA 1中断总允许 总允许后中断的禁止或允许由各中断源的中断允许控制位进行设置 EX0和EX1 外部中断0和1允许控制位EX0 EX1 0禁止外部中断0 1 的中断 EX0 EX1 1允许外部中断0 1 的中断 ET0和ET1 定时 计数器0和1中断允许控制位ET0 ET1 0禁止定时 计数器T0 T1 的中断 ET0 ET1 0允许定时 计数器T0 T1 的中断 ES 串行中断允许控制位ES 0禁止串行中断 ES 1允许串行中断 ET2 定时 计数器2中断允许控制位 8052系列单片机使用 3 中断优先级控制寄存器 IP PX0 外部中断0优先级设定位 PT0 定时 计数器T0优先级设定位 PX1 外部中断1优先级设定位 PT1 定时 计数器T1优先级设定位 PS 串行中断优先级设定位 PT2 定时 计数器T2优先级设定位 四 中断入口地址及响应过程 关于中断的优先级有三条原则 1 CPU同时接收到几个中断时 首先响应优先级最高的中断请求 2 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断 3 正在进行的低优先级中断服务 能被高优先级中断请求中断 五 C51中的中断函数 1 中断号 在C51中 每一个中断源都有一个指定的中断号 中断服务函数中必须声明对应的中断号 用中断号确定该中断服务程序是哪个中断所对应的中断服务程序 2 中断函数的格式 函数类型函数名 参数 interrupt中断号 using寄存器组号 其中 函数类型和参数都取为void using寄存器组号 用于指定该中断函数内部使用的工作寄存器组 寄存器组号的取值为0 3 可以省略不作设置 3 中断服务程序的执行 外部中断设置工作示意图 4 外部中断初始化流程 一 设计并绘制简易电子计分器电路原理图 二 程序设计 1 TCON的设置 TCON 0 x05 字节操作 选择下降沿触发方式有效或IT1 1 IT0 1 位操作 TCON的初始化设置如下 2 IE的设置 IE的初始化设置如下 IE 0X85 开中断总允许 EA 开外部中断0和1的中断或EA 1 EX1 1 EX0 1 位操作 本次设计不需要考虑中断优先的问题 因此可以省去对中断优先控制寄存器 IP 的设置 即默认外部中断 优先 在编程对中断相关控制寄存器进行设置时 既可以采用字节赋值方式 也可以采用位操作的方式 a 外部中断0服务程序 b 主程序 c 外部中断1服务程序 根据上述设计思路编写的完整程序 三 程序输入及仿真运行 四 制作硬件电路并调试 单击此处返回目录 任务2方波信号发生器 1 了解定时 计数器的工作原理 2 掌握定时 计数器相关寄存器的设置方法 3 掌握定时器中断的初始化过程及在不同工作方式下初始值的计算方法 4 能够设计并制作方波信号发生器 单片机内部含有定时器和计数器 主要用于延时 定时控制 外部计数和检测等 利用单片机定时器输出指定周期的方波 既可作为其他电路的信号源 也可直接驱动音响设备 用来制作报警器和简易电子琴等电子产品 本任务将利用定时器中断方式产生如下图所示周期为1s的等宽连续正方波脉冲 并在P1 0口输出 单片机系统的外接晶振频率fOSC 12MHz 一 定时 计数器简介 在51系列单片机内部有两个16位可编程的定时 计数器 简称为T0和T1 它们的核心部件都是16位加法计数器 当计数计满回零时 自动产生溢出发出中断请求 表示定时时间已到或计数已满 使用时可通过编程设置为定时或计数模式 定时 计数器的寄存器是一个16位的寄存器 由两个8位寄存器组成 高8位为TH 低8位为TL 见下表 二 定时 计数器的控制寄存器 TCON TR0和TR1 定时器运行控制位TR0 TR1 0定时器 计数器0 1 停止工作TR0 TR1 1定时器 计数器0 1 开始工作 TF0和TF1 T0和T1的溢出标志位 对定时 计数器T0 T1的中断 CPU响应中断后 硬件自动清除中断请求标志TF0和TF1 如果编程中不使用中断服务程序 也可在主程序中利用查询中断请求标志TF0和TF1的状态 完成相应的中断功能 三 定时 计数器的方式控制寄存器 TMOD GATE 定时器动作开关控制位 也称门控位GATE 1时 当外部中断引脚 出现高电平且控制寄存器TCON中TR0 TR1 控制位为1时 才启动定时器T0 T1 GATE 0时 只要控制寄存器TCON中TR0 TR1 控制位为1 便启动定时器T0 T1 定时 计数器模式选择位 M1 M0 工作方式选择位 TMOD不能位寻址 只能是整个字节进行设置 如程序中TMOD 0X01 语句就是对TMOD进行整体设置 CPU复位时TMOD所有位清0 四 定时 计数器的工作方式 1 工作方式1 该模式是一个16位定时 计数方式 最大计数值为216 65536 寄存器THx和TLx是以全16位参与操作 当要定时任意时间时 采用预置数的方法 THx赋高8位 TLx赋低8位 定时工作方式时 定时时间为 T定 216 初值 机器周期Tm 例 若单片机晶振频率fosc 12MHz 使用定时器T0工作在方式1下 定时50ms中断 试计算寄存器TH0和TL0装入的初始值 解 已知fosc 12MHz 则 振荡周期Tc 1 12MHz 1 12 s机器周期Tm 12Tc 12 1 12 1 s因为T定 216 初值 Tm50000 s 65536 初值 1 s所以初值 65536 50000 15536 3CB0H 在C51程序设计时 一般将装入初值以表达式形式赋值 这样在编译程序时会自动将计算结果换算成对应的数值赋值给THx和TLx 其初始值设置命令为 THx 216 T fOSC 12 256 65536 T fOSC 12 256 TLx 216 T fOSC 12 256 65536 T fOSC 12 256 2 工作方式0 该模式是一个13位定时 计数方式 最大计数值为213 8192 由寄存器THx的8位和TLx的低5位构成 TLx高3位未用 工作原理与方式1一样 定时工作方式时 定时时间为 T定 213 初值 机器周期Tm 在C51程序设计中 其初始值设置命令为 THx 213 T fOSC 12 32 8192 T fOSC 12 32 TLx 213 T fOSC 12 32 8192 T fOSC 12 32 3 工作方式2 该模式是一个8位自动装入定时 计数方式 最大计数值为28 256 TLx用作8位计数器 THx用作保存计数初值 在初始化编程时 TLx和THx由指令赋予相同的初值 一旦TLx计数溢出 则将TFx置 1 同时将保存在THx中的计数初值自动重装入TLx 继续计数 THx中的内容保持不变 即TLx是一个自动恢复初值的8位计数器 定时工作方式时 定时时间为 T定 28 初值 机器周期Tm 在C51程序设计中 其初始值设置命令为 THx 256 T fosc 12 TLx 256 T fosc 12 4 工作方式3 该模式下定时 计数器T0被分成两个独立的8位定时 计数器TL0和TH0 其中 TL0既可作定时器 又可作计数器使用 而TH0则被固定为一个8位定时器 不能作外部计数模式 T0被分成两个来用 那就要两套控制及溢出标记 TL0还是用原来的T0的标记 而TH0则使用定时器T1的状态控制位TR1和TF1 TL0定时工作方式时 定时时间为 T定 28 初值 机器周期Tm 五 定时 计数器的初始化 一 设计并绘制方波信号发生器电路原理图 二 程序设计 1 定时中断相关SFR的设置 1 TMOD的设置 TMOD的初始化设置如下 TMOD 0 x01 选择定时器T0工作于方式1 2 TCON的设置 TCON的初始化设置如下 TCON 0 x10 字节操作 启用定时器T0或TR0 1 位操作 3 IE的设置 IE的初始化设置如下 IE 0 x82 字节操作 开中断总允许 EA 开定时器T0中断 或EA 1 ET0 1 位操作 2 定时时间的计算 本设计选择定时器T0工作于方式1 设置每次定时基准为50ms 定时时间到则计数1次 连续定时10次 刚好为0 5s 500ms 然后每隔0 5s再对P1 0口输出取反一次 每次定时中断50ms时计数初始值为 TH0 65536 50000 256 高八位的初始值TL0 65536 50000 256 低八位的初始值 主程序及中断服务程序设计流程图 根据上述设计思路编写的完整程序 三 程序输入及仿真运行 四 制作硬件电路并调试 单击此处返回目录 任务3简易频率计 1 了解定时器与计数器之间的关系 2 掌握计数器中断的初始化编程 3 能够设计并制作简易频率计 利用AT89S51单片机的T0 T1定时 计数功能设计一个简易频率计 完成对输入信号频率的测量 测量结果通过六位数码管动态显示出来 测量信号频率范围设置在0 100kHz 具体控制要求如下 1 P0口依次与一个六位一体共阴数码管的码段端相连 用作频率的输出显示 2 P2口连接六位一体共阴数码管的位选端 控制数码管动态显示时的位选 3 单片机的P3 4 T0 口作为被测信号的输入口 一 频率测量原理 用定时器T1来产生一个1s的时钟基准 同时计数器T0对由P3 4口输入的脉冲信号的下降沿进行累积计数 1s定时到 则其频率 M Hz 二 计数器相关SFR 1 方式控制寄存器 TMOD TMOD的初始化设置如下 TMOD 0 x15 T0计数功能 工作于方式1 T1定时功能 也工作于方式1 2 定时 计数器的控制寄存器 TCON TCON的初始化设置如下 TCON 0 x50 启用定时 计数器T0 T1或TR0 1 T0开始计数 TR1 1 T1开始定时 3 中断允许控制寄存器 IE IE的初始化设置如下 IE 0 x8a 开中断总允许 EA 开定时 计数器T0 T1中断或EA 1 ET0 1 ET1 1 一 设计并绘制简易频率计电路原理图 二 程序设计 c 计数中断T0服务程序 a 主程序 b 定时中断T1服务程序 本次设计仅用计数方式对P3 4引脚输入的脉冲进行计数 当在频率较高时测量的相对误差较大 因此主要用于低频测量 如能综合采用计数法和测周法 同步法测量方式 做到脉冲测量时的启停同步 无计数误差 将大大提高测量的精度 根据上述设计思路编写的完整程序 三 程序输入及仿真运行 四 制作硬件电路并调试 单击此处返回目录 任务4主从呼叫器 1 了解串行通信的基本概念及通信方式 2 掌握串口不同工作方式下波特率的计算 3 掌握串口中断初始化及服务程序的编写 4 能够设计并制作主从呼叫器控制系统 工业控制中 用户常常使用单片机的串口通信功能实现与上位机的信息交换 本任务通过设计一套主从呼叫器 包含主机 从机两部分 来演示单片机的串口通信过程 主机 从机 其具体控制要求为 1 主机一台 安装在主控室 从机一台 放置在被控室中 2 从机设置四个呼叫键 通过按键可使从机向主机发送呼叫信号 主机利用一位数码管显示从机呼叫号 当从机有呼叫信号时指示灯点亮 并且向主机发送键值 3 主机监视人员看到从机的呼叫信号后 可按下回应键 向从机回送信号并灭从机呼叫指示灯 告知从机已收到呼叫信号 并关闭主机上的显示信息 一 通信的基本概念 并行通信示意图 串行通信示意图 计算机与外部设备或计算机与计算机之间的信息交换称为通信 通信可分为并行通信和串行通信两种基本方式 二 串行通信的基本方式 1 异步通信 起始位 位于数据帧的开头 占1位 为0 低电平 表示发送端开始发送一帧数据 有效数据位 紧跟起始位后 低位在前 高位在后 数据位共8位 奇偶校验位 紧跟数据位后 占1位 视有效数据位中1的个数是奇数还是偶数由系统自动确定 偶数 0 奇数 1 停止位 位于数据帧的末尾 占一位 为1 高电平 表示一帧数据发送完毕 2 同步通信 同步通信则要求发送设备和接收设备使用完全相同的时钟频率 使双方达到完全同步 同步通信以一串字符为一个传送单位 字符间不加标识位 在一串字符开始时用同步字符标识 硬件要求高 通信双方须严格同步 同步通信的传输速率高 可达56KB s或更高 但需要保证发送设备和接收设备的完全同步 因此硬件设备比较复杂 异步通信速度比较慢 但是设备简单 使用方便 对通信设备要求较低 收 发设备的时钟基本同步即可 可远距离传输数据 应用较广 3 数据通信形式 串行通信中的数据通信形式有三种 分别为单工通信 半双工通信 全双工通信 单工通信 通信双方 一方只能发送 另一方只能接收 传送方向是单一的 半双工通信 通信双方只有一根传输线 共地 但任何一方都可以发送 当一方发送时 另一方只能接收 全双工通信 需要通信双方连接两条传输线 共地 一条是将数据从甲方送到乙方 另一条是从乙方送到甲方 允许双向同时发送 51系列单片机的串行通信属于全双工通信方式 三 单片机双机异步通信系统 四 串口控制相关寄存器 1 串行数据缓冲器 SBUF SBUF是串行口缓冲寄存器 包括发送寄存器和接收寄存器 以便能以全双工方式进行通信 在逻辑上 SBUF只有一个 它既表示发送寄存器 又表示接收寄存器 具有同一个单元地址99H 但在物理结构上 则有两个完全独立的SBUF 一个是发送缓冲寄存器SBUF 另一个是接收缓冲寄存器SBUF 指令 SBUF ACC 启动一次数据发送 可向SBUF再发送下一个数指令 ACC SBUF 完成一次数据接收 SBUF可再接收下一个数 2 串行口控制寄存器 SCON SM0 SM1 串行口工作方式选择位 SM2 在方式2 3时 用作多机主 从串行通信时的控制位 REN 允许串行口接收控制位 相当于串行通信的开关 REN 0禁止串行口接收由RXD P3 0 口输入的串行数据 REN 1允许串行口接收由RXD P3 0 口输入的串行数据 TB8 在方式2 3时 是发送的第9位数据 需要时由软件置位或复位 RB8 在方式2 3时 是接收到的第9位数据 在方式1时 RB8是接收到的停止位 方式0时 不使用RB8 TI 发送中断标志位 数据发送结束后 由硬件对其置位 TI 1 可由软件查询TI位标志 也可以向CPU申请中断 但都必须由软件清0 RI 接收中断标志位 接收数据结束后 由硬件对其置位 RI 1 可由软件查询RI位标志 也可以向CPU申请中断 但都必须由软件清0 在AT89S51中 串行发送中断TI和接收中断RI的中断号同是interrupt4 因此在中断程序中必须由软件查询TI和RI的状态才能确定究竟是接收还是发送中断 进而作出相应的处理 单片机复位时 SCON所有位均清0 3 电源控制寄存器 PCON SMOD位为波特率倍增位 当SMOD 1时 串行口波特率增加一倍 当SMOD 0时 串行口波特率为设定值 当系统复位时 SMOD 0 五 串行口的工作方式 1 方式0 串行口工作在方式0时 作同步移位寄存器使用 以8位数据为一帧 无起始位和停止位 串行数据由RXD P3 0 端输入或输出 同步移位脉冲由TXD P3 1 端输出 这种工作方式常用于扩展I O口中 外接移位寄存器实现数据并行输入或输出 工作在方式0时 波特率固定为fosc 12 即每个机器周期输入或输出一位数据 1 数据发送 当数据写入SBUF后 从RXD端输出 在移位脉冲的控制下 逐位移入74LS164 74LS164完成数据的串并转换 当8位数据全部输出后 由硬件将TI置 1 发出中断请求 数据由74LS164并行输出 其接口电路如下图所示 RXD端接74LS164的串行输入端A B TXD接74LS164的时钟脉冲输入端CLK P2 7接74LS164的清零端 2 数据接收 要实现接收数据 必须首先把SCON中的允许接收位REN置 1 当REN为1时 数据在移位脉冲的控制下 从RXD端输入 当接收完8位数据时 将接收中断标志位RI置 1 发出中断请求 2 方式1 方式1为10位异步串行通信方式 其帧格式为1个起始位 8个数据位和1个停止位 其波特率可调 1 数据发送 数据写入SBUF后 就启动发送器开始发送 此时由硬件加入起始位和停止位 构成一帧数据 由TXD串行输出 发送完一帧数据后 将TI置 1 通知CPU可以进行下一个数据的发送 2 数据接收 REN 1且接收到起始位后 就开始接收一帧数据 当停止位到来后 把停止位送入RB8中 并置位RI 通知CPU接收到一个数据 将其从SBUF中取走 3 波特率确定 例 串口通信波特率为9600bit s 晶振频率fosc 11 0592MHz 使用定时器T1工作在方式2产生波特率 SMOD 0 则计数器初值N 解 已知fosc 12MHz 波特率 9600bit s SMOD 0 T1工作于方式2 因为 所以 即 TH1 0 xfd TL1 0 xfd 3 方式2 方式2为11位异步串行通信方式 其帧格式为1个起始位 9个数据位和1个停止位 与方式1相比增加了一个第9位数据位 D8 其功能由用户确定 是一个可编程位 1 数据发送 发送前先根据通信协议用指令设置好SCON中的TB8 然后将要发送的数据 D0 D7 写入SBUF中 而D8位的内容则由硬件电路从TB8中直接送到发送移位寄存器的第9位 并以此来启动串行发送 一帧发送完毕 将TI位置 1 其他过程与方式1相同 2 数据接收 方式2的接收过程也与方式1基本类似 所不同

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论