关于单片机教学的几点思考5篇范文

时间:2019-05-15 08:01:30下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《关于单片机教学的几点思考》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《关于单片机教学的几点思考》。

第一篇:关于单片机教学的几点思考

关于单片机教学的几点思考

[摘 要] 在单片机教学中应改革传统的教学方法,提高学生学习的兴趣和积极性,加快网络课程建设,开展电子设计竞赛,提高学生的综合竞争力。

[关键词] 单片机 教学改革 综合竞争力

单片机具有体积小、集成度高、控制灵活、性价比高等优点,在智能仪器仪表、家用电器、工业控制、计算机网络和通信、医用设备等领域都得到广泛的应用[1],单片机系列的课程在高等职业教育中的作用和地位也越来越重要。作为一门实践性很强的课程,如何调动学生的积极性,提高学生的实际操作能力,能够利用单片机完成小的项目的设计,提高学生的竞争就业能力是比较值得思考的问题。

1.培养学生的积极性

单片机的理论性和实践性都较强,在课堂上讲解起来相对比较枯燥,应注意培养学生的兴趣,兴趣是最好的老师。以一些实际的单片机产品(项目)如智能语音报站系统、自动路灯控制系统、万年历、酒精测试仪、温湿度控制等为例,激发学生对未知的领域的探索和求知欲望。

2.改革教学方法,以应用为主

一般情况下我们单片机的教师把课堂隔离开来,理论课是理论课,实验课是实验课,而且实验是以验证性实验为主,使得学生本能的将理论和实验对立起来。本人认为应将理论和实践巧妙的结合起来,打破理论课和实践课的界限,使之不再泾渭分明。

一、应尽量的减少理论知识的全盘灌输,比如说单片机的指令部分,以实际的例子让一条一条的指令和一个又一个的语句变的有生命起来,让学生亲身体会到单片机C语句的用法和用途。可以通过不同的小的任务来让学生体会不同的语句的用法,尽量能让学生在学习的过程中做到活学活用。在单片机中经常会用到延时程序,若延时函数定义的形式参数是无符号字符数,在调用延时函数时,我们延时的时间是20,200和300时有什么不同,可以让学生通过实际的实验去体会。

俗话说尽信书不如无书,在实际的教学中应尽量避免全盘照抄,我们所使用的教材,错误和疏漏在所难免,让学生自己去思考教材中出现的问题,提出解决问题的途径,并对自己的方法去验证可行性。

二、以模块和项目的方式进行教学将整个单片机的教学过程分成不同的模块,在不同的模块中,以不同的项目任务的方式教学。整个单片机过程可以分为基础知识模块、输入和显示模块、数据采集模块(A/D和D/A转换等)、数据通信模块、信号与算法模块、I/O扩展输入和输出模块、机电控制等。

在模块学习中,可以提出不同的项目,比如对输入和显示模块:输入方法有独立键盘和矩阵式键盘两种,显示的方法有数码管显示,点阵显示和液晶显示等。因此可以通过不同的项目来完成学习,如通过数字钟电路的设计,通过附加不同的电路的功能学习独立式键盘和数码管的使用;通过简易密码锁的设计学习矩阵式键盘的应用,通过简单的广告牌的设计学习点阵的显示原理。

三、实际的实验中应避免以验证性实验为主,增加自主性实验。学生一般根据实验指导书上的实验原理、流程图和硬件连线在实验箱上来完成实验,动手和思考的机会很少,程序也完全是照本宣科的拷贝一遍,对具体的硬件和软件设计完全茫然,结果很多的学生既不知其然,也不知其所以然。我认为在条件允许的情况下,教师自己可以根据实际情况自己设计实验,对实验的内容经过改动,增加学生自主思考的空间,以及让学生自己发现实验中存在的问题,并加以改进。

四、改善实训环节 学校一般会安排1-2周的实训课,一般情况下我们给定学生实训的方案,学生只需要自己完成电路的原理图和布局布线,软件的部分也是由老师来完成。我认为可以由老师选择一些难度适中的课题,由学生自己查阅资料,完成设计电路图―制作电路板―程序设计―软硬件联调―程序下载―脱机运行整个的产品设计过程,在课题中不妨增加新知识、新技术的应用,比如I2C总线,CAN总线、SPI总线、汉显液晶显示器等等的应用。

3、加快建设网络课程

现在有关单片机的新技术、新信息、新应用发展是日新月异,为了适应单片机的发展应用现状,可以建设网络课程,如最新的研发产品,不同型号单片机的应用,专家讲堂等。可以让学生以此为平台加以交流,将平时习得的得到巩固,也可以将最新的资讯供给学生参考,扩展学生的眼界,使学生对单片机的掌握不止局限在8051单片机上,对其他类型的单片机也能加以?h略,了解更为丰富的单片机软硬件资源,典型的单片机硬件电路,成熟的单片机软件设计模块。

4、开展不同形式的电子设计竞赛

学校自己可以每学期开展不同形式的电子设计竞赛,并给予不同的奖励,也多鼓励学生参加重庆市和全国的电子设计大赛,通过参加这些竞赛,让学生能够加理论和实践更好的联系在一起,磨砺学生吃苦耐劳的精神,提高学生分析问题和独立解决问题的能力,增加高职学生的就业竞争力。

总之,由于单片机在教学中的重要性,需要不断改革和探索单片机的教学方法,提高学生学习的积极主动性和综合能力,以此来提高教育和教学的质量。

参考文献:

[1]魏立峰、王宝兴 单片机原理与技术应用 北京大学出版社

[2]王静霞 单片机应用技术(C语言版)电子工业出版社

[3]赵安邦 “关于单片机教学的研究 ” 期刊论文

[4]叶睿 “关于单片机课程教学的探讨” 期刊论文■

第二篇:“互联网+”时代的单片机教学的思考与探索

摘要:本文探讨 “互联网+”时代技术背景下,如何有效把握单片机相关的教学内容和实践方法的改革,突出培养学生运用所学知识和技能解决实际问题的综合应用能力。采取将单片机教学分为基础教学过程和课程设计过程两阶段,增加实验时间等手段。教学结果表明在单片机的教学过程中,将“互联网+”时代物联关键技术与单片机教学相结合,“教与学”“练与做”相融合,对单片机教学改革以及培养学生创新实践能力具有极其重要的影响。

关键词:“互联网+”;单片机;教学改革

中图分类号:g712 文献标识码:a 文章编号:1006-4311(2016)21-0165-02

0 引言

“互联网+”是创新2.0下的互联网发展的新业态,是知识社会创新2.0推动下的互联网形态演进及其催生的经济社会发展新形态。“互联网+”是互联网思维的进一步实践成果,推动经济形态不断地发生演变,从而带动社会经济实体的生命力,为改革、创新、发展提供广阔的网络平台。互联网+”是两化融合的升级版,将互联网作为当前信息化发展的核心特征提取出来,并与工业、商业、金融业等服务业的全面融合,其具体的应用包括工业、金融、商贸、智慧城市、通信、交通、民生、旅游、医疗、教育等方面。这个充满创新的“互联网+”时代,给相关的技术人员带来了机遇和挑战。

本文重点探讨了在“互联网+”时代技术背景下,如何有效把握单片机相关的教学内容和实践方法的改革,才能突出培养学生运用所学知识和技能解决实际问题的综合应用能力。

单片机教学与“互联网+”时代技术的特点

《单片机原理与应用》是工科院校相关专业的重要的专业必修课,是一门集电子、计算机、语言编程等技术的应用性很强的课程[1-2]。了解单片机的工作原理,掌握单片机技术,将理论知识指导实践生产,成为相关专业大学生的重要任务[3]。传统的单片机教学方式,学生可掌握单片机的基础编程方法和接口基本使用,而结合实际需求针对具体功能的单片机系统的综合设计能力还有一定的欠缺。目前的单片机教学中,存在着理论课和实验课结合力度不强,实验内容陈旧、缺乏时效性,综合实验难以开展,教学方法陈旧,实践教学重视度不够,并且实验手段单一且脱离实际,对实践操作考核针对性不强等不足之处。“互联网+”时代对单片机或嵌入式教学改革提供了机遇与挑战,并对单片机教学在教学内容、教学方法和课程体系设置上都提出新的迫切要求。“互联网+”时代的技术载体是物联网技术,其是物联网思维的进一步实践成果。物联网架构的三个层次包括感知层、网络层和应用层,其关键技术都涉及到单片机嵌入式系统的具体应用,这也为单片机教学改革提供了很好的教学题材、研究内容、方法探讨。将“互联网+”的相关技术应用到“单片机原理与应用”这门以实践为主的教学中,锻炼学生解决实际问题的综合设计能力,为学生将来在“互联网+”时代相关产业的就业提供技术储备。

教学内容和方法改革

传统的微机原理、单片机和嵌入式系统等相关课程传统的教学内容是8086、51内核、arm7内核单片机硬件结构、指令系统、汇编程序设计、中断技术、定时器/计数器、串行通信、存储器扩展技术、接口系统软硬件设计等。结合“互联网+”时代的产业技术要求,计划将单片机整个教学过程更改为基础理论研究和实践动手创造两个阶段。基础理论研究阶段即采取课堂集中授课的方式完成,其课程包括微机原理接口与技术、单片机原理和嵌入式系统原理及应用三门课程,此三门课具备实践为主的特点,需要增加实验课程的课时比例,各课程若总课时设定为48学时,实验课时最低要保证16学时。同时结合“互联网+”时代的相关技术和应用在基础理论研究教学任务完成后,增加实践动手创造必要阶段,即在大三大四增加单片机课程设计阶段及开展嵌入式短学期学习,特别是针对物联网专业的学生,开展卓越工程师计划,让学生进公司进研发团队,可参与具体的物联网相关嵌入式产品设计。具体教学内容和方法改革如下。2.1 课堂教学内容和课时安排

“互联网+”时代的单片机课程的教学重点在于如何将单片机与无线通信的“互联网+”技术紧密联系在一起。单片机的课程基础包括c语言、模拟电路、数字电路等课程,在进行单片机正式授课内容前,教学安排中要学生对重点基础课程内容进行对应的复习。传统的单片机课程内容一般离不开89c51相关的内容,这里建议单片机课程的对象可以采用新型市场上比较热门的芯片进行对应的介绍学习,笔者课堂教学采用意法半导体主控制芯片stm8,总课时一般设定在至少48学时,实验课时至少设置在16学时。32学时的课堂教学计划见表1。此教学计划中只针对性的讲述stm8单片机常用的汇编指令以及循环和跳转等汇编语言程序设计方法,重点讲解单片机c语言程序设计和物联网基础知识的教学内容,重点让学生掌握单片机最小系统以及应用设计方法的教学内容。

2.2 基础实验内容和课时安排

课程的基本实验安排是至少16个学时,与32个学时的课堂教学穿插进行,有效提高学生动手能力及学生学习掌握stm8片内资源使用及相关类似单片机的开发环境安装、开发工具使用单片机软件的编程方法。在实验过程中,采用stm8单片机实验箱,实验2人一组,编程语言采用c语言为主,汇编语言为辅的方式,完成4个题目的实验内容。实验题目以及内容要求见表2。

这6个实验涵盖了学习任何一种单片机的基本思路和stm8单片机的程序设计的具体课堂教学内容。在整个实验过程中,建议学生上机之前对实验内容进行了解,上机过程中集中时间进行调试,在实验教师的帮助下,学生了解单片机的使用方法及掌握单片机编程知识的基础上,进一步加强其发现问题以及解决问题的能力,为后续的短学期课程设计以及毕业设计的进一步实践打下坚实的理论基础。

2.3 课程设计内容和课时安排

在学生完成单片机的课堂教学以及基础实验内容后,在大二下学期即可安排短学期进行单片机课程设计,时间安排在两周较好,课程设计内容为设计实现一个完整功能的单片机应用系统(这里强调不局限某种单片机),学生2-3人一组,每个组成员项目分工,最终课程设计考核采用现场实物与ppt答辩的方式,在这个过程中,每个小组成员通过查阅论文资料选择自己小组的设计题目,然后题目需有教师确认后方能进行。学生整个过程中,主动完成设计总体方案、设计原理图与pcb、最后焊接pcb板、硬件调试、软件调试等一系列实践相结合的工作,其中教师需要安排4个学时的答疑时间给同学,帮忙解决一些同学解决不了的问题。在课程设计考核过程中,学生以组为单位汇报ppt(ppt内容必须包括项目进行过程中遇到的问题,如何解决的),教师集中评点,指出各小组设计方案中的优缺点,给班级同学一个共同交流学习经验的机会,同时也培养了学生的学习兴趣和创作热情。

该课程设计目的是锻炼学生动手、编程能力,通过该课程设计,学生可理论联系实际,充分了解项目从选题、立项、分析到完成的整体过程。对于大学生创新、自学、动手等能力及专业热情都有较好的培养,为学生在后续专业学习和实践打下坚实的技术基础,同时也为学生参与大学生国家或省级电子设计大赛、飞思卡尔大学生智能车比赛、全国大学生物联网创新创业等竞赛提供有力的技术保证。基于本课程整体教学改革实践的成果,本校仅在2015年期间,国家级省级电子设计大赛、飞思卡尔、物理网创新创业大赛中取得一等奖共计5项,其他奖项若干,也为后续相关竞赛积累了丰富的经验。

结束语

实践教学结果表明,在单片机的教学过程中,将“互联网+”时代关键物联技术与单片机教学相结合,将“教与学”“练与做”很好地融合,使学生掌握基本知识和操作技能,并将关键的“互联网+”技术融入进去,培养学生分析解决实际问题的能力。将“教、学、做”定为“互联网+”时代工科学科如单片机、嵌入式教学的教学理念,树立培养出更多实用型工科人才的教学目标。最终,学生将跟上“互联网+”时代信息技术和物理网技术发展需求,为学生科研深造和未来的工作提供很好的前提保障。

第三篇:单片机教学总结

2014—2015学年第二学期《单片机应用技术》课教学总结

本学期本人担任电气中职13-1班《单片机应用技术》课的教学任务,为了顺利完成本门课的教学任务,本人能从各方面作起,现总结如下:

1.课前准备:根据学院教务处制定的实施性教学计划,认真研究组织同专业人员一起编写教学大纲,并根据教学大纲的要求选用合适的教材及参考资料。认真阅读教材和参考资料,根据教学进度计划认真制定本学期本课程的授课计划。2.认真备课:在多年的教学体验中感觉到,单片机方面的专业基础课的教学有一定的难度,同时,此类课程较抽象。因此在备课之前,必须对所有内容进行熟悉,参考多方面的资料,认真深入钻研教材,确定重点难点。根据本院现有的条件和学生的实际情况,认真授课、认真听课,虚心学习,不断反思教学,使教学有秩序、有组织、有步骤地进行。

3.认真组织课堂教学。上课时,本着“传道、授业、解惑”的原则,努力提高教学质量,使讲解有条理、清晰、准确、生动。使每堂课上学生都有所获,努力使学生学好理论知识,培养能力,发展智慧,培养学生的正确思维方式,学会好的学习方法。坚持做到以学生的学为主体,教师的教为主导,巩固和运用为主线。在课堂上,特别注意调动学生的积极性,采用启发性教学,让学生主动学习,轻松愉快地学习,并不断树立学生的自信心,从各方面提高学生的能力。

4.组织实践教学。在教学活动现有的条件下,尽量带学生去实验室参观,并做一些实际实验,以满足基本需要。

5.虚心请教。教师的教学过程即是一个不断学习的过程。因此,在此过程中,遇到疑难问题,虚心向经验丰富的教师请教。跟他们学习好的教学方法,好的教学经验,并向年轻教师学习他们的新知识,新理念,做到思想和认识上不落伍,跟上时代发展。

6.认真批改作业。坚持布置适量的作业,使学生所学知识得到巩固和提高。布置作业时,坚持做到有针对性,认真及时地批改作业。并针对学生的作业情况,认真透彻地进行讲评,及时掌握学生的学习情况。

7.认真反思教学。教学这一活动,没有反思就不会有进步。坚持每次授课后,认真回想,认真反思。

8.完成情况:本学期计划完成理论42学时,实验14学时。实际完成56学时。9.教学效果: 成绩最高分82分,平均分55分,及格率达到62%。

总之,在这一学期的教学过程中,我尽力地做好每项工作。其中学到的东西固然不少,但不足之处也有。在以后的教学工作中,我将不断总结经验,发扬优点,改进缺点,提高自己的教学水平和教学质量。

任课教师:买尔孜艳

2015年7月4日

第四篇:单片机实验报告

目录

第一章单片机简介....................................................2 第二章

实验要求..................................................3 第三章实验设备......................................................3 第四章实验安排......................................................4 第五章实验内容......................................................4

LED灯实验.......................................................4 步进马达试验....................................................5 独立按键控制LED实验............................................7 矩阵键盘实验....................................................9 静态数码管实验.................................................12 动态数码管实验.................................................14 NE555脉冲发生器实验(定时/计数器).............................16 RS232串口通信实验(接收与发送)..................................21 第六章收获体会.....................................................25

单片机实验报告

第一章单片机简介

单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!

单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。

1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。

2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。

Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。

3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求

单片机实验报告

应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。

MCS51系列微控制器应用广泛,在家电、汽车甚至航空等领域都有其活跃的身影。然而,普通51系列微控制器内部资源有限,像我用Proteus构建微控制器虚拟实验室选用的AT89C52只有三个定时器、一个全双工的串行口和中断控制,并且其数据处理能力有限,不适合对大量数据进行复杂分析和运算。

因此,在不重新选型(可选用SoC)的前提下,为实现我们所需要的功能,就需要进行外围扩展。针对微控制器的特点,我们首先考虑串行扩展,因为微控制器的I/O引脚有限,并行扩展一则外围芯片面积比较大,二则对抑制EMI不利。

第二章 实验要求

1.学习Keil C51集成开发工具的操作及调试程序的方法,包括:仿真调试与脱机运行间的切换方法

2.熟悉TD-51单片机系统板及实验系统的结构及使用

3.进行MCS51单片机指令系统软件编程设计与硬件接口功能设

4. 学习并掌握Keil C51软件联机进行单片机接口电路的设计与编程调试

5.完成指定MCS51单片机综合设计题

第三章实验设备

1.HC600S-51单片机开发板 2.Keil C51 3.普中自动下载软件

第四章 实验安排

1.LED灯实验

单片机实验报告

2.步进马达试验

3.独立按键控制LED实验 4.矩阵键盘实验 5.静态数码管实验 6.动态数码管实验

7.NE555脉冲发生器实验(定时/计数器)8.RS232串口通信实验(接收与发送)

第五章 实验内容

一、LED灯实验

1.基本要求

利用位移循环指令实现LED灯的闪烁 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。3.接线图

4.电路原理图

单片机实验报告

5.程序

#include #define uint unsigned int void d(uint x){uint n;for(;x>0;x--){for(n=0;n<123;n++){;} }}

main(){unsigned int i;while(1)

{for(i=0,P0=1;i<4;i++){d(500);P0=(P0<<2);}}}

二、步进马达试验

1.基本要求

编程实现马达的正反转,调速等功能 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。3.接线图(图一)

单片机实验报告

图一 图二

4.电路原理图

上图图二 5.程序

#include “reg52.h” #define speed 2 sbit PH1 = P1^0;

//定义管脚 sbit PH2 = P1^1;sbit I01 = P1^2;sbit I11 = P1^3;sbit I02 = P1^4;sbit I12 = P1^5;

void delay(int time);

void Go(){ //A

PH1 = 0;//PH1为0 则A线圈为反向电流

I01 = 0;I11 = 0;

//以最大电流输出

PH2 = 0;//PH2为0 则B线圈为反向电流

I02 = 1;I12 = 1;

//输出0 delay(speed);//圈为反向电流

I01 = 1;//输出0 I11 = 1;

PH2 = 1;//PH2为1 则B线圈为正向电流

I02 = 0;//以最大电流输出

I12 = 0;

delay(speed);//B PH1 = 1;

//PH1为1 则A线圈为

正向电流

I01 = 0;

//以最大电流输出

I11 = 0;

PH2 = 1;//PH2为1 则B线圈为正

向电流

I02 = 1;//输出0 I12 = 1;

delay(speed);

PH1 = 1;

//PH1为1 则A线圈为正向电流

I01 = 1;I11 = 1;

PH2 = 0;

//PH2为0 则B线圈为反向电流

I02 = 0;I12 = 0;delay(speed);}

void delay(int time){

int i,j;

for(j=0;j <= time;j++)

for(i =0;i <= 120;i++);}

void main(){

while(1)

{

Go();//步进电机运行

} }

单片机实验报告

三、独立按键控制LED实验

1.基本要求

通过编程控制8个独立按键分别控制8个LED灯的开关 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。3.接线图(图一)

图一 图二

4.电路原理图 上图图二 5.程序

#include #include #define GPIO_KEY P1 //独立键盘用

P1口

#define uchar unsigned char #define uint unsigned int

void Delayms(unsigned int c);

//延时10ms uchar Key_Scan();void main(void){

unsigned char ledValue, keyNum;

ledValue = 0x01;

while(1)

{

keyNum = Key_Scan();//扫描键

switch(keyNum)

{

case(0xFE):

//返回按

键K1的数据

ledValue = 0x01;

break;

单片机实验报告

case(0xFD):

ledValue = 0x02;

break;case(0xFB):

ledValue = 0x04;

break;case(0xF7):

ledValue = 0x08;

break;case(0xEF):

ledValue = 0x10;

break;case(0xDF):

ledValue = 0x20;

break;case(0xBF):

ledValue = 0x40;

break;case(0x7F):

ledValue = 0x80;

//返回按键K2的数据

//返回按键K3的数据

//返回按键K4的数据

//返回按键K5的数据

//返回按键K6的数据

//返回按键K7的数据

//返回按键K8的数据

break;default:

break;

}

GPIO_LED = ledValue;//点亮LED灯

}

}

uchar Key_Scan(void)//键盘扫描函数 { uchar i,n=0xff;

if(P1==0xff)goto Scan_r;//无键按

下,返回

goto Scan_r;Scan_1:

while(P1!=0xff);//等待键释放

Delayms(10);Scan_r:

return n;}

void Delayms(uint x){

uint n;

for(;x>0;x--)

{

for(n=0;n<123;n++)

{;}

} }

四、矩阵键盘实验

1.基本要求

编程由16个矩阵按键控制数码管显示相应的数值 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。

3.接线图

单片机实验报告

见下图图一

图一 图二

4.电路原理图

见上图图二 5.程序

#include #define uchar unsigned char #define uint unsigned int #define uint unsigned int #define GPIO_LED P0

uchar ScanKey(void);void Delayms(uint x);main(){ unsigned char ledValue;uchar i;ledValue = 0x01;loop: i = ScanKey();

switch(i)

{ case 0xee:

ledValue = ~0x3F;

break;

case 0xde:

ledValue = ~0x06;

break;

case 0xbe:

ledValue = ~0x5B;

break;

case 0x7e:

ledValue = ~0x4F;

break;

case 0xed:

ledValue = ~0x66;

break;

case 0xdd:

ledValue = ~0x6D;

break;

单片机实验报告

case 0xbd:

ledValue = ~0x7D;

break;

case 0x7d:

ledValue = ~0x07;

break;

case 0xeb:

ledValue = ~0x7F;

break;

case 0xdb:

ledValue = ~0x6F;

break;

case 0xbb:

ledValue = ~0x77;

break;

case 0x7b:

ledValue = ~0x7C;

break;

case 0xe7:

ledValue = ~0x39;

break;

case 0xd7:

ledValue = ~0x5E;

break;

case 0xb7:

ledValue = ~0x79;

break;

case 0x77:

ledValue = ~0x71;

break;

}

GPIO_LED = ledValue;i=0;goto loop;}

void Delayms(uint x){uint n;for(;x > 0;x--)

{ for(n=0;n<123;n++)

{;}

} }

uchar ScanKey(void)//键盘扫描函数 { uchar i,n=0xff;

P1=0xf0;

if(P1==0xf0)goto Scan_r;//无键按下,返回

for(i=0,P1=0xfe;i<4;i++)

{ if((P1&0xf0)!=0xf0)

{ Delayms(10);

if((P1&0xf0)!=0xf0)

{ n=

P1;

goto

Scan_1;}

}

P1=(P1<<1)+1;

//扫描下

一行

} goto Scan_r;Scan_1:

单片机实验报告

P1=0xf0;while((P1&0xf0)!=0xf0);//等待键

释放

Delayms(10);

Scan_r:

P1=0xff;return n;} }

五、静态数码管实验

1.基本要求

编程使数码管显示字符0-F 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。3.接线框图(图一)

图一

单片机实验报告

图二

4.电路原理图

见上图图二 5.程序

#include #define uchar unsigned char #define uint unsigned int void Delayms(uint x);uchar code LED7Code[]=

{~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D, ~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};main(){

unsigned int LedNumVal;//定义变量 while(1)

{

// 将字模送到P0口显示

LedNumVal++;

P0 = LED7Code[LedNumVal%16];

Delayms(1000);

//调用延时程序

}

}

单片机实验报告

void Delayms(uint x){uint n;for(;x > 0;x--)

{ for(n=0;n<123;n++)

{;}

} }

六、动态数码管实验

1.基本要求

编程实现8个数码管的动态扫描。通过P22、P23、P24控制3-8译码器来对数码管进行位选,通过P0口经过573的驱动控制数码管的段选,通过P13控制573的使能端,为低电平时573才会有输出。2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。3.接线图(图一)

图一 图二

单片机实验报告

图三

4.电路原理图

见上图图

二、图三 5.程序

#define uint unsigned int void Dsplay();void Delayms(uint x);uchar mDS[6];uchar code cDsCode[]=

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90};

void main(){ uchar i;

for(i=0;i<6;i++)mDS[i]=i+1;

loop:

Dsplay();

goto loop;}

void Dsplay()//动态扫描显示

{uchar i;

for(i=0,P2=0x01;i<6;i++)

{ P1=cDsCode[mDS[i]];//输出段

Delayms(1000);

P2=P2<<1;

//选通下一位

}

P2=0x00;

//关闭位选通 }

void Delayms(uint x){uint n;for(;x > 0;x--)

{ for(n=0;n<123;n++)

{;}

} }

七、NE555脉冲发生器实验(定时/计数器)

1.基本要求

2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。3.接线图

4.电路原理图

5.程序

#include #include“lcd.h” #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar code EN_CHAR1[16]={“

CYMOMETER

”};uchar code EN_CHAR2[16]={“FREQ:

HZ”};

单片机实验报告

void TIMER_Configuration();//初始化定时器 ulong Freq;

//用来存放要显示的频率值 ulong TimeCount;//用于计算1S钟的

void main(){ uchar i, freqValue[6];

LcdInit();TIMER_Configuration();for(i=0;i<16;i++){

LcdWriteData(EN_CHAR1[i]);}

LcdWriteCom(0xc0);//第二行显示

for(i=0;i<16;i++){

LcdWriteData(EN_CHAR2[i]);}

while(1){

if(TR0==0)

//当计数器停下的时候,表明计数完毕

{

Freq = Freq + TL1;

//读取TL的值

Freq = Freq +(TH1 * 256);//读取TH的值

LcdWriteCom(0xc8);

//--求频率的个十百千万十万位--//

freqValue[0]='0'+Freq%1000000/100000;

freqValue[1]='0'+Freq%100000/10000;

freqValue[2]='0'+Freq%10000/1000;

freqValue[3]='0'+Freq%1000/100;

freqValue[4]='0'+Freq%100/10;

freqValue[5]='0'+Freq%10;

for(i=0;i<5;i++)//从最高位开始查找不为0的数开始显示(最低位为0显示0)

{

if(freqValue[i]==0x30)

{

freqValue[i]=0x20;//若为0则赋值空格键

}

else

单片机实验报告

{

break;

}

}

for(i=0;i<6;i++)

{

LcdWriteData(freqValue[i]);

}

Freq=0;//将计算的频率清零

TH1=0;//将计数器的值清零

TL1=0;

TR0=1;//开启定时器

TR1=1;//开启计数器

} } }

void TIMER_Configuration(){ TMOD=0x51;TH0=0x3C;TL0=0xB0;ET0=1;ET1=1;EA=1;TR0=1;TR1=1;} void Timer0()interrupt 1 { TimeCount++;if(TimeCount==20)//计时到1S {

TR0=0;

TR1=0;

TimeCount=0;

}

//--12MHZ设置定时50ms的初值--// TH0=0x3C;TL0=0xB0;} void Timer1()interrupt 3 {

单片机实验报告

//--进入一次中断,表明计数到了65536--// Freq=Freq+65536;

}

#include“lcd.h”

void Lcd1602_Delay1ms(uint c)

//误差 0us {

uchar a,b;for(;c>0;c--){

for(b=199;b>0;b--)

{

for(a=1;a>0;a--);

}

}

} #ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时 void LcdWriteCom(uchar com)

//写入命令 { LCD1602_E = 0;

//使能

LCD1602_RS = 0;

//选择发送命令

LCD1602_RW = 0;

//选择写入

LCD1602_DATAPINS = com;

//放入命令

Lcd1602_Delay1ms(1);//等待数据稳定

LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5);

//保持时间

LCD1602_E = 0;} #else

void LcdWriteCom(uchar com)

//写入命令 { LCD1602_E = 0;//使能清零

LCD1602_RS = 0;//选择写入命令

LCD1602_RW = 0;//选择写入

LCD1602_DATAPINS = com;// Lcd1602_Delay1ms(1);LCD1602_E = 1;//写入时序

Lcd1602_Delay1ms(5);LCD1602_E = 0;Lcd1602_Delay1ms(1);

单片机实验报告

LCD1602_DATAPINS = com << 4;//发送低四位

Lcd1602_Delay1ms(1);

LCD1602_E = 1;//写入时序

Lcd1602_Delay1ms(5);LCD1602_E = 0;} #endif #ifndef LCD1602_4PINS

void LcdWriteData(uchar dat)

//写入数据 { LCD1602_E = 0;//使能清零

LCD1602_RS = 1;//选择输入数据

LCD1602_RW = 0;//选择写入

LCD1602_DATAPINS = dat;//写入数据

Lcd1602_Delay1ms(1);

LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5);

//保持时间

LCD1602_E = 0;} #else void LcdWriteData(uchar dat)

//写入数据 { LCD1602_E = 0;//使能清零

LCD1602_RS = 1;

//选择写入数据

LCD1602_RW = 0;

//选择写入

LCD1602_DATAPINS = dat;

Lcd1602_Delay1ms(1);LCD1602_E = 1;//写入时序

Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = dat << 4;//写入低四位

Lcd1602_Delay1ms(1);LCD1602_E = 1;//写入时序

Lcd1602_Delay1ms(5);LCD1602_E = 0;} #endif #ifndef LCD1602_4PINS void LcdInit()

//LCD初始化子程序 { LcdWriteCom(0x38);//开显示

单片机实验报告

LcdWriteCom(0x0c);//开显示不显示光标

LcdWriteCom(0x06);//写一个指针加1 LcdWriteCom(0x01);//清屏

LcdWriteCom(0x80);//设置数据指针起点 } #else void LcdInit()

//LCD初始化子程序 { LcdWriteCom(0x32);//将8位总线转为4位总线

LcdWriteCom(0x28);//在四位线下的初始化

LcdWriteCom(0x0c);//开显示不显示光标

LcdWriteCom(0x06);//写一个指针加1 LcdWriteCom(0x01);//清屏

LcdWriteCom(0x80);//设置数据指针起点 } #endif

八、RS232串口通信实验(接收与发送)

1.基本要求

a.通过实验了解串口的基本原理及使用,理解并掌握对串口进行初始化; b.使用串口调试助手(Baud 9600、数据位

8、停止位

1、效验位无)做为上位机来做收发试验;

c.利用串口调试助手中字符串输入进行数据发送,接受窗口显示收到的数据。2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。3.接线图

单片机实验报告

4.电路原理图

5.程序

#include #include“lcd.h” unsigned char ChCode[14] = “Received data:”;void UsartConfiguration();void main(){ unsigned char i, receiveData;LcdInit();for(i=0;i<14;i++){

LcdWriteData(ChCode[i]);} UsartConfiguration();while(1){

if(RI == 1)

//查看是否接收到数据

{

receiveData = SBUF;//读取数据

单片机实验报告

RI = 0;

//清除标志位

LcdWriteCom(0xC0);

LcdWriteData('0' +(receiveData / 100));

// 百位

LcdWriteData('0' +(receiveData % 100 / 10));// 十位

LcdWriteData('0' +(receiveData % 10));

// 个位

} } } void UsartConfiguration(){ SCON=0X50;

//设置为工作方式1 TMOD=0X20;//设置计数器工作方式2 PCON=0X80;

//波特率加倍

TH1=0XF3;

//计数器初始值设置,注意波特率是4800的TL1=0XF3;TR1=1;

//打开计数器 }

#include“lcd.h”

void Lcd1602_Delay1ms(uint c)

//误差 0us {

uchar a,b;for(;c>0;c--){

for(b=199;b>0;b--)

{

for(a=1;a>0;a--);

}

}

} #ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时 void LcdWriteCom(uchar com)

//写入命令 { LCD1602_E = 0;

//使能

LCD1602_RS = 0;

//选择发送命令

LCD1602_RW = 0;

//选择写入

LCD1602_DATAPINS = com;

//放入命令

Lcd1602_Delay1ms(1);//等待数据稳定

LCD1602_E = 1;

//写入时序

单片机实验报告

Lcd1602_Delay1ms(5);

//保持时间

LCD1602_E = 0;} #else

void LcdWriteCom(uchar com)

//写入命令 { LCD1602_E = 0;//使能清零

LCD1602_RS = 0;//选择写入命令

LCD1602_RW = 0;//选择写入

LCD1602_DATAPINS = com;Lcd1602_Delay1ms(1);LCD1602_E = 1;//写入时序

Lcd1602_Delay1ms(5);LCD1602_E = 0;Lcd1602_Delay1ms(1);LCD1602_DATAPINS = com << 4;//发送低四位

Lcd1602_Delay1ms(1);LCD1602_E = 1;//写入时序

Lcd1602_Delay1ms(5);LCD1602_E = 0;} #endif

#ifndef LCD1602_4PINS

void LcdWriteData(uchar dat)

//写入数据 { LCD1602_E = 0;//使能清零

LCD1602_RS = 1;//选择输入数据

LCD1602_RW = 0;//选择写入

LCD1602_DATAPINS = dat;//写入数据

Lcd1602_Delay1ms(1);LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5);

//保持时间

LCD1602_E = 0;} #else void LcdWriteData(uchar dat)

//写入数据 { LCD1602_E = 0;

//使能清零

LCD1602_RS = 1;

//选择写入数据

LCD1602_RW = 0;//选择写入

LCD1602_DATAPINS = dat;

Lcd1602_Delay1ms(1);LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5);

单片机实验报告

LCD1602_E = 0;LCD1602_DATAPINS = dat << 4;//写入低四位

Lcd1602_Delay1ms(1);LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5);LCD1602_E = 0;} #endif

#ifndef LCD1602_4PINS void LcdInit()

//LCD初始化子程序 { LcdWriteCom(0x38);//开显示

LcdWriteCom(0x0c);//开显示不显示光标

LcdWriteCom(0x06);//写一个指针加1 LcdWriteCom(0x01);//清屏

LcdWriteCom(0x80);//设置数据指针起点 } #else void LcdInit()

//LCD初始化子程序 { LcdWriteCom(0x32);//将8位总线转为4位总线

LcdWriteCom(0x28);//在四位线下的初始化

LcdWriteCom(0x0c);//开显示不显示光标

LcdWriteCom(0x06);//写一个指针加1 LcdWriteCom(0x01);//清屏

LcdWriteCom(0x80);//设置数据指针起点 } #endif

单片机实验报告

第六章 收获体会

本次微控制器综合设计基本上使用了所选微控制器的所有资源,进一步熟悉和加深了对中断、定时器和串行通信的理解和使用。我觉得软件实验就是让我们初学者熟悉keil的使用,然后复习下汇编的思想和掌握程序的流程,所以软件实验可以很快的完成,并且慢慢熟悉调试的强大功能。硬件设计中,仿真让我很有感触,感觉蛮好玩的,可以摒弃麻烦的实验硬件自己在寝室玩而且不受硬件状态的限制,即便出错了也不会损坏。当然更重要的是这种好习惯,仿真完后再去在实验板上验证会比直接要来的确切而且便捷,至少不要老是去插拔线。在做实验中在同学指导下我试用C语言来编写程序,确实发现比汇编语言容易编写也容易理解,以前的实验还是有参考资料的习惯,现在什么都开始自己写感觉还是很有成就感的,当然这是基于程序本身就那么几行很容易编写,也不是说参考不好。总而言之,这学期的单片机实验还是收获颇丰的。相信在以后的实验学习实践工作中都会有个潜移默化的作用的。

第五篇:单片机实验

实验

一、MCS51单片机基本开发环境

1. 实验目的:

1)熟悉软件的集成开发环境 2)掌握单片机软件设计流程

3)掌握单片机存贮器结构及各窗口之间的联系 2. 实验内容:

1)用三种方法实现将累加器A内容改为20H

方法1--MOV A,#20H 方法2—MOV R0,#20H MOV A,R0 方法3—MOV R0,#20H XCH A,R0 心得:越往下做实验时就越感觉这题根本不能说是题目,但不得不说在没接触过编程软件,刚开始学的汇编,第一次做的实验就光这道题都觉得不知道做什么.所以凡是总有开始,不了解情况的多简单的都会觉得难.2)将58H位单元置为1,观察内部RAM中2BH内容的变化 代码:

SETB 2BH.0 JMP $ END 心得:这是关于内部存储中对单元和字节了解,不理解很容易做错.比如开始写的指令为

MOV R0,#58H;MOV @R0,#1

这是错误的指令。这就需要认真去了解单片机中的字节地址与位地址的关系。80C51中有位寻址区和字节寻址区。题目中58H为位地址,2BH为字节地址,且58H为2B字节的最低位。由于58H属于位寻址区,可用位操作指令 SETB 进行置位,SETB 2BH.0 执行后,2BH中内容变为01

3)如果当前状态为有进位、工作寄存器使用区2,请用3种方法设置这种状态

代码:

ANL PSW,#01H MOV A,PSW

CJNE A,#01,LAB2 LAB1:JMP LAB1

LAB2: SETB PSW.4 MOV P0,#01H MOV R0,#18H CLR PSW.3 MOV C,P0.0 MOV PSW,R0 MOV PSW.4,C CPL C MOV PSW.3,C END

心得:以上LAB2写了三段代码,可分别完成题目要求。不过实验时只是对代码进行了错误调试,没有对结果进行检验。其中值得注意的是对于布尔(位)操作指令的用法,比如传送指令必须经累加器C,如第二段中MOV P0,#01H;MOV C,P0.0,以及对于位寻址的方式(如需用到“.”隔开)的应用。4)编一个小程序将内部RAM中的20H单元的内容送到21H单元并调试

代码:

MOV R0,#20H MOV @R0,#10H MOV R1,#21H MOV @R1,20H JMP $ END

5)用程序将堆栈指针指向60H,然后在堆栈中依次压入01,02,03,04,05五个数,观察哪些单元内容发生了变化,各变为多少?从哪些窗口可以发现这些变化?顺序将堆栈中的五个数放入30H~34H五个单元中,编程实现之。

代码:

MOV R1,#60H MOV SP,R1 MOV DPL,#1H LAB1:PUSH DPL INC DPL MOV A,DPL CJNE A,#6,LAB1 POP 34H POP 33H POP 32H POP 31H POP 30H JMP $ END

6)将外部数据存贮器1000H~100FH 16个单元中存放00H~0FH 代码:

MOV DPTR,#1000H MOV R1,#10H LOOP:MOVX @DPTR,#1234H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END

心得:此处需要访问片外存储空间,需要借助寄存器DPTR,需注意其为16位的寄存器,在使用时若与八位寄存器进行数据交换时需分为高八位DPH与低八位DPL来用。7)若要求程序从0010H单元开始运行,可用两种方法实现?

方法一 ORG 0010H 方法二 AJMP 0010H

3. 选做实验内容:数据传送 目的:

1)掌握8051单片机内部数据存贮器、外部数据存贮器的数据传送特点和应用 2)掌握MOV,MOVX和MOVC类指令的用法及区别 内容:

1)将片内RAM数据区20H为首地址的十六个字节传送到30H为首地址的数据区,即:20H~2FH送30H~3FH

代码: ORG 0000H JMP MAIN ORG 0030H MAIN:MOV R0,#20H MOV R1,#30H LOOP:MOV @R0,#1234H MOVA,@R0 MOV @R1,A INC R0 INC R1 CJNE R1,#30H,LOOP JMP $ END

2)将外部数据存储器2000H~200FH单元的十六个数传送至内部数据存储器的30H~3FH 代码: ORG 0000H JMP MAIN ORG 0030H MAIN: MOV DPTR,#2000H MOV R1,#30H LOOP:MOVX @DPTR,#12H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END

总体心得体会:

第一次做实验主要是熟悉了解了下单片机编程软件的使用,开始接触时在对其软件不是太了解的情况下实验编程做的确实很乱,不清楚该怎样进行,比如不知如何进行对指令的调试,也不清楚该如何观察结果,没有一个整体的概念,所以在了解其开发环境上花了不少时间。经过一段时间的摸索后也终于了解了其具体的使用,也能够顺利的对指令的编程运用。运行指令时遇到的一些问题需要注意的也在上面各题中做了说明。还有需要注意的是:进入软件仿真时需要对存储空间进行查看的方法是在Address窗口中输入:d:00h 显示内部数据存储器从00h开始的单元; x:1000h 显示外部数据存储器从1000h开始的单元; c:0000H 显示程序存储器内容。还有由于伪指令 END 定义的原因,在程序末需加一条死循环调转指令(如 JMP $)使程序不会进入其他未知空间执行其他指令。实验

二、加、减法实验

1. 实验目的

1)正确使用单片机的加减运算指令

2)掌握不同指令对于程序状态字的影响及程序状态字的意义、用处 3)掌握ADD,ADDC,SUBB和DA A等指令的用法 4)学习模块化程序设计方法 2. 实验内容

1)编写3字节二进制加法子程序,并用主程序调用不同的加数和被加数来检测该子程序的正确性。需考虑有进位和无进位情况。程序入口为: 加数:22H,21H,20H三字节,22H为最高位

被加数:32H,31H,30H三字节,32H为最高位

程序出口为: 23H,22H,21H,20H四字节,23H为最高位 例如:地址:23 22 21 20 32 31 30 执行前数据: 01 23 45 FF 01 01 执行后数据:01 00 24 46

代码:

ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 22H,#01H MOV 21H,#23H MOV 20H,#45H MOV 32H,#0FFH MOV 1H,#01H MOV 30H,#01H ACALL ADDI HERE:JMP HERE ORG 100H ADDI: PUSH PSW MOV R0, #20H;加数1地址、和的地址 MOV R1, #30H;加数2地址 CLR C MOV R2, #3;循环3次 LOOP: MOV A, @R0;取 ADDC A, @R1;加 MOV @R0, A;存 INC R0 INC R1 DJNZ R2, LOOP CLR A ADDC A, #0;得到进位 MOV 23H, A;保存 POP PSW RET END

2)编写三字节二进制减法子程序 入口:被减数: 52H,51H,50H, 50H为最低位

减数: 42H,41H,40H, 40H为最低位

出口:差:外部数据存贮器2003H~2000H(2000H为最低位)用主程序调用多组数据来调试,需考虑无借位和有借位两种情况。例如:

执行前:地址: 52 51 50 42 41 40

数据: 90 80 70 10 10 10

执行后:地址: 2003 2002 2001 2000

数据: 00 80 70 60 代码:

ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 52H,#90H MOV 51H,#80H MOV 50H,#70H MOV 42H,#10H MOV 41H,#10H MOV 40H,#10H ACALL SUB1 HERE:JMP HERE SUB1: PUSH PSW MOV R0, #50H;被减数地址 MOV R1, #40H;减数地址 MOV DPTR, #2000H;差的地址 CLR C MOV R2, #3;循环3次 LOOP: MOV A, @R0;取 SUBB A, @R1;减 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP CLR A SUBB A, #0;得到借位 MOVX @DPTR, A;存 POP PSW RET END

3)编写10位十进制加法子程序(十进制数采用压缩BCD码存放)入口: 加数:24H—20H,低地址放低字节

被加数:29H—25H,低地址放低字节

出口 和:4005H—4000H,低地址放低字节

要求调用多组数据调试,注意观察PSW的变化,理解DA A指令的含义。例如:

执行前地址:24 23 22 21 20 29 28 27 26 25

数据:12 34 56 78 90 88 99 33 12 74

执行后地址:4005 4004 4003 4002 4001 4000

数据: 01 01 33 89 91 64

代码:

ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 24H,#12H MOV 23H,#34H MOV 22H,#56H MOV 21H,#78H MOV 20H,#90H MOV 29H,#88H MOV 28H,#99H MOV 27H,#33H MOV 26H,#12H MOV 5H,#74H ACALL ADD2 HERE:JMP HERE ADD2: PUSH PSW MOV R0, #20H;加数1地址 MOV R1, #25H;加数2地址 MOV DPTR,#4000H CLR C MOV R2, #5;循环5次 LOOP: MOV A, @R0;取 ADDC A, @R1;加

DA A;调整为BCD码 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP POP PSW RET END

下载关于单片机教学的几点思考5篇范文word格式文档
下载关于单片机教学的几点思考5篇范文.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    单片机复习

    P1口输入输出数据的时候要先写1P1口为什么要写0xff?51单片机他有几个中断源?哪几个?他的中断优先级由哪个寄存器决定?PSW寄存器中RS1、RS0的作用是什么?LED数码管有两种显示方式......

    单片机学习心得

    单片机学习心得 计算机科学与技术班 学号: 单片机是一门应用性和综合性很强的学科,它综合了电子技术中的模拟电路和数字电路方面的知识,特别是数字电路,因为数字电路在里面的应......

    单片机学习心得

    单片机学习心得 第一次听说单片机是在今年年初的时候,是在一段视频上,好像讲的是基于单片机控制的遥控小车,真正见到单片机是在我的第一本入门教材上,在此之前我只是模拟电子电......

    单片机学习心得

    作为过来人思前想后,我感到完全有责任将发自心底的感受传递给年轻一代,“一个企业家心灵深处渴望优秀人才的卓越追求和深层次的叹息、痛苦和感受”。您们千万不要等到毕业求......

    单片机心得体会

    单片机心得体会 下面我概括了几点我的学习经验和心得体会: 1、万事开头难、要勇敢迈出第一步。开始的时候,不要老是给自己找借口,说KEIL不会建项目啦、没有实验板啦之类的。遇......

    单片机实验报告

    单片机实验报告 一、实验目的 1.熟练使用Keil、Protues两款软件 2.通过上机操作,增强个人动手实践能力 3.加深对理论知识的理解 4.培养运用汇编语言进行初步编写程序的能力......

    单片机实验报告

    实验四、中断交通灯实验 林立强1000850116 一、实验目的 1、了解MCS-51单片机的组成、中断原理,中断处理过程、外部中断的中断方式。 2、掌握中断响应及处理的编程方法。 二......

    单片机课程设计

    设计题目: 单片机课程设计 学生姓名:学院: 电气与信息工程学院班级: 电子111班 指导教师:日 期: 2014年9月20日 一、课程设计目的: 了解电子元器件的功能与原理,掌握单片机的结构......