单片机实验指导书下
实验说明
实验1:定时控制实验
要求:电路连接与编程相结合,控制灯按一定规律点亮和熄灭。注意:灯为低电平驱动。
实验报告:说明灯亮的方式;画出实际电路图、程序流程图和源程序(要有详细注释)。
实验2:密码锁实验
要求:三个数码键一个确认键,按设定的密码(开关顺序)使灯点亮。
注意:为消除开关触点抖动,判断时要加10毫秒左右的延时。
实验报告:说明密码顺序;画出实际电路图、程序流程图和源程序(要有详细注释)。
实验3:音乐发生器实验
要求:电路连接与编程相结合,使单片机演奏一段乐曲。
实验报告:画出实际电路图、程序流程图和源程序(要有详细注释)。
实验4:串口通讯实验
要求:两人为一组,一人为发一人为收,通过串口连接。用发者的开关控制收者的灯点亮或发出音响。之后二人交换收、发。实验报告:画出电路图、程序流程图和源程序(要有详细注释)。
硬件测试程序
main: mov p0,#0ffhmov p1,#0ffhmov p2,#0ffhmov p3,#0ffhacall spk1
mov p0,#00hmov p1,#00hmov p2,#00hmov p3,#00hacall spk2
sjmp main
spk1: mov r0,#0ffhmov r2,#0ffhacall spk
ret
spk2: mov r0,#0ffhmov r2,#0dfhacall spk
ret
spk:cpl p1.0
lp1:mov a,r2,mov r5,adjnz r5,$cpl p1.0djnz r0,lp1
ret
;端口设置 ;1-灯灭
;调音响1 ;端口清0 ;灯亮
;调音响2 ;返回重复
;设音响1 ;参数 ;调音响
;设音响2 ;参数 ;调音响
;P1.0翻转
我国的工程教育专业认证工作始于2006年,已有多所高校的多种专业通过了认证。他们的成功经验表明,专业认证从过程到结果,对提高专业教学质量起到了非常重要的促进作用。认证过程就是对专业建设不断学习、不断完善、不断创新的提升过程。专业认证可以使高校更进一步地明确培养目标,更进一步关注专业培养与社会需求的接轨,达到提高学生就业水平,提高学生综合能力的目的[1]。工程教育要突出综合性、实践性、经济性、创新性,要尽可能把工程实践与素质教育结合起来,培养学生的综合实用和创新能力。这与工程教育专业认证的10项毕业要求是完全一致的[2,3,4]。
我校的测控技术与仪器专业成立于2001年,是一门多学科相互交叉渗透形成的一门综合工程学科。而微机及单片机原理与应用课程及相关实践课程是本专业的基本课程。通过微机及单片机原理与应用课程的学习,可使学生在理论和实践上掌握微型计算机的基本组成、工作原理及常用接口技术;初步掌握汇编语言程序设计的基本方法和上机调试过程;建立微机整体概念,具备利用微机进行硬、软件开发的初步能力。使学生了解单片机的基本工作原理,认识单片机系统的结构,掌握单片机应用系统的设计方法和流程,具备单片机应用系统开发的初步应用能力,为将来从事单片机应用系统的设计与开发打下坚实的基础。
基于上述分析,结合我校应用型本科特点对我校测控技术与仪器专业的微机及单片机原理与接口技术课程进行了改革和创新。
1 课程地位与存在问题
微机及单片机原理与接口技术课程是测控专业的专业基础课,课程改革之前,微机原理64学时,其中实验12学时。本课程以8086微型计算机为研究对象,以CPU结构、汇编语言和接口技术为重点。其任务是使学生能够从应用的角度出发,在理论和实践上掌握微型计算机的基本组成、工作原理及常用接口技术;初步掌握汇编语言程序设计的基本方法和上机调试过程;建立微机整体概念,具备利用微机进行硬、软件开发的初步能力。教学内容包括:8086CPU的内部结构及其基本工作原理,操作数的各种寻址方式,8086的指令系统及应用。常用的伪指令,汇编语言程序的结构以及汇编语言程序设计方法。中断技术,可编程中断控制器8259A的主要功能、工作方式及应用。各类存储器的特点与接口扩展技术。可编程并行接口8255A、可编程定时器/计数器8253的结构及其应用,可编程串行通信接口8251A的结构及其应用,ADC0809和DAC0832的内部结构及其应用。
单片机原理与接口技术40学时,其中实验8学时。学习的目的是要掌握单片机应用系统的设计方法和流程,具备单片机应用系统开发的初步应用能力。教学内容包括:MCS-51单片机的内部结构及工作原理、引脚功能、时序等。MCS-51单片机的指令系统及应用,单片机汇编语言程序的结构以及汇编语言程序设计方法。MCS-51单片机存储器接口扩展技术,并行I/O口芯片8255A、8155的结构及应用,串行口、中断系统、定时器/计数器等片内资源的使用,ADC0809和DAC0832接口技术,键盘与显示接口技术。
从教学内容安排上可以看出,微机原理与单片机在接口技术部分有大量重复的部分,如存储器的扩展、并行IO端口扩展技术以及AD/DA接口部分,包括汇编语言程序设计的程序结构部分基本一样。单片机课程的实践应用范围广、实用性强、学时较少,所以应该适当综合考虑合理分配两门课程的教学内容与学时安排。以工程教育专业认证为引领,对微机和单片机原理与应用课程进行教学改革,明确课程目标与学生能力培养的对应关系。
2 课程教学内容及教学方式改革
由于8086芯片在工程应用中较少,而单片机的应用非常广泛,对这两门课程进行整合,压缩微机原理的学时为32,无实验学时;扩展单片机课程的总学时为48,实验学时8,加强单片机课程的学习力度。在教学内容上也作了相应调整。微机原理课程中只保留内部结构与工作原理、指令系统与汇编语言程序设计、存储器及接口、中断系统及可编程中断控制器8259A等内容,其他接口部分均放在单片机课程中学习。表1所示为两门课程调整后的授课内容安排。由于近年来单片机系统应用偏重低功耗和便携式,并口外设越来越少,串行口外设比较普遍,故单片机课程中增加了串行口扩展技术。另外工程应用中,单片机C语言的应用比较广泛。所以在单片机课程48学时还分配了8学时单片机C语言内容。内容主要集中在定时、中断及AD/DA接口,键盘与显示接口的应用上,使学生能扎实地掌握工程基础知识和基本理论知识,具有系统的工程实践学习经历,培养出符合工程教育专业认证的人才。在人才培养方案中,把两门课同时放在第4学期学习,微机原理在前,单片机在后连续进行由同一教师担任相同班级的两门课程的教学任务,改革之前单片机在第5学期开设,把单片机课程提前有利于学生提早进行实践动手能力的培养,可以更好地促进校内及全国范围内的大学生科技创新活动的开展。
3 课程实践环节改革
在课程实践能力培养方面,单片机8学时的实验安排了基本编程练习数据处理或数据转换的设计性实验、定时计数器及外部中断的设计性实验、AD/DA接口验证性实验、键盘和数码显示接口验证性实验,基本包含了单片机片内资源及外部接口的所有软硬件知识点。在完成基础实验后,安排2周学时的单片机课程设计,提供多个题目供学生选择,题目有:电子钟设计、电子琴设计、空调控制器设计、微波炉控制程序设计、电磁炉控制设计、洗衣机洗衣程序控制设计、步进电机控制设计、直流电机控制设计、16×16点阵显示器设计、数字温度计设计、计算器设计等。学生可根据自己能力选择单片机实验箱硬件连线软件编程方式或者自己动手设计硬件电路、软件编程、绘制电路板购买元器件进行焊接调试,软硬件联合调试方式完成课程设计任务,充分发挥学生主观能动性,根据完成情况、调试情况、功能实现及现场答辩几个环节综合评分。软件编程可以选择汇编语言或单片机C语言实现。使学生具备设计和实施工程实验的能力和对实验结果进行分析的能力,目的是能培养出符合工程教育专业认证要求能力的工程类毕业生。图1与图2分别为学生课程设计时的仿真与实验箱调试结果。
4 课程考核方式
微机原理考试采用闭卷笔试方式。学生的课程总评成绩由平时成绩(占20%)和期末考试成绩(占80%)两部分构成,平时成绩由出勤、作业、课堂提问、学习主动性组成。单片机课程采用两种考核方法,由学生选择其中一种。
(1)作品:学生自行开发一个单片机应用系统,调试成功写出设计报告后跟任课教师申请答辩,任课老师根据实物的完成情况及答辩情况给出相应的成绩。设计报告跟试卷存档。学生的课程总评成绩由平时成绩(占10%)、实验成绩(占20%)和设计综合成绩(占70%)三部分构成,平时成绩根据出勤、作业、课堂提问、学习主动性等进行评价。图3为学生提交的水箱水温水位自动监测报警系统作品之一。
(2)课程考试:期末考试采用闭卷笔试方式。学生的课程总评成绩由平时成绩(占10%)、实验成绩(占20%)和期末考试成绩(占70%)三部分构成,平时成绩根据出勤、作业、课堂提问、学习主动性等进行评价[5]。
5 结束语
目前该教学模式已实行两年,效果显著,实验操作出勤率100%,实验及课程设计报告上交100%,多数学生成绩优良,课程设计的调试成功率大大提高,学生的主动性增强。加强课程实验和课程设计强化了工程实践能力的培养,对学生动手能力的锻炼起到重要作用,这种工程能力在后续课程中得到了充分的应用和实践。如:毕业设计、电子设计竞赛、大学生创新科技活动,省大学生科技创新活动等环节,这与工程教育专业认证的目标一致。随着工程教育专业的建设与发展,对于微机与单片机课程及其他核心专业课程的教学改革与探索仍然非常重要。
参考文献
[1]叶洪涛,罗文广,曾文波.基于专业认证的地方高校人才培养模式探索[J].高教论坛,2012(10):34-36.
[2]陈青山,董明利,祝连庆.工程教育专业认证背景下的精密测量技术课程建设[J].学园,2015(4):10-11.
[3]彭熙伟,郭玉洁,汪湛清.基于成果导向的自动化专业课程设计改革[J].电气电子教学学报.2015,37(5):87-89.
[4]张晓青.工程教育专业认证指导下的电子线路C A D教学实践[J].教育教学论坛,2005年(23):142-143.
关键词:物理实验教学;“教学做合一”;教师;学生
中图分类号:G633.7 文献标识码:A 文章编号:1992-7711(2014)03-0071
从事物理教学多年,笔者认为我们的物理教学更能体现陶行知先生的教育理念——“教学做合一”。“教学做”是一件事,不是三件事,是一件事的三个方面。教与学都要以“做”为主心,做上教是先生,做上学是学生。那么,如何提高物理实验教学的效果呢?下面,笔者就结合自身多年的教学经验谈几点自己的教法。
一、学生实验兴趣的心理分析
心理学认为,兴趣是人们力求认识某种事物或爱好某种活动的倾向,而实验兴趣是学生力求通过实验认识物质的本质特征或爱好实验操作的倾向。实验兴趣并不是天赋的,而是受客观条件等各种因素的影响而形成的。因此,在实验教学中,我们教师应该研究对学生实验兴趣的培养。笔者的经验是可以采取如下一些措施培养学生的实验兴趣。
1. 设计联系实际的实验内容,体现“生活即教育”
把物理实验内容跟自然现象、工农业生产和日常生活实际联系起来,使学生了解物理实验与上述实际的关系,并且让他们自己动手在实验中解决一些简单的实际问题,使学生的实验兴趣朝定向持久的方向发展。例如水的简易净化实验和水的密度探究;从撬棒的使用来探究杠杆原理实验等。
2. 多做一些启发性实验,体现“教育随生活变化而变化”
启发性实验能使学生既动手又动脑,加强思维活动,有利于学生持久兴趣的培养。例如:在讲电源之前,安排学生先做一个西红柿电池的启发性实验,学生看到西红柿产生了电流,发生暂时兴趣,当他们做完实验后,明白了构成电池的原理条件,暂时兴趣就会逐渐向持久稳定兴趣转化,激发他们自己从生活中寻找实验素材。
二、演示实验要与培养学生的观察能力和思维能力相联系
演示实验要充分展示物理知识的直观效应。一个实验的效果如何,不仅要看实验本身是否成功,更重要的是学生观察到了什么?观察到的是否全面、正确?是否对知识的掌握有促进作用?总之,取决于丰富的感性知识和丰富的教学需要。故而,不仅要求教师演示时,操作要规范熟练,步骤要正确合理,还要求学生能准确、全面地观察到有哪些现象,能得到哪些结论。在笔者看来,演示实验必须要达到以下几点基本要求,才能充分发挥演示实验的效果和作用:
1. 准确鲜明,整洁美观
所谓准确鲜明,指实验内容按照教学目的和实验目的,准确揭露物理规律的本质,不违反科学性的原则,也不违反实事求是的原则;实验现象要鲜明清晰,一目了然,使人一看就能理解和易于接受,而且有一种愉快、舒服的感觉。例如:探究牛顿第一定律;探究声音传播需要物质等实验。
2. 装置醒目,重点突出
所谓装置醒目,首先要求实验装置能让学生都能看的清楚,否则容易造成课堂秩序紊乱。其次要求实验装置显眼,应该在演示实验时,除了本实验所需的仪器外,其他物品一律不要放在讲台上,这就能集中学生的注意力,避免分散。
对于一些装置复杂的实验,要求重点突出。一方面应该把主要观察的部分安排在显著的位置,否则学生就会眼花缭乱,看不清主要现象。例如,用“伏安法”测量小灯泡电功率实验,所用器材多,操作步骤多,需要观察记录的数据多,我们要把电流表和电压表放在正前方便于读数,滑动变阻器放在右手位便于操作。另一方面还要求指导学生观察什么,怎样观察。这样才能达到突出重点的目的。
3. 操作规范,速度适中
教师演示实验,除了准确明显的效果,还应当要求自己的操作具有示范作用。因此,教师在做演示实验时,必须注意操作正确,合乎规范,起到示范作用。要做到这一点,教师必须具有熟练的实验技能技巧,而且事先要充分地做好准备。另外,实验速度要控制得不能太快或太慢。太快,一些学生没有看清楚,就会影响效果;太慢,学生的注意不能持久,从而减弱学生的学习兴趣。例如:探究潜水艇浮沉条件的实验,应让学生充分地看清楚它排水和吸水过程及对应的潜水艇的上浮和下沉,这样效果会更好。
4. 巧妙安排,富有兴趣
物理实验是激发学生学习兴趣的一种有力手段,要求教师设计演示实验时巧妙安排,使实验内容富有兴趣,才能充分发挥作用。如:在探究电磁感应现象时,笔者先设计一个实验(让学生手摇发电机发电让小灯泡发光),以此来调动学生的学习热情和兴趣。
三、学生实验要与学生创造能力相联系
学生实验的目的是培养学生实际操作中的逻辑能力、动手能力、创新能力。这就要求学生们课上要认真、细致地观察教师所做的演示实验,对实验所用的仪器、物品、装置以及原理、步骤、现象和注意事项,都必须弄清、记熟。俗话说:“百闻不如一见,百看不如一验”,亲自动手实验不仅能培养自己的动手能力,还能加深对所学知识的认识、理解和巩固。
在实验的准备中,若只是简单地依照课本上实验内容给出实验用品仪器,那么学生实验只是简单重复一下课堂上的演示实验,收效肯定不高。因此,这就要求教师有必要在实验准备时结合一些基础知识适当拓宽,培养学生的创新能力。比如:探究光的传播和小孔成像可让学生自己选择和准备器材。实验时,教师在一旁做好辅导和答疑,真正发挥学生的主体作用,起到既满足了学生的好奇心,又发挥了学生创造力的效果,激发学生学习物理的兴趣。通过实验应让学生达到:
1. 丰富感知材料,巩固物理知识
学生通过亲自动手做过实验而获得的知识,由于观察清晰,所以感知真切;由于印象深刻,所以不易遗忘;由于感知丰富,所以认识全面。因而就学的比较扎实,对物理概念和基础理论的理解就会更加深刻和牢固。
2. 锻炼基本操作,掌握实验技能
培养学生实验技能是中学物理教学任务之一。组织各种形式的学生实验,都能起到锻炼基本操作和掌握实验技能的作用,也是培养学生实验能力的基本措施。因此对于初中物理课标中规定的学生实验,我们教师要千方百计创造条件让学生自己独立完成,对于有些实验器材的确有限不能分组的实验,也应该选择俩到三组学生在讲台上演示,同时,其他同学观察并及时纠正操作中一些问题,教师切不可包办代替。
四、开展课外活动实验,以社会为课堂,使学校教育内容更丰富
课外活动实验是学生把书本理论知识运用到生活生产中去,使教学更加紧密联系实际,它能取得课堂上无法取得的效果。如:带学生去周边农村测量大树高度;探究离心式水泵原理;通过放风筝和许愿灯探究它们升空的原理。如:学水污染一节时,先领学生去附近污水处理厂实地参观,选用直观感知的参观法,学生会更自觉主动去珍惜保护水资源等。
以上是笔者在平时物理教学中的一些想法和做法,不妥之处望指正。
定时/计数实验
一、实验目的
1、理解单片机的定时/计数原理,掌握定时/计数程序的编写方法。
2、掌握定时/计数器在定时、计数、频率测量等方面的应用。
3、学会使用PROTEUS中VSM虚拟示波器观察波形。
二、实验设备
计算机一台;单片机实验仪一台;Keil C51和Proteus软件。
三、实验内容
利用定时计数器1,编程实现从P1.0、P1.1、P1.2三个I/O引脚分别输出频率为0.25Hz、50 Hz、1k Hz的方波信号。利用P1.0、P1.1、P1.2三个I/O引脚所接的三个LED灯或利用示波器进行观察。已知fosc=12MHz。
四、实验电路图
图1 8路LED灯控制原理图
五、实验接线
P1.0、P1.1、P1.2三个I/O引脚接J12的三个引脚(即三个LED灯)。
六、思考题
1、简要写出实现该实验的方案(要有必要的计算)。
2、单片机定时/计数器的“加一”操作和单片机运行主程序是同时工作(并行工作)的,还是有先后顺序的?单片机运行中断程序和运行主程序是同时工作(并行工作)的,还是有先后顺序的?
3、单片机定时/计数器的定时与计数的区别是什么,软件上分别应如何设置?
4、在该实验的基础上,输出的三路信号的占空比可以分别为1/2,1/3,1/4吗?
七、实验报告要求 实验目的
1、实验目的
2、实验设备
3、实验内容
4、实验流程图
5、实验源程序
7、思考题解答
Keil C51 u Vision2 是德国Keil公司开发的基于Windows环境的8051软件开发平台,它集项目管理、源程序编辑、程序调试于一体,是一个强大的集成开发环境。
u Vision2 支持Keil的各种8051工具,包括:C编译器,宏汇编译器、连接/定位器及Object-hex转换程序,可以帮助用户快速有效的实现嵌入式系统的设计与调试。
1.1 硬件安装
1、连接51CPU板,在实验箱右下角有三个插座:J1、J2、J3,用来连接51CPU板,在51CPU板上有一个小拨码开关:J18,是单片机的EA脚,是用来选择读片内还是片外ROM的,拨向左边为读片内ROM;拨向右边为读片外ROM。
2、KEIL仿真器与实验箱的连接:将KEIL仿真器40芯的排线连到51CPU板的40芯插座上,仿真器的USB连接线连到微机的USB口。
3、八段数码管右上角的两个拨码小开关是用来设置工作模式的,将两个拨码小开关同时拨向右边是选择51单片机工作模式,此时应拨向右边。
1.2 新建一个项目文件
首先点击 Keil uVision2,进入uVision2界面。点击工具栏Project选项中的New Project,准备开始建立自己的项目。
输入工程文件名称,并选择保存工程文件的目录。
为项目文件选择一个目标器件(如ATMEL89C51),如图所示。
用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择“为目标‘目标1’设置选项”如下图所示。
在“为目标‘目标1’设置选项”中,点击“调试”菜单,在此菜单中可选择是使用硬件仿真,还是软件仿真,连接实验箱做实验时选择硬件仿真,点击硬件仿真选项后面的[设置]选项,在此对对话框中选择串口和波特率,串口根据所连电脑来决定。波特率为38400。
软件仿真 硬件仿真 选择串口 选择波特率
点击“文件/新建”创建源程序文件并输入程序代码。
在文本框中输入原程序,如下图所示
点击“文件/保存“对程序进行保存
用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择添加文件到原代码组,如下图所示
在弹出的添加文件框中,选择需要添加到项目中的文件
点击编译连接的图标,对项目文件进行编译
点击“调试/启动/停止调试”进入调试界面
在调试界面中可以对程序进行单步或者全速运行的调试
连机/停止 全速运行
单步
若要查看内存中的数据,点击“视图/存储器窗口”
在此地址框中,输入不同的指令查看内部数据
如果需要查看一些内部数据,在菜单栏点击[视图/存储窗口]。
C:0X地址 显示程序存储区数据 X:0X地址 显示数据存储区中数据 D:0X地址 显示CPU内部存储区中数据
注意:仿真器使用者使用时应注意:
Keil C仿真器用户程序在全速运行时,如果需暂停运行,请按实验仪键盘“RST”,此时仿真器存储器数据清零。如果您要再次运行您所编写的程序,就必须重新装载运行。
1.3 实验指导使用说明
点击“帮助/使用手册”打开“HK系列实验指导”
选择“软件实验”右边的下三角可选择实验类别或者芯片查询
点击实验目的、实验电路、实验连线、实验程序可查看关于实验的具体介绍
在芯片查询中,可查看常用芯片的管脚定义
实验二 程序设计实验
C51中进行绝对地址访问:
(1)在头文件中加入
#include (2)可以使用 CBYTE XBYTE PWORD DBYTE CWORE
XWORD PBYTE DWORD 指向内存空间的绝对地址。(具体看课本Page 71~72)
(3)使用指针进行绝对地址访问(具体看课本Page68~71,课后用指针对下面实验程序进行修改)
例如:
#define ADDR
XBYTE[0x8000]
定义ADDR为 片外RAM地址0x8000的内容
Segment = CBYTE[0x0002]
将程序存储器的0002H地址的内容赋值给Segment
Segment = XBYTE[0x0002]
将向片外RAM的0002H地址的内容赋值给Segment
XBYTE[0x0002]=57
将57赋值给片外RAM0002H绝对地址
实验1:将片外8000H中的内容拆开,高位送8001H地址低位,低位送8002H的地址低位,8001H和8002H地址单元的高位清零。#include
#define a0 XBYTE[0x8000] #define a1 XBYTE[0x8001] #define a2 XBYTE[0x8002]
void main(){ a0 = 0xab;a1 = a0 & 0x0f;a2 = a0 >> 4;}
实验2:使用绝对地址进行char型数组赋值,数组的首地址为片外8000H #include
for(i=0;i<10;i++){
XBYTE[0x8000+i]=i;} }
请对上述实验进行修改:使用绝对地址进行int型数组赋值,数组的首地址为片外8000H
实验3:将内部RAM中的50H-5AH中的无符号数,按照从小到大的次序重新排列
#include
#define uint unsigned int #define uchar unsigned char uint i,j;uchar temp;void main(){ for(i=0;i<=10;i++)//赋初值
{
DBYTE[0x50+i]=10-i;} for(i=0;i<=10;i++){
for(j=i+1;j<10;j++)
{
if(DBYTE[0x50+i]>DBYTE[0x50+j])
{
temp=DBYTE[0x50+i];
DBYTE[0x50+i]=DBYTE[0x50+j];
DBYTE[0x50+j]=temp;
}
} } } 实验三
单片机I/O接口实验
1.看懂电路图
2.用开关分别控制,左边4盏灯同时亮,右边的4盏熄灭,开关导向另一边,左边4盏熄灭,右边4盏点亮。#include
//查阅sbit和bit 的区别 #define uint unsigned int #define uchar unsigned char void main(){ While(1){ if(P3_0 == 0)
{
P0 = 0x0f;} else P0=0xf0;} }
3.下面按照实验书本的要求做实验,并调试程序延时时间。
实验四
八段数码管滚动显示程序设计
1.了解扩展电路的基本结构。
2. 清楚8155各个寄存器的物理地址是怎么得到的。
3.弄清楚8155、74LS164、UA2003三块芯片的各个引脚的基本功能。
4.74LS164的串行输入的程序代码的编写
/* “验证式"?实验十一
八段数码管显示
*/ #include #define LEDLen 6 #define mode 0x03;#define CAddr XBYTE[0xe100]/* 控制字地址 */ #define OUTBIT XBYTE[0xe101]/* 位控制口 */ #define CLK164 XBYTE[0xe102]/* 段控制口(接164时钟位)*/ #define DAT164 XBYTE[0xe102] /* 段控制口(接164数据位)*/ #define IN
XBYTE[0xe103] /* 键盘读入口 */
unsigned char LEDBuf[LEDLen];/* 显示缓冲 */ code unsigned char LEDMAP[] = { /* 八段管显示码 */
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };
void Delay(unsigned char CNT){
unsigned char i;
while(CNT--!=0)
for(i=100;i!=0;i--);}
void DisplayLED(){
unsigned char i, j;
unsigned char Pos;
unsigned char LED;
Pos = 0x20;/* 从左边开始显示 */
for(i = 0;i < LEDLen;i++)
{
OUTBIT = 0;
/* 关所有八段管 */
LED = LEDBuf[i];
for(j = 0;j < 8;j++)
{
/*送164*/
if(LED & 0x80)DAT164 = 1;
else DAT164 = 0;
CLK164 = CLK164|0x02;
CLK164 = CLK164&0xfd;
LED <<= 1;
}
OUTBIT = Pos;/* 显示一位八段管 */
Delay(1);
Pos >>= 1;
/* 显示下一位 */
}
OUTBIT = 0;
/* 关所有八段管 */ }
void main(){
unsigned char i = 0;
unsigned char j;
CAddr = mode;
while(1){
LEDBuf[0] = LEDMAP[ i
& 0x0f];
LEDBuf[1] = LEDMAP[(i+1)& 0x0f];
LEDBuf[2] = LEDMAP[(i+2)& 0x0f];
LEDBuf[3] = LEDMAP[(i+3)& 0x0f];
LEDBuf[4] = LEDMAP[(i+4)& 0x0f];
LEDBuf[5] = LEDMAP[(i+5)& 0x0f];
i++;
for(j=0;j<30;j++)
DisplayLED();
/* 延时 */
} }
集成开发环境详细设置解说
在第二章中,我们已经简介了单片机软件Keil C51的开发过程。即: 1.建立一个工程项目,选择芯片,确定选项。2.建立汇编源文件或C源文件。3.用项目管理器生成各种应用文件。4.检查并修改源文件中的错误。5.编译连接通过后进行软件模拟仿真。6.编译连接通过后进行硬件模拟仿真。7.编程操作。8.应用。
这里我们介绍工程的较详细设置及常用调试方法。20.1
工程项目的建立、源程序文件的建立及加载
Keil C51软件UVision打开后,程序窗口的左边有一个项目工作区管理窗口,该窗口有3个标签,分别是Files、Regs和Books,这3个标签页分别显示当前项目的文件结构、CPU的寄存器及部分特殊功能寄存器的值(调试时才出现)和所选CPU的附加说明文件,如果是第一次启动Keil C51,那么这3个标签页全是空的(图20-1)。
图20-1
Keil C51打开后界面
20.1.1
建立工程文件
在单片机项目开发中,有时有多个的源程序文件,并且还要为项目选择CPU以确定编译、汇编、连接的参数,指定调试的方式等。为便于管理,Keil C51使用工程项目(Project)的方法,将这些参数设置和所需的所有文件都放在一个工程项目中,只能对工程项目而不能对单一的源程序进行编译(汇编)和连接等操作。
先在硬盘上建立一个需保存工程文件的目录(例如在“我的文档” 中建立一个test的文件夹),为便于管理及使用,目录名称可与工程名称一致。选择“工程>新工程”菜单(图20-2)。弹出对话框,要求给将要建立的工程起一个名字,可以在编辑框中输入一个名字(例如test),扩展名不必输入(默认的扩展名为.uv2)。点击“保存”按钮(图20-3)。随后弹出一个“为目标target选择设备”(Select Device for Target “Target1”)对话框,这个对话框要求选择目标CPU(即你所用单片机芯片的型号),Keil C51支持的CPU很多,我们选择Atmel公司的AT89C51(或AT89S51)芯片,用鼠标单击Atmel前的“+”号,选择“AT89C51(或AT89S51)”单片机后按确定(图20-4)。随即系统弹出是否拷贝8051启动代码到工程项目并添加到当前项目组的提示(Copy Standard 8051 Startup Code to Project Folder and Add File to Project ?),我们选否。此时,在工程窗口的文件页中,出现了“Target 1”,前面有“+”号,点击“+”号展开,可以看到下一层的“Source Group1”。
图20-2
选择“工程>新工程”菜单界面
图20-3
建立新工程界面
图20-4
选择单片机型号界面
20.1.2
源程序文件的建立
使用菜单“文件>新建”或者点击工具栏的新建文件按钮(图20-5),即在右侧打开一个新的文本编辑窗口,在该窗口中可以输入汇编语言源程序或C语言源程序(图20-6)。程序输入完成后,选择“文件”,在下拉菜单中选中“另存为”,将该文件以扩展名为.asm格式(汇编语言源程序)或.c格式(C语言源程序)保存在刚才所建立的一个文件夹中(test),这里假设源程序文件名为test.asm(图20-7)。
图20-5
新建源程序文件界面
图20-6
打开新的文本编辑窗口
图20-7
“另存为” 对话框
源程序文件也可以使用任意的文本编辑器编写。20.1.3
添加文件到当前项目组中
这时的工程项目还是一个空的工程,里面什么文件也没有,把刚才编写好的源程序test.asm加载进工程。单击工程管理器中“Target 1”前的“+”号,出现“Source Group1”后再单击,加亮后右击。在出现的下拉窗口中选择“Add Files to Group‘Source Group1’”(图20-8)。注意,该对话框下面的“文件类型”默认为C source file(*.c),也就是以C为扩展名的文件,如我们的文件是以asm为扩展名的,那么在列表框中找不到test.asm,要将文件类型改掉。点击对话框中“文件类型”后的下拉列表,找到并选中“Asm Source File(*.a51,*.asm)”,这样在列表框中就可以找到test.asm文件了(图20-9)。我们可以在增加文件窗口中选择刚才以asm格式(或c格式)编辑的文件,鼠标单击“ADD”按钮,这时源程序文件便加入到Source Group1这个组里了,随后关闭此对话窗口。点击 “ Source Group1”前的“+”号,可以看到test.asm文件已在其中(图20-10)。双击后,即可打开该源程序。
图20-8
Add Files to Group‘Source Group1’界面
图20-9
Add Files to Group‘Source Group1’对话框
图20-10
test.asm文件
20.2
工程项目的详细设置 工程建立好以后,还要对工程进行进一步的设置,以满足要求。
首先点击左边窗口的Target1,然后使用菜单“项目>目标‘target1’选项 ”即出现对工程设置的对话框,共有8个页面,默认为对象页面(图20-11)。绝大部分设置项通常可以采用默认值。
图20-11
对象页面
20.2.1
对象页面
时钟(MHz)后面的数值是晶振频率值,默认值是所选目标CPU的最高可用频率值,对于AT89C51而言是24MHz,而AT89S51是33MHz。该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你实际所用的晶振频率相同。
储存器模式用于设置RAM使用情况,有3个选择项,Small:是所有变量都在单片机的内部RAM中。Compact:变量存储在外部RAM里,使用8位间接寻址。Large:变量存储在外部RAM里,使用16位间接寻址,可以使用全部外部的扩展RAM。
1.Small:一般使用Small来存储变量,此时单片机优先将变量存储在内部RAM里,如果内部RAM空间不够,才会存到外部RAM中。
2.Compact:Compact的方式要通过程序来指定页的高位地址,编程较复杂,如果外部RAM很少,只有256字节,那么对该256字节的读取就比较快。如果超过256字节,而且需要不断地进行切换,就较麻烦,Compact模式适用于比较少的外部RAM的情况。
3.Large:Large模式是指变量会优先分配到外部RAM里。需要注意的是,3种存储方式都支持内部256字节和外部64KB的RAM。因为变量存储在内部RAM里,运算速度比存储在外部RAM要快得多,大部分的应用都是选择Small模式。
代码ROM大小用于设置ROM空间的使用,也有3个选择项,Small、Compact及Large。1.Small:只用低于2K的程序空间,适用于AT89C2051这些芯片,2051只有2K的代码空间,所以跳转地址只有2KB,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL LJMP指令。如果代码地址跳转超过2K,那么会出错。
2.Compact:单个函数的代码量不能超过2K,整个程序可以使用64K程序空间。3.Large:可用全部64K空间,表示程序或子函数代码都可以大到64KB,使用code bank还可以更大。通常都选用该方式。选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small方式。
操作系统选项中,Keil C51提供了两种操作系统:Rtx tiny和Rtx full,通常我们不使用任何操作系统,用该项的默认值:None(不使用任何操作系统)。Use on-chip ROM(0x0-0xFFF)选择项,表示使用片上的ROM(选中该项并不会影响最终生成的目标代码量),该选项取决于单片机应用系统,如果单片机的EA接高电平,则选中这个选项,表示使用内部ROM,如果单片机的EA接低电平,表示使用外部ROM,则不选中该选项。
片外代码(CODE)储存器:表示片外ROM的开始地址和大小,如果没有外接程序存储器,那么不需要填任何数据。这里假设使用一个片外ROM,地址从0x7000开始,一般填16进制的数,Size(尺寸)为片外ROM的大小。假设外接ROM的大小为0x2000字节,则最多可以外接3块片外ROM。
片外数据(XDATA)储存器:用于确定系统扩展RAM的地址范围,可以填上外接Xdata外部数据存储器的起始地址和大小,这些选择项必须根据所用硬件来决定。如果仅仅是89C51单片应用,未进行任何扩展,那么无需设置。
代码分段:是使用Code Banking技术。Keil C51可以支持程序代码超过64KB的情况,最大可以有2MB的程序代码。如果代码超过64KB,那么就要使用Code Banking技术,以支持更多的程序空间。
20.2.2
输出页面
输出页面中(图20-12),按钮“选择目标(OBJ)目录”是用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。
图20-12
Output页面
“可执行文件名”:设置生成的目标文件的名字,缺省情况下和项目的名字一样。Create Executable:如果要生成OMF以及HEX文件,一般选中“调试信息”和“浏览信息”。选中“调试信息”将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。“浏览信息”是产生各种信息,该信息可以用菜单“查看” 进行浏览,一般取默认值。“生成hex文件”用于生成可执行代码文件,默认情况下该项未被选中,如果要烧录芯片做硬件实验,就必须选中该项。
Create Library:选中该项时将生成lib库文件,一般的应用是不生成库文件的。构造后操作栏中有以下几个设置。
完成时“嘀”一声提示:编译完成之后发出“咚”的声音。
开始调试:马上启动调试(软件仿真或硬件仿真),根据需要来设置,一般是不选中。运行用户程序#
1、运行用户程序#2:这个选项可以设置编译完之后所要运行的其他应用程序(比如有些用户自己编写了烧写芯片的程序,编译完便执行该程序,将Hex文件写入芯片),或者调用外部的仿真程序。可根据自己的需要设置。
20.2.3
列表页面
列表页面用于调整生成的列表文件选项。在汇编或编译完成后将产生(*.lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是“C Compile Listing”下的“汇编代码”项,选中该项可以在列表文件中生成C语言源程序所对应的汇编代码(图20-13)。
图20-13
Listing页面
20.2.4
C51页面
C51页面用于对Keil C51软件的C51编译器的编译过程进行控制(图20-14),其中比较常用的是“代码优化选项”组,该组中级别是优化等级,C51在对源程序进行编译时,可以对代码多至9级优化,默认使用第8级,一般不必修改,如果在编译中出现一些问题,可以降低优化级别再试。“侧重”是选择编译优先方式,第一项是代码大小优化(最终生成的代码量小),第二项是执行速度优先(最终生成的代码速度快),第三项缺省。默认的是速度优先,可根据需要更改。
图20-14
C51页面
20.2.5
调试页面
调试页面中(图20-15)有两类仿真形式可选:“使用模拟器”和“Keil Monitor-51 Driver”,前一种是纯软件仿真,后一种是带有Monitor-51目标仿真器的仿真。对于没有Monitor-51目标仿真器的用户,只有采用软件仿真。默认方式下的仿真是软件仿真(使用模拟器)。
图20-15
Debug页面 启动时加载程序:选择这项之后,Keil C51会自动装载程序代码。
一直运行到main():调试C语言程序时可以选择这一项,PC会自动运行到main程序处。
工程设置对话框中的其他各页面与C51编译选项、A51的汇编选项、BL51连接器的连接选项等用法有关,这里均取默认值。
设置完成后按确认返回主界面,工程文件就建立、设置完毕了。20.3
编译、连接
在设置好工程后,即可进行编译、连接。选择主菜单栏中的“项目”,在下拉菜单中选中“构造对象”(图20-16),对当前工程进行编译、连接,这时输出窗口出现源程序的编译结果。如果选择“重新构造所有对象文件”将会对当前工程中的所有文件重新进行编译,然后再连接,这样最终产生的目标代码是最新的。
图20-16
编译、连接操作
以上操作也可以通过工具栏按钮直接进行。
编译过程中的信息将出现在输出窗口中的构造页中,如果源程序中有语法错误,将提示错误ERROR(S)的类型和行号,双击该行,可以定位到出错的位置。对源程序进行修改没有语法错误后,重新进行编译、连接,编译成功后,最终可得到hex格式的文件(如test.hex),该文件可被编程器读入并写到芯片中,同时还会产生一些其他相关的文件,可被用于Keil C51的仿真与调试。20.4
Keil C51集成开发环境软件的调试方法 20.4.1
常用调试命令
在对工程成功地进行编译(汇编)、连接以后,在主菜单中打开“调试”栏,点击“开始/停止调试模式”,即可进入软件模拟仿真调试状态,Keil C51内建了一个仿真CPU用来模拟执行程序,该仿真CPU功能非常强大,可以在没有硬件和仿真器的情况下进行程序的调试,但是在时序上,软件模拟仿真是达不到硬件的时序的。进入调试状态后,“调试”栏菜单项中原来不能用的命令现在已经可以使用了。“调试”栏菜单上的大部分命令可以在调试界面上找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令(图20-17)。
图20-17
软件模拟仿真调试状态
使用菜单“单步到之外”或相应命令或功能键F10可以用“单步跳过”形式执行命令,所谓“单步跳过”,是指将汇编语言中的子程序或高级语言中的函数作为一个语句一步执行完。使用菜单“单步”或相应的命令按钮或使用快捷键F11可以单步执行程序(即一条一条语句执行),通过单步执行程序,可以找出一些问题的所在,但是仅依靠单步执行来查错效率较低。
20.4.2
断点设置
程序调试时,一些程序行必须满足一定的条件才能被执行到(如程序中某变量达到一定的值、按键被按下、串口接收到数据、有中断产生等),这些条件往往是异步发生或难以预先设定的,这类问题使用单步执行的方法是很难调试的,这时就要使用到程序调试中的另一种非常重要的方法:断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点(图20-18),设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此时观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单:“调试>设置/取消断点”设置或移除断点,也可以用鼠标在该行双击实现同样的功能;另外“使能/禁止断点”用来开启或暂停光标所在行的断点功能;其它还有“禁止所有断点”、“取消所有断点”等设置。这些功能也可以用工具条上的快捷按钮进行设置。
图20-18
断点设置
20.4.3
在线汇编
在进入Keil C51的调试环境以后,若发现程序有错,可以直接对源程序进行修改,但是要使修改后的代码起作用,必须先退出调试环境,重新进行编译、连接后再次进入调试。如果调试时只是需要对某些程序行进行临时的试验修改(如修改参数以得到所需的延时时间),那么这样的重复过程显得太麻烦,为此Keil C51软件提供了在线汇编的能力。将光标定位于需要修改的程序行上,用菜单“调试>在线汇编”即可出现如图20-19所示的对话框,在“输入新指令”后面的编缉框内直接输入需更改的程序语句,输入完后键入回车将自动指向下一条语句,可以继续修改。如果不再需要修改,可以点击右上角的关闭按钮关闭窗口。
图20-19
在线汇编对话框
20.4.4
程序调试时的常用窗口 Keil C51软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Windows)、查看和呼叫堆栈窗口(Watch & Call Statck Windows)、存储器窗口(Memory Window)、反汇编窗口(Dissambly Window)和串行窗口(Serial Window)等。进入调试模式后,可以通过菜单“查看”(View)下的相应命令打开或关闭这些窗口。图20-20是输出窗口、查看和呼叫堆栈观察窗口和存储器窗口,各窗口的大小可以使用鼠标调整。进入调试程序后,输出窗口自动切换到Command页。
图20-20
输出窗口、查看和呼叫堆栈窗口和存储器窗口
存储器窗口
存储器窗口中可以显示系统各种内存中的值,通过在“地址”(Address)后的编缉框内输入“字母:数字”即可显示相应内存值,其中字母可以是C、D、I、X,分别代表代码存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM空间,数字代表想要查看的地址。例如输入“D:0x20”即可观察到地址20H开始的片内RAM单元值;键入“C:0x100”即可显示从100H开始的ROM单元中的值,即查看程序的二进制代码。该窗口的显示值可以以各种形式显示,如十进制、十六进制、字符型等,改变显示方式的方法是点鼠标右键,在弹出的快捷菜单中选择,该菜单用分隔条分成三部分,其中第一部分与第二部分的三个选项为同一级别,选中第一部分的任一选项,内容将以整数形式显示,而选中第二部分的ASCII项则将以字符型式显示,选中Float项将以相邻四字节组成的浮点数形式显示,选中Double项则将相邻8字节组成双精度形式显示。第一部分又有多个选择项,其中Decimal项是一个开关,如果选中该项,则窗口中的值将以十进制的形式显示,否则按默认的十六进制方式显示。Unsigned和Signed后分别有三个选项:Char、Int、Long分别代表以单字节方式显示、将相邻双字节组成整型数方式显示、将相邻四字节组成长整型方式显示,而Unsigned和Signed则分别代表无符号形式和有符号形式,究竟从哪一个单元开始的相邻单元则与你的设置有关。以整型为例,如果你输入的是“I:0”,那么00H和01H单元的内容将会组成一个整型数,而如果你输入的是“I:1”,01H和02H单元的内容会组成一个整型数,依此类推。第三部分的Modify Memory at X:xx用于更改鼠标处的内存单元值,选中该项即出现如图20-21所示的对话框,可以在对话框内输入要修改的内容。
图20-21
更改内存单元值 工程窗口寄存器页
图20-22是工程窗口寄存器页的内容,寄存器页包括了当前的工作寄存器组和系统寄存器组。系统寄存器组有一些是实际存在的寄存器,如A、B、DPTR、SP、PSW等,有一些是实际中并不存在或虽然存在却不能对其操作的,如PC、States等。每当程序中执行到对其寄存器的操作时,该寄存器会以反色(蓝底白字)显示,用鼠标单击然后按下F2键,即可修改该值。
图20-22
工程窗口寄存器页 查看和呼叫堆栈观察窗口
这也是很重要的一个窗口,工程窗口中不仅可以观察到工作寄存器和有限的寄存器如A、B、DPTR等,如果需要观察其他寄存器的值或者在高级语言编程时需要直接观察变量,还要借助于这个窗口了。
一般情况下,我们仅在单步执行时才对变量值的变化感兴趣,全速运行时,变量的值是不变的,只有在程序停下来之后,才会将这些值的最新变化反映出来。但是,在一些特殊场合我们也可能需要在全速运行时观察变量的变化,此时可以点击查看>定期窗口更新,确认该项处于被选中状态,即可在全速运行时动态地观察有关值的变化。但是,选中该项,将会使程序模拟执行的速度变慢。
Keil C51提供了串行窗口,我们可以直接在串行窗口中键入字符,该字符虽不会被显示出来,但却能传递到仿真CPU中,如果仿真CPU通过串行口发送字符,那么这些字符会在串行窗口显示出来,用该窗口可以在没有硬件的情况下用键盘模拟串口通信。由于该项涉及到高级语言编程,这里就不具体介绍了。
20.5
外围接口工具
为了能够比较直观地了解单片机中定时器、中断、并行端口、串行端门等常用外设的使用情况,Keil C51提供了一些外围接口对话框,通过“外围设备”菜单选择。“外围设备”的下拉菜单内容与你建立项目时所选的CPU有关。如果是选择的89C51这一类单片机,那么将会有Interrupt(中断)、I/O Ports(并行I/O口)、Serial(串行口)、Timer(定时/计数器)这四个外围设备菜单(图20-23)。打开这些对话框,列出了外围设备的当前使用情况,各标志位的情况等,可以在这些对话框中直观地观察和更改各外围设备的运行情况。
图20-23
外围设备菜单 20.5.1
P1□作为输入端□
程序每执行一个循环之前,修改一次P1端口的值(图20-24),观察变量的值是直接观看屏幕右下角的变量表;另外的方法是将鼠标移动到源程序的变量处,等待大约1秒钟左右,屏幕上即可弹出该变量的相关信息。
图20-24
P1□作为输入端□ 20.5.2
P1□作为输出端□
执行循环时观察P1口的输出。由于P1口只用于输出,故无须修改端口值(图20-25)。
图20-25
P1□作为输出端□
20.5.3
外部中断INT0 外部中断INT0对应于P3.2口线,因此,用鼠标单击“外设>Port3”窗口从右向左数第三位(P3.2口线对应的位),每单击一下,即产生一次中断,原因是外部中断是下降沿或低电平有效(图20-26)。
图20-26
外部中断INT0 另外,也可以点击“外设>Interrupt”,在出现图20-27所示中断对话界面后,进行设置。
图20-27
中断对话界面 20.5.4
定时器/计数器0 MCS-51系列单片机有两至三个定时器/计数器,均可以作为定时器或计数器使用。点击“外设>Timer0”即出现图20-28所示定时/计数器0的外围接口界面,可以直接选择Mode组中的下拉列表以确定定时/计数工作方式(0~3四种工作方式,设定定时初值等),点击选中TR0,status后的stop(停止)就变成了run(运行)。如果全速运行程序,此时TH0、TL0后的值也快速地开始变化(要求“定期窗口更新”处于选中状态),直观地演示了定时/计数器的工作情况。
图20-28
实验报告
课程名称: 姓
名: 系
别: 专
业: 年
级: 学
号: 指导教师:
单片机原理及应用实验
陈璐 信息系
电气工程及其自动化
2012级 120712041 李莉
2015 年 月 25
日
1.实验目的和要求
1)熟悉Keil 软件界面,以及编辑、编译、运行程序的步骤;
2)熟悉Proteus软件界面,掌握用Proteus画仿真图的方法。2.主要仪器设备
Keil 软件与Proteus仿真软件 3.实验设计要求
利用单片机、1个开关和1个发光二极管,构成一个简单的开关检测系统的仿真电路图。单片机P3.0引脚接按钮开关,P1.0引脚接发光二极管的阴极。当开关闭合时,发光二极管亮;开关打开时,发光二极管灭;按钮开关与发光二极管没有任何电气上的联系。
单片机对开关K的状态的检测由程序检测P3.0引脚的输入电平。当开关K闭合,即P3.0脚输入低电平;当开关K打开,即P3.0脚输入高电平。使用发光二极管,阳极接+5V,阴极接P1.0端口。当程序控制P1.0输出高电平时,发光二极管D1灭;当程序控制P1.0输出低电平时,发光二极管D1亮。4.操作方法与实验步骤
(1)Keil C51软件使用
在Keil C51集成开发环境下,建立一个工程并编辑以下源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。
#include “reg51.h” #define uchar unsigned char #define uint unsigned int sbit in=P3^0;sbit out=P1^0;void main(void){ while(1){ in=1;if(in= =0)out=0;else out=1;} }(2)建立新文件
进入Proteus ISIS界面,单机主菜单项【文件】→“新建设计”选项,就会弹出“新建设计”窗口,窗口中提供了多种模版选择。其中横向图纸为Landscape,纵向图纸为Portrait,DEFAULT为默认模版。单击选择的模版图标,再单击“确定”按钮,即建立一个该模版的空白文件。如果直接单击“确定”按钮,即选用系统默认的DEAFAUILT模版。
单击保存按钮,在弹出的对话框“保存ISIS设计文件”中输入文件名再单击“保存”,则完成新建设计文件的保存操作,其后缀自动为“.DSN”。
(3)设定绘图纸大小 单击菜单中的【系统】→“设置图纸大小”,选择所需图纸的尺寸位A4。
(4)选取元器件并添加到对象选择窗口中
单击器件选择按钮,弹出选取元器件对话框。在其左上角“关键字”一栏中输入元器件名称“AT89C51”,则出现关键字匹配的元器件列表。选中AT89C51所在行或单击AT89C51所在行后,再单击“确定”按钮,便将元器件AT89C51加入到ISIS对象选择窗口中。按此操作方法逐一完成其他元器件的选取。本设计中使用的各元器件的关键字相应为“AT89C51”、“BUTTON”(按钮开关)、“CAP”(瓷片电容)、“CAP-ELEC”(电解电容)、“CRYSTAL”(晶振)、“RES”(电阻)等。被选取的元器件加入到ISIS对象选择窗口中。(5)放置、移动、旋转元器件
单击ISIS对象选择窗口中的元器件名,蓝色条出现在该元器件名上。把鼠标指针移到编辑区某位置后,单击就可放置元器件于该位置,每单击一次,就放置一个元器件。如果要移动元器件,先右击元器件使其处于选中状态,再按住鼠标左键进行拖动,达到目标处后,松开鼠标即可。如要调整元器件方向,先将指针指在元器件上单击鼠标右键选中,再单击相应的旋转按钮。若多个对象一起移动或转向,可选择相应的块操作命令。(6)放置电源、地(终端)
单击工具箱的终端模式按钮,然后在对象选择窗口中单击POWER来选中电源,然后使用元器件调整工具按钮进行方向调整,最后在编辑区中单击放置电源。(7)电路图布线
单击元器件引脚间、线间等接线处,自动生成连线。(8)电气检测
单击电器检查快捷键按钮,根据电气检查列表的指示修改设计中的错误,完成实验。5.实验内容及实验数据记录
每当按下K时,LED灯就会发光。
C2U130pF19XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617X112MHz18XTAL2D1R24.7K930pFRSTR4220293031C310uFPSENALEEAKR310K10K12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51LED-GREENC1R1220 6.实验数据处理与分析
每当按下K时,in(p3.0)I/O口就会变为低电平,该信号使得CPU给out(p3.0)I/O口发送低电平,使得LED灯发亮。7.实验过程中遇到的问题及解决方法
一开始安装软件的时候最后一步设置完通信设置时,鼠标点击“好”,但是屏幕一直显示“通信错误”的提示,经过重复操作,还是没有成功,结果是因为“端口选择”处选择错了,改正后最终安装成功。8.心得体会
关键词:STS,素养,编辑,任务驱动
1 引言
《电视新闻编辑与节目制作》课程是广播电视新闻专业的主干课程, 其课程的开设分为理论与实践两部分进行。实践部分主要是在数字媒体实验室开设非线性编辑实验, 以培养学生的节目制作和编辑能力, 非线性编辑是该专业学生必须掌握的专业技术之一。
目前, 在地方性院校中, 对于《电视新闻编辑和节目制作》实验课程, 因为缺少专业实验教学的经验, 教师和实验员一直采用一种较为“放任”的实验模式, 即在课程理论知识教授完毕后, 以学生在实验室自学编辑为主。由于没有系统的实验实践教学过程, 单靠学生的自觉性, 难以真正让学生掌握全面的节目制作及非线性编辑技术。因此探索研究新的实验模式非常有必要, 具有一定的现实意义。
2 STS思想与实验课程的关系
2.1 STS思想
STS思想产生于20世纪中叶的西方社会, STS是Science、Technology and Society英文的缩写, 中文即是科学、技术与社会的意思。STS就是一门研究科学、技术与社会相互关系的规律及其应用, 并涉及多学科与多领域的综合性学科[1]。
当今世界, 科学技术的迅速发展极大地促进了社会的发展, 给我们的生活带来前所未有的改变。但是人们在享受科学技术带来的便利的同时也不得不面对其所带来的负面影响, 例如环境的污染、生态环境的破坏、人类生理机能的退化等等。STS思想诞生于三次科学技术革命之后, 在科学持续发展的时候提出思考, 其宗旨是发挥科技的积极作用, 克服科技的负面影响, 使科技真正成为人类的福祉。
2.2 STS在实验教学中的影响
STS作为一个学科被引进我国, 是在20世纪90年代初。当前我国对于STS的研究特色之一是培养跨世纪的复合型STS新人才[2]。其特征是自然科学、工程技术科学和人文社会科学的联系和整体化, 科学技术与社会的密切结合, 打破传统人才培养自然科学、工程技术科学与人文社会科学的割裂, 科学技术理论与实践的脱节的特点[1]。
课题引入STS思想理念, 在实验过程中渗透STS思想, 把专业技术与社会问题联系起来, 赋予科技一个感性的认识, 实现人文和科学文化的融合, 培养学生的STS素养。广播电视新闻专业培养的专业人才是从事新闻采编、节目策划、制作与主持工作的媒体工作者, 是一个跟社会密切接触的行业, 需要具备敏锐、准确的判断力和社会责任感。通过展开STS教育, 让学生系统掌握编辑技术的同时, 培养专业的判断力和责任感, 培养学生利用技术与资源去发现问题、解决问题, 提高作为广播新闻专业学生应有的新闻敏锐度和触觉, 使学生不仅具有丰富的专业知识, 还具备文理交叉能力、实践能力和创新能力, 逐步树立科技与社会协调发展的价值观。
3 STS指导下的实验教学策略
3.1 引入STS教学理念, 培养广电新闻专业学生的STS素
养
我国从上世纪90年代开始关注培养学生的信息素养 (Information Literacy) 。其所包括的能力有:知道何时需要信息;确定解决特定问题需要什么样的信息;找到所需要的信息;评价信息;组织信息;运用信息有效地解决问题[3]。为此, 教育部2000年颁布《中小学信息技术课程指导纲要》[4], 在国内中小学首次设置信息技术课程, 对不同阶段的学生提出明确的信息技术目标, 培养学生的信息素养, 以适应信息社会的学习、工作和生活。作为大学生, 更应该学会并具备这样的信息素养, 懂得应用所学的信息技术去解决现实生活的实际问题。
广播电视新闻专业的学生, 是未来的媒体人, 是用声和光表现和反映这个世界的。虽然是在文科的学习背景, 但是因为专业的关系, 涉及到很多操作技术层面, 如摄像技术、编辑技术、电视特技技术等等, 《电视新闻编辑与节目制作》更是一门强调技术与实践的课程。在学习过程中, 教师通过STS讲座、网站、专题活动等形式, 有意识地引入STS理念, 强调人文与科学的结合;把社会因素纳入教与学的过程, 让学生在掌握技术的同时, 能够学会用技术去反映社会问题。
3.2 以丰富的案例促使学生专业素养的形成
作为电视节目制作人员需要具有良好的专业素养, 包括政治素养、新闻素养、编辑素养、美学素养、创新素养、知识素养等[5]。素养是靠培养的, 需要一定的累积过程, 全面素养的形成更需要教师的指导。本课程将在STS理念的指导下重点培养学生政治素养、新闻素养和编辑素养。STS思想强调技术与社会的结合, 打破传统人才培养模式中科学技术理论与实践的脱节的特点, 故在实验过程中通过大量案例, 结合具体实践, 促使学生专业素养的形成。案例按学习需求, 分成新闻播报、栏目节目、新闻采访、纪录片欣赏、电视作品分析、中国新闻奖获奖作品、音乐欣赏七个部分。
(1) 政治素养。中宣部、国家广电总局、新闻出版总署《关于新闻采编人员从业管理的规定 (试行) 》文件中的第一条就明确规定了新闻采编人员的政治立场问题, 要求新闻从业人员树立正确的世界观、人生观、价值观;科学认识世界;树立政治意识、大局意识和责任意识。即电视节目制作人员要具有政治敏感性。这一素养的形成, 一方面可以通过政治课程的学习与熏陶;另外, 通过“新闻播报”案例, 有意识地培养学生的政治素养。“新闻播报”素材多样化, 包括了中央电视台新闻联播、国内地方台新闻、香港翡翠台新闻、凤凰台新闻、美国CNN新闻等。明确的政治立场, 是新闻报道的角度和出发点, 作为新闻采编人员首先要把好政治关。
(2) 新闻素养。美国著名新闻评论家与作家沃尔特·李普曼曾经说过:“一条新闻的价值往往不在于文字上有多么优美, 写作上有多么高明, 而在于谁首先发现它, 报道它。”[6]这句话即要求新闻编辑人员要具有新闻敏感性, 或称之为新闻直觉。学生新闻敏感性的形成, 需要理论, 更需要长期的实践和摸索。特别是在信息发达的现代社会, 要能从海量信息里找到具有新闻价值的信息, 并能判断其真假、是非、美丑, 同时要考虑社会效果。
以“栏目节目”和“新闻采访”案例促使学生新闻素养的形成, 案例由各种新闻栏目、系列片组成。
(3) 编辑素养。电视是以视听形象材料为载体, 通过画面和声音同观众交流的。它的编辑包括了文本编辑、图像编辑、声音编辑等。目前的编辑技术, 绝大部分是基于网络基于计算机平台的非线性编辑, 熟练掌握非线性编辑技术, 是广播电视新闻专业学生的基本任务。
培养学生的编辑素养, 采用提供非线性编辑平台, 以学生自学为主, 任务驱动的模式。
(4) 赏析作品, 提升STS素养。STS理念强调科学技术理论与实践的结合。在本课程里面, 技术指的就是电视编辑, 学生要掌握它并不难, 关键在于如何应用这个技术去解决问题, 即反映社会问题。“纪录片欣赏”、“电视作品分析”、“中国新闻奖获奖作品”、“音乐欣赏”部分里的案例, 反映电视新闻工作者的综合素养, 反映STS理念:应用电视技术, 反映社会, 关注社会。
3.3 STS理念与Team work精神
我们知道STS理念注重技术与现实社会的融合, 而电视创作本身就是面向社会的, 从节目策划到面向观众, 处处存在社会因素:社会群体、社会交往、道德规范、国家法律、社会舆论等, 它影响节目的创作。同时, 电视创作本身也是一个群体行为, 依靠群体的力量来完成目标, 是一个协作的过程。培养学生的专业技能, 就要让学生在学习过程中考虑这些因素。这里采用一种Team work精神主导下的任务驱动—制作电视节目。Team work即团队精神, 其核心是协同合作[7], 这就要求团队成员具有大局意识, 具备协作精神和服务精神。STS与Team work的结合, 让学生通过角色的融入, 学会沟通与协作。
4 STS指导下的实验教学实践
4.1 明确学习目标和学习形式
实验教学的开展, 首先是让学生明确学习的目标, 即在STS理念的指导下对电视新闻编辑和节目制作技术技巧获得较全面的掌握, 培养自己的专业素养。学生一开始就以Team的形式组成学习团队 (5~8人) , 以团队为单位展开全面的实践活动。
4.2 引入STS理念
通过网站http://202.121.199.215/kejizhexue/index.htm (上海大学STS研究中心) 、http://philosophy.cass.cn/Default.aspx (中国社会科学院哲学研究所) ;书籍《科学、技术与社会概论》 (殷登祥) 、《科技与社会 (STS) 研究》 (陈凡, 秦书生, 王健) ;专题欣赏片《迷人的大自然》等形式引入STS理念, 让学生了解STS的内涵和意义。
4.3 以任务驱动案例观摩
教师选择具有代表性的案例, 以任务驱动学生学习, 学生以团队为单位按要求进行讨论、分析和演讲, 并写出分析报告。
任务一:通过“新闻播报”案例, 比较不同国家或同一国家不同区域的新闻报道节目的新闻叙述特点、编辑风格、报道主流倾向等, 特别是对同一事件的报道, 从中观察各自的政治立场。
任务二:通过“栏目节目”和“新闻采访”案例, 学生理解新闻事件的切入点, 找出事件发生的背景, 藉此培养新闻素养。如河南电视台都市频道2006年7月11日新闻节目里面的新闻“如花生命, 凋落黄河”, 报道的是抢救落水孩童的事件。这是一条令人痛心的地方新闻事件, 但是在新闻的背后, 人们除了把焦点放在事件本身之外, 还有就是引发的“中国最美女记者”的系列报道。为何媒体会大张旗鼓的宣扬, 是作秀还是过度反应, “对中国最美女记者”的新闻发现已经远远超过了新闻事件的本身, 通过中央电视台电视调查报道节目“社会记录”, 学生可以了解到新闻背后和对新闻事件的不同角度的看法。
任务三:通过“新闻报道”、“栏目节目”、“电视作品分析”案例, 从电视节奏、电视意识角度去分析各类新闻节目、栏目的特点, 采用分组讨论、报告的形式。如央视“焦点访谈”、“东方时空”、“新闻调查”节目, 凤凰卫视“有报天天读”, “香港十年”宣传片等。
任务四:对案例再创作。编辑是对素材的二度创作, 这里是要求学生对案例重新编辑, 或称之为“三度”创作。以“上海新闻”为例, 将原长为23分03秒的上海新闻报道, 重新剪辑成10分钟左右长度。要求学生在编辑中把握好受众意识和画面节奏, 应用各种镜头的组接技巧, 合理编排, 在保证长度的同时, 保持节目的可视性。
任务五:作品赏析。如“中国新闻获奖作品”里的“江门新闻联播”:2007年6月15日, 江门九江大桥船撞桥事故, 江门电视台发挥邻近事发地点、信息掌握及时等优势, 于当天的《江门新闻联播》对这一事件进行了全方位的报道。这期节目在编排上主要体现了策划到位、现场感强、消息的发布新鲜及时、电视手段运用充分、节目编排十分流畅等特点, 这期新闻节目获广东省新闻奖 (节目编排类) 一等奖、第十八届中国新闻奖三等奖。这个例子凸显了电视新闻工作者全面素养, 也从侧面反映STS理念:应用电视技术, 反映社会, 关注社会。
任务六:电视作品制作。任务的完成贯穿于课程学习实践全过程。学生的任务是在课程学习结束时以小组为单位提交电视作品。Team work精神主导下, 小组需要一个领导者来组织管理团队并根据成员的个性特点安排不同的角色。在节目制作过程中, 学生各司其职, 扮演不同的角色, 有节目策划、导演、摄像、编辑、场记、甚至演员等等, 同时各个角色之间又相互联系相互影响。
4.4 效果与评价
通过实施STS指导下的实验教学策略, 教师开展实验教学显得有条理性, 学生学习动机明确, 学习兴趣加大, 学生普遍反映对做媒体人“非常有感觉”。学生掌握了非线性编辑技术技巧, 专业素养正在逐渐形成, 提交了如《4月1日, 说我爱你》、《那一年, 我们大三》、《大学那些破事儿》、《100元钱》、《天蓝》、《广告》、《校园版粉红女郎上我约》等好的电视作品。
5 结束语
《电视新闻编辑与节目制作》课程的培养目标, 定位在广义的电视编辑上, 即培养全面的从事编辑工作的人才。围绕这一目标, 在课程理论知识的基础上, 采用STS指导下的实验教学策略。STS对于实验教学的意义, 在于让学生在掌握专业技术的同时, 能够考虑到科学技术对社会的影响, 联系到专业上, 就是如何应用电视作品去反映社会、关注社会。STS研究和STS教育的产生是社会发展的需要, 对于科技的发展与应用有指向作用。
参考文献
[1]殷登祥.关于STS的起源、争论和前景[J].北京化工大学学报 (社会科学版) , 2000 (1) :1-7.
[2]程颖, 马绩伟.国内外理工科大学生人文素质教育的比较研究[J].长春工业大学学报 (高教研究版) 2009930:32-37.
[3]汤根沐, 万里鹏, 陈明贵.应注重培养大学生的信息素养[J].高等教育研究, 2000 (6) :48-50.
[4]付道明.英国ICT教育与中国信息技术教育的比较研究 (下) [J].中小学电教2004 (12) :71-73.
[5]潘跃华.论电视新闻编辑的素养.新闻爱好者[J].2007.7 (下半月) :45-46.
[6]林琳.新形势下新闻记者敏锐洞察力的塑造[J].商业文化 (学术版) , 2010 (9) :270-271.
摘要:针对CS2013缺乏与其相匹配的实践教学指导性纲领的问题,以CS2013的知识体系为指导,设计了程序设计课程的实践教学实施方案,制订了以系统编程、问题求解、计算思维和自主学习能力培养为核心,涵盖程序设计完整知识体系的实践教学大纲,并具体给出了一个实验课程设计案例。然后,在这一大纲指导下进行了翻转实验的教学改革试点,借助高级语言程序设计能力训练平台和编程题考试自动评分系统,尝试了线上线下紧密结合,课内课外互为补充,能力为导向,考、讲、练结合,学习成效驱动的翻转实验教学模式,在本校程序设计课程实践教学中取得了良好的效果,保障了学生的实验效果和实验目标的达成。
关键词:CS2013;程序设计课程;实践教学;知识体系;能力培养
从计算机诞生至今,计算学科的相关专业教育一直受到国际学术学会组织的关注。美国计算机学会(ACM:Association for ComputingMachinery)和美国电气和电子工程师学会计算机分会(IEEE-CS:Institute of Electrical andElectronics Engineers-Computer Society)联合任务组于2013年推出了第四部计算机科学(CS:Computer Science)高等教育指导性大纲CS2013(Computer Science Curriculum 2013)。CS2013中的知识体系涵盖了18个知识领域,提供了不同大学和学院的121门案例课程,这些课程从不同侧面体现了知识领域中的各个知识单元组合成课程的不同方式。此外,CS2013也提供了5所不同大学和学院的核心课程设置案例,这些案例展示了如何通过知识单元实例化将完整的知识体系分配到专业培养方案中的一系列核心课程中。这些案例不仅共享了课程和核心课程设置的经验,而且展现了不同的教育理念。这些经验和案例为高等学校实施教学改革和实践提供了切实可操作的课程设计方法和人才培养方案改革模式,也引领了全球计算机教育领域的发展方向,为计算机领域专业教育构建了一幅全面、具体、严谨、深入、可操作性强的蓝本,因而受到国内外高等院校计算机教育行业的普遍推崇,在全球计算机教育领域产生了广泛而深远的影响,并引发了对其指导思想的深入研究和实践的热潮。
然而,作为计算机专业教育的基石,实践教学领域却一直没能推出一部与CS2013相匹配的指导性大纲。造成了实践教学一线缺乏清晰统一的指向和纲领,导致了先进教学理念与实践教学的脱节。
为了使中国的计算机课程与国际接轨,在我国计算机高等教育中推广CS2013的先进教育理念,2013年受教育部委托,由中国计算机学会教育工委、Intel公司牵头,组织国内十余所著名高校核心课程教师成立了“ACM CC2013中国工作组”,针对CS2013中缺乏对教学实践环节的指导性纲领问题,重点对适应CS2013指导思想的计算机专业实践教学体系进行研究。希望通过参与CS2013实践教学体系的研制工作,结束国内只是被动跟随国际标准的现状,适时将中国计算机教育的特色、需求、想法表达出来,以计算机专业实践教学体系为切入点,以期在国际计算机教育的舞台上发挥更大的作用。ACM很重视中国工作组提出的增加实践教学体系的建议,同意由中国研制CS实践教学体系,作为CS2013的附录发布。作者作为ACMCS2013中国工作组成员之一,参与了CS2013实践教学体系中“程序设计基础”核心课程实践教学体系的设计和编写工作。
本文对程序设计课程的CS2013实践大纲的制订工作进行了介绍和总结。程序设计课程群是计算机科学中的重要组成部分,在计算机专业课程体系中占有举足轻重的地位。而如何在程序设计课程的实践教学中将CS2013的教育理念具象,践行CS2013中的知识点覆盖和能力培养,体现CS2013中从知识到能力到思维培养的层次性要求,同时兼顾我国计算机专业教育的实际,是程序设计课程实践教学大纲制定过程中着重解决的问题,也是本文重点阐述的内容。
一、基于0S201 3的程序设计课程教学目标
1.CS2013中的程序设计课程
CS2013中将计算机科学的知识体(BodV ofKnowledge)组织为18个知识领域(KnowledgeArea)构成的集合,分别与计算领域中的各分支对应。其中,从各知识领域所涵盖的知识单元来看,与程序设计课程相关的知识领域主要包括程序设计语言和软件开发基础。程序设计课程相关的知识单元和核心知识点如图1所示。
2.基于CS2013的程序设计课程能力培养目标
与以往单纯强调对知识的掌握不同,CS2013中的一门课程可能包含多个知识领域中的知识单元,涵盖某个知识领域也可能需要多门课程,因此CS2013更强调学生对知识的实际运用能力,尤其是综合运用所学知识进行系统设计的能力,即具有系统编程能力;同时,在实践中锻炼求解问题的技能,要求学生能够将生活中的实际问题转化为可以运用掌握的知识来予以解决的模型,进行合理的假设和抽象,还要求学生对同一问题掌握多种求解方法,即问题求解能力;CS2013虽没有反复强调问题求解技能,但对求解问题方法的选择和求解代价的评估,以及对封装、抽象、系统级视角解决问题等思维方式的引入,都蕴含了对学生计算思维能力的要求;此外,计算机学科的快速发展特性使得学生是否具有终身学习的能力成为计算机学科对学生的培养是否成功的标准之一。这种终身学习能力要求从向学生传授知识,改变为引导学生自主学习,最后使之形成终身学习的习惯,因此如何引导和强化学生形成自主学习能力应该是当今高等教育中所有课程的实践教学环节所面临的重要任务。
其中,系统编程能力的训练应在实践教学中贯穿始终。随着实践教学的开展和深入,逐渐培养学生的问题求解能力,在学生具备基本的编程能力、掌握一定的问题求解方法之后,引导其进行自主学习,并最终形成计算思维,完成从手到脑到思维的能力的逐级提升。
3.基于CS2013的程序设计课程教学目标
教学目标决定着教学的过程和对教学的评价。只有设立了明确清晰、恰当合理的教学目标,才能聚焦教学活动中的各个环节,使各项教学活动的设计紧紧围绕着目标而展开,并为最终达成目标而服务。用目标的导向性避免教学活动的盲目性和随意性,避免教师过分依赖个人的直觉和经验进行教学。
因此,为了制订与CS2013相匹配的程序设计课程实践教学大纲,首先要明确程序设计课程的教学目标,即通过熟悉一种程序设计语言(如c/c++)的基本语法和编程实践,了解软件设计与开发的过程,掌握结构化程序设计和面向对象程序设计的基本方法,掌握计算机问题描述和求解的思维方法,以及软件系统设计与实现的基本方法,使学生熟悉程序设计语言的集成开发环境,熟悉计算机求解问题的常用算法,熟练运用结构化程序设计和面向对象程序设计方法解决实际问题,增强系统分析、设计、编码和调试的能力,养成良好的程序设计风格,使其具备今后无论使用什么语言编程都能灵活应用这些思想和方法的能力。
二、基于CS201 3的程序设计实践教学设计
1.基于CS2013的程序设计课程实践教学规划
根据程序设计课程的能力培养目标和教学目标,以及CS2013中对程序设计相关知识领域和主题的规划,结合国内的实际教学情况,从CS2013中相关的主题中提炼出需要在教学实践环节中予以强化、加深的知识点和能力点,并针对这些需求规划制订了与课堂教学内容和进度匹配、覆盖重要知识点和能力点的实验和课程设计。
在整体规划中,实验部分包含不多于5个必修实验,不多于2个选做实验,课程设计部分包含最多3个必修课程设计。各实验与相应知识领域、知识单元和知识点的对应关系如表1所示。
2.基于CS2013的实践教学内容设计原则
实践教学内容设计遵循以下三条原则:
(1)基础实验部分循序渐进、层层深入地引导学生逐步运用所学知识,对关键能力的形成进行反复训练,最终强化为计算思维能力。
(2)综合实验和课程设计兼顾趣味性和实用性,强调学生综合运用所学知识进行系统编程能力的训练和培养。
(3)实验任务强调自主性,鼓励学生自主选题或自主设计任务要求,为学生自主实验创造条件,激发学生的主动学习意识和学习兴趣,从而逐步形成自主学习能力。
3.基于CS2013的实践教学内容设计
CS2013制订的实践教学大纲的具体实验内容、题目和对应的能力培养目标如表2所示。
三、基于CS201 3的程序设计实验设计案例
以贪吃蛇游戏为例,介绍本实践教学大纲制订的思想和设计方法。
1.案例内容
题目:贪吃蛇游戏。综合运用面向对象知识,编程实现贪吃蛇游戏,熟练掌握面向对象的程序设计方法,增强系统分析、设计、编码和调试的能力。
(1)用户账户管理功能:记录用户个人信息、得分和级别,支持个人信息的增删改查。
(2)游戏管理功能:按照食物出现的频率、贪吃蛇移动的速度等设置不同的难度。使用键盘方向键控制贪吃蛇的上下左右移动,在没有用户按键操作情况下贪吃蛇自己沿当前方向移动,在贪吃蛇所在的窗口内随机地显示贪吃蛇的食物,并实时更新显示贪吃蛇的长度和位置;当贪吃蛇的头部与食物在同一位置时,食物消失,表示用户吃掉了食物,贪吃蛇长度增长,用户得分增加;当用户得分达到预设值时,游戏过关;当贪吃蛇头部到达窗口边界或即将进入身体的任意部分时,游戏结束。
(3)进阶内容:实现学英语背单词功能。游戏开始后向用户展示一张给定的单词表,单词表可从指定的单词文件中随机抽取,随着游戏级别增长,单词表中单词的难度加大;食物为字母,用户操纵贪吃蛇按顺序选择要吃掉的字母,吃掉的字母形成单词表上的未被吃掉的单词后,用户得分增加,单词表中的单词减少;当单词表为空时,用户过关。这个进阶内容就是学生自主设计的一个任务。
2.案例分析
该课程设计覆盖的知识点如表3所示。这些知识点涉及cs2013中的软件开发基础和程序设计语言两大知识体,知识点覆盖全面,基本涉及了从基本的数据结构到面向对象程序设计,从算法到程序设计方法,从设计、编码到测试、验证等程序设计课程中涵盖的几乎所有重要内容,是具有很强综合性的课程设计题目。
题目的特点是兼具趣味性、综合性、层次性、实用性。趣味性体现在题目来源于受众广泛的游戏,以游戏这种学生喜闻乐见的形式来代替较为刻板的题目,可以提高学生的学习兴趣;综合性体现在题目覆盖了贯穿程序设计课程的大多数知识点,同时能够对程序设计、编码、测试、调试、纠错、抽象和建模等多种能力进行训练,在知识点覆盖广度和能力训练深度上具有综合性;层次性体现在题目中功能的设置从易到难,由浅入深,学生可以根据能力选择其中的部分功能予以实现,以适应不同层次的学生的不同需求;实用性体现在经学生自己设计实现的这一系统可在自己的学习中实际使用,这将大大促进学生对程序设计的实际价值的认知,从而提高学生对程序设计的兴趣。
四、学习成效驱动的翻转实验教学实践
如果没有好的测评作为导向,那么目标的制订和实施将成为一纸空谈。有效的评价机制可以让教师及时了解教学目标的实现程度和学生的学习状况,以便及时调整教学活动,改善教学计划和方法。
为了顺应“互联网+教育”的发展趋势,保障学生实验效果和实验目标的有效达成,我们自主研制开发了支持远程在线自主实验的高级语言程序设计能力训练平台。该平台允许学生自主选择实验内容,自主选择完成实验的时间和地点,让学生“我的实验我做主”。这种方式从空间和时间上拓展了传统实验课的“疆域”,使程序设计课程的部分实验从课内迁移到课外,从而形成“线上线下紧密结合、课内课外互为补充”的实验教学模式。在资源约束、空间约束和时间约束的条件下,这种实验教学模式突破了传统实验在固定时间、固定地点和可获取知识信息量有限等方面的制约,突破了场地、时间和资源的限制,实现了实验教学手段的电子化、网络化和信息化,促进了信息技术与高等教育的深度融合。
实验的目的是什么?既不是教师在实验课上盯着学生一行行敲代码,也不是仅仅给学生一个实验分数,而是让学生在实验和师生面对面的交流过程中能够做有所得、学有所获。既然如此,那么如何让学生在实验过程中“做有所得、学有所获”呢?
基于这样的考虑,我们在高级语言程序设计能力训练平台上增加了程序在线评测、错误反馈和定位等功能。原来学生提交的实验程序需要教师手工评阅,现在学生提交实验程序可以实时获得评分和成绩排名,允许学生多次提交程序,直到成绩满意为止,对错误的程序还能给出相关提示辅助学生自主修正错误。平台的在线评测、错误反馈和定位等功能使得学生不仅在课外没有教师指导的情况下也能自主完成实验,而且在实验代码的一次次提交和改错中还能获得能力的提升,既降低了教师指导实验的工作量,又达到了“以评促学”的教学目的,提升了学生的程序调试和排错的能力,教师还可以从平台上及时跟踪和了解学生的学习情况和学习行为特点,使学生的实验效果可控、可观测。
为了引导学生从关注“学习成绩”到关注“学习过程”和“学习成效”,我们还改革了实验考核方式。一方面按学生在高级语言程序设计能力训练平台上的刷题分排名取相对分,作为平时实验分;另一方面完全取消了期末考试,每次实验课都利用我们自主研制的编程题考试自动评分系统进行机上考试,在所有实验考试成绩中去掉一个最低分作为学生的实验上机考试分数。相对于期末只考一次而言,这种分阶段马拉松式的考核方式能帮助学生及时发现自己在学习上存在的问题,以便及时补救,从而达到“以考促学”的目的,避免了期末考前临时抱佛脚、“亡羊补牢、为时已晚”的问题。
为了让学生每次都考得明明白白,学得扎扎实实,我们又进行了如图2所示的实验翻转课堂试点。在每次考试结束后,都由教师和学生共同点评错误的程序,让学生有反思自己试卷的机会,共同点评典型错题之后再进行一次不计分的模拟重考,让学生考一次收获一次、练一次进步一次。
【单片机实验指导书下】推荐阅读:
实验单片机指导书07-19
单片机技术实验指导书10-04
单片机串口通信实验10-17
单片机第三次实验思考题10-03
单片机编程经验07-23
单片机编程心得10-12
单片机实习报告07-20
单片机说课稿10-11
单片机工艺实训总结06-01
单片机课程设计报警器07-13