单片机实验心得体会 (2)

单片机实验心得体会

(生物系统工程   高源)

说在最前面的话:

在整个单片的机的实验过程中,我的思维发生了很多改变。

首先是,我没有想到这个机器真的可以将电脑上的代码看起来很简单的转换成电路的通断。 虽然这个和我们的手机芯片,电脑CPU比起来还差了很多,但是原理可行,便是越做越复杂越做越小。

其次,这门课真的非常依靠我们的上课是不是认真听,微电子电路精密的实验就是这样,任何一个位置的错误操作或者元器件的损坏都是不可能实现最后的结果的。

同样在后面的文章中我还会谈到语句的选择问题,在这些实验中我渐渐的学会了不套用书本上的语言而使用更多的我的思想。从那个定时装置老师需要我们自己计算两个量的乘积开始探索我们发现了我们可以做的有很多,可以去革新,可以去简化。

最后我们的知识实在还是太渺小了,我们可以学的内容还是有很多的,如果想让单片机这个领域有更好的发展,我们需要去寻找的还有很多。

一、       实验一定要内容清晰,思路清晰,弄懂每一行代码。

在单片机的系统中,是像一些我们比较熟知的程序语言一样,有自己的地址,有自己的工作方式和工作顺序,因此我们在设计时是不能出一点差错的,而因为每一行都在进行地址的转换和堆栈的转换,因此我们在实验前一定要充分了解这次实验全部要做的内容。

二、实验过程可改变处多、很多路线可以归结到统一的答案。

我们知道最基础的单片机汇编语言结构形式由顺序结构,分支结构,循环结构组成。在我们完成前面几个实验的时候,我们更多的是用的这些结构的本身。但是后面我们发现,其实在单片机系统中有着更多的方式可以完成同样的目标。

例如,我们同样是完成一个定时,前期可以使用循环进行定时,通过机器时间的计算来设置寄存器中的数字大小。但是当我们开始应用定时器的时候同样可以做到我们想要的工作。而且我们发现定时器在和一些输入输出断口的扩展连接上更好。

DLEAY语句完成定时操作:
DLEAY:MOV R5,#TIME1
LOOP:MOV R4,#TIME2
LOOP1:NOP
      NOP
      DJNZ R4,LOOP1
      DJNZ R5,LOOP2
定时器完成定时操作:
MOV TMOD,#00H
MOV TH1,#0FCH
MOV TL1,#03H
MOV IE,#00H
SETB TR1
LOOP:JBC TF1,LOOP1
AJMP LOOP
LOOP1:MOV TH1,#0FCH
      MOV TL1,#03H
      CPL P1.0
      AJMP LOOP

上述两个语句就同样是在做定时,但我们可以看到右侧更加严谨,左侧更加基础。我们在实验过程中也可以感受到两者在方便性上的区别:左侧的如果要进行更改,需要对立即数进行更改,而右侧的一方面可以通过立即数的更改,一方面也可以通过修改特殊寄存器上的一些开关量来完成。

因为当汇编的代码长起来之后,保持整个篇幅的整洁是十分重要的,在这个方面,之所以做出特殊寄存器就是这里的优越性,使用一个定时器要比中断子程序容易一些。

和这个类似的例子还有不少,比如中断子程序的使用和计数器的关系,比如键盘的一些连接方法。我们都可以比较其中的优缺点而选择最适应用实验现场的方案,即使他们都能达到最后的结果。

三、实验跳出传统的理论,需要考虑对机器的负荷,舍弃约等于。

我们在使用一些语句的时候,如果仅仅是书面上的,那么不论多么复杂的运算,只要最后能达到要求就可以,但是真正操作的时候收到很多限制,比如随着语句的增多,机器总运行时间的增长,会让整个程序非常的卡。这个时候如何采取措施也是我们需要考虑的。

传统的理论往往用了一些约等于,但是在现实的控制中并不接受一个延时为5ms的系统拥有微小的偏差,因为当这个程序在上万次被调用的过程中,这个偏差会被无限放大。

而如何更改,还可以回到定时器和循环结构做延迟的选择上,定时器要比循环要准确的多。

对于键盘,如果只使用传统的理论,认为人们的操作都是无限准确的,是无法得到想要的结果的,所以人们就用智慧,加了延时判断的语句,使得键盘这个装置可以真正的派上用场。这就是理论和实际的差距,因为本身防抖效果的产生。

四、电路板内部究竟是什么

做了很多实验,我们感叹电路板很厉害的同时,也需要去思考一下内部的电路结构。我们在书本上学习到这些是由大量的门电路组成的,这些门电路的连接具体是怎样的我们不得而知。作为一个非常基础性的语言,汇编语言是很多高级语言的基础,而这些硬件和门之间的连接同样也是汇编的基础。如果我们可以学习通过门的与或非的连接使得整个体系构成一个特殊寄存器,如果它具有普适的通用性,可能就是一个了不起的发明创造。

并且内部电路的构造对于我们的记忆是十分有必要的。我们在进行编码的时候不可能一直查书,这样会严重影响我们的工作效率,即使我们有工具书来进行查找,我们也需要很好的了解各个编码的功能。而单片机的编码构成是十分大量和冗杂的内容构成的。例如在中断相关的知识,每一个特殊功能寄存器都有八位,而且大量的位都是有其特点,如果通过门电路的示意图,就可以很快的进行记忆。

而这些开关量本身就是内部情况的一个反映。应用这些内部和外部的结合或许以后的某天我们可以设计出更多更优秀的微机系统。

下页有实验心得体会汇总

 

第二篇:单片机实验课-2

5月15日 上机实验说明

1.时间: 5月15日(周二) 上午8:00-10:30(若第三节有课,可在9:50左右提前离开)

2.地点:十教 四楼机房

3.内容:

4. 考核方式:本次实验不写实验报告,但需完成以下2项:

(a)在上机时间内,把实验结果展示给指导教师(以小组为单位);

(b)完成“七 思考题”部分,以作业形式上交(以个人为单位)。

5. “八 扩展训练—计数器使用”供同学们尝试用,不是必选项。


实验一 定时器实验

一.实验要求

由8051内部定时器1,按方式1工作,即作为16位定时器使用,每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L0,L2亮,第二秒钟L1,L3亮,第三秒钟L4,L6亮,第四秒钟L5,L7亮,第五秒L0,L2,L4,L6亮,第六秒钟L1,L3,L5,L7亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L0,L2亮,然后L1,L3亮......一直循环下去。

二.实验目的

1.学习8051内部定时器的使用和编程方法。

2. 进一步掌握中断处理程序的编程方法。

三.实验电路及连线

P1.0--P1.7 接 L0--L7。

四.实验说明     

   1.关于内部定时器的编程主要是定时常数的设置和有关控制寄存器的设置。内部定时器在单片机中主要有定时和计数两个功能。本实验用的是定时器,有关计数器的说明请查阅实验二。

2.作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算:

      机器周期=12÷11.0592MHz=1.0857μS

      (65536-定时常数)*1.0857μS=50mS

      定时常数=????? H

3.定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

4.在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断

      

五.实验程序框图

   实验示例程序流程框图如下:

 

             主程序框图           中断子程序框图

六.实验示例代码     

以下是示例代码,供参考。实际操作中,可自由实现,能够完成实验要求即可。

       

七.思考题

1.  “ORG 0000H”、“ORG 001BH” ,存放于此地址的通常是什么指令?

2. 分析以下三条指令的作用:

PUSH    2

        PUSH    1

        PUSH    0

3. 本实验中,定时器是否可以使用其他工作方式(如方式0、2、3),若可以,试写出其实现程序(添加注释);若不可以,试述理由。

八.扩展训练—计数器使用

实验内容:按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。使用8051的T1作定时器,50ms中断一次,看T0内每50ms来了多少脉冲,将其数值按二进制数在74LS273驱动LED灯上显示出来,5秒后再次测试。

电路连线:P3.4接计数脉冲( 12 模块中的600HZ、300HZ、150HZ中的一个)。  

PO0--PO7接 L0—L7。 CS273接ALE。

相关推荐