版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《单片机原理与应用》课程标准【课程名称】单片机原理与应用 【课程编码】【课程类别】专业基础课 【适用专业】电子信息类、自动化类、集成电路类专业【授课单位】 【总学时】44【编写执笔人】 【编写日期】 一、课程定位和课程设计1.1课程性质与作用1.1.1课程性质《单片机原理与应用》课程是电子信息类、自动化类、集成电路类专业的必修课程,面向嵌入式软件开发、硬件设计、系统测试等主要岗位,单片机技术的应用能力是电子工程师必须具备的技能。本课程主要任务是使学生认识和使用单片机及接口芯片,能够使用C语言为嵌入式系统进行程序设计,并能综合应用单片机技术进行智能机电产品的简单设计、制作和调试。使学生具备分析问题和解决问题的能力,让学生能够学以致用,做到既兼顾原理又注重实践。1.1.2课程作用通过本课程的学习,能够使学生系统化地了解和掌握单片机的基本工作原理,包括其内部结构、指令系统、存储器、输入输出接口等相关内容,并能实现计算、控制和通信等功能。提高学生的程序设计和调试能力,单片机需要编写程序才能实现相应的功能,因此本课程也会涉及汇编语言和C语言程序设计。学生通过编写程序,不断地实践和调试,可以提高其程序设计和调试能力。培养学生的团队协作意识,本课程在实训过程中,学生需要组成小组完成相应的实验,这就需要学生之间协作配合。在实验中,学生需要互相帮助、交流经验,并共同解决问题,从而培养其团队协作意识。增强学生的创新精神,本课程会涉及到各种实际应用场景,在实验过程中,学生可以结合自己的实际需求和兴趣,进行创新性的设计和改进,增强其创新精神。1.2课程设计思路本课程以提升学生能力为出发点,通过项目驱动式教学模式,对广泛应用的51系列单片机的工作原理、应用系统进行剖析,从应用的角度阐述单片机相关模块的工作原理,使学生获得单片机的基本概念、基本知识和单片机应用系统的设计编程入门知识,以及使用C语言、单片机开发工具Keil软件进行程序设计、运行、调试等基本技能。着重“职业能力”培养的指导思想,打破传统理论授课模式,实现理论和实践教学的有机融合,以实训任务为中心、以项目教学为主体。同时,本课程以解决实际项目的思路和操作为主线,连贯多个知识点,用实训任务来引领理论,使理论从属于技能培养。打破传统的理论实验课程原有界限,按技能培养目标将单片机和C语言的相关知识和技能按“模块”进行整合。每个模块均由理论和实训任务组成,每个实训任务均将相关知识和职业岗位基本技能融合一起,采用“教学做一体化”教学模式,教会学生如何完成工作任务,关注学生能做什么,把知识、技能的学习结合实训任务完成过程来进行。实训任务的完成过程均是一个完整的单片应用技术实际工作过程,它拉近了理论教学、实训实践与职业岗位需求的距离,同时又兼顾了知识的系统性和完整性。二、课程目标2.1知识目标(1)能全面了解单片机的组成、内部结构和引脚功能;(2)能熟练掌握C语言程序基本结构、数据类型和基本语句;(3)能熟练掌握C语言程序分析、应用程序设计和中断服务程序编写;(4)能牢固掌握中断的概念及MCS-51单片机的中断系统;(5)能灵活使用定时器/计数器;(6)能熟练应用I/O接口、显示、键盘接口、D/A、A/D转换接口、串行接口。2.2能力目标(1)会识别与检测常用电子元器件并熟悉相应电子元器件的市场行情,如单片机及接口芯片等;(2)会使用keil、proteus软件进行C语言程序的设计、运行及仿真,能独立调试控制程序;(3)会使用单片机等常用智能控制器件设计、制作、调试小型智能电子产品;(4)能编制出单片机电子产品的系统总体设计方案;(5)具备单片机技术应用系统的系统维护、技术改造、运行管理岗位的能力。2.3素质目标(1)具有勤奋学习的态度,严谨求实、创新的工作作风,以及良好的敬业精神和创新精神;(2)初步具备单片机应用软件开发的能力和职业素质;(3)具有高度责任心和良好的团队合作精神,团队协作沟通能力;(4)能制定出切实可行的工作计划,提出解决实际问题的方法;(5)具备搜集资料、阅读资料、利用资料的能力,以及自学能力;(6)具备单片机辅助开发、测试与维护职业活动所必须的专业知识和专业技能。三、课程内容与教学要求本课程共分为14个模块,共44学时。具体安排如下表所示:所用教材课程内容教学建议与说明学时分配《单片机原理与应用》模块一认识单片机一、单片机的概念二、MCS-51系列单片机三、C语言基础知识(1-3)问答法、讨论法、讲授法、项目式教学法26三、C语言基础知识(4-6)问答法、讨论法、讲授法、项目式教学法2三、C语言基础知识(7-8)模块实训——设计“学生成绩排序”程序问答法、讨论法、讲授法、项目式教学法2模块二认识数制和编码一、数制二、数制之间的转换三、计算机中数的表示四、编码模块实训——使用“计算器”进行数制转换问答法、讨论法、讲授法、项目式教学法22模块三认识单片机的内部组成一、单片机的内部结构二、单片机的引脚定义及功能问答法、讨论法、讲授法、项目式教学法24三、单片机应用系统的开发流程四、MCS-51系列单片机常用软件模块实训——设计LED流水灯问答法、讨论法、讲授法、项目式教学法2模块四认识单片机的存储器一、程序存储器二、数据存储器模块实训——设计花样流水灯问答法、讨论法、讲授法、项目式教学法22模块五认识时钟电路和复位电路一、时钟电路二、复位电路模块实训——设计交通信号灯问答法、讨论法、讲授法、项目式教学法22模块六认识指令格式和寻址方式一、指令格式二、寻址方式模块实训——设计平方和计算程序问答法、讨论法、讲授法、项目式教学法22模块七认识51系列单片机指令系统一、数据传送指令二、算术运算指令三、逻辑运算指令四、移位指令问答法、讨论法、讲授法、项目式教学法24五、控制转移指令六、位操作指令七、伪指令模块实训——设计汽车转向灯问答法、讨论法、讲授法、项目式教学法2模块八认识三种程序结构一、程序设计基础二、常用的三种程序结构模块实训——设计信号闪烁灯问答法、讨论法、讲授法、项目式教学法22模块九认识中断系统一、中断的概念二、中断的作用三、中断系统的结构问答法、讨论法、讲授法、项目式教学法24四、中断处理过程五、中断函数的定义模块实训——设计游客流量计数器问答法、讨论法、讲授法、项目式教学法2模块十认识定时/计数器一、定时/计数器的结构二、定时/计数器的工作原理三、定时/计数器的寄存器四、定时/计数器的工作方式模块实训——设计数字频率计问答法、讨论法、讲授法、项目式教学法22模块十一认识LED数码管显示器一、LED数码管显示器的结构及工作原理二、LED数码管显示器的字形码三、LED数码管显示器的显示方式模块实训——设计篮球比赛计时计分器问答法、讨论法、讲授法、项目式教学法22模块十二认识LCD液晶显示器一、LCD液晶显示器的功能与分类二、LCD液晶显示器的结构及工作原理模块实训——设计数字钟问答法、讨论法、讲授法、项目式教学法22模块十三认识键盘接口技术一、键盘概述二、独立式键盘问答法、讨论法、讲授法、项目式教学法24三、矩阵式键盘模块实训——设计密码锁问答法、讨论法、讲授法、项目式教学法2模块十四认识单片机数模转换技术一、A/D转换技术问答法、讨论法、讲授法、项目式教学法24二、D/A转换技术模块实训——设计信号发生器问答法、讨论法、讲授法、项目式教学法2机动22合计44四、课程实施4.1教学条件我校十分注重建设和完善本课程的教学设施,如多媒体教室、实操间、网络教学平台、网络数据库等。同时,我校有一支强大的师资队伍,可以为本课程的教学出谋划策。4.2教学方法建议在教学时,教师可根据实际情况选择合适的教学模式。例如,为突出理实一体化教学,教师可先让学生进行模块实训,期间教师可进行基本的理论指导和知识补充,让学生在实际操作中探索、熟悉相关理论知识,然后再对相关知识进行系统教学,这样既可让学生巩固实训,又能完善学生的理论体系。教师也可先行开展相关知识的教学,让学生积累足够的知识,再让学生进行模块实训,达到学以致用的教学目的。本课程可采用讲授法、讨论法、问答法、项目式教学法等多种方法,帮助学生掌握所学知识,并达到熟练运用。通过讲授法,让学生学习基本理论和方法。结合已有的知识,适当组织一些讨论,充分调动学生的主观能动性。通过问答法,帮助学生回顾所学知识内容,引导学生思考问题的方式和方法,增强学生上课的专注度。通过项目式教学法,以任务需求来带动教学,每次课都有相应的任务和问题让学生来完成,以培养学生分析问题、解决问题和思考问题的习惯,增强学生实践操作能力。适当增加迭代教学,把重要的知识、思想、经验在课程中反复涉及到,但每次涉及到这些内容时又不是简单地重复,而是在回顾原有的内容的基础上做进一步地深入和升华,既强化了记忆和理解,又拓展了新的视野,深化了理解。4.3教学评价与考核要求课程的教学评价由形成性测评(40%)和终结性测评(60%)组成,其考核要求如下:4.3.1形成性测评形成性测评考核学生在学习本课程过程中的学习情况和实际应用能力的发展情况,包括违纪考核(20%)、知识掌握情况考核(30%)、工作任务完成情况考核(50%)等。(1)违纪考核本项考核通过课前点名、上课纪律考核学生的课堂出勤率。上课迟到扣5分,上课吃东西扣5分,上课玩手机扣5分,其他扰乱课堂秩序的行为扣5分。(2)知识掌握情况考核本项考核主要通过在课堂上对学生学习态度,课堂发言,课堂参与度,问题分析和解决能力,所学知识点,项目实施过程。每次考核划分为优秀(30分)、良好(25分)、中等(15分)、及格(10分)和不及格(5分)五个档次。最后考核成绩为学生每次任务成绩的平均数。(3)工作任务完成情况考核本项考核主要通过学生对任务的解读能力、软件使用的能力、排查错误的能力、任务完成情况等,来检测其知识掌握情况、自主学习能力、团队协作能力,动手操作能力。每次工作任务完成情况按照相应标准而定,划分为优秀(50分)、良好(40分)、中等(30分)、及格(15分)和不及格(5分)五个档次。最后考核成绩为学生每次任务成绩的平均数。4.3.2终结性测评终结性测评主要考核学生在学完本课程后所达到的水平,通过期末考试进行考核。期末考试由闭卷笔试(60%)组成,主要评估学生对本门课程基本知识的掌握情况与综合运用能力。五、课程资源开发与利用5.1推荐使用教材5.2网络资源
《单片机原理与应用》
教案课时分配表章序课程内容课时备注1认识单片机62认识数制和编码23认识单片机的内部组成44认识单片机的存储器25认识时钟电路和复位电路26认识指令格式和寻址方式27认识51系列单片机指令系统48认识三种程序结构29认识中断系统410认识定时/计数器211认识LED数码管显示器212认识LCD液晶显示器213认识键盘接口技术414认识单片机数模转换技术4合计42
课题认识单片机(一)课时2课时(90min)教学目标知识目标:(1)了解单片机的基本概念及应用领域,以及MCS-51系列单片机(2)掌握C语言的基本结构、数据类型、常量与变量等概念能力目标:能够理解单片机基本概念,明确其具体应用,市场上常见类型素质目标:能够意识到芯片的重要性,以及我国目前芯片行业面临的困境,树立创新意识,热爱科学技术,把握科技前沿,投身科技报国行列教学重难点教学重点:单片机基本概念,C语言基础教学难点:单片机功能特性中的各参数教学方法问答法、讨论法、讲授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务请大家上网查找单片机相关资料,了解单片机的应用领域。【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因新课预热【教师】自我介绍,与学生简单互动,介绍课程内容、考核标准等【学生】聆听、互动【教师】讲解单片机的重要性,增强学生学习兴趣单片机是一种集成电路芯片,能够完成各种控制任务。单片机广泛应用于工业自动化领域,如工厂自动化生产线上的控制系统、机器人控制与调度等。单片机可以通过传感器检测环境信息,并通过执行器控制家电、照明等设备,实现智能化控制。单片机在车辆、船只和飞机等交通工具中被广泛应用,例如发动机控制、导航系统、车载娱乐等。单片机在医疗设备中也有广泛的应用,如血压计、血糖仪、心电图仪等。单片机可用于安全监控系统中,例如门禁系统、摄像头控制等,提高安全性。综上所述,单片机在现代技术中具有重要的地位,无论在生活中还是工业领域,都有着广泛的应用。【学生】聆听、记录、理解问题导入【教师】提出以下问题:通过上述单片机功能的描述,对比计算机系统,思考单片机内部有哪些功能部件?【学生】思考、举手回答传授新知【教师】讲解单片机的相关知识一、单片机的概念✈【教师】讲解单片机的概念、组成、应用领域单片机(singlechipmicrocomputer,SCM)是一种集成电路芯片,是采用超大规模集成电路技术将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O端口、中断系统、定时/计数器等功能部件集成到一块硅片上,构成的一个小而完善的微型计算机系统。单片机的体积很小,常被嵌入到各种现代设备中作为控制器件。因此,单片机还有一个常用的名字——微控制器单元(microcontrollerunit,MCU)。单片机的应用非常广泛,其踪迹遍布各个领域。例如,飞机上各种仪表的控制,计算机的网络通信与数据传输,工业自动化过程的实时控制和数据处理,各种智能IC卡,自动控制领域的机器人、智能仪表、医疗器械及各种智能机械,民用豪华轿车的安全保障系统,家庭生活中的录像机、摄像机、全自动洗衣机,以及程控玩具、电子宠物等,这些都离不开单片机。单片机应用的部分领域如图1-3所示(详见教材)。【课堂问答】✈【教师】随机邀请学生回答以下问题请同学们思考,微型计算机系统与计算机系统的区别?✈【学生】聆听、思考、回答✈【教师】总结学生的回答二、MCS-51系列单片机✈【教师】讲解单片机种类,重点介绍MCS-51系列单片机经过几十年的发展,单片机从最初的4位单片机发展成为32位单片机,类型也已经发展到上百种系列的近千个品种。Intel公司是单片机领域的领跑者,其推出的MCS-51系列单片机使用最为广泛。MCS-51系列单片机分为51和52两个子系列,8031、8051、8751、8032、8052和8752等芯片都属于该系列,8051是其中的典型代表,其他单片机只是在8051的基础上进行了一些调整,所以人们习惯上以8051来称呼MCS-51系列单片机。MCS-51系列单片机的功能特性如表1-2所示(详见教材)。✈【知识链接】ROM(read-onlymemory):只读存储器。ROM中的只读数据是预先烧录的,并且一旦烧录就不能再修改。RAM(randomaccessmemory):随机存储器。RAM存储单元的内容可按需要随意取出或存入。EPROM(erasableprogrammableROM):可擦除可编程存储器。EPROM利用专用的紫外线擦除器,可以擦除单片机中的数据。要向EPROM中写入数据,必须使用专用的写入器。EEPROM(electricallyerasableprogrammableROM):电可擦除可编程只读存储器。EEPROM通过单片机的控制电压,可以擦除单片机中的数据,或向单片机中写入数据,而不必将单片机从系统中取出。【课堂问答】✈【教师】随机邀请学生回答以下问题根据上述存储器的类型介绍,思考电脑硬盘属于RAM还是ROM?✈【学生】聆听、思考、回答✈【教师】总结学生的回答三、C语言基础知识✈【教师】多媒体播放微课“第一个C语言程序”,让学生了解一个完整的C语言程序的构成(一)C语言程序的基本结构与用其他语言编写的程序相比,C语言较少要求“形式化的内容”。一个完整的C语言程序可以只有寥寥数行。下面以一个简单的例子说明C语言程序的基本结构。【例1-1】只有一行输出的C语言程序。#include<stdio.h> /*编译预处理指令*/intmain() /*主函数的函数头*/{ /*函数体的开始标记*/ printf("你好,C语言!\n"); /*输出要显示的字符串*/ return0; /*程序返回值0*/} /*函数的结束标记*/【运行结果】程序运行结果如图1-4所示(详见教材)。【程序说明】该程序运行结果的第1行是程序运行后输出的结果,第2行是任何一个C语言程序在VisualC++环境下运行都会自动输出的一行信息,告诉用户“如果想继续,请按任意键”。当用户按任意键后,屏幕上不再显示运行结果,返回程序窗口。例1-1的程序是一个由头文件和主函数组成的简单C语言程序,下面分别解释一下各行程序的意义。第1行:#include<stdio.h>这是一个预处理操作。“include”称为文件包含命令,后面尖括号中的内容称为头文件;“stdio.h”是C语言的系统文件,“stdio”是“standardinput&output(标准输入输出)”的缩写,“.h”是文件的扩展名。由于程序的第4行使用了库函数printf,C语言编译系统要求程序提供有关此函数的信息(如对此函数的声明和宏的定义、全局变量的定义等),所以此处需要这条命令。第2行:intmain()这一行代码是函数头。其中,main是函数的名字,表示“主函数”;main前面的int表示函数的返回值是int类型(整型)。每个C语言程序都必须有一个main函数。第3行到第6行:{ printf("你好,C语言!\n"); return0;} 由花括号括起来的部分是函数体,该程序主函数的函数体由两条语句构成,每条语句后都要加分号,表示语句结束。其中,printf是C语言编译系统提供的函数库中的输出函数,用来在屏幕上输出内容,输出语句中双引号中间可以是字母、符号及中文字符等;“return0;”的作用是在main函数执行结束前将整数0作为函数值,返回到调用函数处。在程序各行的右侧都可以看到一段关于这行代码的文字描述(用“/**/”括起来),称为代码注释。其作用是对代码进行解释说明,日后自己或他人阅读程序时,方便理解程序代码含义和程序设计思路。✈【提示】字符串末尾的“\n”是C语言中规定的一个特殊符号,其作用是回车换行。本程序中“\n”使得输出“你好,C语言!”后执行一个回车换行操作,如果之后还有输出,将从下一行的左端开始。通过对例1-1的介绍,我们可以看到C语言程序的基本结构如下。(1)C语言程序是由函数构成的,函数是C语言程序的基本单位。任何一个C语言程序必须包含一个且仅包含一个main函数,可以包含零个或多个其他函数。【课堂问答】✈【教师】随机邀请学生回答以下问题C语言中的函数有什么作用?✈【学生】聆听、思考、回答✈【教师】总结学生的回答(2)一个函数由以下两部分组成。①函数头,包括函数名、函数类型、函数属性、函数形参名、形参类型等。一个函数名后面必须跟一对圆括号,括号内可以有参数也可以没有参数,如main()。②函数体,即函数头下由花括号括起来的部分。如果一个函数内有多对花括号,则最外层的一对花括号为函数体的范围。(3)C语言程序总是从main函数开始执行,与main函数所处的位置无关(main函数可以位于程序的开始位置,也可以位于程序的末尾,还可以位于一些自定义函数的中间)。(4)C语言程序书写格式自由,一行内可以连续写几个语句,一个语句也可以分写在多行中。但任何一条C语句必须以分号结束。(5)C语言程序中可以使用编译预处理命令。(6)C语言程序中可以有注释,用于解释程序的功能,增强可读性,但注释对程序的编译和运行不起作用。✈【知识链接】C语言程序中允许用以下两种注释方式。①以“//”开始的单行注释。②以“/*”开始、以“*/”结束的块式注释。……(详见教材)(7)C语言本身没有输入输出语句,输入输出操作是通过调用系统提供的标准库函数完成的,其目的是将与硬件设备直接相关的输入输出等操作交由库函数实现,使程序不直接对硬件设备进行管理,增加程序的可移植性。(8)C语言要求严格区分字母大小写,同一字母的大小写被视为两个不同的字符。C语言程序中的语句、类型名、定义符、函数名、变量名等一般均用小写字母表示。(二)数据类型及转换✈【教师】多媒体播放微课“C51语言扩展数据类型的简单说明”(详见教材),让学生对比掌握C语言和C51语言中使用的基本数据类型1.数据类型数据类型即数据的格式。对数据类型的描述包括数据的表示形式、数据长度、数值范围等。程序设计中的数据可分为常量和变量,变量必须先说明类型才能使用。51系列单片机中应用的C语言称为C51语言。C51语言中使用的基本数据类型除了包含C语言中的标准数据类型外,还包含了C51语言扩展的数据类型。C51语言的基本数据类型如表1-3所示(详见教材)。2.数据类型转换1)自动转换自动转换由C语言编译系统自动完成,不需要人为干预。自动转换遵循以下三个基本规则。(1)如果参与运算的变量类型不同,则先转换成同一类型,然后再进行运算。(2)“低级向高级转换”原则,如果运算中有几种不同类型的数据,则先统一转换为最高级的数据类型,然后再进行运算。(3)赋值运算两边的数据类型不同时,赋值号右边的类型将转换为左边的类型。2)强制转换强制转换是将表达式的结果强制转换成类型标识符所指定的数据类型,其一般形式为(类型标识符)(表达式)类型标识符和表达式都应用圆括号括起来,当只有单个操作数时,表达式的括号可以省略。例如:(double)a /*将a转换成double类型*/(int)(x+y) /*将x+y的值转换成整型*/(int)x+y /*将x转换成整型,然后与y相加*/✈【提示】无论是自动转换,还是强制转换,都是为了本次运算的需要,对数据的类型进行临时转换,并没有改变数据的定义。例如,i为整型,表达式(double)i的类型是double,但i的类型仍然是整型。(三)常量与变量【课堂问答】✈【教师】随机邀请学生回答以下问题数学中有没有常量和变量的概念,它们是如何定义和使用的?✈【学生】聆听、思考、回答✈【教师】总结学生的回答1.常量✈【教师】多媒体播放微课“常量”(详见教材),让学生了解常量的定义、常量的使用方法、常量的分类常量是指在程序运行过程中,其值不能改变的量,如固定的数据表、字符等。常量的数据类型有整型、浮点型、字符型、字符串型和位标量型等。1)整型常量整型常量的表示方法有多种,可采用十进制形式表示,如123、0、−89等;也可采用十六进制形式表示,以0x或0X开头,如0x34、−0x3B等。如果是长整型数据,则需要在数字后面加上字母L,如204L、023L、1345L等。2)浮点型常量浮点型常量可分为十进制和指数两种表示形式。(1)十进制浮点型常量由数字和小数点组成,整数或小数部分为0时可以省略,但必须要保留小数点,如0.666、1125.125、0.0、.25、300.等。(2)指数浮点型常量的表示形式为:[±]数字[.数字]e[±]数字。[]中的内容为可选项,如125e3、7e9、−3.0e−3等。3)字符型常量字符型常量一般是指单引号内的单个字符,如'a'、'd'等。还有一类字符型常量,它们专门用来表示控制字符,称为转义字符,其表示形式为在字符前面加上一个反斜杠“\”。例如,'\n',表示换行。4)字符串型常量字符串型常量通常由放在双引号内的一个或多个字符组成,如"test"、"OK"等。当双引号内没有字符时,该字符串为空字符串。在C51语言中,字符串型常量是被当作字符类型数组来处理的。在存储字符串时,系统会在字符串尾部加上“\0”转义字符作为该字符串的结束符。5)位标量型常量位标量型常量可以定义一个位标量,但是不能定义位指针,也不能定义位数组。位标量型常量的值是一个二进制位,非0即1。位标量型常量的定义形式为:#define<位标量常量名><常量>。例如,定义位标量False和True:#defineFalse0/*用预定义语句可以定义常量,这里定义False为0,True为1;✈【知识链接】将程序中的常量定义为一个标识符,称为符号常量,一般使用大写英文字母表示,其定义形式为:#define<符号常量名><常量>。例如,#definePI3.14,这条预处理命令定义了一个符号常量PI,它的值为3.14。2.变量✈【教师】多媒体播放微课“变量”(详见教材),让学生了解变量的定义、变量的使用方法、变量的存储类型与存储器类型变量是指在程序运行过程中,其值能改变的量。要在程序中使用变量,必须先定义变量,即指定变量名,并指出变量对应的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。1)变量的定义变量的定义格式为[存储类型]数据类型[存储器类型]变量名;其中,存储类型用于指定变量在程序运行过程中的作用范围;数据类型用于指定变量的数据类型;存储器类型用于指定变量在单片机中使用的存储区域;变量名用于指定变量的名称。在变量的定义格式中,数据类型和变量名是必要的,存储类型和存储器类型是可选项。下面主要介绍存储类型和存储器类型。2)变量的存储类型不同存储类型的变量或不同位置定义的变量具有不同的作用范围(即作用域)。在单片机程序中,变量的存储类型可分为自动变量、全局变量、静态变量和寄存器变量。(1)自动变量。自动变量是以关键字auto标识的变量类型。自动变量的作用域是函数或复合语句的内部。在C51语言中,函数或复合语句内部定义自动变量时,关键字auto可以省略,即默认为自动变量。在程序执行过程中,自动变量的存储空间是动态分配的。当程序执行到该变量的声明语句时,编译系统根据变量类型自动为其分配存储空间。当函数或复合语句执行完毕后,自动变量的存储空间将立刻自动取消。此时,自动变量失效,在函数或复合语句外部将不能使用该变量。(2)全局变量。全局变量是以关键字extern标识的变量类型。全局变量一般定义在所有函数的外部,其作用域是从全局变量定义的位置到程序文件结束,它可以被作用域范围内的任何函数调用。因此,全局变量有时也称为外部变量。在程序执行过程中,全局变量将被静态地分配适当的存储空间。全局变量一旦分配存储空间,在整个程序运行过程中便不会消失。因此,全局变量对整个程序文件都有效,即全局变量可以被该程序文件中的任何函数使用。(3)静态变量。静态变量是以关键字static标识的变量类型。从变量的作用域来看,静态变量和自动变量类似,其作用域只是定义该变量的函数内部。如果静态变量定义在函数外部,将具有全局变量的作用域。从内存占用的角度来看,静态变量和全局变量类似,一旦分配存储空间,它始终占有该存储空间,直至程序运行结束。(4)寄存器变量。单片机的CPU寄存器中也可以保存少量的变量,这种变量称为寄存器变量。寄存器变量是以关键字register标识的变量类型。由于单片机对寄存器变量的读写速度要远高于对其他类型的变量,因此把最频繁使用的变量定义为寄存器变量可以有效地提高程序运行速度。由于单片机资源有限,因此程序中只允许同时定义两个寄存器变量。如果寄存器变量多于两个,则在编译时系统会自动地将其他寄存器变量当作非寄存器变量来处理。【课堂问答】✈【教师】随机邀请学生回答以下问题自动变量、全局变量、静态变量和寄存器变量中哪些是在整个程序运行过程中都不会消失?✈【学生】聆听、思考、回答✈【教师】总结学生的回答3)变量的存储器类型Keil软件所能识别的变量的存储器类型如表1-4所示(详见教材)。如果在定义变量时省略了存储器类型,编译系统会按照默认的存储模式去指定变量的存储区域,这些存储模式包括small模式、compact模式和large模式。small模式:该模式是将函数参数和局部变量都放置在片内RAM中(默认变量类型为data,最大128B)。另外,其他所有对象(包括栈)也都优先放置在片内RAM区,当片内RAM用满时,再放置到片外RAM中。该模式的优点是访问速度快,缺点是空间有限。compact模式:该模式是将函数参数和局部变量都放置在片外RAM中(默认存储类型为pdata,最大256B),变量需要通过间接寻址方式进行访问。该模式的优点是空间比small模式大,缺点是访问速度比small模式慢,但比large模式快。large模式:该模式是将函数参数和局部变量都放置在片外RAM中(默认存储类型为xdata,最大64KB),变量需要使用数据指针DPTR通过间接寻址方式进行访问。该模式的优点是空间大,缺点是访问速度慢。【学生】聆听、思考、理解、记录课堂讨论【教师】对学生进行分组,4~6人一组,每组选出一名组长,然后组织学生以小组为单位讨论以下问题单片机构成的微型计算机系统包括了中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O端口、中断系统、定时/计数器等,那么每一组成部分的功能是什么?【学生】聆听、思考、小组讨论,由小组代表上台发表讨论结果【教师】总结学生的回答,并评价各组的表现课堂小结【教师】简要总结本节课的要点本次课介绍了单片机的概念,其是一种集成电路芯片组成的微型计算机系统,包括了CPU、RAM、ROM、I/O等,让学生了解了单片机的应用领域,讲解了单片机种类,重点介绍MCS-51系列单片机及其功能特性,最后讲解了C语言基础知识,包括C语言程序的基本结构、数据类型及转换、常量与变量。【学生】总结回顾知识点作业布置【教师】布置课后作业请根据本课内容,完成课后习题中的相关习题。本课作业布置二维码老师扫描此码,即可进行线上作业布置【学生】完成课后任务教学反思
课题认识单片机(二)课时2课时(90min)教学目标知识目标:(1)掌握C语言的运算符与表达式(2)了解C语言的基本语句,并掌握选择语句、循环语句的应用能力目标:能够使用C语言进行程序设计素质目标:具备勇于创新、虚心好学的品质,养成自主学习、协作学习、探究学习的意识教学重难点教学重点:C语言的运算符与表达式、输入与输出,C语言的选择结构和循环结构教学难点:C语言的循环结构教学方法问答法、讨论法、讲授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务键盘和显示器分别作为电脑的输入和输出设备,请大家查询资料,在C语言中如何实现用户的键盘输入和显示器输出。【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:请大家总结数学当中用到的各类运算符,C语言中是否仍然采用这些运算符?传授新知【教师】讲解C语言基础知识:运算符与表达式、输入与输出、语句三、C语言基础知识(四)运算符与表达式运算符是完成某种特定运算的符号。C51语言中常用的运算符有算术运算符、关系运算符、逻辑运算符、逗号运算符、位运算符、赋值运算符和条件运算符。表达式是由运算符及运算对象所组成的具有特定含义的式子。根据运算符种类的不同,表达式可分为算术表达式、关系表达式、逻辑表达式、逗号表达式、位运算表达式、赋值表达式和条件表达式等。1.算术运算符与算术表达式算术运算符是执行算术运算时的操作符,包括正、负、加、减、乘、除、取余、自增和自减等,如表1-5所示(详见教材)。用算术运算符和括号将表达式连接起来的式子称为算术表达式。算术表达式的一般形式为表达式1算术运算符表达式2算术表达式的计算根据算术运算符的优先级从高到低依次执行。算术运算符的优先级和基本四则运算法则一致,即“先乘除,后加减,括号最优先”,取余运算符与乘除同级。若一个运算量两侧的运算符同优先级,则按结合性方向进行计算。算术运算符的结合性皆为左结合性,即同优先级算术运算符按自左向右方向进行计算。2.关系运算符与关系表达式关系运算符用来比较两个变量的大小,运算结果只有0和1两种,也就是逻辑的真与假,当指定的条件满足时结果为1,不满足时结果为0。常见的关系运算符如表1-6所示(详见教材)。关系运算符的优先级别:前两个(==、!=)具有相同的优先级,后四个(>、<、>=、<=)也具有相同的优先级,但是前两个的优先级要低于后四个。用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式通常用来判别某个条件是否满足。关系表达式的一般形式为表达式1关系运算符表达式23.逻辑运算符与逻辑表达式✈【教师】多媒体播放微课“逻辑运算的真值表”(详见教材),让学生总结逻辑运算的种类和各自的运算规则逻辑运算符是执行逻辑运算时的操作符,包括逻辑与(&&)、逻辑或(||)、逻辑非(!),如表1-7所示(详见教材)。逻辑运算的最终结果为真(值为1)或假(值为0)。用逻辑运算符将关系表达式或逻辑量连接起来的式子称为逻辑表达式。逻辑表达式的一般形式为逻辑与:条件式1&&条件式2逻辑或:条件式1||条件式2逻辑非:!条件式逻辑与表达式的值:当条件式1与条件式2都为真时结果为真,否则结果为假。逻辑或表达式的值:只要两个条件式中有一个为真,逻辑运算结果就为真。只有当两个条件式都不为真时,逻辑运算结果才为假。逻辑非表达式的值:如果条件式的运算结果为真,则进行逻辑非运算后结果为假;如果条件式的运算结果为假,则进行逻辑非运算后结果为真。逻辑运算符的优先级别从高到低依次为:!(逻辑非)>&&(逻辑与)>||(逻辑或)。【课堂问答】✈【教师】随机邀请学生回答以下问题请同学们总结归纳,物理电路中的串联电路、并联电路、短路,与上述的逻辑与、逻辑或、逻辑非有什么对应关系?✈【学生】聆听、思考、回答✈【教师】总结学生的回答4.逗号运算符与逗号表达式C语言把逗号“,”作为间隔符,也作为运算符。用逗号运算符将几个表达式连接起来的式子称为逗号表达式。逗号表达式的一般形式为表达式1,表达式2,,表达式n逗号运算符和逗号表达式在使用过程中应注意以下几个问题。(1)逗号表达式在运算时将从左至右依次求取各个表达式的值(先求表达式1,然后求表达式2,直至求解完表达式n),而整个逗号表达式的值为最后一个表达式的值。(2)逗号运算符在全部运算符里优先级最低,因此最好将整个逗号表达式用圆括号括起来,否则意义可能会不同。(3)逗号运算符的结合性为自左向右。因此当前后表达式用到相同的变量时,如果前面表达式中变量值发生了变化,则会影响后面的表达式。5.位运算符与位运算表达式✈【教师】多媒体播放微课“位运算符的运算规则”(详见教材),通过举例,让学生掌握每种位运算的运算规则位运算符的作用是按二进制位对变量进行运算,但是并不改变参与运算的变量的值。C51语言中共有6种位运算符,如表1-8所示(详见教材)。用位运算符将两个变量连接起来的式子称为位运算表达式。位运算表达式的一般形式为变量1位运算符变量2位运算符的优先级从高到低依次是:“~”(按位取反)>“<<”(左移)>“>>”(右移)>“&”(按位与)>“^”(按位异或)>“|”(按位或)。6.赋值运算符与赋值表达式1)简单赋值赋值符号“=”就是赋值运算符。用赋值运算符将一个变量与一个表达式连接起来的式子称为赋值表达式。赋值表达式的一般形式为变量=表达式赋值表达式的作用是将一个表达式的值赋给一个变量,因此,赋值表达式具有计算和赋值两个功能。2)复合赋值C语言可以在赋值运算符“=”之前加上其他运算符,构成复合赋值运算,用以简化程序,提高编译的效率,其一般形式为变量复合赋值运算符表达式相当于:变量=变量运算符表达式复合赋值运算时,首先对变量进行某种运算,然后将运算的结果再赋给该变量。常用的复合赋值运算符如表1-9所示(详见教材)。赋值运算符都为同一优先级,遵循右结合性,其结合方向为自右向左。7.条件运算符与条件表达式条件运算符为“?:”。用条件运算符将三个表达式连接起来的式子称为条件表达式。条件表达式的一般形式为逻辑表达式?表达式1:表达式2条件表达式中逻辑表达式的类型可以与表达式1和表达式2的类型不一样。条件运算符的作用是根据逻辑表达式的结果来选择表达式的值。当逻辑表达式的结果为真时(非0值)时,则条件表达式的值为表达式1的值;当逻辑表达式的结果为假(值为0)时,则条件表达式的值为表达式2的值。✈【教师】多媒体播放微课“C51语言中运算符的优先级及结合性”(详见教材),通过表格总结的形式,让学生直观感受各类运算符的优先级及其结合性【课堂问答】✈【教师】随机邀请学生回答以下问题当我们写程序的时候,在运算复杂的情况下,如何保证运算按照我们预想的规则进行?✈【学生】聆听、思考、回答✈【教师】总结学生的回答(五)输入与输出C语言本身没有提供输入和输出语句,输入和输出操作由C语言函数库中的函数来实现。1.格式输入与输出函数1)格式输入函数(scanf函数)✈【教师】多媒体播放微课“格式输入函数”(详见教材),让学生掌握scanf函数的用法scanf函数的作用是按用户指定的格式从键盘上把数据输入到指定的变量中。scanf函数的一般形式为scanf("格式控制",输入项地址列表);scanf函数括号内包括以下两部分内容。(1)“格式控制”是用双引号括起来的一个字符串,称为转换控制字符串。它包括两个信息:格式声明和普通字符。①格式声明。格式声明由“%”和格式字符组成,如%d、%f等。它的作用是以指定的格式输入数据,如指定输入数据的类型、长度等。②普通字符。普通字符是需要按原样输入的字符。例如,上面scanf函数括号内的“a=”“b=”及中间的逗号都是普通字符。(2)输入项地址列表,由需要输入变量的地址组成。变量的地址需用取地址运算符“&”得到。多个输入项之间用逗号隔开,要求格式声明和各输入项在数量和类型上一一对应。例如,在如图1-6所示(详见教材)的scanf函数中,第一个格式声明“%d”与变量a对应,第二个格式声明“%c”与变量b对应,第三个格式声明“%f”与变量c对应。✈提示在赋值表达式中给变量赋值,赋值号左边是变量名,不能写地址;而scanf函数在本质上也是给变量赋值,但其要求写变量的地址,如&a。这两者在形式上是不同的。&a是一个表达式,其功能是求变量的地址。2)格式输出函数(printf函数)✈【教师】多媒体播放微课“格式输出函数”(详见教材),让学生掌握printf函数的用法printf函数的作用是按用户指定的格式,把指定的数据输出到屏幕上。printf函数可以用于所有类型数据的输出,只要采用不同的转换控制字符串,就可以将不同类型的数据输出到屏幕上。printf函数的一般形式为printf("格式控制",输出项列表);printf函数括号内包括以下两部分内容。(1)“格式控制”与scanf函数类似,也包含两部分内容:格式声明与普通字符。格式声明用于指定输出的格式,如指定输出数据的类型、长度等;普通字符是需要按原样输出的字符,如前面的“a=”“b=”及中间的逗号,会原样输出到屏幕上。(2)“输出项列表”是程序需要输出的一些数据,可以是常量、变量或表达式。输出项列表中给出了各个输出项,要求格式声明和各输出项在数量和类型上一一对应。2.字符输入与输出函数除了可以用scanf函数和printf函数输入输出字符外,C语言函数库还提供了一些专门用于输入输出字符的函数,下面将进行简单介绍。1)字符输入函数(getchar函数)getchar函数的作用是从输入设备上输入一个字符。getchar函数的一般形式为getchar();getchar函数的返回值为所读取的字符,所以一般与赋值语句联合使用,将读取的字符赋给变量。✈提示getchar函数只读取单个字符,如果输入多个字符,则只读取第一个字符。2)字符输出函数(putchar函数)putchar函数的作用是向输出设备输出一个字符。putchar函数的一般形式为putchar(c);c为欲输出的字符常量或变量,亦可为整型常量或变量(ASCII码)。✈提示可以用putchar函数输出转义字符,例如:putchar('\n'); /*输出换行符*/putchar('\101'); /*输出字符A,因为八进制的101等于十进制的65,65是A的ASCII码*/putchar('\''); /*输出单撇号*/(六)语句C语言中的语句是用来向计算机系统发出操作指令的,即语句是用来完成一定操作任务的。一个实际的程序应该包含若干条语句。1.语句的类型根据程序设计语言的基本要求,可以把C语言所有的语句归纳为以下五类。1)表达式语句表达式语句是由一个表达式加上分号组成的语句,其一般形式为表达式;执行表达式语句就是计算表达式的值。2)函数调用语句函数调用语句是由一个函数名加上分号组成的语句,其一般形式为函数名(实际参数列表);执行函数调用语句就是调用函数体并把实际参数(简称“实参”)赋予函数定义中的形式参数(简称“形参”),然后执行被调函数体中的语句,求取函数值。3)空语句空语句是只有分号组成的语句,什么也不执行。在程序中,空语句可用来作空循环体。4)复合语句复合语句是把多条语句用花括号括起来组成的语句。在程序中,可把复合语句看成是单条语句。✈提示复合语句内的各条语句都必须以分号结尾,但在花括号的“}”外不能加分号。5)控制语句控制语句用于控制程序的执行流程,它们是由特定的语句定义符组成的语句。C语言有九种控制语句,可分为以下三类。(1)选择语句:if语句、switch语句。(2)循环语句:while语句、do-while语句、for语句。(3)转向语句:break语句、continue语句、goto语句、return语句。下面详细介绍三类控制语句的相关内容。2.选择语句1)if语句✈【教师】多媒体播放微课“if语句的基本形式”(详见教材),让学生掌握if语句实现选择结构的方法if语句是条件选择语句,先判断表达式的值,然后根据该值的结果(“真”或“假”)控制程序流程。表达式的值非0即为“真”,否则即为“假”。C语言提供了四种形式的if语句:基本if语句、if-else语句、if-else-if语句和嵌套if语句。其中,前三种形式是if语句的基本形式。(1)基本if语句。基本if语句的一般形式为if(表达式){语句;}其中,“表达式”可以是任意表达式,但一般为关系表达式或逻辑表达式;“语句”可以是一条简单语句,或是由多个语句构成的复合语句,也可以是一个空语句。基本if语句的执行过程是:如果表达式的值为真(非0),则执行其后的语句,否则不执行该语句,如图1-7所示(详见教材)。(2)if-else语句。基本if语句只允许在条件为真时指定要执行的语句,而if-else语句还可在条件为假时指定要执行的语句。if-else语句的一般形式为if(表达式){ 语句1;}else(表达式){ 语句2;}if-else语句的执行过程是:如果表达式的值为真(非0),执行语句1,否则执行语句2,如图1-8所示(详见教材)。需要注意:尽管if-else语句中存在两个语句段,且有两个表示语句结束的分号,但整个语句在语法上只是一条语句。尤其要注意if分支“语句1”后的分号是不可缺少的。(3)if-else-if语句。编程时常常需要判定一系列的条件,一旦其中某一个条件为真就立刻停止。这种情况可以采用if-else-if语句,其一般形式为if(表达式1){ 语句1;}elseif(表达式2){ 语句2;}elseif(表达式3){ 语句3;} …elseif(表达式m){ 语句m;}else{ 语句n;}if-else-if语句的执行过程是:依次判断表达式的值,当出现某个值为真(非0)时,则执行其对应的语句,然后跳到整个if语句之外继续执行后续程序。如果所有表达式的值都为假(0),则执行最后一个else后的语句,然后继续执行后续程序,如图1-9所示(详见教材)。(4)嵌套if语句。在if语句中又包含一个或多个if语句称为嵌套if语句。前面介绍的if-else-if语句就属于嵌套if语句,其一般形式为if(表达式1){ if(表达式2) { 语句1;内嵌if }内嵌if else { 语句2; }}else{ if(表达式3) { 语句3;内嵌if }内嵌if else { 语句4; }}嵌套if语句的执行过程如图1-10所示(详见教材)。在上述嵌套语句中,if与else既可成对出现,也可不成对出现,且else总是与其之前最近的且还没配对的if相配对。在书写这种语句时,每个else应与对应的if对齐,形成锯齿形状,这样能够清晰地表示if语句的逻辑关系。✈【教师】讲解例题1-3(详见教材),让学生掌握嵌套if语句的用法✈提示每个else本身都隐含了一个条件,如例1-3中的第1个else实质上表示条件c>a成立,此隐含条件与对应的if所给出的条件(a>c)完全相反,在编程时要善于利用隐含条件,使程序代码清晰简洁。2)switch语句✈【教师】多媒体播放微课“switch语句”(详见教材),让学生掌握switch-case语句实现选择结构的方法编程时,常常要把表达式和一系列值进行比较,从中找出当前匹配的值。if-else-if语句可以达到这个目的。此外,C语言还提供了switch语句作为if-else-if语句的替换。switch语句往往比if-else-if语句更容易阅读。switch语句的一般形式为switch(表达式){ case常量表达式1:[语句1] case常量表达式2:[语句2] … case常量表达式n:[语句n] [default:语句n+1]}其中,方括号括起来的内容是可选项。switch语句的执行过程如图1-13所示(详见教材)。该语句执行时,首先计算switch后表达式的值,然后将其值与case后常量表达式的值依次进行比较,若此值与某case后常量表达式的值一致,即转去执行该case后的语句;若没有找到与之匹配的常量表达式,则执行default后的语句。【课堂问答】✈【教师】随机邀请学生回答以下问题请同学们思考,switch语句当中的default是否可以省略?✈【学生】聆听、思考、回答✈【教师】总结学生的回答3.循环语句1)while语句✈【教师】多媒体播放微课“while循环语句”(详见教材),让学生掌握while循环语句的使用方式在C语言所有循环语句中,while语句是最简单也是最基本的。while语句的一般形式为while(表达式){ 语句; /*循环体*/}圆括号内的表达式是控制表达式,语句是循环体,循环体可以是一条简单的语句,也可以是多条语句组成的复合语句(用花括号括起来)。while语句的执行过程如图1-14所示(详见教材)。该语句执行时,先计算表达式的值,如果它为真,则执行循环体;接着再次判定表达式的值,如果它仍为真,则继续执行循环体,依此类推,直到表达式的值为假,结束循环,执行while语句后的下一条语句。✈提示while语句是“先判断,后执行”。如果刚进入循环时条件就不满足,则循环体一次也不执行。还需要注意的是,一定要有语句修改表达式的值,使其有结果为假的时候,否则将出现“死循环”。在while语句中没有包含设置初始状态的功能,因此,这一工作需要在while语句之前完成。循环相关状态的修改是在循环体中完成的,因此,除了少数特殊情况外,while语句的循环体一般都是复合语句。✈【教师】讲解例题1-4(详见教材),让学生掌握while语句的循环体的具体用法2)do-while语句✈【教师】多媒体播放微课“do-while循环语句”(详见教材),让学生掌握do-while循环语句的使用方式do-while语句的一般形式为do{ 语句; /*循环体*/}while(表达式);do-while语句与while语句的不同在于:它先执行循环体,然后再判断表达式的值是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while语句至少要执行一次循环体。do-while语句的执行过程如图1-17所示(详见教材)。✈提示在do-while语句中,条件放在while后面的圆括号内,并且最后必须加上一个分号。3)for语句在C语言中,除了可以用while和do-while语句实现循环外,还可以用for语句实现循环,其一般形式为for(表达式1;表达式2;表达式3){ 语句; /*循环体*/}for语句将控制循环的主要操作集中在循环语句开头的圆括号内。圆括号内三个表达式的作用如下。表达式1:通常为赋值表达式,实现循环控制变量的初始化,只执行一次。表达式2:通常为关系表达式或逻辑表达式,用来判断是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。表达式3:一般称为“步长”,用于循环变量的修改,该表达式是在每次循环体执行完以后、下一次循环条件判断之前执行的,使循环变量经过多次循环的累积而发生改变,最终因为不满足循环条件退出循环。for语句的执行过程如图1-18所示。(1)先执行表达式1。(2)然后判断表达式2的值,若其值为真(非0),则执行for语句中指定的循环语句,然后转到第(3)步;若其值为假(0),则结束循环,转到第(5)步。(3)执行表达式3。(4)返回到第(2)步继续执行。(5)循环结束,执行for语句下面的语句。✈【教师】讲解例题1-5(详见教材),让学生掌握for语句的具体用法【课堂问答】✈【教师】随机邀请学生回答以下问题请同学们思考,三大循环的区别,以及其使用场景?✈【学生】聆听、思考、回答✈【教师】总结学生的回答4.转向语句下面主要介绍转向语句中的break语句和continue语句。1)break语句break语句主要是在循环次数不能预先确定的情况下使用的,在循环体中增加一个分支结构,当某个条件成立时,由break语句退出循环体,从而结束循环过程,其一般形式为break;✈提示(1)break语句不能用于循环语句和switch语句之外的其他语句。(2)在多重循环的情况下使用break语句时,仅退出包含break语句的那层循环体。2)continue语句如果不希望终止整个循环的操作,只希望提前结束本次循环,而接着执行下次循环,则可以用continue语句,其一般形式为continue;✈提示(1)continue语句只能出现在while、do-while和for语句的循环体中。(2)若执行while或do-while语句中的continue语句,则跳过循环体中continue语句后面的语句,直接转去判别下次循环控制条件;若执行for语句中的continue语句,则跳过循环体中continue语句后面的语句,转而执行for语句的表达式3。(3)在循环结构中,continue语句通常与if语句一起使用,用来加速循环。【课堂问答】✈【教师】随机邀请学生回答以下问题请同学们对比分析,break语句和continue语句根本上的区别,哪个语句可以用到switch-case语句当中?✈【学生】聆听、思考、回答✈【教师】总结学生的回答【学生】聆听、思考、理解、记录课堂讨论【教师】对学生进行分组,4~6人一组,每组选出一名组长,然后组织学生以小组为单位讨论以下问题for循环与while循环是最常用的循环结构,请同学们讨论,二者之间是否一定可以相互转换,能够转换的话如何进行转换?【学生】聆听、思考、小组讨论,由小组代表上台发表讨论结果【教师】总结学生的回答,并评价各组的表现课堂小结【教师】简要总结本节课的要点本次课介绍了运算符与表达式中的算术运算符与算术表达式、关系运算符与关系表达式、逻辑运算符与逻辑表达式、逗号运算符与逗号表达式、位运算符与位运算表达式、赋值运算符与赋值表达式、条件运算符与条件表达式,讲解了输入与输出中的格式输入scanf与输出函数printf,字符输入getchar与输出函数putchar。重点说明了条件分支语句if-else语句、switch-case语句的用法,以及三大循环for循环、while循环、do-while循环各自的语法及用法,最后介绍了break和continue转向语句。【学生】总结回顾知识点作业布置【教师】布置课后作业请根据本课内容,完成课后习题中的相关习题。本课作业布置二维码老师扫描此码,即可进行线上作业布置【学生】完成课后任务教学反思
课题认识单片机(三)课时2课时(90min)教学目标知识目标:(1)掌握C语言中一维数组和二维数组的定义、引用和初始化,了解字符数组(2)掌握C语言中函数的定义和函数的调用能力目标:能够使用C语言中的函数进行模块化程序设计素质目标:养成坚持不懈、刻苦钻研的职业作风,像C语言中模块化程序设计一样,处理问题时将复杂问题分解为不同简单问题,提高效率教学重难点教学重点:C语言的数组的使用和函数的使用教学难点:C语言的模块化设计思想教学方法问答法、讨论法、讲授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务请大家复习数学中集合的概念和特点,以及数列的概念和特点。【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:在C语言程序中,想存储一个班30个学生某一门课的成绩,我们可以定义30个变量,但是显然变量个数过多,那么应如何进行简化?传授新知【教师】讲解C语言基础知识:数组、函数三、C语言基础知识✈【教师】讲解C语言基础知识:数组的定义、引用,函数的使用(七)数组数组是具有相同数据类型的变量的集合,这些变量具有相同的名字,但用不同的下标来表明其位置,一般称这些变量为数组元素。常用的数组有一维数组、二维数组和字符数组。1.一维数组1)一维数组的定义一维数组定义的一般形式为类型说明符数组名[常量表达式];类型说明符:可以是任意基本数据类型或构造数据类型,如int、float、char等。数组名:是用户定义的数组标识符。对于数组元素来说,它们具有一个共同的名字,即数组名。常量表达式:也称数组的长度,表示数组元素的个数。对于一维数组的定义,应注意以下几点。(1)数组的类型实际上是指数组元素的数据类型。对于同一个数组,其所有元素的数据类型都是相同的。(2)数组名不能与其他变量名相同。(3)数组元素用下标形式表示,下标从0开始。例如,a[5]表示数组a有5个元素,5个元素分别为a[0]、a[1]、a[2]、a[3]、a[4]。(4)常量表达式中可以是常数或符号常量,但不能是变量。(5)经过定义,系统为数组元素在内存中分配了连续的存储单元。2)一维数组的引用C语言中规定只能单个引用数组元素而不能一次性引用整个数组。数组元素是组成数组的基本单元,它也是一种变量。一维数组的引用格式为数组名[下标]【课堂问答】✈【教师】随机邀请学生回答以下问题请同学们思考,a[5]表示数组a有5个元素,我们在程序中引用a[5],程序是否能编译通过,是否可以正常运行?✈【学生】聆听、思考、回答✈【教师】总结学生的回答✈提示(1)下标可以是常量或常量表达式,如a[3]、a[3+2]。(2)下标也可以是变量或变量表达式,如a[i]、a[i+j]、a[i++]。(3)下标不能越限,即引用时的下标不能超过或等于定义时的下标值,如“inta[10];a[10]=4;”是错误的。3)一维数组的初始化一维数组的初始化就是在定义一维数组的同时,给其数组元素赋初值。一维数组初始化是在编译阶段进行的,这样会减少程序的运行时间,从而提高程序效率。对一维数组进行初始化的一般形式为类型说明符数组名[常量表达式]={数值1,数值2,,数值n};其中,在花括号中的各数据值即为各元素的初值,各值之间用逗号间隔。例如:inta[3]={0,1,2};经过以上初始化后,a[0]=0,a[1]=1,a[2]=2。C语言对一维数组的初始化有以下几点规定。(1)可以只给部分元素赋初值。当花括号中数据值的个数少于元素个数时,只给前面部分元素赋值。例如,“inta[10]={0,1,2,3,4};”相当于只给a[0]、a[1]、a[2]、a[3]、a[4]赋初值,而后5个元素自动赋0值。(2)只能给元素逐个赋值,不能给数组整体赋值。例如,给5个元素全部赋1值,只能写为“inta[5]={1,1,1,1,1};”,而不能写为“inta[5]=1;”。【课堂问答】✈【教师】随机邀请学生回答以下问题请同学们思考,在上例中,如果数组a中只有一个元素,在初始化时,是否可以书写为“inta[1]=1;”?✈【学生】聆听、思考、回答✈【教师】总结学生的回答(3)如果在定义数组时给全部元素赋值,则在数组说明中可以不给出数组元素的个数,此时数组的个数由数据值的个数确定。例如,“inta[5]={1,2,3,4,5};”可写为“inta[]={1,2,3,4,5};”,表明数组有5个元素。(4)如果花括号中数据值的个数多于数组元素的个数,编译时将提示语法错误。2.二维数组在实际问题中有很多量是二维或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。本小节只介绍二维数组,多维数组可由二维数组类推得到。1)二维数组的定义二维数组定义的一般形式为类型说明符数组名[常量表达式1][常量表达式2];其中,常量表达式1表示行下标,常量表达式2表示列下标。数组元素个数为:常量表达式1常量表达式2。与一维数组相同,二维数组的下标值也从0开始。例如:intx[2][3]; /*定义一个2行3列的二维数组*/二维数组可用矩阵表示,x[2][3]可表示为一个2行3列的矩阵,即x[0][0]x[0][1]x[0][2]x[1][0]x[1][1]x[1][2]二维数组在概念上是二维的,但在存储器中是按一维线性排列的。在C语言中,二维数组是按行排列的。例如,二维数组x[2][3],先放第一行,即x[0][0]、x[0][1]、x[0][2];再放第二行,即x[1][0]、x[1][1]、x[1][2],如图1-20所示(详见教材)。2)二维数组的引用同一维数组一样,二维数组也要先定义后引用,其引用格式为数组名[下标1][下标2]其中,下标应为整型常量或整型表达式。3)二维数组的初始化二维数组的初始化有以下两种方法。(1)把初始化值括在一对花括号内。例如:intx[2][3]={1,2,3,4,5,6};始化结果是:x[0][0]=1,x[0][1]=2,x[0][2]=3,x[1][0]=4,x[1][1]=5,x[1][2]=6。【课堂问答】✈【教师】随机邀请学生回答以下问题请同学们思考,在上例中,如果数组x初始化的时候,花括号中数据值的个数少于元素个数6,二维数组是如何进行初始化的?✈【学生】聆听、思考、回答✈【教师】总结学生的回答(2)把二维数组看作是一种特殊的一维数组,该数组的每个元素又是一个一维数组。例如,定义了二维数组x[2][3],可以把数组x看成是具有两个元素的一维数组,其元素是x[0]和x[1];而x[0]和x[1]又都是具有三个元素的一维数组,如图1-21所示(详见教材)。因此,二维数组的初始化也可以分解成多个一维数组的初始化。例如:intx[2][3]={{1,2,3},{4,5,6}};3.字符数组前面介绍的都是数值型数组,即数组元素都是数值型。还有一种数组,其每个元素都是一个字符。也就是说,数组元素的数据类型都是char类型,这种数组称为字符数组。1)字符数组的定义及引用字符数组的定义形式与前面介绍的数值型数组的定义形式相似,其定义形式为char数组名[常量表达式];例如:charch[10];定义ch为一维字符数组,共包含10个字符。字符数组也可以是二维或多维的。二维字符数组的定义形式为char数组名[常量表达式1][常量表达式2];例如:charstr[3][4];定义str为二维字符数组,3行4列,共包含12个字符。字符数组的引用也与数值型数组的引用方式一样,可使用下标的形式。2)字符数组的初始化字符数组同样允许在定义时进行初始化赋值。字符数组初始化的过程与数值型数组初始化的过程相似。例如:chara[5]={'H','e','l','l','o'};赋值后各元素的值为:a[0]='H',a[1]='e',a[2]='l',a[3]='l',a[4]='o'。字符数组与数值型数组在初始化时的区别在于:如果字符数组在初始化时提供的数据个数少于数组元素个数,则多余的数组元素初始化为空字符'\0',而数值型数组是0。例如:charb[9]={'G','o','o','d'};初始化后各元素的值为:b[0]='G',b[1]='o',b[2]='o',b[3]='d',b[5]='\0',b[6]='\0',b[7]='\0',b[8]='\0'。(八)函数在C语言中,用函数来实现模块的功能,一个C语言程序可由一个主函数和若干个其他函数构成。从用户使用的角度看,函数可分为库函数和用户自定义函数两大类。库函数是由系统提供的,用户不必自己定义可以直接使用。库函数由系统预定义在相应的头文件中。使用时,在程序的开头把该函数所在的头文件包含进来即可。例如,调用printf函数和scanf函数时需要在程序开头包含stdio.h头文件。用户自定义函数是用户为完成某些特定功能而编写的函数。下面将主要介绍用户自定义函数的相关内容。1.函数的定义✈【教师】多媒体播放微课“函数的定义”(详见教材),让学生了解无参函数的定义形式、有参函数的定义形式函数由函数头和函数体两部分组成。函数头又由返回值类型、函数名和形参表组成。其中,返回值类型可以是某个数据类型;函数名是用户为函数起的名字,用来唯一标识一个函数;形参表可以有零个或多个变量,在进行函数调用时,实参将被复制到这些变量中。函数体是函数实现自身功能的一组语句。下面对函数定义的形式进行详细介绍。1)无参函数定义无参函数定义的一般形式为类型说明符函数名(){ 函数体}或类型说明符函数名(void){ 函数体}函数名后面括号内的void表示“空”,即函数没有参数。无参函数的“类型说明符”指定函数返回值的类型,可以是任何有效类型。省略“类型说明符”时,系统默认的函数返回值类型为int型。当函数只完成特定操作而不需要返回函数值时,可用类型名void。此外,函数的命名规则与变量的命名规则相同。2)有参函数定义有参函数定义的一般形式为类型说明符函数名(形参表){ 函数体}有参函数在函数名后的括号内必须有形参表,用于调用函数和被调函数之间的数据传递,可在形参表中对形参的类型进行说明。一般情况下,函数中需要多少个原始数据,函数的形参表中就应有多少个形参,每个形参存放一个数据,形参之间用逗号隔开。例如:intmin(inta,intb){ intc; c=a<b?a:b; return(c);}这是一个求a和b两数中较小值的函数。函数的类型说明符为int型,表示函数的返回值为整型。a和b是形参,它接受调用函数的实参,两个参数的类型声明用逗号分隔。花括号内是函数体,其中,“intc;”是函数体中的数据定义,后面一条语句用于求a和b中的较小者,return语句的作用是将c的值作为函数值返回到调用函数中。【课堂问答】✈【教师】随机邀请学生回答以下问题请同学们观察函数体的构成,是否必须包含return语句,如果不是必须包含,那么什么情况下可以不包含return语句?✈【学生】聆听、思考、回答✈【教师】总结学生的回答2.函数的调用✈【教师】多媒体播放微课“函数的调用”(详见教材),让学生了解函数调用的形式、调用的方式,以及如何对函数进行声明函数的调用是指一个函数(调用函数)暂时中断本函数的运行,转去执行另一个函数(被调函数)的过程。被调函数执行完后,返回到调用函数中断处继续运行,这是一个返回过程。函数的一次调用必定伴随着一个返回过程。在调用和返回两个过程中,两个函数之间发生信息交换。1)函数调用形式函数调用的一般形式为函数名(实参表);对于函数调用形式,需要说明以下几点。(1)如果调用无参函数,则“实参表”可以没有,但括号不能省略。(2)实参表中实参的类型及个数必须与形参相同,并且顺序一致。当有多个实参时,参数之间用逗号隔开。(3)实参可以是常量、变量或表达式。2)函数调用方式根据被调函数在调用函数中出现的位置和完成的功能不同,函数调用方式有以下三种。函数表达式:函数作为表达式中的一项出现,以函数返回值参与表达式的运算。函数语句:函数调用的一般形式加上分号即构成函数语句。函数作为实参:函数作为另一个函数调用的实参出现,即把该函数的返回值作为实参进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 气管切开病人呼吸功能的评估与监测
- 员工能力评价表(试岗专用)
- 甲状腺疾病护理团队建设
- 2026年收外汇合同(1篇)
- 2026年铺位转租合同(1篇)
- 2026年商业住宅设计合同(1篇)
- 2026年医疗器械销售代理合同协议
- 《水产养殖场智慧化建设规范》
- 2026年学校土地置换合同(1篇)
- 大湖拆迁协议书范本
- 2026年安徽省合肥市经开区中考语文二模试卷(含详细答案解析)
- 2026上半年广东省铁路建设投资集团有限公司管理人员社会招聘备考题库含答案详解(能力提升)
- 算电协同关键技术 (课件)
- 2026年医疗事业单位编制公共基础知识考点预测真题题库(含答案)
- 2026年甘肃兰州市初二学业水平地理生物会考考试试题及答案
- 2026年及未来5年市场数据中国实体书店行业市场发展现状及投资前景展望报告
- 社区采购询价制度
- DB32∕T 5314-2025 高速公路电动汽车清障救援作业规范
- JJF 2370-2026 建筑运行阶段碳排放计量技术规范
- 海尔员工绩效考核制度
- 肝移植管理制度
评论
0/150
提交评论