标题: 怎样学好单片机呢 [打印本页]

作者: jsming    时间: 2018-3-25 10:04
标题: 怎样学好单片机呢
自己也学一段时间了,但还是不会。有什么建议怎么学单片机

作者: 123456LYH    时间: 2018-3-25 10:22
我的建议是,先学习一下c/c++的语法结构,(如果已经学过的跳过这一步),懂得一些简单的语法和概念,例如声明头文件,各种循环语句,switch语句等等,在单片机编程中都是用地比较多的,然后,开始了解单片机的结构,知道什么是定时器,什么是机器时钟等等这些硬件知识,了解各种IO的作用和异同,这时就有了一些基础准备,然后就是实践了,从一些简单的事例开始,例如流水灯,蜂鸣器等等,多看看别人的例子,学会后要自己进行修改,灵活运用,基础知识掌握后,可以接触一些电机的驱动等等的,PWN波的控制,然后就综合所学的知识,尝试参加一些小项目的制作,从中肯定会有所收获,对单片机有更进一步的了解。
作者: mengyu    时间: 2018-3-25 10:36
单片机属于入门非常简单的一门学科,往深了说,你得会电路,模电,会拼个单管,差分,运放,对信号整流,滤波,稳压之类的。还得数电,数电主要学会用一些芯片,看懂时序图之类。还要会C语言,最好再学一下汇编语言,主要锻炼模块化思想,会一些常见的算法,看懂程序。等等啊,要这么多的基础。
往简单的说,买一块开发板,照着视频做,也能会一些。
我现在大三,看法很粗浅,但我想:你说你只会个单片机,外围电路都不会,新的芯片就不会用,那算什么呢?

作者: Elio    时间: 2018-3-25 10:38
我也是初学者,最好自己多动动手,做多了应该就能理解一点
作者: angmall    时间: 2018-3-25 10:48
我始终认为,扎实的电子技术基础是学好单片机的关键,直接影响单片机学习入门的快慢。

有些人觉得单片机很难,越学越复杂,最后学不下去了。有的人看书时似乎明白了,可是动起手来却一塌糊涂,究其原因就是电子技术基础没有打好,首先被表面知识给困惑了。

作者: angmall    时间: 2018-3-25 10:49
单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,就能轻松地迈开学习的第一步,自信心也会树立起来。相反,基础不好,这个看不懂那个也弄不明白,越学问题越多,越学越没有信心。如果你觉得单片机很难,那就应该先放下单片机教材,去重温数字电路,搞清楚触发器、寄存器、门电路、COMS电路、时序逻辑和时序图、进制转换等理论知识。理解了这些知识之后再去看看单片机的结构和原理,我想你会大彻大悟,信心倍增。

作者: angmall    时间: 2018-3-25 10:49
模拟电路是电子技术最基础的学科,它让你知道什么是电阻、电容、电感、二极管、三极管、场效应管、放大器等等以及它们的工作原理和在电路中的作用,这是学习电子技术必须掌握的基础知识。一般是先学习模拟电路再去学习数字电路。扎实的模拟电路基础不仅让你容易看懂别人设计的电路,而且让你的设计的电路更可靠,提高产品质量。
作者: angmall    时间: 2018-3-25 10:50
单片机的学习离不开编程,在所有的程序设计中C语言运用的最为广泛。C语言知识并不难,没有任何编程基础的人都可以学,在我看来,初中生、高中生、中专生、大学生都能学会。当然,数学基础好、逻辑思维好的人学起来相对轻松一些。C语言需要掌握的知识就那么3个条件判断语句、3个循环语句、3个跳转语句和1个开关语句。别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了。

作者: bayga456    时间: 2018-3-25 10:53
定一个目标,就是你要用单片机做什么。有了目标就有方向了。
作者: qwerqwerq    时间: 2018-3-25 10:56
在网上看视频学习
作者: qq9230    时间: 2018-3-25 11:09
把每个寄存器,定时器,外部中断等
自己一个个整明白,然后自己在开发板上面修改例程看效果
最后,做一个小作品,例如做小车什么的就可以了,做实物是进步最快的
作者: 嗨你好    时间: 2018-3-25 11:59
我建议多和老师交流,多看有关的书籍单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,就能轻松地迈开学习的第一步,自信心也会树立起来
作者: xuexuexi    时间: 2018-3-25 12:55
建议先学C语言基础或单片机编程和C语言一起学,这两个方法是我认为最实在的方法,希望对你有用
作者: fire111    时间: 2018-3-25 13:06
主要得多做实验
作者: eefsdf    时间: 2018-3-25 13:17
先学会编码语言,之后可以自学
作者: 奎尔塞拉    时间: 2018-3-25 13:49
哇,看了楼上的一些回复头有点大,如果当初我这么学可能会被瞎到吧,虽然说得有道理。
楼主的问题是,已经自学过一段时间,但是觉得还是什么都不会。正好昨天有个同学跟我联系,想学单片机,他的想法是先去看微机原理这本书。这本书主要讲的是汇编语言,是原理,而不是应用。在我们学校,微机原理是必修课,大家都上过,但是真正会单片机的人不多。
原理、基础、电学知识固然重要,但是对于一个还没有入门的同学,拿着个出来,可能就直接吓退了。因此,如果入门有困难,就暂时抛开原理,谈应用。

所以,我的建议是,买一块开发板,直接跟着开发板学。当你点亮了led,用对了数码管,测量了距离并且显示到液晶显示屏上的时候,这一步步的成就感会推动你往前面走的。这个时候,你要记住,原理、电学很重要(但不是必要的,也就是说其实你不会也同样能实现这些功能,如果你只是玩玩而已就够了,如果你先深入挖掘还是需要的)。这一步我觉得还不算入门,但是你起码知道了单片机是什么,大概怎么用,还可以出去吹吹牛。
另外对于C语言,我个人只会for while if,别的我基本都不会。但是我目前发现编程中真正的难点是通讯协议,时序,特别是用到了&,~,|,这些东西的时候。难的是你如果实现你想要的功能,而语法上for while if足够用了。因此,大可不必纠结于C语言,先入了单片机的门,再慢慢来补。

当年去学习一个东西的时候,如果你太过纠结于他的铺垫知识,这种知识是很多的,你会花很多精力去学,最后反而害怕起来了。如果是之前在学校学过,而且很熟练自然很好,如果没有,先上路后面再补吧
作者: 845262466    时间: 2018-3-25 14:04
单片机需要c语言的基础,如果想快一点,你得会用c语言编写几个代码,不用太深,基础的逻辑语言就行了。
之后主要是单片机的入门,网上有郭天祥的,可以看着学一下,关键是实操,不买一个单片机写写代码测试测试,真的很难学好的,主要就是一个逻辑的问题,单片机就像一个很小很简单的电脑,每个接口都有定义,所有的模块都需要先入门,在深度研究,其实只要入门了感兴趣了,成为大神不是梦
作者: JACKLI    时间: 2018-3-25 22:52
首先,你得先学会C语言的基本逻辑运算;
其次,如果有条件的话就买一个单片机开发板(会有附带一些学习的资料),或者自己买几个单片机,焊一个单片机最小系统(因为每做成一件事情就会给自己带来一点动力,然后学习兴趣才会越来越大!这样学起来会很有成就感,这是每个人都想要得到的东西!)
从最简单的 LED 灯的亮灭开始, 再到 流水灯,然后再继续一点点的加大难度 (如果学习能力比较好的话,一周就可以做出一个遥控小车。)
先从小的方面学起,千万不要不会走路就想要跑,这样遇到了难题决解不了很容易挫败自己的自信心!!
加油吧 ~

作者: yiyi778899    时间: 2018-3-26 15:48
单片机有软硬件两方面的内容,有时一个程序怎么调都不出效果,然而从理论分析却又是对的,这是就要仔细找原因了,学习单片机经常碰到很多问题,有时一两天都不能解决,这是就要有耐心,从底层找起,相信每找出一个错误都会有一个新的收获。切不可轻言放弃!!!
作者: yiyi778899    时间: 2018-3-26 15:49
在有数电c语言基础上,可以实践再去理解晦涩的理论。理论再指导掌握单片机。
作者: 610140988qq    时间: 2018-3-26 16:17
买一块开发板,直接跟着开发板学。实验一个一个恨着视频做,
作者: xzh5508    时间: 2018-3-26 16:34
最好是有一块开发板,照着学,没那么枯燥,而且容易看到效果,这样就有兴趣一些!
作者: htrees    时间: 2018-3-26 16:49
买一块单片机板子,实践是最好的学习途径
作者: lhr333    时间: 2018-3-26 16:56
多打代码
作者: htrees    时间: 2018-3-26 17:04
给你一组入门实验,对照学习,多动手,很快会入门
作者: 1215健    时间: 2018-3-26 17:09
上网看视频啊,如果还在读书的话多问问老师和班里的大神。
作者: sunrider1982    时间: 2018-3-26 17:33
好吧,看了这么多虽然年龄可能没我的大,但是经验比我丰富的各位前辈的建议,我还是规规矩矩买个板子来吧,数模电确实感觉都忘完了。。。
作者: xuyuzuishuai    时间: 2018-3-26 18:07
基础知识,在我们学习单片机的过程中十分重要。打好基础,就可以从一个点出发,逐渐触及其他知识。这也就是为什么网上有人认为先学好51单片机再去学arm会更好
作者: scott666666    时间: 2018-3-26 18:19
自己根据论坛里面的实例做几个吧
作者: _Blue    时间: 2018-3-26 18:25
在学校就去实验室,在社会就去培训
作者: 250895587    时间: 2018-3-27 10:23
我也是自学的,我觉得先看C然后在学硬件
作者: jokerq    时间: 2018-3-27 12:35
多去实践写代码,多逛论坛看官方文档
作者: 啊小    时间: 2018-3-27 13:03
先学好C语言,再买一块开发板看视频教程学习,从最基础的流水灯慢慢往上做。
作者: Sid227    时间: 2018-3-27 13:55
先买个板子,多看看郭天祥视频
作者: 程同123    时间: 2018-3-27 14:25
用心去学
作者: 小胖波波    时间: 2018-3-27 14:31
最简单的方法,就是视频,看原理图,看人家代码,自己尝试的写代码,一步一步来,急不得
作者: spring001    时间: 2018-3-27 14:56
可以先分别简要学习硬件部分(数电,模电)和软件部分(C语言),基本了解后买块板子自己联系,教程从网上下载。
作者: 对对对我问问    时间: 2018-3-27 15:08
你得先学会C语言的基本逻辑运算;
其次,如果有条件的话就买一个单片机开发板(会有附带一些学习的资料),或者自己买几个单片机,焊一个单片机最小系统(因为每做成一件事情就会给自己带来一点动力,然后学习兴趣才会越来越大!这样学起来会很有成就感,这是每个人都想要得到的东西!)
从最简单的 LED 灯的亮灭开始, 再到 流水灯,然后再继续一点点的加大难度 (如果学习能力比较好的话,一周就可以做出一个遥控小车。
作者: kwj620    时间: 2018-3-27 15:11
平时多熟悉程序,多动手,加油吧!
作者: 001002003    时间: 2018-3-27 15:27
先买一块开发板,然后多看看单片机的书,再去下载网上的视频跟着做,坚持就能学会的!!!加油啊!!
作者: zlf1997    时间: 2018-3-27 16:01
我也是新手,多照着例子程序写写看看,写得多就会了,和学车一个道理,关键是要下功夫
作者: bitfym    时间: 2018-3-27 16:26
学会keil软件编程,学会proteus仿真调试,剩下的就是实际动手了
作者: bitfym    时间: 2018-3-27 16:27
学会keil软件编写程序,学会protel模拟仿真,剩下的就是实际动手了。
作者: luoxiaodong    时间: 2018-3-27 19:54
建议买芯片以及一些小器件回来按着书上的一些步骤简单的弄些小实验有用
作者: zjczjcza    时间: 2018-3-27 22:47
先学好C语言,然后找个教程把程序都写一遍,多动手就熟了。
作者: liangjiayi    时间: 2018-3-28 00:06
看视频学咯
作者: zhumenglu    时间: 2018-3-28 23:26
先学一个入门的51,再学别的比较容易,可以先学一下理论知识,然后在看几个历程,然后自己试着变一下
作者: 我是天才    时间: 2018-3-29 00:37
最快的方法是看视频学习
作者: ke_xichun    时间: 2018-3-29 08:49
学好C语言是关键!
作者: 111111158    时间: 2018-3-29 09:26
看视频
作者: cuifuzhang    时间: 2018-3-29 09:35
首先要多看单片机相关方面的书籍,如51系列单片机,懂得编程语句的应用; 第二,从最小应用程序着手,自己焊接简单电路,如跑马灯点亮电路等; 第三,学会使用KEILC51编程软件,包括建立工程、程序输入、保存、生成HEX文件等; 第四,把程序生成的HEX文件下载到单片机,可以用编程器或ISP下载线; 第五,运行单片机程序。通过以上步骤的学习,自己头脑中就会比较清晰,至少会用; 最后根据运用的场合进行实践学习,如键盘输入、显示、定时输出等等,边实践边学习,目的性才会更明确,同时学习的效率也会明显提高。
作者: sdbzwhh    时间: 2018-3-29 10:19
虽然说用proteus仿真也是可以学的,但是非常建议买一个开发板,毕竟这是软件硬件都需要的知识,多练习,多试着去做一些小设计,哪怕是从一个简单的流水灯开始
作者: iwanna被uguy    时间: 2018-3-29 15:18
多实际动手操作
作者: yjh12345    时间: 2018-3-29 15:31

单片机的学习离不开编程,在所有的程序设计中C语言运用的最为广泛。C语言知识并不难,没有任何编程基础的人都可以学,在我看来,初中生、高中生、中专生、大学生都能学会。当然,数学基础好、逻辑思维好的人学起来相对轻松一些。C语言需要掌握的知识就那么3个条件判断语句、3个循环语句、3个跳转语句和1个开关语句。别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了。
作者: wyhlhywyb    时间: 2018-3-29 16:01
先弄清基本的硬件原理,再找个教程,最好实际过一个简单的硬件开发项目
作者: xijunkk    时间: 2018-3-30 11:59
从基础原理开始学习
作者: xijunkk    时间: 2018-3-30 12:02
首先,你得先学会C语言的基本逻辑运算;
其次,如果有条件的话就买一个单片机开发板(会有附带一些学习的资料),或者自己买几个单片机,焊一个单片机最小系统(因为每做成一件事情就会给自己带来一点动力,然后学习兴趣才会越来越大!这样学起来会很有成就感,这是每个人都想要得到的东西!)
从最简单的 LED 灯的亮灭开始, 再到 流水灯,然后再继续一点点的加大难度 (如果学习能力比较好的话,一周就可以做出一个遥控小车。)
先从小的方面学起,千万不要不会走路就想要跑,这样遇到了难题决解不了很容易挫败自己的自信心!!
加油吧 ~

作者: xijunkk    时间: 2018-3-30 12:20
单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路。我的建议是,买一块开发板,直接跟着开发板学。焊一个单片机最小系统,因为每做成一件事情就会给自己带来一点动力,然后学习兴趣才会越来越大!这样学起来会很有成就感,这是每个人都想要得到的东西!从最简单的 LED 灯的亮灭开始, 再到 流水灯,从一些简单的事例开始,例如流水灯,蜂鸣器等等,多看看别人的例子,学会后要自己进行修改,灵活运用,基础知识掌握后,可以接触一些电机的驱动等等的,PWN波的控制,然后就综合所学的知识,尝试参加一些小项目的制作,从中肯定会有所收获,对单片机有更进一步的了解。最好自己多动动手,做多了应该就能理解一点。

作者: zhj666    时间: 2018-3-30 13:05
先买一块开发板,然后多看看单片机的书,再去下载网上的视频跟着做,坚持就能学会的!!!加油啊!!
作者: 可爱你个头阿    时间: 2018-3-30 13:55
学习单片机快速入门的方法就是有一份好的资料,下面的资料非常好,能帮助你快速入门。

http://hi.baidu.com/dzkfw/blog/item/4a188216fd986b12c83d6d05.html   
不平凡的单片机学习资料,很好的单片机教程,超好用,一个不占内存的教程,有案例。

1、最新版单片机编程宝典下载地址,学习单片机编程必备手册

2、单片机c语言运用例子

3、十天学会单片机c语言和单片机制作,最好的单片机资料  

电路公式计算器:http://hi.baidu.com/dzkfw/blog/item/7a947b4f588099d1d0c86a3e.html
作者: Jun默默淡定    时间: 2018-3-30 15:01
1、最重要的就是实践,很多人学单片机都只是停留在看书和看视频阶段,这样子反反复复不管你学了多久都是学不会;
作者: Jun默默淡定    时间: 2018-3-30 15:11
1、最重要的就是实践:买一块开发板(也叫学习板),也可以叫会单片机的人帮你搭一块,在看书和看视频学习之余,要多写程序去验证,要多根据学习板的电路来写程序,特别需要注意的是:*要学会自己写程序,看书看视频的过程中学习人家的编程思路,通过多实践多敲代码来形成自己的单片机编程思路*。好多人成天看书看视频,然后去跟着书本或是视频中人家的步骤来照敲,到自己去写代码的时候根本不知道该怎么写。所以说要多实践,多自己写代码,形成自己的单片机编程思路;
作者: 马先生    时间: 2018-3-30 15:54
同问,我是做硬件的,自学了一段时间单片机。一直未入门,
作者: 神来也也    时间: 2018-3-30 17:23
这个问题就是仁者见仁了,还是得看你自身得情况,是在校学生当然是像老师请教还有就是图书馆,要不是的话就多多上这个论坛看视频学习
作者: feifei1884    时间: 2018-3-30 17:58
多看源码
作者: Ruc    时间: 2018-3-30 21:08
个人经验,先多看看C语言的书,谭浩强的就行,然后多看郭天祥的51的书,然后在学32入门
作者: ly1539386879    时间: 2018-3-30 22:07
一起努力
作者: xiaomianyang    时间: 2018-3-30 22:44
本人觉得要学好单片机,首先要懂C语言,这个不难学,推荐用谭浩强的C程序设计,其次再去看有关单片机的书本和视屏,郭天祥的书本和教学视屏挺通俗易懂的,在学习的过程中,最好买块单片机学习版,这样让你在学习掌握的更快,更有成就感
作者: xiaomianyang    时间: 2018-3-30 22:48
我觉得最好得先懂C语言,推荐谭浩强的《c程序设计》里面的例子很有针对性,然后再去看单片机的书籍和视频,郭天祥的配套书籍和视屏挺不错的,在学习的过程中,最好买一块学习版,这样学习起来非常有成就感。
作者: jialong_2018    时间: 2018-3-30 22:57
推荐你买一本51单片机的好书,再买个开发板
作者: pmsjzj    时间: 2018-3-30 23:32
多练习多问
作者: GeniusXF    时间: 2018-3-30 23:42
多去动手做,看看大神的研究过程。
作者: 青出于蓝    时间: 2018-3-31 09:51
多动手,多画
作者: x94bp6ru6    时间: 2018-3-31 10:51
我也是初学,觉得买学习套件边做边学效果应该比较好
作者: 123456m    时间: 2018-4-26 17:12
看看郭天祥单片机教程
作者: 7712    时间: 2018-4-26 22:59
做几个项目,在实践中学习
作者: 576932550    时间: 2018-4-26 23:08
看网上视频 爱课程网站一般有大学老师的课程
作者: cym@    时间: 2018-4-27 01:18
1、熟悉单片机的原理,结构;  2、学好数电,模电,为设计电路打好基础;  3、熟练使用C语言,多学习别人的程序; 4、对操作系统原理有一定的了解;  5、Protel至少要有点基础; 6、要实际动手调试电路的能力。
作者: wakaYG    时间: 2018-4-27 08:57
跟着一本教材走  学会了单片机的内部外设怎么用 就开始玩外部的外设比如蓝牙  WIFI等
作者: wld1101    时间: 2018-4-27 09:07
首先学好编程的基础
作者: wld1101    时间: 2018-4-27 09:08
买些书籍,在网上查找相关的视频
作者: DREAMCATCHER_XM    时间: 2018-4-27 09:21
先学好数字电路,和C语言,然后就是多操作,多写程序调试
作者: 庸人自扰2018    时间: 2018-4-27 09:36
1.学习基本的c语言编程。
2.买个开发板用c语言将外设都驱动一遍。
3.找份c语言相关的工作,比如单片机。
4.工作上碰到问题,先自己多思考解决下,实在不型上网。
5.尝试独立做一些感兴趣的,自己有可能能做的小项目。有基础的话,建议从原理图-电路板-焊接-软件调试。做几遍。每次碰到的问题都是你学习的宝贵经验。
6.最后请热爱你的工作。
作者: huallin01    时间: 2018-4-27 09:47
先动手,如果你太过纠结于他的铺垫知识,这种知识是很多的,你会花很多精力去学,最后反而害怕起来了。如果是之前在学校学过,而且很熟练自然很好,如果没有,先上路后面再补吧
作者: m640359    时间: 2018-4-27 09:47
用c语言,不建议汇编语言
作者: huallin01    时间: 2018-4-27 09:49
先动手,如果你太过纠结于他的铺垫知识,这种知识是很多的,你会花很多精力去学,最后反而害怕起来了。如果是之前在学校学过,而且很熟练自然很好,如果没有,先上路后面再补吧
作者: 123456dmq    时间: 2018-4-27 11:13
先买开发板,然后学习一些基础知识,然后实践,边实践,边完善学习
作者: 77582581234    时间: 2018-4-27 12:59
首先你得先学习C语言,然后再进一步的学习单片机
作者: 77582581234    时间: 2018-4-27 13:00
C语言功底不扎实
作者: 夜零颖    时间: 2018-4-27 13:58
多看书,不放弃,就像玩游戏练级一样不可能一下子就成为大神的,得从基础开始
作者: 云云    时间: 2018-4-27 14:13
自己上网搜些教学视频看看,再结合书本
作者: Yhuasis    时间: 2018-4-27 14:41
先学会编码语言,之后可以自学
作者: qwerqwerq    时间: 2018-4-29 15:03
可以上网查
作者: 不要不要    时间: 2018-4-29 16:48
去图书馆找点书籍,自己使劲啃的同时,多编程练习
作者: 970611    时间: 2018-11-21 16:52
先学代码,然后再学单片机
作者: isgoodmm    时间: 2018-11-21 17:27
我的经验是多练习,多做项目
作者: zc980403    时间: 2018-11-21 18:33
先学C51,做个东西
作者: 弓长小贱    时间: 2018-11-22 17:40
自学的话有点麻烦啦,有老师就简单了,最重要还是c语言得好,这是核心哎,要不然编码都不会
作者: 6467778399    时间: 2018-12-11 17:17
多加练习
作者: a89588038    时间: 2018-12-14 15:30
工程师教你如何学习单片机   

1、万事开头难、要勇敢迈出第一步。

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

2、知识点用到才学,不用的暂时丢一边。

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

3、程序不要光看不写,一定要自己写一次

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

4、必须学会掌握调试程序的方法。

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

5、找到解决问题思路比找到代码更重要。

我们用单片机来控制周边器件,达到我们想到的目的,这是一个题目,而如何写出一个程序,来控制器件按你想要的结果去运作,这个就是解题的思路。要写程序,就得先找到解决问题的思路,你学会找出这个解题思路,比你找到代码更为重要。不少人很喜欢找人家的代码,有的人甚至有了代码就直接复制到自己的程序中,可以说,这不是一种学习的态度,无助于你编程水平的提高。我几乎不怎么看人家的代码,多数时候是看别人的思路,有方框图最好,没有的话文字说明也可以,要从代码中看出别人处理问题的思路,是相当困难的,特别是大型的程序,看起来是非常的累人,所以现在我也明白了,以前读书时说的程序流程图很重要,现在算是知道了。当你知道一个问题怎么去解决了,那么剩下的只是你安排代码去完成,这就已经不是什么问题了。举个例子:数码管动态扫描,没写过的初学者可能搞不清是怎么回事,其实,就是分时让每一时间段时只控制一只数码管显示数字,几只数码管轮流显示,由于速度很快,人眼的看起来是全部数码管都亮的。明白是这么一回事,事情就好办了,剩下的事情,无非是你安排让一只只数码管轮流显示出相应的数值。显示数字,然后延时一下,再下一只显示数字,延时,知道是这样,我们实际程序上只要做到这样就可以:往段口送段码,然后打开位选显示一只,延时一下,再关闭位选,再送出段码,再打开另一只位选..仅此而已。有了解决问题的思路,我们就能问题拆分开来,然后逐一的解决,如果动态扫描的原理都没懂,不知道如何做,那么这个程序是怎么也写不出来的。

6、开动脑筋,运用多种方法,不断优化自己的程序。

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

7、看别人的代码,学习人家的思路。

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

8、尝试编写一下综合应用的程序。

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

9、着重于培养解决问题的能力,而不是具体看自己编写了多少代码或者做过什么。

“学单片机重点在于学习解决问题的思路,而不是局限于具体的芯片类型和语言”这一直是我的座右铭,是我学单片机多年来感悟出来的。经常看到有人说“你会驱动XX芯片,真牛啊”“你搞过XX项目,真厉害”之类的话,其实这是非常片面的,搞过XX芯片,搞过XX项目,只能说明你做过这一项目,它只是你的业绩,并不是代表能力就一定高。真正的能力应该是:“遇到没有解决过的问题或器件,能利用自己已学的知识,迅速找到解决问题的方法。”这个才是能力。写程序的过程就是一个创造的过程,几乎没有完全一样的项目,每次你遇上的几乎都不相同,所以你拥有的必须是你面对新项目时的创造能力,而不是标榜着你以往做过多少项目。当然,业绩也能从另一侧面反映你的经验和水平。

10、如果有可能,多学习计算机专业的知识,比如数据结构等。

这些是你解决问题的基础知识,你把这些知识应用得越好,就会发现越容易找到解决问题的方法,这就是为什么一个学计算机专业的人编的程序和一个非计算机专业的人编的程序有差异的原因。也是一个菜鸟进军到高手所要配备的知识。如果我们把编程分为宏观编程和微观编程,那么微观编程就是写具体的代码,比如控制某某器件的语句;而宏观编程就是如何对整个程序进行布局、安排,使功能模块以你想要的方式去运行,得出你想要的结果。如前所说“会控制XX器件”这些只能算是微观编程,能做到这一步还只能算是菜鸟级别,如果面对一个新的器件,你心里没底,没把握去写这个控制程序,那说明你还是一个初级的菜鸟。当你有了一定的编程经验,控制过相当数量的器件之后,你就会发现,控制器件这些工作都是相似的、重复的工作,体现不出编程的水平,最多也是写得好与不好的差别,只能算是一些小技巧的应用。而对整个程序进行布局、安排这些才是最头痛的事情,能达到宏观编程和微观编程都做好才是真正的高手。对于规模越大的程序,越能体现出这一点。

11、面对一个新项目时,多自己开动脑筋,不要急于找别人的程序。

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

12、多利用网络的搜索,学会提问题。

一般来说,学习过程中,你遇上的问题,前人们多数也有遇上的,所以如果有什么不懂,在自己解决不了的时候,最好先到网上搜索一下,看能不能找到答案,找不到再到论坛里发问,发问也要有目的性,尽量简单明了的描述问题,让帮助你的人可以用最少的时间就看懂你说什么,毕竟人家帮助你是免费的,时间也是有限的。








欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1