单片机课程学习总结

发布时间:2018-06-30 06:47:21   来源:文档文库   
字号:

《单片机》课程学习总结

《单片机》这门课程我已经学了一个学期了,在这一个学期的学习过程中,我一开始不怎么懂得编程,但慢慢的我现在已经不仅会读程序还会写程序了。真为自己一个学期来努力学到的单片机知识只是而感到高兴。

怎么学单片机?也常看到有人说学了好几个月可就是没有什么进展。当然,受限于每个人受到的教育水平不同和个人理解能力的差异,学习起来会有快慢之分,但我感觉最重的就是学习方法。一个好的学习方法,能让你事半功倍,这里说说我学习单片机的经历和方法。

我觉得学习单片机首先要懂得C语言,因为单片机大多说都是靠程序来实现的,如果看不懂程序或则不懂的编程是很难学会单片机的。学习单片机首先要明白一个程序是怎么走的,要完全懂得程序每一个步骤的意思。其次要懂得每一条指令的意思,不能盲目地去靠背指令,这是记得不牢靠的,最主要的还是靠了解。学习单片机最主要的对89C51芯片内部结构有全方面的,只要了解了89C51才能知道单片机实现什么样的功能和作用,才能对单片机有更深一步的了解。

通过一个学期《单片机》这门课程的学习,我也从中有了不少心得和体会想和大家分享一下。

万事开头难、要勇敢迈出第一步。开始的时候,不要老是给自己找借口,不要说单片机的程序全是英文,自己看不懂。遇到困难要一件件攻克,不懂指令就要勤奋看书,不懂程序就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少。然后建个程序,加入项目中,再写代码、编译、运行。必须熟悉这一套工序。个人认为,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。单片机是注重理论和实践的,光看书不动手,是学不会的。

知识点用到才学,不用的暂时丢一边。厚厚的一本书,看着人头都晕了,学了后面的,前面的估计也快忘光了,所以,最好结合实际程序,用到的时候才去看,不必说非要把书从第一页看起,看完它才来写程序。比如你写流水灯,完全就没必要看中断的知识,专心把流水灯学好就是了,这是把整本书化整为零,一小点一小点的啃。

程序不要光看不写,一定要自己写一次。最开始的时候,什么都不懂,可以抄人家的程序过来,看看每一句是干什么用的,达到什么目的,运行后有什么后果。看明白了之后,就要自己写一次,你会发现,原来看明白别人的程序很容易,但到自己写的时候却一句也写不出来,这就是差距。当你自己能写出来的时候,说明你就真的懂了。

必须学会掌握调试程序的方法。不少人写程序,把代码写好了,然后一运行,不是自己想要的结果,就晕了,然后跑到论坛上发个帖子,把程序一贴,问:为什么我的程序不能正常运行?然后就等别人来给自己分析。这是一种很不好的行为,应该自己学会发现问题和学会如何解决问题。这就需要学习调试程序的方法,比如KEIL里,可以下断点啦,查看寄存器内容等等,这些都是调试程序的手段,当你发现你写的程序运行结果和你想象中不一样的时候,你可以单步,也可以下断点,然后跟踪,查看各相关寄存器内容,看看程序运行过中是不是有什么偏差,找出影响结果的地方,改正过来。这一个过程非常重要,通过程序的排错,你可以学到的知识是书上得不到的。

找到解决问题思路比找到代码更重要。我们用单片机来控制周边器件,达到我们想到的目的,这是一个题目,而如何写出一个程序,来控制器件按你想要的结果去运作,这个就是解题的思路。要写程序,就得先找到解决问题的思路,你学会找出这个解题思路,比你找到代码更为重要。不少人很喜欢找人家的代码,有的人甚至有了代码就直接复制到自己的程序中,可以说,这不是一种学习的态度,无助于你编程水平的提高。我几乎不怎么看人家的代码,多数时候是看别人的思路,有方框图最好,没有的话文字说明也可以。要从代码中看出别人处理问题的思路,是相当困难的,特别是大型的程序,看起来是非常的累人。所以现在我也明白了,以前读书时说的程序流程图很重要,现在算是知道了。当你知道一个问题怎么去解决了,那么剩下的只是你安排代码去完成,这就已经不是什么问题了。

开动脑筋,运用多种方法,不断优化自己的程序。想想用各种不同方法来实现同一功能。这是一个练习和提高的过程,一个问题,你解决了,那么你再想想,能不能换种写法,也可以实现同一功能,或者说,你写出来的代码,能不能再精简一点,让程序执行效率更高,这个过程,就是一个进步的过程。很多知识和经验的获得,并不是直接写在书让你看就可以得到的,需要自己去实践,开动脑筋,经验才能得到积累,编程水平才能有所提高。

看别人的程序,学习人家的思路。这个在学习初期是很有用,通过看别人的程序,特别是老师写出的具有一定水平的程序,可以使自己编程水平得到迅速的提高。同时,也可以结合别人的编程手法,与自己的想法融合在一起,写出更高水平的程序,从中得到进步。但要注意,切忌将学习变成抄袭,更不是抄袭完了就认为自己学会了,这样做只会使你退步。

尝试编写一下综合应用的程序。从流水灯学起,到动态扫描,再到中断,那么,你可以试试写一下时钟这种综合性应用的程序,不要小看时钟,要写好它不是一件容易的事情,它包括了单片机大部分的知识,比如有按键(IO读取)、动态扫描(IO输出)、中断等,如何协调好各功能模块正常工作,才是编程者需要学习的地方,当你单独写一个功能的时候,比如按键读取,你可能感觉很容易,因为你的程序什么也不做,只是读按键。但把它和其它功能混合在一起,如何在整个程序运行中使每一部分都正常工作,这就不是写一个按键读取这么容易的事情,功能模块之间有可能会互相影响,比如你需要让数码管既能显示,又要去处理按键读取,怎么使这两部分都正常工作,这就是一个协调过程。当你有了这个处理协调能力,你就算是入门了。

着重于培养解决问题的能力,而不是具体看自己编写了多少程序或者做过什么。学单片机重点在于学习解决问题的思路,而不是局限于具体的芯片类型和语言这一直是我的座右铭,是我学单片机学习单片机之后感悟出来的。真正的能力不是你曾经编写过多少个可以实现的程序,而应该是:遇到没有解决过的问题,能利用自己已学的知识,迅速找到解决问题的方法。这个才是能力。

面对一个新程序时,多自己开动脑筋,不要急于找别人的程序。有不少人面对一个新程序时,第一步想到的就是网上找别人写过的程序,然后抄一段,自己再写几句,凑在一起就完成任务,这虽然可能是省时间,但绝对不利你的学习。当你接到一个程序时,应该先自己构思一下整个程序的架构,想想如何来完成。有可能的话,画一个流程图,简单的可以画在脑子里,对程序中用到的数据、变量有一个初步的安排,然后自己动手去写,遇到实在没办法解决的地方,再去请教老师或同学,或看别人是怎么处理的,这样首先起码你自己动过脑想过,自己有自己的思路。如果你一开始就看别人的程序,你的思维就会受限在别人的思维里,自己想再创新就更难了,这样你自己永远也没办法提高,因为你是走在别人的影子里。

学会提问题。一般来说,学习过程中,你遇上的问题,多数人也有遇上的,所以如果有什么不懂,你可以去问老师。我觉得学习单片机最主要的要多提问,对于一个自己不是太懂的程序,自己一定要多提问几遍,这样不但有利于加深自己的印象还能从中学到不少别人的方法。

经过一个学期我对《单片机》这门课程的学习,不仅让我懂得了很多程序的编写,还让我学到了很多对自己有用的学习方法。总结这个学期来的我自己的学习情况,我觉得自己对编程进步了不少,懂得运用正确的学习方法学习单片机程序,不再去死记硬背指令了。所以我觉得学习要不断总结学习方法,才能让自己学习不断进步。

交通信号灯设计报告

实验目的: P1口的使用方法,延时程序的编写

实验要求:在一个十字路口分为东西南北走向,信号等按以下的状态顺序工作:

(1) 初始状态0,东西、南北红灯全亮。延时一定时间;

(2) 状态1,南北绿灯亮通车,东西红灯,延时一定时间;

(3) 状态2,南北绿灯闪烁几次转黄灯,东西仍然红灯,延时一定时间;

(4) 状态3,南北红灯,东西绿灯通车,延时一定时间;

(5) 状态4,南北仍然红灯,东西绿灯闪烁几次转黄灯,延时一定时间;

(6) 循环至状态1,继续

实验电路和流程框架图:

(1) 硬件电路

交通灯实训设备用最小系统板和信号灯组合而成。

LED资源分配图

2、软件编程

若各路口灯亮灭的时间间隔为2s钟,灯光闪烁时间间隔为0.5s。用软件延时的方法,晶振频率12MHz时,一个机器周期为1us

程序设计思路:

编写交通灯程序:

编写主程序,由R7做主程序的计数器,确定调用延时时间为0.5s,从而获得交通灯的亮灭时间。程序如下:

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP INTRU0

ORG 0030H

MAIN: SETB EA

SETB ET0

CLR IT0

LCALL S0;东西南北红灯亮

LCALL S1;南北绿灯东西红灯

LCALL S2;南北绿灯闪转黄灯,东西红灯

LCALL S3;南北红灯,东西绿灯

LCALL S4;南北红,东西绿灯闪转黄灯

LJMP MAIN

S0: MOV P1,#00100001B;东西南北红灯亮

LCALL DELAY

RET

S1: MOV P1,#10000001B ;南北绿灯,东西红灯

LCALL DELAY

RET

S2: MOV P1,#00000001B ;南北绿灯灭,东西红灯亮

LCALL DELAY500MS

MOV P1,100000001B

LCALL DELAY500MS

MOV P1, #01000001B ; 南北黄灯,东西红灯

LCALL DELAY

RET

S3: MOV P1,#00100100B ; 南北红,东西绿

LCALL DELAY500MS

RET

S4: MOV P1,#00100000B

LCALL DELAY500MS

MOV P1,#00100100B

LCALL DELAY500MS

MOV P1,#00100010B;南北红东西黄

LCALL DELAY

RET

ORG 0070H

INTRU0: MOV P1,#10000001B ;南北绿灯,东西红灯

MOV R5,#20;

LOOP1: LCALL DELAY500MS

DJNZ R5,LOOP1

DELAY500MS:MOV R7,#200

DEL1:MOV R6,#123H

NOP

DEL2:DJNZ R6,DEL2

DJNZ R7,DEL1

RET

DELAY: MOV R0,#8

DJNZ R0,DELAY500MS

RET

END

最小系统实验报告

目录:

1最小系统的原理。

2最小系统的构成。

3最小系统 I\O 口设计。

4最小系统外围系统的设计

最小系统的原理:最小系统主要由电源、复位、震荡电路以及外围显示电路等组成。

一、 电源供电模块。

对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源模块的稳定可靠是系统平稳运行的前提和基础。51单片机虽然使用时间最早、应用范围最广,但在实际应用中,一个和典型的问题就是相比其他系统的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个最要手段就是为单片机系统配置一个稳定可靠的电源供电模块。

此最小系统中的电源供电模块的电源可以通过计算机的USB口供给,也可以用外部稳定的5V电源供电模块供给。电源电路中接入了电源指示LED

二、复位电路

单片机的置位和复位,都是为了把电路初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以有RC电路计算出时间常数。复位电路由按键复位和上电复位两部分。

三、 上电复位:STC89系列单片机即为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到END,由此形成一个RC充放点回路保证单片机上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常的工作状态,这个电阻和电容值为10K10uf

四、按键复位:按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。

(1)

(一) 震荡与时钟电路

MC-51单片机内部有一个高增益反相放大器,反相放大器为XTAL1,输出端为XTAL2XTAL1XTAL2之间跨接石英晶体振荡器和两个微调电容就构成了振荡器,这就是单片机的时钟电路。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。单片机的晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。而且在实际电路中晶振要尽可能靠近单片机以免途中电路的干扰,我们这个最小系统就是一个晶振。

五、MC-51单片机有4个双向并行的I\O口;P0P1P2P3每一个I\O口的结构和使用方法有所不同。

P0口是开漏输出型电路,内部没有上拉电阻,而P1P2P3口内部都有上拉电阻,因此我们在设计时在P0口外安排了八个10K电阻左右的上拉电阻.而且,由于这些I\O口都是双向的所以在进行输入输出是要注意:输出操作直接写端口,而进行输入操作前,必须将口锁存器置1,否则只能输入端口寄存器的状态,而不能输入引脚上的信号。

六、扩展部分:在另一块电路板上按照MC-51的端口特点,设计了一组八个发光二极管的显示灯,有八个脚的插针与主板相连。可以根据实际情况连接各个I\O口。八个发光二极管采用共阴级接法所以只有当I\O口输出是1是才会亮。

七系统调试:

1、运用软件和硬件的调试过程中,用交通信号程序对最小系统进行调试,开始时要八个发光二极管全亮,然后确保东西南北红黄绿能够对应显示。实验时,对P1.口的接线做了调整,即P1.0L1,P1.1L2,P1.2L3P1.3L6P1.4L7,P1.5L8

2、从0000H单元开始进行连续运行,观察6LED灯是否与交通信号灯显示情况对应,如果有偏差,则进行单步运行,进行调试,甚至满足设计要求。

3、仿真完成后,用下载端对最小系统进行程序运行的功能。在对系统进行复位时,我们发现程序延时的时间比较短,没有达到预想的效果;而且我们的最小系统没有反向驱动,导致输出端的发光二极管亮度不明显,这些都是我们必须要改进的。

4、整体调试,系统有很多我们不是很满足的地方,因此我们要对系统和程序进行改进,要求达到标准为止。

操作练习:

(1) 通过仿真软件Manley和下载端口仿真调试;

(2) 在自制的最小系统和输出端口实验板上运行程序的调试,可观察到信号灯按规定的状态工作。

实验心得体会:

通过这次对交通信号灯程序的编写和模拟仿真的调试,让我对MCS51单片机有了更深的了解。这次的设计虽然我在程序编写上花了不少时间,但也收获了不少。对于要制作一个项目,首先不要着急写程序,应该搞清楚要干什么,完成什么功能;分几部分完成,每一部分完成什么功能,各部分之间的联系是什么。只要在设计前进行思考,才会保证在程序调试中不会出现那么多问题。

程序编译成功后,不要急于下载,一定要先进行仿真,根据仿真的效果才能到达要求。通过这次考试实验我想给自己打个75分,因为在调试中还有很多自己弄不懂的。所以我觉得学习51单片机就是要多思考多练习多动手,只有这样我们才能把单片机学得更加精湛。

本文来源:https://www.2haoxitong.net/k/doc/5661e2641ed9ad51f01df25f.html

《单片机课程学习总结.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式