单片机原理及应用 课程教案
德州学院
教 案
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; 规则:逢二进一;二进制数的后缀为B且不可省略;二进制数可用加权展开式表示,其一般表达式为: (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”中的单项选择题。 | ||||
〖板书设计〗 1、十进制数 2、二进制数 3、十六进制数 4、二进制转十进制 5、十六进制转十进制 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引脚及功能 51系列单片机一般采用40只引脚的双列直插式(DIP——Dual In-line Package)封装结构。 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 指示灯循环控制”。 | ||||
〖板书设计〗 1、进位标志CY 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 4、代码 #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能够熟练掌握工程语言并能对工程问题进行准确的书面及口头描述。 | ||
教学重点 |