第一篇:51单片机学习经验分享
51单片机学习经验分享
第一阶段:认识单片机(新手建议从51开始),要了解单片机的应用,大概知道一点后,你就会发现单片机很神奇,能做很多事
第二阶段:了解单片机的程序编写,烧录,建议用c语言,大概知道了一点之后就可以真正的学习单片机了(这个时候可以看看郭天祥的《十天学会单片机》,建议看前八,找不到的可以联系我QQ: 451625354)
第三阶段:玩转LED,LED对新手来说很重要,而且你用的好的话,在以后调试程序的时候LED也可以派上很大的用场。LED学习分为几种:1.几种简单的逻辑控制 2.定时控制 3.PWM控制(要是会这几种,差不多就能上手了,不过学习单片机还没入门)
第四阶段:学习单片机的输入和输出,这个输入和输出是联系在一起的,等到以后你们学到控制原理的时候就会讲到传函,单片机就是这个传函,比如说:按键是输入,LED是输出,这个就比较简单。还有如果有一个矩阵键盘,你按那个键,数码管就能显示出那个数,这个就比较复杂了,总之这个阶段需要花些时间,最后可以玩玩LCD160
2第五阶段:学到这的话就不要着急学下去了,要停下来总结一下,你可以吧前面学过的东西连在一起设计出一个简单的系统。在这里我举一个例子:模拟出洗衣机进水、软洗、漂洗,脱水的整个流程,这里涉及一个电机的正反转,可以自己焊一个H桥,然后配上继电器,模拟出这样一个系统(注意这里不要用上强电,只是模拟,目的是为了总结你的学习情况)第六阶段:传感器和ADC,这个阶段跟前面的是有质的区别,建议大家先拿别人的程序看,能够改程序,将传感器和ADC跑通就好了,传感器:温度DS18B20,红外,温湿度AM2301,超声波......ADC: PCF8591,TLC1543,TLC2543(8位、10位、12位)......这个阶段最重要的是能够改程序,看懂别人的程序
第七阶段:学到这个阶段相信大家都有所成就感了,这个时候可以学学串口通讯,不是很复杂,也比较容易上手,也可以结合第六阶段学到的,可以进行PC-MCU间通讯,MCU-MCU讲通讯,这是个过度阶段
第八阶段:学会看时序图编写程序,典型的还是ADC,之前的ADC程序是看别人的吧,自己不会写吧,所以这个阶段要学会自己写,要学会看Datasheet
第九阶段:学习单片机片内资源,建议大家学习STC15系列的,ADC、比较器、PCA/PWM/CCP/DAC、SPI接口......第十阶段:差不多是最后一个阶段了,学会自己设计硬件电路,自己编写程序,以上都学会了,就可以放手一搏了,毕业设计完全是小case(整个过程建议1年),要把握好大学这几年,越早开始越好,等到大三才想到学习单片机就已经晚了
最后祝大家早日学成,找一份好工作!
欢迎大家进群学习:51单片机新手群3182877074
第二篇:单片机学习经验分享-整理
1、什么是单片机?其实我入学之前根本都接触过这个,相信大多数人都是这么过来的。现在接触过这么多,我能明白些。单片机通俗讲就是一个微处理器加上各种外设、接口等等完成你预定的任务。这个在电子通信、自动化、机械、仪器测量、计算机领域用的相当广泛,工科嘛或多或少都会接触下这个。
2、怎么学习单片机(大神一般都说是“玩”,哈哈,这个逼我装不来)?单片机在我看来主要是两部分组成:硬件&软件。那么我们就要从这两个方面入手,逐个击破。a、软件离不开c和linux,而初学者大多都是在用c。c其实在单片机领域要学习的不是很深,仔细看看例程的代码就知道,就是数组、结构体、链表、移位、指针等等。更深的二维指针和树可能就用的不多,所以大一还是大二的C语言基础这门课要多用点心。b、硬件,硬件上其实要学的东西比较多,而且动手画板子、焊电路都比较常见。干活可不分男女,我见过很多菇凉焊接的技术那叫一个好。硬件学习的话,最好看看电子器件介绍这些书,有些理论基础。然后单片机上最基本的接口都要会用,最简单的就是串口这些了。其次在你做项目的过程中,碰到什么再学什么,这是比较好的。
看几张小图片
下面谈谈单片机具体的型号
1、单片机的分类:单片机之间可能最明显的区别就是“主频”了,低的有12/24MHz,再高点有48/60M,甚至像STM32的F4就能到几百M了,这就是高速板了。单片机还有一种分类方法是根据单片机系统能够处理的位数(这个说法其实不准确,因为所有处理器归根到底只能处理2位:0和1。但操作起来就是后面的几种了),最常见分别是:8/16/32,。像大家最常见的51单片机知道是几位嘛?没错,就是8位,所以它是单片机的入门。
2、单片机的型号:大家可以先看看我学习单片机的历程:80c51(准确是c52)——>MSP430(具体学了三个小系列)——>STM32(这可是ARM的重头戏)和TI的Tiva。发现了没有?这几个单片机恰恰是上述3种位数的对应,他们分别是8/16/32中常见的。
3、大家可别以为这就是单片机的全貌了,其实单片机的型号是成千上万的,我一个人都说不完。比如我大学期间还接触过AVR、瑞萨、Arduino、TI的DSP、甚至是FPGA等等。关于这些我在帖子结尾还有几句想跟大家说的(别忘了),现在就看下去吧。
学习经历分享----首先是51单片机
有句老话,谈单片机必谈51,现在看来确实不假,因为群里关于51的帖子最多。这是好事也不是好事。51现在在成品市场上其实不多了,但恰恰我们需要学习它,因为基础最重要。理解了51,你就能理解单片机到底是怎样运行的,你就能去操纵它去玩弄它。学习51的过程中,可能还有接触并学习很多外设和接口。这些打基础的过程,作用在你后续学习更复杂的单片机的时候就能显现了。
下面看看我是怎样学习51的、(有些事我早已忘记,但我现在还记得)那是大一下学期的时候,院里科协鼓励大家去科创,我觉得我们专业理论重要,但动手能力也不能少就去了。现在想来不知道是入坑了还是开拓了。
可能熟悉的人知道,这是德飞莱的51系统板,蛮顺手的。大家会用郭天祥的或者普中的,但我觉得其实都一样,重要的还是你去不去学。当时我拿着板子,配着里面的例程,看着郭天祥的那本书(就是那本大红色的)。烧些程序看现象,翻翻书看理论,跌跌撞撞最后也算学到了些东西,51单片机就这样入门了。
所以我觉得大家也可以按照这条路走下去,单片机这种东西要去做。我每学一种外设,我都会想这种外设可以干什么,结合我以前学的又可以做一个什么。不懂的可以问问高年级的学长,这是个积累的过程,毕竟做学问是厚积薄发。
51里面就是IO口点亮下LED、定时器、中断、键盘、数码管、LCD12864、串口等等,这些仔细做做很好玩的,程序开始不会编没关系,先烧些进去看现象,最后再用c语言的知识去解读就ok。
我再说说51可以用在哪,其实低端电子领域都可以,厉害吧。平时院里学校里做做科创,参加下小比赛,做个测温测速等等。51的程序编写起来也不难,得有“位操作”这个思想!
下面开始我的第二部分:MSP类单片机的学习,这说起来就比51要复杂些了。但大家能看到这一部分,说明大家单片机已经入门,可以像更高的部分出征了。一般开始做MSP430的板子都是从MSP430 lanuchpad这款开始的吧。没错就是下面这货。
这块板子很基础,可以学习的东西也很多,就是这块不及手掌大小的板子就能敲开MSP430世界的大门,神器吧。下面我会介绍下MSP430,而且下文为了方便我就简称它430了(可不是打dota2的那个430,哈哈)。
了解单片机从哪里开始呢?没错就是datasheet(数据手册)或者usermanual(用户手册)。这些可能在51的世界里接触不多,因为毕竟51的核心处理器就那一个,不同的厂家只是添加不同的外设再拿出来卖,所以问问人逛逛论坛就知道咋用了。但是430有点不一样,因为MSP430的型号细分实在太多了,这时候就需要我们去看datasheet和usermanual了,因为从这里我们才能知道板子有哪些资源(资源就是主频、UART口个数、定时器个数、中断口、ADC模块等等)。
用的多的型号都能在网上找到中文版的数据手册,了解一个芯片一般有这两样就够了。但是还是英文数据手册居多,因为这可是外国的公司,所以小伙伴们也能趁机学学英语。
这张图片是我学习430资料的一小部分,其实学习430和51差不多,就是烧程序、读例程、做项目再自己试着写程序。在此过程进一步丰富自己的硬件知识。
在这里,注意一下,430操作的思想是“寄存器操作”(还记得上面51的“位操作”嘛,这两个可是有区别的)。怎样理解“寄存器操作”呢?其实看一下最基础的看门狗的操作就知道了,WDTCTL = WDTPW+WDTHOLD;// Stop watchdog timer 这上面等式的左边就是寄存器。
但你可不能说430里没有位操作噢,寄存器只是封装了很多个位操作。在最基本的IO控制输入输出的例程中,就又能看到熟悉的位操作了::PAOUT &= ~(BITA + BIT7)。大家不要模糊,其实位操作太少了就没必要提升到寄存器操作,这两者不矛盾。
公司介绍
1、都说MSP430,可有谁又知道这是哪家公司的产品呢?我来抛砖引玉下:该公司是德州仪器(Texas Instruments),简称TI,是全球领先的半导体公司。这公司了不得,在模拟和数字领域都很有作为,如果是做电路、电源方向的同学会更熟悉。所以我上面板子的全称是:TI MSP430 LaunchPad,还有比较常用的TI MSP430G2553和MSP430F6638等等。
2、就是我要安利的一项技能:从芯片公司的官网找到你想要的资料(绝对免费而且无误)。入行时间比较长的都知道,所以我向新手普及下:越是想TI、ADI这种大公司,它们产品的资料越是容易在其官网上找到,所以可以百度然后进去,嗯,就像发现了新大陆一样。如下: 这里面输入你选用的芯片型号,就能找到我上面说的datasheet和usermanual。最关键的是有官方提供的“例程”有木有,这个才是大家最关心的有木有~对我们来说,例程就是最好的老师,在此基础上进行二次开发就容易的多了。
当然官网里还有很多其他的东西和功能,详细介绍网上百度下就有,我只是指出了最基本的功能,希望大家能用好。
大二的上学期又过去了,时光匆匆,很多事其实都是事后才能明白。MSP430就这样简单学了下,也做过一些入门级的小工程。大二下学期就要来了,电信类真正的专业课接踵而至。下学期又补了了下新的硬件知识,而且寒假开始学STM32,这才是大头。下文即将介绍。
对了,每一部分结束我又来安利了,我现在有一块51的板子,一块430的板子,还有块2016年国赛(大学生电子设计竞赛)的指定用板,还有很多小的有价值的外设和工具。除此之外,很多书学习单片机的书,以及国赛省赛竞赛(哈哈,有多少同学希望借此保研)的指导用书我都有。感兴趣的可以在此楼留个意向,如果愿意交易的话,我还会有针对性的提供丰富的资料。收集这么多资料,没有功劳,也有苦劳哇。
第三部分、单片机的重头戏,32位微处理器的代表:ARM 的STM32.有些工程师在设计时考虑10元以下的单片机有很多可选择,AVR,、MSP430、51等等。对速度和片内外设没有什么要求,只要价格便宜就可以了,根本用不着STM32这些高性能的32位单片机;另外,有些工程师则对应用性能,外围接口,可靠性,抗干扰能力,开发工具,使用的人数,用户习惯这些有较高要求...STM32的出现像一个强者,我觉得很有必要学习这个,而且是学好这个。
具体说来,STM32是ST公司推出的基于ARM-Cortex-M3内核的32位单片机。我当时用的就是大名鼎鼎原子哥的战舰STM32。不得不承认,这里面很有分量,知识的体系比51又上了好几个层次。如下图、ALIENTEK 战舰 STM32 开发板选择的是 STM32F103ZETT6 作为 MCU,该芯片是 STM32F103 里面配置非常强大的了,它拥有的资源包括: 64KB SRAM、512KB FLASH、2 个基本定时器、4 个通用定时器、2 个高级定时器、3 个 SPI、2 个 IIC、5 个串口、1 个 USB、1个 CAN、3 个 12 位 ADC、1 个 12 位 DAC、1 个 SDIO 接口、1 个 FSMC 接口以及 112 个通用IO 口。
现在大家看到这些模块,结合我上面普及的基本内容,大家应该对这些名词都不陌生吧。达到这种水平,其实单片机就已经走过了很长的路了。继续加油。
下面说说我学stm32的一路,当然套路基本都固定了。先看介绍,再读程序写程序烧程序,看实验现象,最后改进提升。
现在想起来,这里面的每个实验都教会我很多东西。如果你也可以认真做下去,并消化吸收好,问题也不大。这里不吹不黑,战舰的这款板子无论是从板子设计或者是提供资料的齐全度来说,都算是国内的良心之作。我那时是2013年的板子,还是STM32F103系列的。听说去年他们又出了F4系列,这种高速板加上浮点数运算什么可是很厉害的。
话说上一回讲到ARM STM32的基本介绍,现在来聊聊ARM里面编程的思想。
关于ARM的模块使用(我图片上介绍的那些),对着例程和板子一个个来,再加上前面学习51和430的积累,这些应该好接受。所以下面我会淡化这些,但是有问题还是可以跟帖问。
我这里有条线索:位操作>寄存器操作>库函数操作,如果这几个你能明白的话,直接学ARM就ok的。可以看出来51对应位操作,430可以寄存器操作了,那么最后就是ARM的库函数操作了。其实ARM的库函数也是建立在寄存器的基础上,只不过商家进行二次开发封装成了“函数”。仔细想想,这和C或者matlab里面的函数是一个概念,都是为了方便用户使用。相对应的,一些IO的初始化都是用结构体来操作(因为ARM的IO要设置的东西太多了,不是51那么一两句就能搞定的),这样也是为了和库函数配套使用。
举个例子,GPIO_SetBits(GPIOB, GPIO_Pin_5);这句话就能设置GPIOB.5 输出 1。现在看不懂没关系,只要慢慢来以后看到这的时候,能想起来就ok。
所有关于单片机编程的软件问题。
51一般用的多就是keil啦,刚开始没接触这些没关系。其实这就是一个编写代码、烧录程序的工具,和word没多大差别。怎么学会用它呢?一般这么常用的软件,网上都有教程,对照着多操作几次就行了。然后430用的多的就是AVR和TI推广的CCS,针对ARM的编程软件也有很多种(不过我现在只能想起keil,其他的一时想不起来,哈哈)。总体来看,不同的芯片都有相应的开发平台(这可是它们背后生产商的利益博弈),尽量选用人多用的那个版本就ok。这么多也不是要全部掌握,不要有压力,一个原则:用到什么学什么。我是走了很多弯路之后才明白,这些软件本质都是差不多的。
第三篇:单片机学习
培训总结
为期二十五天的单片机培训今天就要告一个段落了,回想起来,还有点舍不得。从第一天进来,看见单片机时的好奇及茫然,到之后的点滴学习的辛酸和喜悦:点亮第一个放光二极管,接通第一个七段数码管,用蜂鸣器发出近乎噪声的音乐……当时的无数次尝试,无数次失败,在现在看来都是那么的美好。
第一次进实验室时,看见满桌的实验仪器,心中竟漫上一丝丝的喜悦。对于从小就喜欢乱拆小电器的我,如果能掌握这些神秘仪器的用法,真是再好不过的事情了,真希望老师立马就教会我们这些东西。然后老师给我们讲我们暑假培训的目地就是学会单片机——一块拥有神秘芯片和器件的绿色板子。然后就是正式的培训上课了。
每天早上六七点起床,匆匆吃过早饭就得搭公交车往南区赶。一个小时的公交车奔波对于有点晕车的我可是个不小的挑战。下了车有点头晕,还没有回过神来,就和同学一起走进实验室了。晚上九点下课之后又得挤公交回去,十一二点才能睡觉。这样一两天之后觉得很累很累。想着得这样奔波一个月,真有点害怕,不知道自己能不能坚持下来。但我一直坚信这样做是值得的,因为在这边有我喜欢的东西。每天我都能学到新的东西,每天我都能更进一步掌握单片机的用法,每天我都能更加熟练地使用前段时间学到的东西。看视频,认真学里面老师的方法,理解他讲解的每一个器件的原理,跟着他编程驱动自己的单片机;问老师,把自己的想法告诉老师,让老师给我讲解在学习单片机时的困惑;和同学交流,一起交流学习的心得和自己的收获,相互关心相互帮助。随着时间的过去,大家都在进步,人数好像也越来越少。从进来的第一天老师就告诉我们要学会坚持,因为每天重复的生活,总会让人产生厌倦,而很多同学就是受不了这样的生活而选择了中途放弃。虽然我也想回家想摆脱这样的繁累,但还是选择了留下来,因为我知道,这里有我喜欢的东西。就这样日子一天天地过去直到今天,看着自己编的那么多程序,自己关于单片机的认识和掌握,真的很庆幸自己选择了留下来而没有中途退出。
这个培训让我真正有了一个不一样的暑假,不仅仅学会了单片机,更学会了坚持。我发现我原来对电子方面有这么大的兴趣,真的很庆幸这个培训给了我这个机会,我想我会沿着这个继续坚持下去。
第四篇:51单片机的学习经验(附学习总结)
51单片机的学习经验(附学习总结)
OFweek工控网讯:作为一名电子技术从业人员,你学过单片机吗?你会运用单片机吗?我想你一定学过,但不一定会运用。因为学习单片机比学习其他学科需要付出更多的努力和代价,不仅要学习理论知识还要练习实际操作,而且主要是在实际操作中才能真正学到单片机技术。此外,学习单片机还需要投入一定的学习成本,随着你学习知识的扩展成本还会增加。
单片机作为一种简单的控制器在生活中有这广泛的应用,当然在工业型单片机在生产中也扮演着很重要的角色,所以对于一个学习自动化的工控人来说,学习单片机是非常有必要的。
单片机的学习经验
1、学习电子技术基础知识,如电路、模拟电路和数字电路。这是学习电类相关专业的基础。
2、学习计算机硬件知识,如计算机的简单组成原理(只需要了解),当然要知道CPU是什么?总线是什么?一些相关概念。
3、程序编写的相关知识,主要是汇编语言和C语言。了解结构化语言的程序设计方法,也就是三种结构(顺序结构、分支结构(或称选择结构)、循环结构),会一些常用的算法。
4、以上是基础,有了这些基础,学习51单片机就只要花几周的时间就能上手。但学习单片机时,主要从单片机的存储器开始,其中特殊功能寄存器是重点,学会之后,就可以学习单片机的基础部分了,主要是四个部分:51单片机I/O口的使用、中断的使用、定时器的使用、外部器件的扩展。这些部分都可以用软件仿真(可以用proteus软件)。
5、可以买一两块廉价的单片机开发板,用廉价的方法(可以用热转印法做PCB板)仿制一些更简单的实验功能板,开始做板时千万不做得太复杂,我带过的很多学生中,有少部分人总是觉得太简单了,做个复杂的,结果做了个把星期,没有成功,最后只有放弃。还有一点很重要,就是用PROTEUS仿真时,最好只做单一功能的仿真,否则可能与实际在硬件上做的结果不一样。
6、从网上下载一些实例进行研究学习,不断提高。学习单片机的步骤
学习单片机的动机不外乎有四种:一是为兴趣爱好而学,二是为专业而学;三是为饭碗而学;四是在工作中被逼而学。不管是哪种动机,因主修专业的不同以及电子基础的深浅不同,对于不同的人可能采用不同的学习方法,根据笔者的亲身学习经验和教授徒弟学习的感受,提出笔者的学习方法和步骤。
第一步:基础理论知识学习
基础理论知识包括模拟电路、数字电路和C语言知识。模拟电路和数字电路属于抽象学科,要把它学好还得费点精神。在你学习单片机之前,觉得模拟电路和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。否则,你的单片机学习之路不仅会很艰难和漫长,还可能半途而废。笔者始终认为,扎实的电子技术基础是学好单片机的关键,直接影响单片机学习入门的快慢。有些同学觉得单片机很难,越学越复杂,最后学不下去了。有的同学看书时似乎明白了,可是动起手来却一塌糊涂,究其原因就是电子技术基础没有打好,首先被表面知识给困惑了。
单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,就能轻松地迈开学习的第一步,自信心也会树立起来。相反,基础不好,这个看不懂那个也弄不明白,越学问题越多,越学越没有信心。如果你觉得单片机很难,那就应该先放下单片机教材,去重温数字电路,搞清楚触发器、寄存器、门电路、COMS电路、时序逻辑和时序图、进制转换等理论知识。理解了这些知识之后再去看看单片机的结构和原理,我想你会大彻大悟,信心倍增。
模拟电路是电子技术最基础的学科,她让你知道什么是电阻、电容、电感、二极管、三极管、场效应管、放大器等等以及它们的工作原理和在电路中的作用,这是学习电子技术必须掌握的基础知识。一般是先学习模拟电路再去学习数字电路。扎实的模拟电路基础不仅让你容易看懂别人设计的电路,而且让你的设计的电路更可靠,提高产品质量。
C语言知识并不难,没有任何编程基础的人都可以学,在我看来,初中生、高中生、中专生、大学生都能学会。当然,数学基础好、逻辑思维好的人学起来相对轻松一些。C语言需要掌握的知识就那么3个条件判断语句、3个循环语句、3个跳转语句和1个开关语句。别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了。
当基础打好以后,你会感觉到单片机不再难学了,而且越学越起劲。当单片机乖乖的依照你的逻辑思维和算法去执行指令,实现预期控制效果的时候,成就感会让你信心十足、夜以续日、废寝忘食的投入到单片机的世界里。可以这么说,扎实的电子技术基础和C语言基础能增强学习单片机信心,较快掌握单片机技术。
第二步:单片机实践
这是真正学习单片机的过程,既让人兴奋又让人疲惫,既让人无奈又让人不服,既让人孤独又让人充实,既让人气愤又让人欣慰,既有失落感又有成就感。。其中的酸甜苦辣只有学过的人深有体会。思想上要有刻苦学习的决心,硬件上要有一套完整的学习开发工具,软件上要注重理论和实践相结合。
1.有刻苦学习的决心
首先,明确学习目的。先认真回答两个问题:我学单片机来做什么?需要多长时间把它学会?这是你学单片机的动力。没有动力,我想你坚持不了多久。其次,端正学习心态。单片机学习过程是枯燥乏味、孤独寂寞的过程。要知道,学习知识没有捷径,只有循序渐进,脚踏实地,一步一个脚印,才能学到真功夫。再次,要多动脑勤动手。单片机的学习具有很强的实践性,是一门很注重实际动手操作的技术学科。不动手实践你是学不会单片机的。最后,虚心交流。在单片机学习过程中每个人都会遇到无数不能解决的问题,需要你向有经验的过来人虚心求教,否则,一味的自己埋头摸索会走许多弯路,浪费很多时间。
2.有一套完整的学习开发工具
学习单片机是需要成本的。必须有一台电脑、一块单片机开发板(如果开发板不能直接下载程序代码的话还得需要一个编程器)、一套视频教程、一本单片机教材和一本C语言教材。电脑是用来编写和编译程序,并将程序代码下载到单片机上;开发板用来运行单片机程序,验证实际效果;视频教程就是手把手教你单片机开发环境的使用、单片机编程和调试。对于单片机初学者来说,视频教程必须看,要不然,哪怕把教材看了几遍,还是不知道如何下手,尤其是院校里的单片机教材,学了之后,面对真正的单片机时可能还是束手无策;单片机教材和C语言教材是理论学习资料,备忘备查。不要为了节约成本不用开发板而光用Protur软件仿真调试,这和纸上谈兵没什么区别。3.要注重理论和实践相结合
单片机C语言编程理论知识并不深奥,光看书不动手也能明白。但在实际编程的时候就没那么简单了。一个程序的形成不仅需要有C语言知识,更多需要融入你个人的编程思路和算法。编程思路和算法决定一个程序的优劣,是单片机编程的大问题,只有在实际动手编写的时候才会有深切的感悟。一个程序能否按照你的意愿正常运行就要看你的思路和算法是否正确、合理。如果程序不正常则要反复调试(检查、修改思路和算法),直到成功。这个过程耗时、费脑、疲精神,意志不坚强者往往被绊倒在这里半途而废。
学习编写程序应该按照以下过程学习,效果会更好。看到例程题目先试着构思自己的编程思路,然后再看教材或视频教程里的代码,研究人家的编程思路,注意与自己思路的差异;接下来就照搬人家的思路亲自动手编写这个程序,领会其中每一条语句的作用;对有疑问的地方试着按照自己的思路修改程序,比较程序运行效果,领会其中的奥妙。每一个例程都坚持按照这个过程学习,你很快会找到编程的感觉,取其精华去其糟粕,久而久之会形成你独特的编程思想。
当然,刚开始,看别人的程序源代码就像看天书一样,只要硬着头皮看,看到不懂的关键字和语句就翻书查阅、对照。只要能坚持下来,学习收获会事半功倍。在实践过程中不仅要学会别人的例程,还要在别人的程序上改进和拓展,让程序产生更强大的功能。同时,还要懂得通过查阅芯片数据手册(DATASHEET)里有关芯片命令和数据的读写时序来核对别人例程的可靠性,如果你觉得例程不可靠就把它修改过来,成为是你自己的程序。不仅如此,自己应该经常找些项目来做,以巩固所学的知识和积累更多的经验。
第三步:单片机硬件设计
当编写自己的程序信手拈来、阅读别人的程序能够发现问题的时候,说明你的单片机编程水平相当不错了。接下来就应该研究的硬件了。硬件设计包括电路原理设计和PCB板设计。学习做硬件要比学习做软件麻烦,成本更高,周期更长。但是,学习单片机的最终目的是做产品开发----软件和硬件相结合形成完整的控制系统。所以,做硬件也是学习单片机技术的一个必学内容。
电路原理设计涉及到各种芯片的应用,而这些芯片外围电路的设计、典型应用电路和与单片机的连接等在芯片数据手册(DATASHEET)都能找到答案,前提是要看得懂全英文的数据手册。否则,照搬别人的设计永远落在别人的后面,你做的产品就没有创意。电子技术领域的第一手资料(DATASHEET)都是英文,从第一手资料里你所获得的知识可能是在教科书、网络文档和课外读物等所没有的知识。
虽然有些资料也都是在DATASHEET的基础上撰写的,但内容不全面,甚至存在翻译上的遗漏和错误。当然,阅读DATASHEET需要具备一定的英文阅读能力,这也是阻碍单片机学习者晋级的绊脚石。良好的英文阅读能力能让你在单片机技术知识的海洋里自由遨游。
做PCB板就比较简单了。只要懂得使用Protel软件或AltimDesigner软件就没问题了。但要想做的板子布局美观、布线合理还得费一番功夫了。
娴熟的单片机C语言编程、会使用Protel软件或AltimDesigner软件设计PCB板和具备一定的英文阅读能力,你就是一个遇强则强的单片机高手了。
学习单片机的内容
第一步:数字I/O的使用
使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。IO口的使用,最简单的就是点亮流水灯啦~Comeon!为了让没有单片机的同学也能顺利学习,我们可以用仿真软件来做,有视频喔,学习更简单,麻麻再也不用担心了,哈哈。请看:帖子链接
第二步:定时器和按键的使用
学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。按键,就不用说了吧,应用很广泛的,不多说,参见帖子,注意,按键扫描程序是用if还是while喔~最近在某论坛发现了一种新型按键识别思路(利用AD),也可以看看~ 第三步:中断
单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。
中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。
第四步:与PC机进行RS232通信
单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊!
第五步:学会A/D与D/A
STC12C5A60S2单片机带有多通道10位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。使用A/D转换功能的简单的例子是设计一个电压表。DA的芯片承建的有,DAC8032,DAC8032请看:Proteus仿真链接 第六步:学会PCI、I2C接口和液晶显示器接口
这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。
那我们来看一下如何实现LCD1602的显示吧:帖子链接+仿真链接
第七步:学会比较、捕捉、PWM功能
这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。
第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计
学习USB接口、TCP/IP接口、各种工业总线(CAN总线、SPI总线)的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了。
第九步:学习无线传输的硬件与软件设计
PT2262/PT2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/PT2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。
编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全受控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。51单片机学习总结
1、什么是单片机
在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。Intel公司推出了MCS-51系列单片机:集成8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。
2、单片机的作用
用到单片机的项目经验介绍
手持粮库温度寻检设备
毕设答辩打分器
电话台灯
自动感应水龙头
凡是与控制或简单计算有关的电子设备都可以用单片机来实现,再根据具体实际情况选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等
工业自动化:数据采集、测控技术。
智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等。
消费类电子产品:洗衣机、电冰箱、空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。
通讯方面:调制解调器、程控交换技术、手机、小灵通等。
武器装备:飞机、军舰、坦克、导弹、航天飞机、鱼雷制导、智能武器等。
等等…..3、学习单片机之前预备知识
(1)数字电路中只有两种电平:高和低
定义单片机为TTL电平:
高+5V低0V
(2)RS232电平:计算机的串口
高-12V低+12V
所以计算机与单片机之间通讯时需要加电平转换芯片(3)进制转换与逻辑、算术运算
(4)C语言基础
(5)80C51了解
80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。
(6)
总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其它部件之间的连线。外部总线有三种:数据总线DB(DataBus),地址总线AB(AddressBus)和控制总线CBControlBus)。
(7)
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。
(8)
C51数据存储类型
例:
数据类型变量名
charvar1;
bitflags;
unsignedcharvextor[10];
intwwww;
注意:变量名不能用C语言中的关键字表示。
(9)
包含的头文件(可以在安装目录下INC目录下查看)
通常有:reg51.hreg52.hmath.hctype.hstdio.hstdlib.habsacc.h
常用有:reg51.hreg52.h
(定义特殊功能寄存器和位寄存器);
math.h(定义常用数学运算);
(10)中断服务程序的格式
函数名()interruptnusingm
{
函数内部实现….}
(11)I/O口定义
sbitbeep=P2^3;(12)单片机的基本时序
机器周期和指令周期
(1)振荡周期:也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期,TX实验板上为11.0592MHZ。
(2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。
(3)机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作。
(4)指令周期:它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。MCS-51系统中,有单周期指令、双周期指令和四周期指令。
4、学习单片机目标
最小系统能够运行起来的必要条件。
1.电源2.晶振3.复位电路
对单片机任意IO口的随意操作
1.输出控制电平高低2.输入检测电平高低。
定时器:重点掌握最常用的方式2
中断:外部中断、定时器中断、串口中断
串口通信:单片机之间、单片机与计算机间
第五篇:单片机学习心得体会
单片机的学习心得感受
随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时/数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机。
单片机是微型计算机应用技术的一个重要分支,近年来在工业智能仪器仪表、光机电设备、自动检测、信息处理、家电等的得到广泛应用和迅速发展。单片机是自动地进行运算和控制,把实现计算和控制的步骤一步步地用命令的形式,即一条条指令预先存入到存贮器中,单片机在CPU的控制下,将指令一条条地取出来,并加以翻译和执行,得到你要的东西。
这学期在老师的带领下,我从对单片机一无所知的到现在终于有点了解,这期间虽然没有在这方面下很大的功夫,但是也学到了一点知识,从点亮一个灯,到流水灯再到数码管的显示以及后面独立按键。这都是我以前无法想象的。
单片机这门课是一科非常重视动手实践的科目,不能总是看书,但是也不能完全不看书。单片机并传统的数字电路或模拟电路那样比较直观,原因是除了“硬件”之外还存在一个“软件”的因素。正是这个“软件”的原因使得许多初学者怎么也弄不懂单片机的工作过程,怎么也不明白为什么将几个数送来送去就能让数码管显示一串字符或控制一个电机的变速。对初学单片机的人来说,需要从书中大概了解一下单片机的各个功能寄存器,如果看的多了反而容易搞乱,现在市场上大多数讲单片机的书一开始就讲解复杂的内存、地址、存储器什么的,更让初学者感到不知所云、难以入门。如果按教科书式的学法,上来就是一大堆指令、名词,学了半天还搞不清这些指令起什么作用,能够产生什么实际效果,那么也许用不了几天就会觉得枯燥乏味而半途而废。简单的说,使用单片机实际上就是用我们自己编写的软件去控制单片机的各个功能寄存器。再简单些,就是控制单片机哪些引脚的电平什么时候输出高电平,什么时候输出低电平。由这些高低变化的电平来控制外围电路,实现我们需要的各个功能。
学习单片机首先用到c语言,提到C语言源文件,大家都不会陌生。因为我们平常写的程序代码几乎都在这个XX.C文件里面。编译器也是以此文件来进行编译并生成相应的目标文件。作为模块化编程的组成基础,我们所要实现的所有功能的源代码均在这个文件里。理想的模块化应该可以看成是一个黑盒子。即我们只关心模块提供的功能,而不管模块内部的实现细节。在大规模程序开发中,一个程序由很多个模块组成,很可能,这些模块的编写任务被分配到不同的人。而你在编写这个模块的时候很可能就需要利用到别人写好的模块的借口,这个时候我们关心的是,它的模块实现了什么样的接口,我该如何去调用,至于模块内部是如何组织的,对于我而言,无需过多关注。而追求接口的单一性,把不需要的细节尽可能对外部屏蔽起来,正是我们所需要注意的地方。
谈及到模块化编程,必然会涉及到多文件编译,也就是工程编译。在这样的一个系统中,往往会有多个C文件,而且每个C文件的作用不尽相同。在我们的C文件中,由于需要对外提供接口,因此必须有一些函数或者是变量提供给外部其它文件进行调用。假设我们有一个LCD.C文件,其提供最基本的LCD的驱动函数。在当前位置输出一个字符 而在我们的另外一个文件中需要调用此函数,那么我们该如何做呢?头文件的作用正是在此。可以称其为一份接口描述文件。其文件内部不应该包含任何实质性的函数代码。我们可以把这个头文件理解成为一份说明书,说明的内容就是我们的模块对外提供的接口函数或者是接口变量。同时该文件也包含了一些很重要的宏定义以及一些结构体的信息,离开了这些信息,很可能就无法正常使用接口函数或者是接口变量。但是总的原则是:不该让外界知道的信息就不应该出现在头文件里,而外界调用模块内接口函数或者是接口变量所必须的信息就一定要出现在头文件里,否则,外界就无法正确的调用我们提供的接口功能。因而为了让外部函数或者文件调用我们提供的接口功能,就必须包含我们提供的这个接口描述文件----即头文件。同时,我们自身模块也需要包含这份模块头文件(因为其包含了模块源文件中所需要的宏定义或者是结构体,好比我们平常所用的文件都是一式三份一样,模块本身也需要包含这个头文件。
硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。
当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课是对我的学习态度的一次检验。对于这次单片机综合课程,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次课程所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
感谢老师的让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。虽然课程时间很短,但我学习了很多的东西,可以使我接触接触,感受颇深。