第一篇:学习单片机步骤以及一些建议
学习单片机步骤
学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言(推荐先用C编程)中学会各种功能的初始化设置,以及实现各种功能的程序编制。推荐 郭天祥十天学会单片机视频和霖峰51单片机视频,郭天祥视频中有些模块并没有讲,可以针对性的去看霖峰51单片机视频。另外,学习单片机一定要有一本书,可以上网买,也可以去图书馆借。视频上只是告诉你如何去实现某个功能,并没有深入讲解原理。
第一步:数字I/O的使用
使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。
第二步:定时器的使用
学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。
定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。第三步:中断
单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某 种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。
中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。
第四步:与PC机进行RS232通信
单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。
USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊!
第五步:学会A/D转换
MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。
使用A/D转换功能的简单的例子是设计一个电压表。
第六步:学会PCI、I2C接口和液晶显示器接口
这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。
第七步:学会比较、捕捉、PWM功能
这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。
第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计
学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。
心得
1、万事开头难、要勇敢迈出第一步。
开始的时候,不要老是给自己找借口,说KEIL不会建项目啦、没有实验板啦之类的。遇到困难要一件件攻克,不会建项目,就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。然后可以参考别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少,总得建个项目,再配置一下项目,然后建个程序,加入项目中,再写代码、编译、生成HEX,刷进单片机中、运行。必须熟悉这一套工序。个人认为,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。单片机是注重理论和实践的,光看书不动手,是学不会的。
2、知识点用到才学,不用的暂时丢一边。厚厚的一本书,看着人头都晕了,学了后面的,前面的估计也快忘光了,所以,最好结合实际程序,用到的时候才去看,不必说非要把书从第一页看起,看完它才来写程序。比如你写流水灯,完全就没必要看中断的知识,专心把流水灯学好就是了,这是把整本书化整为零,一小点一小点的啃。
3、程序不要光看不写,一定要自己写一次。
最开始的时候,啥都不懂,可以抄人家的程序过来,看看每一句是干什么用的,达到什么目的,运行后有什么后果,看明白了之后,就要自己写一次,你会发现,原来看明白别人的程序很容易,但到自己写的时候却一句也写不出来,这就是差距。。当你自己能写出来的时候,说明你就真的懂了。。
4、必须学会掌握调试程序的方法。
不少人写程序,把代码写好了,然后一运行,不是自己想要的结果,就晕了,然后跑到论坛上发个帖子,把程序一贴,问:为什么我的程序不能正常运行?然后就等别人来给自己分析。这是一种很不好的行为,应该自己学会发现问题和学会如何解决问题。这就需要学习调试程序的方法,比如KEIL里,可以下断点啦,查看寄存器内容等等,这些都是调试程序的手段,当你发现你写的程序运行结果和你想象中不一样的时候,你可以单步,也可以下断点,然后跟踪,查看各相关寄存器内容,看看程序运行过中是不是有什么偏差,找出影响结果的地方,改正过来。这一个过程非常重要,通过程序的排错,你可以学到的知识是书上得不到的。
5、找到解决问题思路比找到代码更重要。
我们用单片机来控制周边器件,达到我们想到的目的,这是一个题目,而如何写出一个程序,来控制器件按你想要的结果去运作,这个就是解题的思路。要写程序,就得先找到解决问题的思路,你学会找出这个解题思路,比你找到代码更为重要。不少人很喜欢找人家的代码,有的人甚至有了代码就直接复制到自己的程序中,可以说,这不是一种学习的态度,无助于你编程水平的提高。我几乎不怎么看人家的代码,多数时候是看别人的思路,有方框图最好,没有的话文字说明也可以,要从代码中看出别人处理问题的思路,是相当困难的,特别是大型的程序,看起来是非常的累人,所以现在我也明白了,以前读书时说的程序流程图很重要,现在算是知道了。
当你知道一个问题怎么去解决了,那么剩下的只是你安排代码去完成,这就已经不是什么问题了。举个例子:数码管动态扫描,没写过的初学者可能搞不清是怎么回事,其实,就是分时让每一时间段时只控制一只数码管显示数字,几只数码管轮流显示,由于速度很快,人眼的看起来是全部数码管都亮的。明白是这么一回事,剩下的事情,无非是你安排让一只只数码管轮流显示出相应的数值。显示数字,然后延时一下,再下一只显示数字,延时,知道是这样,我们实际程序上只要做到这样就可以:往段口送段码,然后打开位选显示一只,延时一下,再关闭位选,再送出段码,再打开另一只位选..仅此而已。有了解决问题的思路,我们就能问题拆分开来,然后逐一的解决,如果动态扫描的原理都没懂,不知道如何做,那么这个程序是怎么也写不出来的。
6、开动脑筋,运用多种方法,不断优化自己的程序。
想想用各种不同方法来实现同一功能。这是一个练习和提高的过程,一个问题,你解决了,那么你再想想,能不能换种写法,也可以实现同一功能,或者说,你写出来的代码,能不能再精简一点,让程序执行效率更高,这个过程,就是一个进步的过程。很多知识和经验的获得,并不是直接写在书让你看就可以得到的,需要自己去实践,开动脑筋,经验才能得到积累,编程水平才能有所提高。
7、看别人的代码,学习人家的思路。
这个在学习初期是很有用,通过看别人的代码,特别是有多年编程经验的人写出的具有一定水平的代码,可以使自己编程水平得到迅速的提高,同时,也可以结合别人的编程手法,与自己的想法融合在一起,写出更高水平的代码,从中得到进步。但要注意,切忌将学习变成抄袭,更不是抄袭完了就认为自己学会了,这样做只会使你退步。
8、尝试编写一下综合应用的程序。
从流水灯学起,到动态扫描,再到中断,那么,你可以试试写一下时钟这种综合性应用的程序,不要小看时钟,要写好它不是一件容易的事情,它包括了单片机大部分的知识,比如有
按键(IO读取)、动态扫描(IO输出)、中断等,如何协调好各功能模块正常工作,才是编程者需要学习的地方,当你单独写一个功能的时候,比如按键读取,你可能感觉很容易,因为你的程序啥也不做,只是读按键。但把它和其它功能混合在一起,如何在整个程序运行中使每一部分都正常工作,这就不是写一个按键读取这么容易的事情,功能模块之间有可能会互相影响,比如你需要让数码管既能显示,又要去处理按键读取,怎么使这两部分都正常工作,这就是一个协调过程。当你有了这个处理协调能力,你就算是入门了。
9、着重于培养解决问题的能力,而不是具体看自己编写了多少代码或者做过什么
“学单片机重点在于学习解决问题的思路,而不是局限于具体的芯片类型和语言”这一直是我的座右铭,是我学单片机多年来感悟出来的。经常看到有人说“你会驱动XX芯片,真牛啊”“你搞过XX项目,真厉害”之类的话,其实这是非常片面的,搞过XX芯片,搞过XX项目,只能说明你做过这一项目,它只是你的业绩,并不是代表能力就一定高。真正的能力应该是:“遇到没有解决过的问题或器件,能利用自己已学的知识,迅速找到解决问题的方法。”这个才是能力。写程序的过程就是一个创造的过程,几乎没有完全一样的项目,每次你遇上的几乎都不相同,所以你拥有的必须是你面对新项目时的创造能力,而不是标榜着你以往做过多少项目。当然,业绩也能从另一侧面反映你的经验和水平。
10、如果有可能,多学习计算机专业的知识,比如数据结构等。
这些是你解决问题的基础知识,你把这些知识应用得越好,就会发现越容易找到解决问题的方法,这就是为什么一个学计算机专业的人编的程序和一个非计算机专业的人编的程序有差异的原因。也是一个菜鸟进军到高手所要配备的知识。如果我们把编程分为宏观编程和微观编程,那么微观编程就是写具体的代码,比如控制某某器件的语句;而宏观编程就是如何对整个程序进行布局、安排,使功能模块以你想要的方式去运行,得出你想要的结果。
如前所说“会控制XX器件”这些只能算是微观编程,能做到这一步还只能算是菜鸟级别,如果面对一个新的器件,你心里没底,没把握去写这个控制程序,那说明你还是一个初级的菜鸟。当你有了一定的编程经验,控制过相当数量的器件之后,你就会发现,控制器件这些工作都是相似的、重复的工作,体现不出编程的水平,最多也是写得好与不好的差别,只能算是一些小技巧的应用。而对整个程序进行布局、安排这些才是最头痛的事情,能达到宏观编程和微观编程都做好才是真正的高手。对于规模越大的程序,越能体现出这一点。
11、面对一个新项目时,多自己开动脑筋,不要急于找别人的程序。
有不少人面对一个新项目时,第一步想到的就是网上找别人写过的代码,然后抄一段,自己再写几句,凑在一起就完成任务,这虽然可能是省时间,但绝对不利你的学习。当你接到一个新项目时,应该先自己构思一下整个程序的架构,想想如何来完成,有可能的话,画一个流程图,简单的可以画在脑子里,对程序中用到的数据、变量有一个初步的安排,然后自己动手去写,遇到实在没办法解决的地方,再去请教别人,或看别人是怎么处理的,这样首先起码你自己动过脑想过,自己有自己的思路,如果你一开始就看别人的程序,你的思维就会受限在别人的思维里,自己想再创新就更难了,这样你自己永远也没办法提高,因为你是走在别人的影子里。
12、多利用网络的搜索,学会提问题。
一般来说,学习过程中,你遇上的问题,前人们多数也有遇上的,所以如果有什么不懂,在自己解决不了的时候,最好先到网上搜索一下,看能不能找到答案,找不到再到论坛里发问,发问也要有目的性,尽量简单明了的描述问题,让帮助你的人可以用最少的时间就看懂你说什么,毕竟人家帮助你是免费的,时间也是有限的。
第二篇:单片机学习
培训总结
为期二十五天的单片机培训今天就要告一个段落了,回想起来,还有点舍不得。从第一天进来,看见单片机时的好奇及茫然,到之后的点滴学习的辛酸和喜悦:点亮第一个放光二极管,接通第一个七段数码管,用蜂鸣器发出近乎噪声的音乐……当时的无数次尝试,无数次失败,在现在看来都是那么的美好。
第一次进实验室时,看见满桌的实验仪器,心中竟漫上一丝丝的喜悦。对于从小就喜欢乱拆小电器的我,如果能掌握这些神秘仪器的用法,真是再好不过的事情了,真希望老师立马就教会我们这些东西。然后老师给我们讲我们暑假培训的目地就是学会单片机——一块拥有神秘芯片和器件的绿色板子。然后就是正式的培训上课了。
每天早上六七点起床,匆匆吃过早饭就得搭公交车往南区赶。一个小时的公交车奔波对于有点晕车的我可是个不小的挑战。下了车有点头晕,还没有回过神来,就和同学一起走进实验室了。晚上九点下课之后又得挤公交回去,十一二点才能睡觉。这样一两天之后觉得很累很累。想着得这样奔波一个月,真有点害怕,不知道自己能不能坚持下来。但我一直坚信这样做是值得的,因为在这边有我喜欢的东西。每天我都能学到新的东西,每天我都能更进一步掌握单片机的用法,每天我都能更加熟练地使用前段时间学到的东西。看视频,认真学里面老师的方法,理解他讲解的每一个器件的原理,跟着他编程驱动自己的单片机;问老师,把自己的想法告诉老师,让老师给我讲解在学习单片机时的困惑;和同学交流,一起交流学习的心得和自己的收获,相互关心相互帮助。随着时间的过去,大家都在进步,人数好像也越来越少。从进来的第一天老师就告诉我们要学会坚持,因为每天重复的生活,总会让人产生厌倦,而很多同学就是受不了这样的生活而选择了中途放弃。虽然我也想回家想摆脱这样的繁累,但还是选择了留下来,因为我知道,这里有我喜欢的东西。就这样日子一天天地过去直到今天,看着自己编的那么多程序,自己关于单片机的认识和掌握,真的很庆幸自己选择了留下来而没有中途退出。
这个培训让我真正有了一个不一样的暑假,不仅仅学会了单片机,更学会了坚持。我发现我原来对电子方面有这么大的兴趣,真的很庆幸这个培训给了我这个机会,我想我会沿着这个继续坚持下去。
第三篇:学avr单片机的建议
学avr单片机的建议
建议,(1)做工控首选PLC,实现简单安全可靠开发周期很短,不用很系统的学,买一本教材看看就行了,选型也别挑花眼,就选西门子,不用一下就想学会所有的功能,简单的起步,做项目的同时逐渐延伸。
(2)如果要学单片机,8位机就选avr,型号齐全,一个公司做的,资料统一,实现容易。编译器就用icc avr7.22(不用破解,没有bug),仿真软件就用avr studio4.17(免费下载,最新版式4.18,需要注册才能下载,我闲麻烦就用4.17),到的网站上免费下载。建议买两本书《avr单片机c语言开发入门指导》清华大学出版社的,还有就是《avr单片机嵌入式原理与应用实践》马潮、北航。两本书足以。第一本书主要介绍icc,其余的各种编译器也做了详细介绍,都是经典之作(他的icc版本很低,你用7.22的话有些程序定义部分需要改动,还好icc有自动生成代码框架的功能)。第二本书主要以cva编译器为背景,里面的编程思路是国产教材的经典(不用刻意学cva,主要看看编程思路)。-
到网上再下一个(10天学会avr单片机,叶大鹏老师讲的,以icc为背景),真的10天就可以学会.然后最重要的就是到淘宝上买一个avr单片机实验板100元左右的就不错。到此你的avr全套学习和实验系统就全了,很全别的东西都不需要了。
网络上有关于个各种编译器的好坏之争,我觉得icc就很好,所有编译器里最简单好用的。gcc avr也很好(winavr),到百度里搜winavr,到他的官网下个最新的。网络里有关于它的介绍总是很复杂(网络里的gcc avr学习的帖子过时了),其实科技进步了,他也进步了,你用一个winavr+avr studio,就可以构造一个正版的免费的有固定ide界面的(用的avr studio界面)编译系统和仿真系统.最新的gcc是20100110版的,他升级很快,每个版本编程时有地方会不同,你在老版本下通过,到新版本下不一定通过,所以需要固定一个版本使用,并且要认真看看gcc avr的帮助文件(都是英文的,建议打印出来仔细看,这很重要,关于教材上的定义中断的方式在2010下肯定不能用,所以需要看帮助里的中断定义方面的改动和其余的勘误说明)。我现在就用gcc做工程,暂时没有发现有问题。
avr的介绍就到这里,还有就是要仔细看看你所用avr芯片的手册,不管什么编译器,他的头文件里寄存器定义都和手册里的寄存器名相同的,这很重要,否则教材上介绍的mega16,当你换用mega128时就不会用了,达到触类旁通是我们的目标。到atmel网站里可以下载手册和相关的开发说明。编译器选择要么icc要么gcc,不要用iar和别的。以我的经验从零到做项目需要3个月时间。
单片机就是个控制器和工具,如果要做工程靠他还不够,你要经常看看电路系统构成和强电、弱电、测控、数据信号传输方面的综合知识,如果你要只停留在单片机方面就失败了。还要会画电路图(就用altium designer winter09).好了,祝你早日精通单片机。
哦,对了,科技进步今非昔比,如果要学一种芯片何不学一种再先进一点的呢,比如arm的。切记:选择一种芯片和编译器把它学会,不要为别人的说法所动摇。
第四篇:关于单片机教学改革的几点建议
关于单片机教学改革的几点建议
齐河县职业中等专业学校
宋黎明 2012年6月21日
论文摘要:单片机技术是当前社会较为流行和热门的技术之一,社会对硬件设计工程师的需求增长相当迅速,该课程的重要性也越来越明显。本文根据单片机原理及应用课程的特点,从课程教学内容、教学方法和手段、实践教学体系等方面进行研究和尝试,目的在于提高学生分析问题和解决问题的能力,增强学生的创新能力和综合素质,并提出了改善现有课堂教学模式、提高教学质量的一些思考。关键词:单片机 教学改革 教学手段
一、引言
单片机技术是现代电子工程领域一门迅速发展的技术,其发展极大地推动了电子工业的发展,无论在教育界还是在产业界,单片机技术的推广仍然是一个热点。但是在多年的教学中,学生普遍反映单片机太抽象、概念多、入门难、指令不易记等等。学生感到枯燥乏味,学习难度很大,教师的课堂教学效果也不够理想。因此为了改变目前的现状,需要对单片机的教学进行改革,下面作者就在单片机的教学中出现的问题提出几点建议。
二、单片机教学改革的措施。
1、培养学生学习兴趣
在单片机课堂教学过程中,教师应注重与实际应用结合,运用案例教学,激发学生的学习兴趣。比如,在教学过程中,以一个完整的项目开发为案例,做个红绿灯控制系统,一方面其趣味性增强了,另一方面又容易被学生接受,学生可以根据所学到的东西,进行分析、反思、体验和感悟。当与其共鸣时,就会很自然的模仿,进而做到举一反三的效果。给学生展示单片机广阔的应用前景比如多媒体教室使用的投影仪,甚至是学生们最常用的pc机的键盘,里面也有一枚小小的单片机芯片在控制。抽象的教学内容与这些活生生的现实应用实例相结合,给学生一个看得到、听得见、摸得着的学习目标,大大提高了学生学习单片机的兴趣。
2、改变教学方式
(1)优化教学内容 单片机课程信息量大,传统的教材一般是以单片机的结构和各模块的使用为核心进行编写的。这样的教材详细的解析了单片机的结构和各种功能,有利于学生全面掌握单片机的理论知识。但是这样的教材对中职学生是不适合的。中职院校教材应当采用“模块化”教材,将教学内容改不成一个个项目和模块,将整个理论体系进行有机的、覆盖性的分解后融入项目和模块的实现过程中。同时要给学生提出基本要求和提高要求,使得学生在完成基本的教学任务的同时拥有自主学习、自主创新的空间,方便学有余力的学生进一步提高自己。
(2)采用诱导式教学
在教学过程中积极对学生进行引导,最大限度地调动和发挥学生在实验中的主体作用。对学生提出的问题,不做正面的回答,而是围绕问题引导学生发现问题的关键,并自己动手独立解决问题。将传统的以教师和课堂教学为主的教学模式,逐步演变成基础实验以教师为主导,综合实验教师与学生并重,创新实验以学生为主的多种形式,使学生从“要我学”转变成“我要学”。鼓励学生结合实际自己立项,独立完成项目。
(3)利用多媒体实验教学,建立虚拟实验室
充分运用现代信息技术手段辅助实验教学,结合实验项目的内容和教学大纲的要求,在教学过程中教师备课时可以精心设计讲解内容,制作生动形象的多媒体课件,将相应的实验原理、实验步骤、实验设备和仪器、实验所用到的芯片工作原理和外形通过多媒体技术设计制作出将文字、图形、图像、声音、视频、动画等集于一体的多媒体虚拟实验软件。将传统课堂教学中抽象难懂的概念具体化、形象化,单调枯燥的理论多样化、生动化,将重难点知识内容形象逼真地展现在学生面前,产生动静结合的画面和智能性启发诱导功能,使学生身临其境,直接去感受、体验,便于学生进一步巩固课堂上所学的基础理论。
(4)加强实践环节教学,培养学生工程素质和实践能力
单片机是一门实践性很强的课程,只有理论联系实际,加强实验教学和课程设计这两个实践环节,才可能真正地掌握单片机技术。为了提高学生的设计能力和创新能力,引入课程设计环节。通过课程设计的实战演练,学生学会了综合运用所学知识进行单片机应用系统开发的方法,既充分锻炼了学生的实践能力又培养了学生的工程素质和创新意识。
三、结束语
单片机技术教学是灵活多样的,教学方法也是非常之多。但是必须突出“三重”原则:重基础、重能力、重应用。本文讲了几点个人在教学中的心得与观点,只有不断改进教学方法、丰富教学手段,加强实践能力的培养,注重理论联系实际,才能激发学生的学习兴趣,取得较好的教学效果。但是如何将教学改革进行得更加深入系统,为社会培养出大批具有工程素质和创新能力的单片机应用型人才,还需要我们教师共同努力,不断探索。
四、参考文献
1、单片机的C语言应用程序设计(第3版)北京航空航天大学出版社 马忠梅 籍顺心 张凯 马岩
2、单片机技术(附光盘)姜大源 高等教育出版社(蓝色畅想)2005.6
3、单片机原理与C51编程 宋彩利 孙友仓 吴宏岐
西安交通大学出版社 2008.06
4、单片机应用技能实训(C语言)李志京 江苏教育出版社 2011.10
第五篇:单片机学习心得体会
单片机的学习心得感受
随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时/数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机。
单片机是微型计算机应用技术的一个重要分支,近年来在工业智能仪器仪表、光机电设备、自动检测、信息处理、家电等的得到广泛应用和迅速发展。单片机是自动地进行运算和控制,把实现计算和控制的步骤一步步地用命令的形式,即一条条指令预先存入到存贮器中,单片机在CPU的控制下,将指令一条条地取出来,并加以翻译和执行,得到你要的东西。
这学期在老师的带领下,我从对单片机一无所知的到现在终于有点了解,这期间虽然没有在这方面下很大的功夫,但是也学到了一点知识,从点亮一个灯,到流水灯再到数码管的显示以及后面独立按键。这都是我以前无法想象的。
单片机这门课是一科非常重视动手实践的科目,不能总是看书,但是也不能完全不看书。单片机并传统的数字电路或模拟电路那样比较直观,原因是除了“硬件”之外还存在一个“软件”的因素。正是这个“软件”的原因使得许多初学者怎么也弄不懂单片机的工作过程,怎么也不明白为什么将几个数送来送去就能让数码管显示一串字符或控制一个电机的变速。对初学单片机的人来说,需要从书中大概了解一下单片机的各个功能寄存器,如果看的多了反而容易搞乱,现在市场上大多数讲单片机的书一开始就讲解复杂的内存、地址、存储器什么的,更让初学者感到不知所云、难以入门。如果按教科书式的学法,上来就是一大堆指令、名词,学了半天还搞不清这些指令起什么作用,能够产生什么实际效果,那么也许用不了几天就会觉得枯燥乏味而半途而废。简单的说,使用单片机实际上就是用我们自己编写的软件去控制单片机的各个功能寄存器。再简单些,就是控制单片机哪些引脚的电平什么时候输出高电平,什么时候输出低电平。由这些高低变化的电平来控制外围电路,实现我们需要的各个功能。
学习单片机首先用到c语言,提到C语言源文件,大家都不会陌生。因为我们平常写的程序代码几乎都在这个XX.C文件里面。编译器也是以此文件来进行编译并生成相应的目标文件。作为模块化编程的组成基础,我们所要实现的所有功能的源代码均在这个文件里。理想的模块化应该可以看成是一个黑盒子。即我们只关心模块提供的功能,而不管模块内部的实现细节。在大规模程序开发中,一个程序由很多个模块组成,很可能,这些模块的编写任务被分配到不同的人。而你在编写这个模块的时候很可能就需要利用到别人写好的模块的借口,这个时候我们关心的是,它的模块实现了什么样的接口,我该如何去调用,至于模块内部是如何组织的,对于我而言,无需过多关注。而追求接口的单一性,把不需要的细节尽可能对外部屏蔽起来,正是我们所需要注意的地方。
谈及到模块化编程,必然会涉及到多文件编译,也就是工程编译。在这样的一个系统中,往往会有多个C文件,而且每个C文件的作用不尽相同。在我们的C文件中,由于需要对外提供接口,因此必须有一些函数或者是变量提供给外部其它文件进行调用。假设我们有一个LCD.C文件,其提供最基本的LCD的驱动函数。在当前位置输出一个字符 而在我们的另外一个文件中需要调用此函数,那么我们该如何做呢?头文件的作用正是在此。可以称其为一份接口描述文件。其文件内部不应该包含任何实质性的函数代码。我们可以把这个头文件理解成为一份说明书,说明的内容就是我们的模块对外提供的接口函数或者是接口变量。同时该文件也包含了一些很重要的宏定义以及一些结构体的信息,离开了这些信息,很可能就无法正常使用接口函数或者是接口变量。但是总的原则是:不该让外界知道的信息就不应该出现在头文件里,而外界调用模块内接口函数或者是接口变量所必须的信息就一定要出现在头文件里,否则,外界就无法正确的调用我们提供的接口功能。因而为了让外部函数或者文件调用我们提供的接口功能,就必须包含我们提供的这个接口描述文件----即头文件。同时,我们自身模块也需要包含这份模块头文件(因为其包含了模块源文件中所需要的宏定义或者是结构体,好比我们平常所用的文件都是一式三份一样,模块本身也需要包含这个头文件。
硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。
当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课是对我的学习态度的一次检验。对于这次单片机综合课程,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次课程所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
感谢老师的让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。虽然课程时间很短,但我学习了很多的东西,可以使我接触接触,感受颇深。