单片机学习经验总结

         单片机的学习是嵌入式中的裸机开发,也就是不基于操作系统的开发过程,你只要把自己学的程序下载到单片机内执行即可(这个过程有个专业术语:烧写)在这个过程中,你所写的程序,主要是控制作用。然而基于操作系统的开发过程,对于我们计算机专业的学生来说,主要是开发进行嵌入式应用程序和驱动这两个方面,这时候我想才是真正的嵌入式开发过程,说到这你可能会发出这样的问题:那为什么我们还要学单片机?直接学arm这类真正的嵌入式开发不就行了吗?这就牵扯到学单片机的意义,其实从嵌入式开发的历史来看,刚开始就是简单地裸机开发过程,不涉及到基于嵌入式操作系统的开发过程,所以从单片机入手学习嵌入式,第一,你可以从这个行业的起点开始,真正使自己的知识系统化。第二,在学完单片机之后,可以加快你学习arm的速度。接下来我将从三个方面讲怎样学习单片机。

 

   准备篇:刚开始,你可以不用急着写程序,你可以把什么是单片机这个概念搞懂,你可能已经看到过一块单片机开发板,记住:我这里强调的是单片机开发板,而不是单片机。单片机是由微处理器、存储器和I/O接口电路构成,同时它也有自己的内部资源:定时/计数器、中断源、优先级查询电路以及内部总线(C51是单总线结构),。单片机微处理器一般是8位的,存储器分为ROMRAM,在C51中,有4KROM128字节的RAM,它们各自的容量要根据不同的单片机型号而定,我认为现在的单片机的存储器相比以前已经拓展的很大了,例如STC12C5A 系列,他们的ROM已经是64KRAM1028B,相比传统的C51,你说这容量是不是很震撼。我想也是的。当然了,如果你足够牛,你也许会碰到这样一个情况:为什么我写个一个全板测试测序为什么在C51上下载不进去呢?因为你的程序大小已经超过了4K了,呵呵。。。。在刚刚介绍单片机的内部资源时,你也许已经发现了,为什么我没有把内部资源写的那么具体,因为不同单片机的内部资源是有所不同的,但是都是大同小异,所以当你拿到一个开发板时,首先就要看他的数据手册,看看它的内部资源是哪些,心中要有个数。。。。由单片机再加上外围设备(简称外设)就可以叫:单板机了,也就是人们常说的单片机开发板。外设是很活的东西,因为外设的添加不是那么固定,这要根据开发单片机板子的工程师怎样设计了。。。但是现在基于C51内核的单片机开发板,其添加的外设都是差不多的,例如用于时钟的DS1302,温度传感器18b20,数码管,显示器160212864以及TFT彩屏,还有大多数基于IIC总线的PCF8591EEPROM,键盘(独立和矩阵)等等。。

这时候,你可以不用着急忙于学外设,你主要的任务是掌握单片机的运作过程,当实现一个小功能的程序时,你可以想想这个程序涉及到哪些硬件资源,这个资源怎样工作的?即使不太懂也不用着急,毕竟这个时期主要是掌握单片机内部原理,具体的思路你可以结合“模拟电路”,“数字电路”“计算机组成原理”“汇编语言”的知识获得,学习单片机我认为是一件很幸福的事,为什么这样说,它本身就可以看做是一个早期的“电脑”,你可以知道各个指令的运行实质(结合计算机组成原理中的“指令执行过程”),这样当你在写代码的时候,心里不会感觉那么“虚”。。。。。说的有点远了。说说汇编吧,我认为学习汇编目的也就是为了更好地了解单片机里面的内部资源:寄存器。因为C语言里面涉及到寄存器编程的很少,但是汇编就不同了,它对寄存器和物理地址都要掌握才能够编程,这点对于单片机的学习还是很有好处的,因为你可以对“控制”这个概念有个很好的感性认识。。。说到现在,就是要告诉你,掌握单片机原理。但是难点还是有的,例如中断响应部分,各个I/O口结构的特点,这方面在编程时会涉及到,有时候你忽视它,可能会造成不是自己想要的结果。当然了,在这个阶段,你不光要掌握单片机原理,还要把数字电路和C语言回顾一下。。。。。。

 

   入门篇:这个阶段你可以用C语言写代码往里面烧写程序了,记住这个阶段有很重要的一点:不要放过任何一个程序,在这个时候你编写的程序,有时候会碰到各种错误,但是正是这种错误才能锻炼你的能力,所以尽量写代码。你可以先从内部资源的编程着手,例如学会熟悉各个引脚的控制,熟悉中断的编程,用各种方法实现流水灯(方法一:利用循环左移(分为调用函数方式和P0=~0x01<<j;j++方式);方式二:利用数组;方式三:用扩展I/O中的38译码器74HC138)。这些是我自己想的,你也可以用自己想到的方法去实现。相信自己。当自己熟悉了编译环境后,最好找个源程序,把调试部分熟悉一下,毕竟编译环境的熟悉在调试中还是有点必要的。。。当你不会因一些小问题或软件的故障而纠结时,你就可以开始对外设的编程控制了,这时候你就要掌握看开发板的原理图,在碰到这个模块时,首先要知道它是干什么的?然后记住它的各个接口怎么和单片机I/O相连的再了解他的各个电气特性,记住是了解而不必深究,因为关于各个模块的设计和电器特性,对于我们来说不是why 而是remember!  当然了,当你涉及到通信:UARTIIC时你应该参照时序图,把底层代码看懂,看着看着你就会了,毕竟他们的底层代码也不多。。。记住时序图一定要会看。这时候,不要把各个源代码下载进去仅看看现象,然后跟看电影的一样,我想这样你还不如真的去看电影,因为你的主要任务就是写代码,你这种方式放弃了你的主要学习部分!!所一定要学会写程序。。。。当你把各个模块都编程了一遍后,我想你还差很大的火候,因为你没真正的去做:“想-----调试-------调试-----实现”这样的项目实现,如果你能达到这个地步,我想说:你入门了!!!

 

    提高篇:这个阶段,我想你应该开始找小的项目做了,例如在TFT上做个温度变化趋势图,做个模拟闹钟什么的。。。要实现这里的每一个小项目,我感觉还是值得你去花一两天认真的去钻研的。。。。毕竟这时候是你“自己想到,自己做到”的过程,(想想是不是很好玩?当你做出这些项目的时候,你的快乐是别人所不知道的,呵呵),这个时候你可以尽量把板子上的资源综合起来编程,尽量做个全板测试程序。。。学到这里,我想你不是菜鸟了,但是还不是高手,因为单片机的学习,对于我们计算机专业的来说,我们还是仅仅专研的是软件部分,硬件仅仅涉及到模块的接口,时序部分。。。。所以能走到这里,恭喜你:你不是菜鸟了。。。。。。。后来的路其实我在这里不用说了,因为你学到这里,自己自然之道自己怎么走了,

如果你想以后从事嵌入式行业,你可以用基于操作系统的开发板学习了我认为,在几个流行的嵌入式系统中:WIN CE,LINUX 以及VXWORK中,我认为你可以选择WINCE 或者LINUX,在开发板上,有ARM,PPC以及MIPS,我认为可以毫不犹豫的选择ARM ,所以买个开发板吧,向终极菜鸟进军。。。。。

 

        最后,就说说单片机比赛,按照安徽省单片机比赛的趋势来看,我想板子里面的源代码他会给你的,所以你不必纠结于一些不必要的底层实现上,例如TFT彩屏的GUI,你有必要写吗?我想是没必要的,即便在你工作时,你从事的不是写GUI,而是基于GUI写应用程序。但是在把底层代码输进去的时候,一定要保证它是对的,不然比赛时,你哭都没办法,真的!!还有你比赛时的速度取决于你平时能把板子上资源掌握的有多熟悉,因为比赛的赛题,不可能是单个模块的编程。。。。还有队友间的合作很重要,一定要把任务分工明确,不然会有一个干的是无用功。。。。在比赛的准备阶段,不要忘记收集好的历程和思想,因为比赛有时真的可以用到。。。。。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值