单片机原理及应用 课程教案
德州学院
教 案
2023~2024年第一学期
学院 | 能源与机械 |
教学系 | 机械 |
课 程 名 称 | 单片机原理及应用 |
授 课 班 级 | 22机自本 |
主 讲 教 师 | 张俊亮 |
职 称 | 教授 |
二○二四年二月
| 单片机基础知识 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 22机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.1能够基于科学原理、方法并通过文献检索与分析,针对机械设计、制造及其自动化领域的复杂工程问题,拟定研究路 线,制定研究方案。 | ||
教学重点 | 1、单片机的概念及特点 2、单片机中数的表示和运算方法及逻辑门电路 | |||
教学难点 | 1、数制及其转换 2、数值间的各种运算 | |||
学情分析 | 1、同学们已经学习了计算机文化基础课程,能够熟练使用计算机,为本课的学习和分析打下了良好的基础。 2、本届学生没有学习C语言程序设计,在编程过程中的难度增大。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、在生活中可以见到哪些单片机控制的电器? 2、单片机有什么样的特点? | ||||
〖新课讲述〗 思政内容:科技为生活服务,生活中处处都有科技的应用,而单片机更是在生活里有很多用途。学生进行科创竞赛,也要贴近生活,从生活中得到启发和灵感。 一、单片机概述 1、什么是单片机 分支一:通用微型计算机系统,为满足众多普通应用场合需要而发展的一类个人计算机系统。 分支二:嵌入式计算机系统,能嵌入到对象体系中,以实现对象体系智能化为目的的一类专用计算机系统。 单片计算机将通用微计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统。 2、为什么要学单片机 (1)单片机是高技术领域,可实现机电产品的升级换代。 (2)单片机人才社会需求广泛,具有很好的就业前景。 (3)单片机知识与具体专业技术相结合可产生更大的创造力和发展潜力。 举出生活中应用的几个实例。 3、怎样学习单片机 Proteus单片机仿真软件和Keil集成开发环境软件。 二、基础知识 1、数制定义——二、十、十六进制数的概念 (1)十进制 符号集:0~9; 规则:逢十进一;十进制数的后缀为D但可省略;十进制数可用加权展开式表示,其中,10为基数,0~9为各位加权数,其一般表达式为: (2)二进制 符号集:0、1;
(3)十六进制 符号集:0~9、A~F; 规则:逢十六进一;十六进制数的后缀为H且不可省略;十六进制数可用加权展开式表示。 2、数制转换——二、十、十六进制数的换算 (1)二进制转换成十进制 转换规则:按二进制表达式展开,按十进制运算求和。 (2)十六进制转换成十进制 转换规则:按十六进制表达式展开,按十进制运算求和。 (3)二进制与十六进制数之间的转换 从低位起由右到左,每4位二进制数对应1位十六进制数。 (4)十进制整数转换成二、十六进制整数 转换规则:“除基取余”。十进制整数不断除以转换进制基数,直至商为0。每除一次取一个余数,从低位排向高位。 3、有符号数—二进制负数的表示方法 有符号数:最高位为符号位, “0”表示“+” ,“1”表示“-”,其余为数值位。 无符号数:最高位不作为符号位,全部为数值位。 符号数有3种编码形式:原码、反码和补码 4、位-字节-字——二进制基本概念 位 (bit):二进制数中的一位,其值不是“1”,就是“0”。 字节 (byte):一个8位的二进制数为一个字节 字 (word):51单片机的字由2个字节组成,16位字长。 半字节:4位二进制 5、ASCII码——字符的二进制表示方法 字母和字符的二进制数表示。 6、BCD码——十进制数的二进制表示方法 用二进制代码表示的十进制数。 7、基本逻辑门电路 ——与、或、非、与非 数字计算机靠基本逻辑门电路实现二进制数的运算,其中高电平和低电平分别代表1和0。 4种最基本的逻辑关系如下:与逻辑、或逻辑、非逻辑、与非逻辑 | ||||
〖巩固练习〗 例如:39转换成二进制数 208转换成十六进制数 | ||||
〖课堂小结〗 1、常见数制有二进制、十进制、十六进制,数制之间可以相互转换。 2、计算机由若干逻辑门电路组成,基本逻辑门电路包括与门、或门、非门、异或门、与非门、或非门。 | ||||
〖作业〗 课本:第一章课后“思考与练习题1”中的单项选择题。 | ||||
〖板书设计〗
2、二进制数
6、二进制转十六进制 7、十六进制转二进制 |
| MCS-51单片机结构 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022级机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.1能够基于科学原理、方法并通过文献检索与分析,针对机械设计、制造及其自动化领域的复杂工程问题,拟定研究路 线,制定研究方案。 | ||
教学目标2:掌握Proteus软件及仿真技术。 | 4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的有效结论 | |||
教学重点 | 1、51单片机内部包括的基本功能部件。 2、51单片机外部引脚排列及其功能。 | |||
教学难点 | 1、程序状态寄存器PSW中8个位各自的作用。 2、51单片机外部引脚中控制引脚的命名和作用。 | |||
学情分析 | 1、同学们已经学习了数制的表示方式和基本逻辑运算,51单片机中PSW寄存器各个位的值虽然由硬件设置,但计算过程可以由前面知识推导验算。 2、有学生使用过51单片机,但没有系统学习其内部结构和外部引脚功能。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、电脑根据功能可以分为哪些部件,联想一下单片机应该有哪些部件? 2、51单片机外部引脚怎样排列? | ||||
〖新课讲述〗 思政内容:单片机中每个元器件都有其自身的功能,缺一不可;工作中的每个岗位都有其作用,没有高低贵贱之分,并且缺一不可。 一、SCM SCM是将通用微计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统。 SCM = CPU+OSC+ROM+RAM+T/C+INT+ BEC+I/O+UART 1、CPU CPU = 控制器 + 运算器 控制器的用途:统一指挥和控制各单元协调工作 控制器的任务:从ROM中取出指令→译码→执行指令 控制器的组成:程序计数器PC、数据指针寄存器DPTR、… 2、运算器 运算器的用途:对数据进行算术运算和逻辑操作 运算器的任务:计算缓存器内容→结果暂存→修改运行标志 运算器的组成:累加器ACC、程序状态字寄存器PSW、… 3、寄存器 (1)程序计数器PC 指向ROM存储单元的地址指针,16位,可寻址范围216,永远存放着下一条指令的首地址,具有自动加“1” 功能。 (2)数据指针寄存器DPTR 指向ROM或RAM存储单元的地址指针,16位,可拆为2个8位的独立寄存器DPL和DPH。 (3)累加器A 存放操作数或中间运算结果的寄存器,8位,其值可由指令修改。 (4)程序状态字寄存器 AC(PSW.6)——辅助进位标志 F0(PSW.5)和 F1(PSW.1) ——用户标志位 RS1(PSW.4)和RS0(PSW.3)——工作寄存器组指针 OV(PSW.2) ——溢出标志 P(PSW.0) ——奇偶标志位 二、MCS-51引脚及功能
1、电源及晶振引脚 VCC (40脚):+5V电源引脚 VSS (20脚):接地引脚 XTAL1 (19脚);外接晶振引脚(内置放大器输入端) XTAL2 (18脚):外接晶振引脚(内置放大器输出端) 2、控制引脚 RST/VPD (9):复位/ 备用电源引脚 ALE/PROG (30):地址锁存使能输出/ 编程脉冲输入 EA/ VPP (31):外部ROM允许访问/ 编程电源输入 3、端口引脚 P0.0~P0.7(39~32脚)——P0口 P1.0~P1.7(1~8脚)——P1口 P2.0~P2.7(21~28脚)——P2口 P3.0~P3.7(10~17脚)——P3口 8只/组×4 组= 32 只引脚 P0口~P3口是单片机对外联络的重要通道。 | ||||
〖巩固练习〗 实例:描述一下本单片机系统的构成。 | ||||
〖课堂小结〗 1、单片机的基本功能部件包括CPU、RAM、ROM、定时/计数器和可编程并行I/O口。 2、P0口~P3口都可以作为通用输入/输出口使用。 | ||||
〖作业〗 仿真实验:课本257页“实验3 指示灯循环控制”。 | ||||
〖板书设计〗
2、辅助进位标志AC 3、溢出标志OV 4、奇偶标志位P 若A =1001 1111,则P=0 若A =1100 0001,则P=1 |
| MCS-51的存储器结构、复位、时钟和时序 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022级机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.1能够基于科学原理、方法并通过文献检索与分析,针对机械设计、制造及其自动化领域的复杂工程问题,拟定研究路 线,制定研究方案。 | ||
教学重点 | 1、51单片机的程序、数据存储器结构。 2、51单片机复位电路、时钟电路、时序概念。 | |||
教学难点 | 1、片内RAM、片内ROM、片外RAM、片外ROM编址方式。 2、使用时序图表示时序。 | |||
学情分析 | 1、同学们已经学习了单片机的基本组成部件,对其中存储器的大小和编址方式了解不深入。 2、本届本专业学生没有学习过《数字电子技术》,分析时序图有一定困难。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、在存储器里找到位置存放程序或者代码时,编址方式是怎样的? 2、给大家一个时序图,怎样去解读它? | ||||
〖新课讲述〗 思政内容:在相互合作的工作中,时间节点概念非常重要,比如布置毕业论文任务时给出的计划安排,需要学生在时间节点前完成各项任务,否则无法按照计划继续执行,影响最后的毕业论文的完成。 一、存储器划分方法 普林斯顿结构:RAM和ROM统一编址 哈佛结构:RAM和ROM分别编址 51单片机采用哈佛结构,共有4个物理存储空间:片内RAM、片内ROM、片外RAM、片外ROM。 1、程序存储器 作用:存放程序、表格或常数,具有非易失性。 方案1:4 KB以内的地址在片内ROM,大于4KB的地址在片外ROM中(图中折线),两者共同构成64KB空间; 方案2:片内ROM被禁用,全部64KB地址都在片外ROM中(图中直线)。 注意:2种组合方案由EA引脚的电平状态决定:EA=1时为方案1, EA=0时为方案2。 2、片内数据存储器(RAM) 作用:存放程序运行结果。 (1)低128B( 00H~7FH ):普通RAM区 ①工作寄存器区(00H~1FH) 每个单元都有1个8位地址(字节地址);每个单元都有1个寄存器名称(R0~R7), 32个单元分为4组(第0 ~ 第3组),CPU只能选一组为当前工作寄存器组。 ②可位寻址区(20H~2FH) 共有16个存储单元; 每个单元都有一个字节地址;每个单元都有8个不同的位地址;共有128个位地址;可以字节地址和位地址两种方式存取数据。 ③用户RAM区(30H~7FH) 有80个存储单元;每个单元都有一个字节地址,但没有位地址,也没有寄存器名。 (2)高128B (80H~FFH):特殊功能寄存器区 每个存储单元都有一个字节地址,但只有其中21个单元可以使用,并有相应寄存器名称。 二、复位、时钟与时序 1、复位 使单片机恢复原始默认状态的操作。 复位条件:在RST/VPD引脚端出现:≥10ms时间的高电平(≥3V)状态。 复位方式:上电复位、按键复位、复合复位。 2、时钟 单片机需要统一的时钟控制,其时钟系统可有两种方案:内部OSC + 外部时钟电路,或内部OSC + 外部时钟脉冲。
3、时序 (1)时序是对象(或引脚、事件、信息)间按照时间顺序组成的序列关系。 (2)时序可以用状态方程、状态图、状态表和时序图4种方法表示,时序图最为常用。 (3)时序图亦称为波形图或序列图,纵坐标表示不同对象的电平,横坐标表示时间(从左往右为时间正向轴),通常坐标轴可省略。 实例: • RS和R/W端首先变为低电平; • 随后D0~D7端出现有效数据; • R/W低电平tsp1之后,E端出现宽度为tpm的正脉冲; • E脉冲结束并延时tHD1后,RS和R/W端恢复高电平; • E脉冲结束并延时tHD2后,D0~D7端的本次数据结束; 随后D0~D7端出现新的数据,但下次E脉冲应在tc时间后才能出现。 4、时钟的度量单位 时钟周期(或节拍)P、状态周期S、机器周期、指令周期。 • 1个状态周期(S)= 2个节拍(P) • 1个机器周期 = 6个状态(S) =12个节拍(P) • 1个指令周期约为1~4个机器周期 5、单片机常用时序逻辑元件—D触发器(或边沿D触发器) (1)正边沿D触发器
特性: 只在时钟脉冲CLK上升沿到来的时刻,才采样D端的输入信号,并据此立即改变Q和/Q端的输出状态。而在其它时刻,D与Q是信号隔离的。 (2)负边沿D触发器
特性: 只在时钟脉冲CLK下降沿到来的时刻,才采样D端的输入信号,并据此立即改变Q和/Q端的输出状态。而在其它时刻,D与Q是信号隔离的。 | ||||
〖巩固练习〗 实例:51单片机访问外部RAM时序 | ||||
〖课堂小结〗 1、51单片机有4个物理存储空间:片内RAM、片内ROM、片外RAM、片外ROM。。 2、程序存储器编址方式有两个方案,4 KB以内的地址在片内ROM,大于4KB的地址在片外ROM中是方案1;片内ROM被禁用,全部64KB地址都在片外ROM中是方案2。两种组合方案由EA引脚的电平状态决定:EA=1时为方案1, EA=0时为方案2。 3、复位使单片机恢复原始默认状态的操作;单片机时钟系统可有两种方案:内部OSC + 外部时钟电路,或内部OSC + 外部时钟脉冲;时序是对象(或引脚、事件、信息)间按照时间顺序组成的序列关系,时序图最为常用。 | ||||
〖作业〗 仿真实验:课本35页“思考与练习题2”中单项选择题(除去关于P0~P2的问题)。 | ||||
〖板书设计〗 |
| 并行I/O口 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022级机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.1能够基于科学原理、方法并通过文献检索与分析,针对机械设计、制造及其自动化领域的复杂工程问题,拟定研究路 线,制定研究方案。 | ||
教学重点 | 1、P0~P3口的双向作用和基本结构。 2、P0~P3口作用的不同点、结构的差异点。 | |||
教学难点 | 1、P2口可以作为地址线接口。 2、P3口可以实现第二功能。 | |||
学情分析 | 同学们已经学习了51单片机的外部引脚及功能,知道有P0~P3口,但不了解这4个并行I/O口结构和功能上有何不同。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、51单片机I/O口有什么作用? 2、P0~P3口的结构和作用一模一样吗? 3、D触发器的逻辑符号? | ||||
〖新课讲述〗 思政内容:P0~P3口的作用由它们本身的电路结构决定;如同“腹有诗书气自华”、“胸藏文墨虚若谷”,我们需要多读书,多学习,修炼自身的能力和素养。 一、并行I/O口 51单片机有32只I/O引脚,分属于4个端口(P0~P3),可作为并行I/O输入通道。 二、P1口 1、P1.n的通用I/O口工作方式 输出、读引脚、读锁存器 P1.n = 1个锁存器 + 1个场效应管驱动器V + 2个三态门缓冲器 2、作用 (1)P1口具有通用I/O口方式,可实现输出、读引脚(输入)和读锁存器三种功能。 (2)P1口为准双向通用口,作为通用输入口时应先使P1.n→1,作为通用输出口时是无条件的。 三、P3口 1、P3.n的通用I/O口工作方式 输出、读引脚、读锁存器 输出条件:第二输出功能口 → “1”(与非门开锁) 输入条件:Q端和第二输出功能端 → “1”(V管截止) 2、P3口的第二功能方式 第二输入功能、第二输出功能 第二输出功能的条件:Q端 → “1”(与非门开锁) 第二输入功能的条件: Q端和第二输出功能端 → “1”(V管截止) 3、作用 (1)P3口具有通用I/O口方式,可实现输出、读引脚(输入)和读锁存器三种功能。 (2)P3口为准双向通用口,作为通用输入口时应先使P3.n→1,作为通用输出口时应先使第二输出端→1 。 (3)P3口具有第二功能方式,可实现第二输出和第二输入两种功能。 四、P0口 1、P0.n的通用I/O口工作方式 输出、读引脚、读锁存器 输出条件:控制端 → “0”( V2管截止,MUX下通) 输入条件:Q端 → “1”(V1管截止) 2、P0.n的地址/数据分时复用方式 地址/数据输出、数据输入 地址/数据输出的条件:控制端→1 数据输入:CPU自动使Q端→1,控制端→0,故分时复用方式为无条件的真双向口 3、作用 (1)P0口具有通用I/O口方式,可实现输出、读引脚(输入)和读锁存器三种功能。 (2)P0口为准双向通用口,作为通用输入口时应先使P3.n→1,作为通用输出口时应先使第二输出端→1。 (3)作为通用I/O口方式时,需要外接上拉电阻。 (4)P0口具有地址/数据分时复用方式,可实现地址/数据输出、数据输入两种功能。 (5)地址/数据分时复用方式时无需外接上拉电阻。 (6)分时复用方式的数据输入时无需程序写1操作。 五、P2口 1、与P1.n差别 输出控制单元,锁存信号由Q端输出 输出条件:控制端 → “0”( MUX下通) 输入条件:Q端 → “1”(V管截止) 2、P2.n的地址输出口方式 地址输出 地址输出条件:控制端 → “1”( MUX上通) 3、作用 (1)P2口具有通用I/O口方式,可实现输出、读引脚(输入)和读锁存器三种功能。 (2)P2口为准双向通用口,作为通用输入口时应先使P2.n→1,作为通用输出口时应先使控制端→1。 (3)作为通用I/O口方式时,无需外接上拉电阻; (4)P2口具有地址输出方式,可实现地址输出功能。 | ||||
〖巩固练习〗 实例: P0口仿真 | ||||
〖课堂小结〗 1、P0~P3口都可作为准双向通用I/O口,其中只有P0口需要外接上拉电阻。 2、在需要扩展片外设备时,P2口可作为其地址线接口。 3、P0口可作为其地址线/数据线复用接口,此时它是真正的双向口。 | ||||
〖作业〗 仿真实验:课本35页“思考与练习题2”中单项选择题(关于P0~P2的问题)。 | ||||
〖板书设计〗 1、结构 2、功能 |
| C51的程序结构和数据结构 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022级机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 | 1、C51的基本单位函数的结构。 2、C51的变量定义、数据类型、存储类型。 | |||
教学难点 | 1、C51的函数需要死循环功能。 2、C51中特有的bit、sfr、sfr16、sbit定义数据类型关键字。 3、C51中特有的data、bdata、idata、xdata、pdata、code6种存储类型。 | |||
学情分析 | 同学们没有学习《C语言程序设计》,在理解变量名定义、数据类型定义、存储类型定义这些概念时有一定困难,需要先讲解一些C语言基本定义形式。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、C51编程语言的特点?与C的异同点? 2、C51变量的定义格式?包含内容? 3、C51扩充数据类型的语法规则? 4、C51变量的存储空间位置? | ||||
〖新课讲述〗 思政内容:大学课程是一个系统,前面学习的内容是后面学习的基础,无论是哪种课程,都应该认真对待,努力学习,学习没有无用之说。 一、C51程序结构 C51与标准C语言对比相同之处:语法规则、程序结构、编程方法 C51与标准C语言对比不同之处:数据结构、中断处理、端口扩展 二、C51数据结构 1、C51的变量 在C语言编程中,数值可以发生改变的量称为变量。 C变量定义的三要素:变量名、变量存储地址、变量值 C51变量定义的四要素: (1)存储种类 auto(自动型)——变量的作用范围在定义它的函数体或语句块内。执行结束后,变量所占内存即被释放。 extern(外部型) ——在一个源文件中被定义为外部型的变量,在其它源文件中需要通过extern说明方可使用。 static(静态型) ——利用static可使变量定义所在的函数或语句块执行结束后,其分配的内存单元继续保留。 register(寄存器型) ——目前已不推荐使用。 (2)数据类型 a、bit 型——用于定义一个位变量 形式:bit bit_name [= 0或1]; 例如:bit door = 0 ; b、sfr或sfr16型——用于定义SFR字节地址变量 形式:sfr sfr_name = 字节地址常数; 例如:sfr16 sfr_name = 字节地址常数; 例如:sfr P0 = 0x80; //定义P0口地址80H sfr PCON = 0x87; //定义PCON地址87H sfr16 DPTR=0x82; //定义DPTR的低地址82H c、sbit型——用于定义SFR位地址变量 1)将SFR的绝对位地址定义为位变量名 形式:sbit bit_name = 位地址常数; 例如:sbit CY = 0xD7; 2)将SFR的相对位地址定义为位变量名 形式:sbit bit_name = sfr字节地址 ^ 位位置; 例如:sbit CY = 0xD0^7; 3)将SFR的相对位位置定义位变量名 形式:sbit bit_name = sfr_name ^ 位位置; 例如:sbit CY = PSW^7; (3)存储类型 51系列单片机共有6个存储类型(分布在3个逻辑存储空间中) (4)变量名 变量名可以由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,变量名长度随编译系统而定。 变量名具有字母大小写的敏感性,如SUM和sum代表不同的变量。 变量名不得使用标准C语言和C51语言的关键字。 举例: 2、C51的指针 一般定义形式为:数据类型 *指针变量名 [= &被指向变量名]; 例如:int a =’A’; int *p1= &a; C51指针的一般定义形式: 数据类型 [存储类型1] * [存储类型2] 变量名 [=&被指向变量名]; | ||||
〖巩固练习〗 实例: | ||||
〖课堂小结〗 1、C51在数据类型、变量存储方式、输入/输出处理、函数等方面有一定差异。 2、C51在程序结构、语法规则及程序设计方法与标准C语言相同。 | ||||
〖作业〗 仿真实验:课本75页实例1独立按键识别、76页实例2键控流水灯两个实例仿真。 | ||||
〖板书设计〗 例1:unsigned char bdata status_byte; //定义status_byte为无符号字符型自动变量,该变量位于bdata区 例2:unsigned int code unit_id[2]={0x1234, 0x89ab}; //定义unit_id[2]为无符号整型自动变量,该变量位于code区中,是长度为2的数组,且初值为0x1234和0x89ab。 例3:static char m, n; //定义m和n为2个位于data区中的有符号字符型静态变量。 例4:若采用SMALL编译模式,试解释下述定义的含义。 char xdata a = ‘A’; char *ptr = &a; //ptr是一个指向char型变量的指针,它本身位于SMALL编译模式默认的data存储区里,此时它指向位于xdata存储区里的char型变量a的地址。 例5:试解释下述定义的含义 char xdata a = ‘A’; char *ptr = &a; char idata b = ‘B’; ptr = &b; //以char *ptr形式定义的指针变量,既可指向位于xdata存储区的char型变量a的地址,也可指向位于idata存储区的char型变量b的地址(由赋值操作关系决定) 例6:试解释以下指针定义的含义 char xdata a = ‘A’; char xdata *ptr = &a; //ptr是位于data存储区且固定指向xdata存储区的char型变量的指针变量,此时ptr的值为变量a的地址(不能像例2那样再将idata存储区的char型变量b的地址赋予ptr)。 例7:试解释以下指针定义的含义 char xdata a = ‘A’; char xdata *idata ptr = &a; //ptr是固定指向xdata存储区的char型变量的指针变量, 它自身存放在idata存储区中,此时ptr指向位于xdata存储区中的char型变量a的地址。 |
| I/O端口应用—独立按键识别、键控流水灯 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022级机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 | 1、独立按键识别实例中电路图分析、代码分析、实例仿真。 2、键控流水灯实例中电路图分析、代码分析、实例仿真。 | |||
教学难点 | 1、按键、发光二极管与单片机相连,利用程序读取按键状态,控制LED灯。 2、按键、发光二极管与单片机相连,利用程序读取按键状态,控制LED流水灯。 | |||
学情分析 | 同学们学习了单片机的一些理论知识,还没有学习真正的应用实例,独立按键识别、键控流水灯两个实例是学生第一次接触的仿真实例。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、单片机的哪个端口连接按键、LED灯? 2、怎样通过按键控制LED灯? 3、怎样通过按键控制LED流水灯? 4、两个实例硬件连接、代码有何不同? | ||||
〖新课讲述〗 思政内容:本课两个实例在硬件连接上一样,在软件代码上不同,可以实现不同显示效果。 我们在生活中遇到问题,如果无法改变环境条件,就需要在解决方法上改变和突破。 一、基本输入输出单元与编程 基本输出元件:发光二极管(Light Emitting Diode) 基本输入元件:按钮(Button)或开关(Switch) 当按键未按下压时,Px.n端口为高电平;按压按键后为低电平。 二、独立按键识别实例 1、要求 开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯状态保持到按压其它键时为止。 2、硬件连接图 3、程序 void main( ) { char key = 0; //定义按键变量 while(1){ key = P0 & 0x0f; //读取按键状态,高4位清零 if (key != 0x0f) P2 = key; } } //有按键动作时,P0状态值送P2 4、运行效果图 三、键控流水灯实例 1、要求 K1为“启动键”,首次按压K1可产生“自下向上” 的流水灯运动;K2 为“停止键”,按压K2可终止流水灯的运动;K3和K4为“方向键”,分别产生 “自上向下”和 “自下向上” 运动。 思路分析:设立状态标志变量→根据键值修改标志值→根据标志值控制灯的亮灭。 (1)按键动作判断 (P0 & 0x0f)是否等于 0x0f?若是,说明无按键动作,反之则有按键动作。 (2)P2口亮灯编码 char led [ ] = {0xfe,0xfd,0xfb,0xf7}; for (i=0; i<=3; i++){ P2 = led [i]; } //↓移动 for (i=3; i>=0; i-- ) { P2 = led [i]; } //↑移动 (3)修改方向和启停标志值 switch (P0 & 0x0f){ //读取键值 case 0x0e:run=1;break; //K1动作,设run=1 case 0x0d:run=0,dir=0;break;//K2动作,设run=dir=0 case 0x0b:dir=1;break; //K3动作,设dir=1 case 0x07:dir=0;break; //K4动作,设dir=0 } 2、硬件连接图 3、总体关系流程图 4、程序 #include "reg51.h" unsigned char led[]={0xfe,0xfd,0xfb,0xf7};//LED灯的花样数据 void delay(unsigned char time){ //延时函数 unsigned int j=15000; for(;time>0;time--) for(;j>0;j--); } void main(){ bit dir=0,run=0; //标志位定义及初始化 char i; while(1){ switch (P0 & 0x0f){ //读取键值 case 0x0e:run=1;break; //K1动作,设run=1 case 0x0d:run=0,dir=0;break;//K2动作,设run=dir=0 case 0x0b:dir=1;break; //K3动作,设dir=1 case 0x07:dir=0;break; //K4动作,设dir=0 } if (run) //若run=dir=1, 自上而下流动 if(dir) for(i=0;i<=3;i++){ P2=led[i]; delay(200); } else //若run=1,dir=0, 自下而上流动 for(i=3;i>=0;i--){ P2=led[i]; delay(200); } else P2=0xff; } } //若run=0,灯全灭 | ||||
〖巩固练习〗 无 | ||||
〖课堂小结〗 1、本节以发光二极管、开关设备为例介绍单片机I/O口的基本应用。 2、硬件连接相同,可以使用不同代码编程实现不同效果。 | ||||
〖作业〗 仿真实验:课本80页实例4LED数码管显示、81页实例5计数显示器两个实例仿真。 | ||||
〖板书设计〗 无 |
| I/O端口应用—LED数码管显示、计数显示器 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 | 1、LED数码管显示实例中电路图分析、代码分析、实例仿真。 2、计数显示器实例中电路图分析、代码分析、实例仿真。 | |||
教学难点 | 1、共阴极、共阳极数码管常用字符的段码。 2、数码管的拆字显示原理。 | |||
学情分析 | 同学们学习了单片机的LED灯,将7个LED灯连接在一起形成数码管,关于LED灯的原理在数码管中仍适用。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、电梯里的按键显示有什么工作原理? 2、测温枪的显示有什么工作原理? 3、生活中还有哪些使用数码管的地方? | ||||
〖新课讲述〗 思政内容:生活中常见的、容易被忽略的事物都有我们可以学习的地方,只要多观察、多思考。 一、LED数码管原理与编程 LED显示元件——人机交互输出设备,其作用是指示中间运行结果与运行状态。 七段式LED数码管:有7个条形发光二极管和一个小圆点发光二极管。 共阴极型部分字符的显示码(字模)为: 二、LED数码管显示实例 1、要求 在P0口连接一个共阴极数码管,使之循环显示0~9数字,间隔为500循环步。 2、硬件连接图 3、分析 将显示码循环输出到P0口即可实现循环显示。但由于数字0~9的显示段码没有规律可循,需要采取查表方式进行操作。 (1)将显示码按序存放在一个数组中, 顺序号与代表的显示字符相对应(如,char led_mod [ ]={x1,x2,….,xn)。 (2)通过查表语句(如,P0=led_mode[i])输出显示码。 4、程序 #include <reg51.h> //包括一个51标准内核的头文件 char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(unsigned int time){ unsigned int j = 0; for(;time>0;time--) for(j=0;j<125;j++);} void main(void) { char i = 0; while(1){ for(i=0;i<=9;i++) { P0=led_mod[i]; delay(500); } } } 5、运行效果图 三、计数显示器实例 1、要求 根据如下共阴极型数码管电路,编程实现计数显示功能,即以十进制形式显示击键次数,次数大于99后重新由0开始。 思路分析: (1)如何将计数值拆解成个位和十位两个数? (2)如何避免按键压下时被连续计数? 解决:拆解计数值方法 初始化: P2 = P0 = table[0]; (1)取模运算(%10)→个位 P2 = table[count%10]; (2)整除10运算(/10)→十位 P0 = table[count/10]; 2、硬件连接图 3、避免连续计数 方案1:更新后处理连击 方案2:更新前处理连击 4、程序 #include <reg51.H> sbit P3_7=P3^7; //定义计数器端口 unsigned char count =0; //定义计数器 unsigned char code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void main(void) { P0=P2=table[0]; //显示初值00 while(1) { if(P3_7==0){ //检测按键是否压下 count++; //计数器增1 if(count==100) count=0; //判断循环是否超限 P0=table[count/10]; //十位输出显示 P2=table[count%10]; //个位输出显示 while(P3_7==0); } } } //等待按键抬起,防止连续计数 5、运行效果图 | ||||
〖巩固练习〗 无 | ||||
〖课堂小结〗 1、本节以数码管设备为例介绍单片机I/O口的基本应用。 2、由简单的单片机连接1个数码管到复杂的连接多个数码管。 | ||||
〖作业〗 仿真实验:课本84页实例6数码管动态显示、87页实例7行列式键盘编程两个实例仿真。 | ||||
〖板书设计〗 无 | ||||
| I/O端口应用—数码管动态显示、行列式键盘 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 | 1、数码管动态显示原理与编程。 2、行列式键盘原理与编程。 | |||
教学难点 | 1、两个数码管段码并联,位码独立,完成动态显示。 2、行列式键盘检测采用软件扫描查询法。 | |||
学情分析 | 同学们学习了单片机与数码管静态显示接口方式,如果想更高效地使用单片机,需要动态显示接口技术,同样按键需要行列式键盘技术。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、知道古代的“走马灯”吗?原理是什么? 2、动态显示工作原理?特点?编程要点? 3、行列式按键工作原理?特点? 编程要点? | ||||
〖新课讲述〗 思政内容:古代人具有很高的智慧,已经知道制造走马灯,其实是利用“视觉暂留”原理形成的效果,而数码管动态显示也是利用了“视觉暂留”。 一、数码管动态显示原理与编程 (1)静态显示接口 一个数码管的引脚独立占据一根I/O口线。 优点:被显示数据只要送入并行口后就不再需要CPU干预,因而显示效果稳定。 缺点:占用资源较多。 (2)动态显示接口 数码管的输入端(段码线)对应并联在一个IO口上,而每位数码管的公共端(位码线)分别由一位IO线控制;由IO口输出的显示码可被所有数码管收到,但只有满足位码线电平要求的数码管可被驱动。 (3)动态显示编程原理 快速(如10ms)切换段码值和位码值,使每一时刻只有一只数码管被驱动。利用视力暂留特性,可获得连续显示效果。 优点:占用IO口资源较少(节省空间)。 缺点:需要CPU不断进行干预(占用机时)。 二、数码管动态显示实例 1、要求 根据下图共阴极型数码管动态显示电路,编程实现显示字符“L2”的功能。 2、硬件连接图 3、分析 P2→ “0x38”, P3.1→“1”,P3.0 → “0” P2→ “0x5b”, P3.1→“0”,P3.0 → “1” led_mode[ ]={0x38,0x5b} P2←led_mode[0], P3 ←0000 0010B =2 P2←led_mode[1], P3 ←0000 0001B =1
#include <REG51.H> char led_mod[] = {0x38,0x5B}; void delay(unsigned int time); void main() { char led_point = 0; while (1) { P3 = 2 - led_point; P2= led_mod[led_point]; led_point = 1 - led_point; delay(30); } } 5、运行效果图 三、行列式键盘编程原理 1、原理 (1)独立式键盘:电路简单,易于编程,但占用的I/O口线较多,当需要较多按键时可能产生I/O口资源紧张问题。 (2)行列式键盘:将I/O口分为行线和列线,按键跨接在行线和列线上,列线通过上拉电阻接正电源。占用I/O口线少,但软件过程复杂。 (3)行列式键盘编程原理(以P2口接4×4键盘为例) a、扫描输出码 键盘列扫描:各行电平同时置1,各列电平轮流清0。 扫描码:key_scan[] = {0xef, 0xdf, 0xbf, 0x7f}; 写P2: P2=key_scan[i]; b、按键闭合状态判断 键值:按键闭合时从引脚读出的数值。按键闭合前后,所在行线端口电平反转;读P2后,若发现其低4位为f,说明无键压下;反之则相反。 如果 (P2 & 0x0f) = 0x0f →无键压下 如果 (P2 & 0x0f) ≠ 0x0f →有键压下 c、 查找闭合键键号 键号:按照一定规则给按键分配的编号 键值数组 key_buf [] = {0xee, 0xde, 0xbe, 0x7e,0xed, 0xdd, 0xbd, 0x7d, 0xeb, 0xdb, 0xbb, 0x7b,0xe7, 0xd7, 0xb7, 0x77}; 四、行列式键盘编程实例 1、要求 开机黑屏→按下任意按键后,数码管上显示该键的键号(0~F)→若没有新键按下,维持前次按键结果。 2、硬件连接图 3、分析 4、程序 #include <reg51.h> char led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //led显示码 0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71}; char key_buf[] = {0xee, 0xde, 0xbe, 0x7e,0xed, 0xdd, 0xbd, 0x7d,//键值 0xeb, 0xdb, 0xbb, 0x7b,0xe7, 0xd7, 0xb7, 0x77}; char getKey(void) { char key_scan[] = {0xef, 0xdf, 0xbf, 0x7f}; //键扫描码 char i = 0, j = 0; for (i = 0; i < 4 ; i++) { P2 = key_scan[i]; //P3送出键扫描码 if ((P2 & 0x0f) != 0x0f) { //判断有无键闭合 for (j = 0 ; j < 16 ;j++) { if (key_buf[j]==P2) return j; } } } //查找闭合键键号 return -1; //无键闭合 } void main(void) { char key = 0; P0 = 0x00; //开机黑屏 while(1) { key = getKey(); //获得闭合键号 if (key != -1) P0 = led_mod[key]; //显示闭合键号 } } 5、运行效果图 | ||||
〖巩固练习〗 无 | ||||
〖课堂小结〗 1、数码管显示分为静态显示和动态显示两种工作方式,前者数码管引脚独立占据I/O口线,后者所有数码管段码线并联,公共端由1位I/O线控制。 2、数码管分为共阴极和共阳极两种类型,通常将字模存放在数组中,通过查表方式使用。 | ||||
〖作业〗 仿真实验:课本89页思考与练习题4中的单项选择题。 | ||||
〖板书设计〗 无 |
| 中断的概念、中断控制系统、中断处理过程 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 | 1、中断的基本概念、中断控制系统工作原理。 2、中断响应过程、中断编程方法。 | |||
教学难点 | 1、单片机中断系统的硬件组成。 2、中断的产生和响应过程。 3、中断编程特点。 | |||
学情分析 | 同学们已经学习了C51初步应用编程,在这部分内容学习时需要对前面学习的实例进行修改,加入中断的概念,使用中断编程方法完成相同的操作要求。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、中断的概念?中断服务函数与一般函数的区别? 2、中断源、中断请求、中断允许、中断优先、中断触发方式? 3、C51中断函数声明的一般格式? | ||||
〖新课讲述〗 思政内容:本节内容可以与生活中的例子完全吻合,可见知识来源于生活,技术是方便人们生活的科学。 一、中断的概念 1、中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。 中断响应过程:由中断管理系统处理突发事件的过程。 中断源:中断管理系统能够处理的突发事件。 中断请求:中断源向CPU提出的处理请求。 中断函数:针对中断源和中断请求提供的服务函数。 中断嵌套:在中断服务过程中执行更高级别的中断服务。 2、中断过程与调用一般函数过程 相似性:两者都需要保护断点,都可实现多级嵌套等。 差异性: (1)前者是程序设计者事先安排的(断点位置是明确的),而后者却是系统根据工作环境随机决定的(断点位置是随机的)。 (2)主函数与一般函数之间具有主从关系,而主函数与中断函数之间则是平行关系(中断函数只能被系统调用); (3)一般函数调用是纯粹软件处理过程,而中断函数调用却是需要软、硬件配合才能完成的过程。 二、C51数据结构中断控制系统 1、中断源 80C51单片机共有5种中断源: 2、中断向量与中断号 3、中断控制 (1)TCON寄存器 定时/计数器的控制寄存器(Timer/Counter Control Register),字节地址为88H,可位寻址。 (2)SCON寄存器 串口控制寄存器(Serial control register),字节地址为98H,可位寻址。 (3)IE寄存器 中断允许寄存器(Interrupt Enable Register),字节地址为A8H,可位寻址。 (4)IP 寄存器 中断优先级寄存器(Interrupt Priority Registers),字节地址为B8H,可位寻址。 4、优先级原则 (1)高级中断请求可以打断正在执行的低级中断; (2)同级或低级中断请求不能打断正在执行的中断; (3)同级中断源同时提出请求时按自然优先级响应: INT0→ T0 → INT1→T1→TI/RI (4)单片机复位时,IP初值为0——默认所有中断源均为低级中断。 5、实例 (1)要求 单片机开关状态检测,若有按键压下→D1 状态反转。 (2)硬件连接图 (3)程序 (4)运行效果图 | ||||
〖巩固练习〗 无 | ||||
〖课堂小结〗 1、80C51有5个中断源,包括2个外部中断源和3个内部中断源。 2、中断系统有4个控制寄存器:TCON、SCON、IP、IE。 3、CPU中断响应的条件为:有中断源发出中断请求;中断总允许位EA=1;中断源的中断允许位为1。 | ||||
〖作业〗 仿真实验:5.4节实例2、实例3、实例4三个实例仿真。 | ||||
〖板书设计〗 查询方式: #include <reg51.h> sbit p2_0=P2^0; sbit p3_2=P3^2; main(){ p2_0=1; while(1){ if(p3_2==0) { p2_0=!p2_0; } } } 中断方式: #include <reg51.h> sbit p2_0=P2^0; int0_srv () interrupt 0{ p2_0 = !p2_0; } main(){ IT0=1; EX0=1; EA=1; while(1); } |
| 中断的编程和应用举例 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 | 1、中断法扫描行列式键盘实例讲解。 2、中断法键控流水灯实例讲解。 3、验证两级外部中断嵌套效果实例讲解。 | |||
教学难点 | 1、利用中断法代替查询法修改代码。 2、利用查询法扩展外部中断源。 | |||
学情分析 | 同学们已经学习了C51初步应用编程,在这部分内容学习时需要对前面学习的实例进行修改,加入中断的概念,使用中断编程方法完成相同的操作要求。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、怎样将查询法代码修改为中断法代码? 2、中断源优先级决定CPU中断响应顺序? 3、中断触发方式是怎样的? | ||||
〖新课讲述〗 思政内容:将中断法替代查询法,只需知道有中断请求发生才会调用中断函数,很多学习的知识点都是这样,掌握原理、规则,以不变应万变。 一、中断扫描法行列式键盘 1、硬件更改 (1)增加一个4输入与门器件U3→行线分接输入端,输出端接P3.2(INT0); (2)键盘连线改接在P2口。 2、软件更改 (1)主函数中进行中断初始化,中断函数中查找闭合键号并刷新LED显示; (2)每次中断返回前都应将列电平置为全低,行电平置为全高,为下次中断做准备 。 3、程序 #include <reg51.h> char led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //led字模 0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71}; char key_buf[] = {0xee, 0xde, 0xbe, 0x7e,0xed, 0xdd, 0xbd, 0x7d,//键值 0xeb, 0xdb, 0xbb, 0x7b,0xe7, 0xd7, 0xb7, 0x77}; void getKey () interrupt 0{ //中断函数 char key_scan[] = {0xef, 0xdf, 0xbf, 0x7f}; //键扫描码 char i = 0, j = 0; for (i = 0; i < 4 ; i++) { P2= key_scan[i]; //输出扫描码 for (j = 0 ; j < 16 ;j++) { if (key_buf[j]== P2){ //读键值,并判断键号 P0= led_mod[j]; //显示闭合键键号 break; } } } P2=0x0f; //为下次中断做准备 } void main(void) { P0 = 0x00; //开机黑屏 IT0=1; //脉冲触发 EX0=1; //INT0允许 EA=1; //总中断允许 P2 = 0x0f; //为首次中断做准备,列线全为0,行线全为1 while(1); //模拟其他程序功能 } 4、演示效果图 二、中断方式的键控流水灯 1、硬件更改 增加一只4输入与门电路,使按键闭合电平作为外部中断信号。 2、软件更改 将标志位修改功能放在中断函数中进行。 3、程序 #include "reg51.h" char led[]={0xfe,0xfd,0xfb,0xf7};//LED花样数据 bit dir=0,run=0; //全局变量 void delay(unsigned int time); key() interrupt 0{ //键控中断函数 switch (P0 & 0x0f){ //修改标志位状态 case 0x0e:run=1;break; case 0x0d:run=0,dir=0;break; case 0x0b:dir=1;break; case 0x07:dir=0;break; }} void main(){ char i; IT0=1;EX0=1;EA=1;//边沿触发、INT0允许、总中断允许 while(1){ if (run) if(dir) //若run=dir=1,自上而下流动 for(i=0;i<=3;i++){ P2=led[i]; delay(200); } else //若run=1,dir=0,自下而上流动 for(i=3;i>=0;i--){ P2=led[i]; delay(200); } else P2=0xff; }} //若run=0,灯全灭 void delay(unsigned int time){ unsigned int j = 0; for(;time>0;time--) for(j=0;j<125;j++);} 4、运行效果图 三、编程验证两级外部中断嵌套效果 1、编程原理 (1)3只数码管可分别进行字符1~9的循环计数显示,主函数无限计数显示,K0、K1的中断函数采用单圈计数显示。 (2)由于K0的自然优先级高于K1,需将K1的中断级别设为高优先级。 2、连接线路图 3、程序 #include "reg51.h" char led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //led字模 0x7f,0x6f}; //显示字模 sbit D1=P3^0; void delay(unsigned int time){//延时 unsigned char j=255; for(;time>0;time--) for(;j>0;j--);} key0() interrupt 0 { //K0中断函数 unsigned char i; D1=!IE0; //IE0状态输出 for(i=0;i<=9;i++){ //字符0-9循环1圈 P2=led_mod[i]; delay(35000); }P2=0x40; //结束符“-” } key1() interrupt 2 { //K1中断函数 unsigned char i; for(i=0;i<=9;i++){ //字符0-9循环1圈 D1=!IE0; //IE0状态输出 P1=led_mod[i]; delay(35000); }P1=0x40; //结束符“-” } void main(){ unsigned char i; TCON = 0x05; //脉冲触发方式 PX0=0;PX1=1; //INT1优先 D1=1;P1=P2=0x40; //输出初值 IE=0x85; //开中断 while(1){ for(i=0;i<=9;i++){ //字符0-9无限循环 P0=led_mod[i]; delay(35000); } } } 4、运行效果图 | ||||
〖巩固练习〗 无 | ||||
〖课堂小结〗 1、中断函数没有返回值,也没有调用参数,中断函数只能由系统调用,不能被其它函数调用。 2、外部中断应用要点:硬件上保证所需的中断触发信号,主函数中的中断初始化,中断函数中的中断请求标志撤销。 | ||||
〖作业〗 仿真实验:课本110页思考与练习题5中的单项选择题。 | ||||
〖板书设计〗 无 |
| 单片机的定时/计数器 | ||||
授课时间 | 授课时长 | 2学时 | |||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022机自本 | ||
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | ||||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | |||
教学重点 | 1、定时/计数器的结构和工作原理。 2、定时/计数器的控制。 3、定时/计数器的工作方式。 | ||||
教学难点 | 1、定时/计数器的各种工作方式及其差异。 2、定时/计数器的编程方法。 | ||||
学情分析 | 同学们已经知道了定时/计数器是C51单片机的一种内部中断源,常见的称为T0和T1,但不知道它两者之间在结构、控制方法、工作方式上有什么不同点。 | ||||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | ||||
教 学 内 容 | |||||
〖复习导入〗 〖讨论〗: 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系? 4、定时/计数器方式1的要点? | |||||
〖新课讲述〗 思政内容:利用定时器进行计数和计时,我们在生活中可以对某些去做的事情设定一个时间节点,在节点内完成工作,可以提高效率,但做任何事情都有时间成本。 一、定时/计数器的结构与工作原理 1、纯软件定时/计数方法 定时:空循环预定周次,等待预定时间 计数:读取I/O口电平,统计变化次数 基本思路:由CPU统计状态变化次数,待预定结果出现后结束统计。 存在问题:占用过多CPU机时 2、单片机软硬件联合定时/计数方法 定时器的本质是计数器(对时钟脉冲计数),计数器则是对外来脉冲计数。 基本工作原理: 计数器溢出空间 = 计数器最大空间 - 计数初值 定时时间t = (计数器最大空间 - 计数初值)×机器周期=(2n-a)×12/fosc (ms) 定数计数值 N = (计数器最大空间 - 计数初值) = (2 n – a ) 3、结构 (1)2个16位计数器T0 (TH0、TL0)和T1 (TH1、TL1)——加1计数器 (2)2个8位控制寄存器TCON和TMOD——管理计数器的运行 (3)2个外部引脚T0(P3.4)和T1(P3.5)——接入外部脉冲 二、定时器/计数器的控制 (1)TCON (2)TMOD T0有4种工作方式,T1有3种工作方式,每种工作方式都有定时和计数2种方式,故共有14种组合关系。 三、定时/计数器的工作方式 1、方式1 (1)计算公式 使用:16位定时/计数器(n=16,THx+TLx) 定时时间:t = (216- a)×12/fosc (ms) 计数初值:a = 216- t×fosc/12 最大定时时间(a=0,fosc =12MHz):t = 216(ms) = 65536 (ms) 定时范围:1~65,536 μs(≈65ms) (2)实例1: 设单片机的fosc=12MHz,采用T1定时方式1在P2.0脚上输出周期为2ms的方波。 方波输出原理:定时1ms后将端口输出电平取反。 1ms定时的计数初值应为: a = 216 – t* fos / 12 = 216 – 1000* 12/ 12 = 64536 = 0xfc18 TH1 = 0xfc TL1 = 0x18 注意:需要不断重装计数初值。 #include <reg51.h> sbit P2_0=P2^0; timer0 () interrupt 3 { //T1中断函数 P2_0 = !P2_0; //P2.0取反 TH1 = 0xfc; //装载计数初值 TL1 = 0x18; } main () { TMOD = 0x10; //T1定时方式1 TH1 = 0xfc; //装载计数初值 TL1 = 0x18; EA=1; //开总中断 ET1=1; //开T1中断 TR1=1; //启动T1 while(1); } 2、方式2 (1)计算公式 使用:8位计数器,TLx,可自动重装载计数初值(TLx溢出后, THx→TLx) 延时时间: t = (28-a)×12/fosc (微秒) → 12MHz时的最大定时量为256ms (2)实例2:采用T0定时方式2在P2.0口输出周期为0.5ms的方波(设fosc=12MHz)。 分析:计数初值TL0= ((256-250)*12/12)%256 = 0x06,TMOD = 0x02 中断方式代码: #include <reg51.h> sbit P2_0=P2^0; timer0 () interrupt 1 { P2_0 = !P2_0; } main(){ TMOD = 0x02; TH0 = TL0 = 0x06; EA= ET0 = 1; TR0=1; while(1); } 3、方式0 (1)计算公式 使用:13位的定时/计数器(THx7-0+TLx4-0) 定时时间:t = (213 - a)×12/fosc (μs) 计数初值:a = 213 - t×fosc/12 12MHz时的最大定时量:t=213μs = 8.192ms (2)实例4:计算T0方式0定时5ms的计数初值a(设fosc=12MHz) 计数初值:a=213-5000×12/12=3192= 1100 0111 1000B a= 0110 0011 0001 1000 = 6318H 即TH0 = 0x63; TL0 = 0x18; 4、方式3 TH0+TF1+TR1组成的8位定时器(方式2但无重装载功能) TL0+TF0+TR0组成的8位定时/计数器(方式2但无重装载功能) T1组成的无中断标志位的定时/计数器(方式0~方式2) 特点:方式3下T0可有2个具有查询/中断功能的8位定时器;外加1个没有查询/中断功能的T1定时/计数器。 | |||||
〖巩固练习〗 方式2 实例3:改进 “计数显示器” 的按键查询检测法,改用T0计数方式2 + 中断法实现原有功能。 (1)电路改造 按键由P3.7改为P3.4(T0)接入。 (2)分析 T0计数方式2:TMOD = 0000 0110B = 0x06 计数初值:a = 2 8 – 1 = 255 = 0xff T0中断初始化:ET0 = EA = 1 (3)代码 4、运行结果图 | |||||
〖课堂小结〗 1、定时/计数器利用加1计数器对时钟脉冲或外来脉冲进行自动计数,当计满溢出是,可引起中断标志硬件置位,表示定时时间到或计数次数到。 2、单片机有两个16位定时/计数器T0和T1,两个控制寄存器TCON和TMOD。 3、方式0~方式2分别使用13、16、8位工作计数器,方式3有3种定时/计数器状态。 | |||||
〖作业〗 仿真实验:课本125页实例5、实例6、实例7、实例8仿真。 | |||||
〖板书设计〗 例如:设置T0为定时方式1,允许TR0启动 T1为计数方式0,允许INT1启动。 则 TMOD = 1100 0001B =0xc1 例如:系统上电默认值为TMOD = 0 则默认状态应为:T0和TI均为定时方式0,允许TR0、TR1启动。 |
| 单片机定时/计数器的复杂应用 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 | 1、定时与计数法的联合应用。 2、利用软件计数与定时器结合的方法完成长时间定时。 3、门控位的作用。 | |||
教学难点 | 1、同一个定时器的定时、计数作用的轮换配合。 2、gate=1时,INT0引脚脉冲对定时器的开关作用。 | |||
学情分析 | 同学们已经知道了定时/计数器可以有定时、计数两种功能,在典型实例介绍中学会了各自的使用方法,现在一个定时器中将两种功能联合使用,并通过代码的变换完成复杂功能。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、怎样完成定时/计数器的定时、计数功能联合使用? 2、长定时怎样完成? 3、gate=1 有什么样的作用? | ||||
〖新课讲述〗 思政内容:同样的硬件连接,我们只需变换软件代码编写就可以完成不同的显示结果,可见逻辑思路的灵活多变,软件作用的强大。 一、实例5 1、要求 由P3.4口输入一个低频窄脉冲信号。当该信号出现负跳变时,由P3.0口输出宽度为500μs的同步脉冲,如此往复。要求据此设计一个波形展宽程序(fosc= 6MHz)。
(1)将T0设置为1次计数方式2,初值设为0xff。这样P3.4一旦发生负跳变T0就会产生溢出; (2)查询TF0标志位。当TF0=1时将T0设置为500ms定时方式2,初值a为0x06(=256-500×6/12),同时使P3.0输出低电平; (3)查询TF0标志位。待T0再次溢出后使P3.0输出高电平,然后将T0设置为1次计数方式2,如此往复进行。 3、代码 4、仿真效果图 二、实例6 1、要求 采用10MHz晶振,在P2.0脚上输出周期为2.5s,高电平占空比为20%的脉冲信号。 2、分析 定时中断与软件计数联合法: 利用定时中断进行中断次数统计;若取10ms产生定时,则2.5s =250次中断之和; 则0.5ms(20%占空比)相当于50次中断之和。 a = 216-10000×10/12=0xdf73 3、代码 #include <reg51.h> #define uchar unsigned char uchar time; //中断次数 uchar period=250; //1个周期的次数 uchar high=50; //20%高电平的次数 timer0() interrupt 1{//T0中断函数 TH0=0xdf; //重装载计数初值 TL0=0x73; if (++time==high) P2=0;//高电平时间到,P2变低 else if (time==period) {time=0;P2=1;}//周期时间到,P2变高 } void main (){ TMOD = 0x01; //T0定时方式1 TH0 = 0xdf; //首次装入计数初值 TL0 = 0x73; EA=ET0=1; TR0 = 1; //启动计数器 do { }while (1); } 4、仿真效果图 三、实例7 1、要求 采用定时中断控制流水灯,实现每秒1位,自上而下循环功能(fosc=12MHz)。 2、分析 可以利用20次50ms的定时中断方案,计数初值为: a = 65536-50000×12/12 = 0x3cb0 3、代码 4、仿真效果图 四、实例8 1、要求 测量从P3.2(INT0)输入的正脉冲的宽度,测量结果以BCD码形式存放在片内RAM 40H开始的单元处(设40H地址存放个位,系统时钟为12MHz,被测脉冲信号周期不超过100ms) 。 2、分析 GATE=TR0=1时允许INT0的脉冲控制定时器的启停,则根据T0先启动、再关闭后的计数值可算出被测脉冲宽度。 3、代码 4、仿真效果图 | ||||
〖巩固练习〗 无 | ||||
〖课堂小结〗 定时器的主要编程步骤: (1)确定定时/计数器的工作状态,设定TMOD; (2)确定计数初值,装载计数初值; (3)中断方式:中断初始化,启动定时器,中断函数,TFx清零,重装载计数初值; 查询方式:启动定时器,TFx判断,TFx清零,重装载计数初值。 | ||||
〖作业〗 仿真实验:课本141页实例1、实例2、实例3仿真。 | ||||
〖板书设计〗 无 |
| 单片机的串行口及应用 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 | 1、单片机串行通信的基本概念。 2、串行口的结构组成、控制方法、工作方式。 3、串行通信的基本应用。 | |||
教学难点 | 1、同步通信与异步通信的不同点。 2、发送数据缓冲器与接收数据缓冲器的工作原理。 | |||
学情分析 | 同学们已经学习定时/计数器,在串行通信中使用了T1定时/计数器作为通信时钟。在应用中对SCON、PCON进行设置。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、串行通信与并行通信有何不同? 2、按照数据传送方向,串行通信可分为哪几种制式? 3、两个数据缓冲器共用一个公用地址为何不冲突? | ||||
〖新课讲述〗 思政内容:多个流水灯的实例展示了使用同样的硬件,进行简单的硬件变化或者软件变化,都能达到相同的目标。条条大路通罗马。 一、并行通信和串行通信 1、并行方式— 数据的各位同时发送或同时接收 特点:传送速度快,但因需要多根传输线,故一般只在近距离通信中使用。 2、串行方式— 数据的各位依次逐位发送或接收 特点:传输速度慢,但因只需较少传输线,故适合于远距离通信。 按照传输数据流向,串行通信具有3种传输形式: (1)单工制式:数据只能按照固定的方向传送。 (2)半双工制式:数据可以双向传送,但需开关切换。 (3)全双工制式:数据可以同时双向发送和接收。 波特率: 在串行通信的数据是按位进行传送的 ,数据传输速率用波特率指标衡量。串行通信的收发双方必须采用相同的波特率。 3、异步通信和同步通信 (1)异步通信 一帧数据由起始位、数据位、[可编程位]和停止位构成。 起始位:位于数据帧开头,占1位,始终为低电平,用于向接收设备表示发送端开始发送1帧数据。 数据位:要传输的数据信息,可以是字符或数据,一般为5~8位,由低位到高位依次传送。 可编程位:位于数据位之后,占1位,用于发送数据的校验,或传送多机串行通信的联络信息。 停止位:位于数据位末尾,占1位,始终为高电平,用于向接收端表示1帧数据已发送完毕。 (2)同步通信 数据以块为单位进行的数据传送,在发一组数据时,只在开始用若干个同步字符作为双方的号令,然后连续发送整组数据。 二、串口控制器 1、串行口内部结构 SBUF发 +SBUF收 +发送控制器 +接收控制器 +波特率发生器 +SCON +RXD(P3.0)+TXD(P3.1) 数据缓冲器SBUF: 在物理上是相互独立的,一个用于发送数据(SBUF发)、一个用于接收数据(SBUF收)。共用一个地址(99H),通过读写指令区别是对哪个SUBF的操作。 发送控制器: 在门电路和定时器T1的配合下,将SBUF发中的并行数据转为串行数据,并自动添加起始位、可编程位、停止位。这一过程结束后自动使发送中断请求标志位TI置1,表明已将SBUF发中的数据输出到TXD引脚,即SBUF发为空。 接收控制器: 在输入移位寄存器和定时器T1的配合下,使来自RXD引脚的串行数据转为并行数据,并自动过滤掉起始位、可编程位、停止位。这一过程结束后自动使接收中断请求标志位RI置1,表明接收的数据已存入SBUF收,即SBUF收为满 。 定时器T1: 产生节拍控制用的通信时钟信号(波特率时钟);发送数据时,时钟的下降沿对应于数据移位输出;接收数据时,通信时钟的上升沿对应于数据位采样。 RXD和TXD引脚: 用于串行信号或时钟信号的传入或传出。 2、串行口控制寄存器 (1)串口控制寄存器,SCON(98H) (2)电源控制寄存器,PCON(87H) 通信时钟波特率原理: T1溢出脉冲有两种分频路径:16分频或32分频;SMOD是决定分频路径的逻辑开关。 波特率取决于T1的定时参数(a,n,fosc)和SMOD参数。
串行工作方式0为8位同步移位寄存器方式;8位数据为一帧,不设起始位和停止位,先发送或接收最低位;数据传输波特率固定为fosc/12;由RXD引脚输入或输出数据;TXD引脚输出fosc/12时钟信号。 1、要求 利用74LS164扩展并行输出口,并实现LED由上向下循环。 2、分析 (1)串口初始化 方式0(SM0 SM1 = 00),中断发送标志位清0 ( TI = 0)和禁止接收数据(REN = 0)→ SCON = 0 (2)查询法串行发送 SBUF = LED; //发送亮灯编码 do {}while (!TI) ; //TI=1→发送完成;TI=0→发送进行中 … … //更新亮灯编码 TI = 0; //为下次发送做准备 (3)74LS164倒序校正 欲使164输出1111 1110B,SBUF发应为0111 1111B (0x7f ) 欲使D1~D8由上向下点亮,SBUF发应右移1位且最高位置1 → (SBUF发 >> 1) | 1000 0000B ; 与0x80逻辑或 3、代码 4、仿真效果图 | ||||
〖巩固练习〗 无 | ||||
〖课堂小结〗 1、串行通信的数据按照位进行传送,只需一对传输线可实现通信,特点是成本低,传送速率慢。 2、51单片机内置可编程的全双工异步串行通信接口,包括两个物理上相互独立的数据缓冲器SBUF,两个串口控制器,即SCON和PCON。定时器T1作为波特率信号发生器。 3、方式0是同步移位寄存器方式,采用8位数据帧格式,没有起始位和停止位,先发送或接收最低位。方式0主要用于单片机I/O接口的扩展。 | ||||
〖作业〗 仿真实验:课本150页实例4仿真,171页实例4仿真。 | ||||
〖板书设计〗 无 |
| 单片机串行口的应用举例 | |||
授课时间 | 授课时长 | 2学时 | ||
教 具 | 多媒体PPT、黑板、粉笔 | 授课班级 | 2022机自本 | |
教材及主要参考书目 | 教材:林立,张俊亮主编.《单片机原理及应用—基于Proteus仿真(第5版)》,电子工业出版社. 参考书目:刘志君,姚颖主编.《单片机原理及应用》,机械工业出版社. | |||
教学 目标及对应指标点 | 教学目标1:掌握MCS-51系列单片机的内部结构及工作原理、C51编程语言和编程方法、单片机外围接口技术及单片机应用系统开发方法。 | 对应毕业要求指标点:4.4 能够正确采集、处理实验数据,对实验结果进行分析和解释,通过综合评价,给出关于描述与解决复杂工程问题的 有效结论。 10.1能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 | 1、单片机串行工作方式1及其应用。 2、单片机串行工作方式2及其应用。 3、单片机串行工作方式3及其应用。 | |||
教学难点 | 1、方式2的11位异步通信方式中可编程位的使用方法。 2、方式3针对多机通信的通信方法。 | |||
学情分析 | 同学们已经学习使用串行口进行8位同步通信,10位异步通信、11位异步通信就是在此基础上进一步复杂化。 | |||
教学方法 | 以“诱发—质疑―探讨”为主线,通过“演示―观察―分析讨论―归纳总结”的程序,自然过渡到知识的应用和练习,实现对每个知识点的认识、理解和记忆。 | |||
教 学 内 容 | ||||
〖复习导入〗 〖讨论〗: 1、10位异步通信怎样传输数据? 2、11位异步通信怎样传输数据?多的一位有什么作用?工作原理有什么变化? 3、点对点通信、多机通信的11位异步传输有什么区别? | ||||
〖新课讲述〗 思政内容:相同的位,在不同的场合中有不同的作用,可简单,可复杂。关键在于我们对它的定义与理解。 一、串行工作方式1及其应用 1、10位数据异步通讯方式
2、 实例 (1) 要求 采用双机串行通信,其中甲机发送数据,乙机接收数据,两机fosc为11.0592MHz,波特率为2.4k,串口方式1。甲机循环发送数字0~F,乙机接收后返回接收值。若发送值与返回值相等,继续发送下一数字,否则重复发送当前数字。采用查询法检查收发是否完成。 发送值和接收值分别显示在双方LED数码管上。 (2) 硬件连接图 (3)编程分析 2.4k波特率SMOD=0 → PCON=0 ,TH1=TL1=0xf4; T1定时方式1,允许TR1控制 →TMOD=0x20; 串口方式1,允许接收,清中断标志→SCON=0x50 (4)程序代码 (5)仿真结果 二、串行工作方式2及其应用 1、11位数据异步通信方式 一帧信息 = 1个起始位(0)+8位数据位+ 1个可编程位(P) +1个停止位(1) 。 发送时由硬件方式将TB8作为可编程位插入数据帧中;接收时由硬件方式将数据帧的可编程位存入RB8中。 可编程位的作用——用于奇偶校验或多机通信标识。 方式2的波特率为固数值: SUBF发为空时TI自动置1;SUBF收为满时RI的状态要由SM2和RB8共同决定。 若SM2=1,当RB8为1时,SUBF收为满可使RI置1;若RB8为0,则SUBF收为满也无法使RI置1。 若SM2=0,则无论RB8为何值, SUBF收为满都能使RI置1。 2、实例 (1)要求 采用实例2的双机通信电路,晶振11.0592MHz,串口方式2,通信时钟为0.3456Mb/s,两机分别显示收发数值,且进行奇偶校验。甲机在循环发送数据(0~F)的同时发送相应奇偶校验码;乙机接收后先进行奇偶校验。若结果无误,则使返回的接收值中可编程位=0,若结果有误,则使可编程位=1。甲机根据返回接收值中的可编程位做出发送新数据(RB8=0)或重发当前数据(RB8=1)的抉择。 (2)硬件连接图 (3)编程分析 对于晶振11.0592MHz,0.3456Mb/s的通信时钟相当于1/32晶振频率→PCON= 0x80;串口方式2,允许接收,不是多机通信→SCON = 0x90。将数据存入累加器Acc,可获得奇偶标志位P值。发送时校验位写入TB8输出,接收时校验位从RB8读取。 (4)程序代码 (5)仿真结果 三、串行工作方式3及其应用 1、11位数据异步通信方式 方式3的波特率为可变的。方式3用于可变波特率的奇偶校验(单机通讯)或主从式通讯。主机与各从机之间能实现双向通信,而各从机之间不能直接通信,只能通过主机才能沟通。 多机通信做法: 主机向所有从机发送包含n#从机信息的地址帧;所有从机都核查该地址帧,只有n#从机修改本机SM2 ;主机发送数据帧,但只有n#从机能够接收到数据信息。 所有从机都先使自己的SM2=1,而主机在发送的地址帧信息时先使TB8=1。这样,所有从机都能产生中断请求,并能接收到主机发来的地址信息;各从机将主机发来的地址与本机地址编号相比较。若与本机相符(即命中),则该从机使自己的SM2=0,其余从机仍旧保持SM2=1;主机接着发送TB8=0的数据帧信息。此时只有命中机(SM2=0)有中断请求,其它从机均无反映。 关键: 主机第1次发出的信息要能被所有的从机响应,而第2次的信息只能被n#从机所响应—多机通信控制位SM2对串行中断请求的管理功能。 2、实例 (1)要求 K1、K2为发送激发键,每按1次,主机向相应从机顺序发送1位0~F间的字符,发送字符可用虚拟终端TERMINAL观察。命中从机收到地址帧后使发光二极管状态反转1次,收到数据帧后在其共阳型数码管上显示出来。系统晶振频率为11.0592MHz。要求通信采用串口方式3,波特率9600bps,发送编程采用查询法,接收编程采用中断法。 (2)硬件连接图 (3)编程分析 选择T1定时器方式2,TH1=TL1=0xfd,SMOD=0(9600bps);SCON=0xe0(串口方式3,多机通讯,禁止接收,TI=RI=0)。 程序设计方法: 主机在主函数中以查询法进行按键检测,并以键值作为发送函数的传递参数。在发送函数中查询TI标志位,分两步发送地址帧和数据帧;子机在初始化后进入等待状态。在中断接收函数中先对地址帧进行判断,随后将接收的字符转化为数组顺序号,通过查表输出其显示字模。 (4)程序代码 (5) | ||||
〖巩固练习〗 无 | ||||
〖课堂小结〗 1、方式1采用10位数据帧格式,包括1个起始位,8个数据位和1个停止位。方式1主要用于点对点通信方式。 2、方式2和方式3采用11位数据帧格式,包括1个起始位,8个数据位,1个编程位和1个停止位。方式2和方式3的差异在于前者波特率为固定值,后者为可变值,主要用于奇偶校验或多机主从式通信。 | ||||
〖作业〗 课本155页的思考与练习题7中单项选择题。 | ||||
〖板书设计〗 无 |