好好学习,天天向上,写范文网欢迎您!
当前位置:首页 > > 综合范文 > 正文

单片机实验感想含3篇(单片机实验体会)

2022-11-07 03:10:13综合范文

  下面是范文网小编分享的单片机实验感想含3篇(单片机实验体会),供大家参考。

单片机实验感想含3篇(单片机实验体会)

单片机实验感想含1

  确定课程设计作品——>网上查找相关资料/购买开发板(魏凌同学私人提供)——>程序代码/开发板接线——>检查能否正常运行/找错,修改——>功能展示——>整理资料

  从最开始确定小组课程设计的作品为电子锁,然后在网上查找相关资料,再一点一点地编写修改程序代码,开发板接线,最后运行。期间出现的问题真的算是蛮多的,一开始毫无头绪,程序代码有些搞

  不懂,线也不知道怎么接,后来,基本上都是组长魏凌同学完成的。在这次实践中,我才深深意识到自己单片机理论知识是有很大欠缺的。

  通过这次的单片机课程设计,我了解到学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累。单片机是一门应用性和实践性很强的学科,要多动手,多做实验。在实践的过程中,发现问题,想办法解决问题。同时也可以学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。在碰到问题时,可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。另外,小组要团结,小组之间要多交流,技术是靠不断的积累和交流才会进步的。

  近年来,随着计算机技术的迅速发展,单片机的越来越多的应用到了我们的生活中,但是单片机并不是一门纯理论课,它要求有一定的时间能力,是一门理论与实践相结合的课。在本学期,我们学习了单片机的原理及简单应用,由浅入深,但是单单理论知识对于我们来说未免太过枯燥和抽象。在完成课程设计的过程中,我们更多的将理

  论和实践结合,不仅帮助我更好的理解了课本上的知识,巩固了以前所学过的知识,也培养了我的动手能力。在实践的过程中难免遇到一些困难,但是通过与组员的沟通和交流也成功解决了。最后的成品电子锁出来后我收获了满满的感动。

  在这几周的实践中,我的实际动手能力和思考能力得到了很好的锻炼,同时在与组员的思维火花碰撞过程中,我的思维得到了启发,和人沟通的能力也得到了很好的锻炼。

  总的来说,我很感谢这次的课程实践,也谢谢老师在这一学期的课程中对我们的悉心指导,更感谢我的组员们,没有他们我就完成不了此次的课程设计。

  通过这次的单片机课程设计,让我们受益匪浅,确实单片机是一门很值得我们去深入研究拓展的课程。原来很多本来认为很神奇的东西还可以自己动手做出来,从理论到实践,在这段日子里,我们学习到了很多很多东西,无论是从知识上还是实践上,自己做单片机设计实物开阔了我们的眼界,很好的提高了我们对书本上知识的理解和应用,并且也在一定程度上提高了我们的团队协作能力!我相信这在以后的生活道路上是一直受用的。

  在这次自己动手的过程中,我们也遇到许许多多困难。我们通过各种途径去自己解决这些问题,为此我们一起泡了很久的图书馆来查阅资料。从中我们也发现了自己对一些知识的掌握不够,还有动手能力不够强,希望以后可以通过更多的实践来巩固加强!

  回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在大半月的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟我第一次做的课程设计作品,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说、、、、、、、、、、(你自己举点例子好了)对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。虽然我们在这次课程设计中遇到了很多问题,但总归算是完成了我们的作品,我们也从其中学到了很多在书本上无法学到的知识。

单片机实验感想含2

  实验一清0、移数

  将片内20H~2FH及片外0010H~001FH单元清0;

  然后将片内30H~3FH的数据移到片外0000H~000FH中;判断:

  若(30H)≤10,则求其平方存到31H中,并将位00H置1(其它位清0)若(30H)=10,则将AA存到31H中,并位01H置1(其它位清0)若(30H)≥10,则减10存到31H中,并位02H置1(其它位清0)

  实验二加法、排序

  有两个长度为10的无符号数分别放在片内20H和30H为首的存储单元中(低位),求其对应项之和(带进位位),结果放在40H为首的单元中(若最高位有进位则存在后续单元中),然后按升序排列放在50H为首的单元中

  实验三查表、散转

  设有一表格,表中数为:00H、11H、22H、33H、44H、55H、66H、77H、88H、99H、AAH、BBH、CCH、DDH、EEH、FFH。根据片外0001H单元的低4位的数,取出表中相应的值存到片内30H中;根据片外0001H单元的高4位的数,将片内RAM区中可位寻址的相应的位置1(从位00H~位0FH,只可有一个位地址为1)

  实验四外中断

~接8个发光二极管,管脚INT0、INT1接两个按键,分别定义为“L”和“R”。

  要求:上电全灭,按 “L”(或R)键,最右(左)侧灯亮,每按一次“L” ”(或R)键,则亮的灯向左(右)移一位,当移到最左(右)端时,灯全灭

  实验五定时器

、分别接两个发光二极管,INT0脚接

  一按键做开关,按一次开关,则启动,两个发

  光管一亮一灭,亮灭时间均为1秒;再按一次

  开关,则关闭,即两个发光管都灭。

  实验六定时器、计数器

  口输出周期为2S的方波,T1口为脉冲输入端,记录输入的脉冲个数,脉冲个数由P1口所接的8个数码管显示(二进制),设一按键作为开关控制系统运行,关闭时数码管全灭,无输出。

单片机实验感想含3

  实验

  一、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 JMP $ END 心得:这是关于内部存储中对单元和字节了解,不理解很容易做错.比如开始写的指令为

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

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

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

  代码:

  ANL PSW,#01H MOV A,PSW

  CJNE A,#01,LAB2 LAB1:JMP LAB1

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

  心得:以上LAB2写了三段代码,可分别完成题目要求。不过实验时只是对代码进行了错误调试,没有对结果进行检验。其中值得注意的是对于布尔(位)操作指令的用法,比如传送指令必须经累加器C,如第二段中MOV P0,#01H;MOV C,,以及对于位寻址的方式(如需用到“.”隔开)的应用。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


相关热搜
相关文章