




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机学习心得范文第一节:跟我学单片机到底是学什么?我的两个比喻和一个规则。开篇第一节,我问大家一个问题,跟我学单片机到底是学什么?我的回答是像驾驶汽车一样驾驭单片机。我教给大家的是驾驶汽车的技术而不是研发汽车的技术。因此每当别人问我学51单片机,PIC,AVR,stm32哪个更加有前途,应该先学哪个再学哪个时,我的回答是既然你是学驾驶技术,那么你用桑塔纳车来学还是用宝马车来学有差别吗?差别很小的,它们只是不同的厂家而已,只要会一种其它的就触类旁通了。把学单片机当作考驾照这是我所说的第一个比喻。学单片机最核心的是程序,程序跟单片机芯片是什么关系?我的回答是像歌曲跟MP3播放器的关系。我们写的程序就像预先录制好的歌曲,单片机芯片就是一个MP3播放器。把不同的歌曲下载到同一个MP3里就可以播放出不同的美妙音乐,当前下载的歌曲决定了MP3可以播放的音乐。所以我们当前编写的程序下载进单片机之后,就决定了单片机能干哪些工作,“下载程序”也俗称“烧录程序”。把单片机芯片当作MP3播放器是我第二个比喻。 单片机芯片内部细节的工作原理是什么,为什么它能实现那么神奇的功能?我的回答是不用纠结这个问题,因为这不是我们学习的方向。考驾照的也只能告诉你汽车是由四个轮,发动机,制动系统,离合器,方向盘等部分构成,其它内部细节的原理恐怕也不会教你,不是不想教你,而确实是两个不同的学习方向。学单片机的也只能告诉你它内部是由运算器,寄存器,IO口,复位电路,晶振电路,程序存储器ROM,数据存储器RAM等部分组成,至于运算器的原理和构成也不是我们的学习方向。所以尽管我搞单片机有很多年,但是我并不是完全理解它最本质的原理。尽管我与人打交道有30多年,但是人为什么能通过大脑来灵活控制双手去活动对于我来说仍然是个迷,我只知道人是由脑袋,心脏,四肢等构成。每当有这样疑惑的时候该怎么办?我的回答是用“游戏规则”这个概念去应付它。因为游戏规则是不需要解释的,只要遵守就可以了。在应用的技术领域,把暂时不解的东西当作一种游戏规则来解读和遵守是我常用的思维方式,这个游戏规则的概念就是我所说的一个规则。 下一节预告,我眼中学习单片机的四个阶段。第二节:我眼中学习单片机的四个阶段。第一阶段:学会C语言的常用语法,熟悉51单片机开发平台软件keil的操作,了解单片机的大概原理特性,能读懂按键,数码管,跑马灯,串口的简单程序,能熟悉几个常用的外围芯片驱动。网上这方面优秀的教程很多,我正在写的这个连载从业十年,教你51单片机入门基础也是属于这类入门教程之一。第二阶段:我认为这个阶段是四个阶段中最重要的阶段。很多初学者完成了第一阶段的学习,真正去面对一个小项目的时候,还是无从下手。他们不知道按键,显示,通讯,应用程序之间是如何关联起来的,他们一旦遇到多任务项目的时候不知道如何并行处理,他们最缺的是程序的框架思路。网上有很多热心牛人分享的程序框架思想,都值得大家学习和借鉴。我平时做项目是用状态机的思路,就是用switch语句实现多任务的切换,再外加一个定时中断产生不同的时间计时,有兴趣的朋友可以看看我去年在本论坛写的连载贴子从业将近十年,手把手教你单片机程序框架。第三阶段:大家在做项目时,除了写单片机的软件,还不可避免的要跟整个电路的硬件打交道,掌握一些常用的硬件电路知识就显得尤其重要。电阻,电容,电感,二极管,三极管,光藕的应用,电压差和参考地的关系,两系统通信时需不需要共地的原因,隔离与非隔离的本质,常见的变压整流电路,常见的外围驱动电路等等。这方面优秀的电子基础教程很多,大家应该主动找这方面的资料来学习学习,我过一两年后也打算写写这方面的连载贴子从业十年,单片机常用硬件知识讲解。第四阶段:有了前面三个阶段的主动学习和积累,就可以去做项目了,在项目中学习。根据工作的需要来选择学习哪个厂家的单片机,比如PIC,AVR,stm32等单片机厂家;根据工作的需要来决定是否需要学习汇编语言,有一些台湾厂家的单片机并不能用C语言开发,只能用汇编;根据工作的需要来深入研究相关行业所需的硬件电路知识;根据工作的需要来学习相关的外围芯片驱动程序,这个阶段的学习正如郭天翔老师所讲的“缺什么补什么”。我本人也打算过两三年后写写这方面的贴子,作为大家项目开发时的参考工具书来用,叫从业十年,单片机常用外围驱动程序集。下节预告,单片机一个最重要的特性。第三节:单片机一个最重要的特性。“道生一,一生二,二生三,三生万物。”道德经认为,世间万物,缤纷多彩,它们都起源自一个东西,这个“一”的东西就是“道”。电子世界也存在“一”这个东西,这个“一”繁衍出手机,电脑,电视机,机器人等丰富多彩的电子世界。这个“一”就是单片机一个最重要的特性:程序下载进单片机的内存后,可以识别管脚上的高低电平信号,管脚也可以输出不同时间长度的高低电平。下面我把这句话的5个重要关健词提取出来,详细解读它的含义。 程序。有3种,C程序,汇编程序,机器程序。能下载进单片机的只有机器程序,C程序和汇编程序都不能直接下载进单片机,所以C程序和汇编程序最终要经过专用编译软件翻译成机器程序后,才能下载进单片机执行。程序就是语言,语言就是用来交流的,交流就必须存在两个对象,这两个对象分别是程序员和单片机。程序员用C语言或者汇编语言,单片机只用机器语言,他们两者交流就必需一个翻译家,这个翻译家就是编译软件,俗称编译器,它专门把C语言或者汇编语言翻译成单片机能识别的机器语言。现在单片机开发的主流是用C语言,我本人出来工作后就从来没有用过汇编语言,所以我的观点是,C语言是必修课,汇编语言是选修课;C语言是白话文简单易懂,汇编语言是文言文繁琐难读。当然汇编也有它的优点和不可替代的场合,汇编的翻译效率高,往往是一句汇编语言对应一句机器语言,而一句C语言有可能对应几句机器语言,所以很多嵌入式系统某段要求简洁高效的源代码都是用汇编来写的,也有少数一些很便宜的单片机不提供C编译器,只能用汇编语言开发。所以要不要学汇编,我的建议是最好根据个人的工作需求来决定。内存。既然程序可下载进单片机,那么单片机必然有一个存储程序的内存。单片机内存包括ROM和RAM两部分。ROM的优点是掉电后存储的内容不会丢失,缺点是除非在烧录(下载)过程中,否则上电后它存储的内容也不能更改。并且,虽然ROM在烧录(下载)过程中可以更改内容,但是更改的次数有限制,也就是烧录(下载)的次数有限制,一般最大次数是10万次,当然这里所说ROM是指FLASH的单片机,如果是OTP的单片机,那么最大次数是1次。而RAM恰好反过来,RAM的优点是上电后存储的内容可以被程序指令随时更改,而且还没有更改次数限制,缺点是掉电后内容会丢失。正因为ROM和RAM各有特点,所以它们的分工有所不同。程序包括指令和数据两部分。指令是指程序中的判断,跳转,赋值等指令,这些内容是程序烧录进单片机时就固定下来的,不可更改的,所以存储在ROM中。数据也分两种,程序指令可更改的数据和程序指令不可更改的数据。程序指令可更改的数据存储在RAM中,程序指令不可更改的数据存储在ROM中。那么谁在幕后进行这些分类存储?是编译器软件和下载器(烧录器)。编译器除了把C语言翻译成机器语言之外,还帮我们分好了类,分配好了存储的地址和位置,下载器(烧录器)再根据这些信息把程序存储到内存中。管脚。它是单片机与外部电路进行能量和信息交互的桥梁。有电源,复位,晶振和IO口这4种类型管脚。第一种电源管脚。是给单片机内部电路供电的接口。单片机有两种常用的供电电压,一般不是3.3V就是5V,有的单片机两种电压都兼容。第二种复位管脚。单片机上电后需要外部电路给它一个瞬间高电平或者低电平的复位信号,才能启动工作。这类外部的复位电路通常是用电容和电阻组成的充电电路来实现,也有一些系统是用专门的复位芯片来实现。第三种晶振管脚。任何单片机想要工作必须要有晶振。单片机执行程序指令是按一个节拍一个节拍来执行的。而晶振产生固定频率的脉冲就是这个节拍的基础源泉。所以把晶振比喻成单片机的心脏是非常恰当的。当然,现在很多单片机都把晶振集成到内部了,不用再外接晶振。第四种IO口管脚。这是跟我们编写程序关联最密切的管脚。前面提到的电源,复位,晶振这3种管脚是为了让单片机能工作,俗称单片机工作的三要素。而单片机工作的具体内容就是通过IO口管脚来体现的。比如,IO口能识别按健的输入,也能驱动继电器的开关,也能跟外围器件进行通信。电平。单片机IO口管脚检测到的电压低于或等于0.8V时是低电平,程序里读取到的是0数字。检测到的电压高于或等于2.4V时是高电平,程序里读取到的是1数字,当然IO口输入的最大电压不能超过单片机的供电电压。单片机输出的低电平是0V,单片机输出的高电平等于它的供电电压值。时间。时间是单片机程序必不可少的一个元素。跟外围芯片通信的时序节拍需要时间,驱动发光二极管闪烁需要时间,工控自动化的某些延时需要时间。单片机的时间来源自两方面。第一方面源自指令的周期时间。单片机是根据节拍来执行程序指令的,所以每执行一条指令都要消耗一点时间,只要让程序执行一些无实际意义的指令,并且通过调整所执行指令的条数就可以得到所需要的时间长度。第二方面源自单片机内部自带的定时器。假如设置定时器每20毫秒产生一次中断,现在要获取10秒钟的时间,只需程序统记500次定时中断就可以了,因为1秒等于1000毫秒。下节预告,平台软件和编译器软件的简介。第四节:平台软件和编译器软件的简介。C语言代码写在哪里,谁负责把它翻译成Hex格式机器码?这就涉及到编辑和编译,从而诞生了平台和编译这两种软件。平台软件负责编辑源代码,编译软件负责把源代码翻译成Hex格式的机器码。不同厂家的单片机,它所用的平台和编译器软件都不一样。即使是同样一个厂家的单片机,它也有可能存在多种不同的第三方平台软件和编译器软件,下面列举的一些例子只是主流的平台和编译软件,并不是说它们是唯一的。PIC单片机的平台软件是MPLAB,8位单片机是PICC编译器,12位单片机是PIC18编译器,16位单片机是C30编译器。这个例子从侧面也说明了一个平台软件可以嵌入多种不同的编译器软件,平台软件和编译器软件存在一对多的关系。51单片机的平台软件是keil,编译器是C51。以上所述,单片机程序开发需要用到两种软件,但是实际项目开发的时候,我们只是跟平台软件打交道就可以了,因为编译器软件是当做一种独立配件嵌入到平台软件里,统一受平台软件控制。我在用PIC的8位单片机时,需要安装一次MPLAB平台软件,也需要独立再安装一次PICC编译器软件,然后运行MPLAB平台软件,在里面操作某个菜单设置选项,把PICC编译器跟MPLAB平台软件关联起来,也就是我所说的把PICC编译器嵌入到MPLAB平台软件里,统一接受平台软件的控制,但我写代码只需要跟MPLAB平台软件打交道就可以了。我早期在做51单片机开发时,也是需要把keil平台软件和C51软件分开安装,然后再把它们关联起来,但是现在从keil2版本开始,在安装keil平台软件时就已经默认把C51安装好了,并且自动把C51嵌入到了keil平台软件。我现在用keil4这个版本的平台软件,只需要安装一次keil平台软件就可以了,不需要像早期那样再单独安装C51编译器。第五节:用keil软件新建,关闭,打开一个完整工程的操作流程。Keil平台软件的安装我就不多讲了,网上这方面的资料很多,大家可以百度一下如何安装keil的教程。下面开始讲解用keil软件新建,关闭,打开一个完整工程的操作流程。第一步:新建一个工程文件夹。先在电脑D盘目录下新建一个文件夹,取名为“stc89c52rc”。有2个地方需要解释:(1)文件夹以及后面所取的文件名不要用中文,请全部用英文,数字,或者下划线这些字符。keil软件支不支持中文名无所谓,但是在单片机这个行业,有一些单片机厂家的平台软件,某些版本是不支持中文名的,所以大家养成这个习惯,以后可以避免遇到一些不必要的麻烦。(2)新建的文件夹请直接放在某盘的根目录下,而不要放到某个已有文件夹的目录下。一方面是因为已有的文件名往往带有中文字,另外一方面是有一些单片机厂家的平台软件不支持嵌入层次太深的文件目录,所以大家养成这个习惯,以后可以避免遇到一些不必要的麻烦。第二步:启动keil软件。双击桌面”keil uVision4”的图标启动keil软件。第三步:关闭默认被打开的已有工程。打开keil软件时,如果发现此软件默认打开了一个之前已经存在的工程,请先关闭此工程。如果默认没有打开已有工程,这一步可以忽略跳过。关闭已有工程的操作是这样子的:点击上面”Project”选项,在弹出的下拉菜单中选择“Close Project”即可。第四步:利用工具向导新建一个工程。点击上面”Project”选项,在弹出的下拉菜单中选择“new uVision Project.”,在弹出的对话框中,选择保存的目录是刚才第一步新建的文件夹“stc89c52rc”目录下,输入跟文件夹名称一样的文件名“stc89c52rc”,然后单击“保存”按键,此时会弹出一个选择单片机型号的对话框,双击”Atmel”这个厂家,在展开的下拉选项中选中“AT89C52”这个型号,然后点击“OK”,此时会弹出一个英文询问框“是否要复制STARTUP.A51这个文件到工程里?”我们单击“否”即可。有3个地方需要解释:(1)以上新建的保存文件名应该跟我们第一步在D盘新建的文件夹名称一致,因为有一些单片机厂家的平台软件是有这个要求的,所以大家养成这个习惯,以后可以避免遇到一些不必要的麻烦。(2)上面之所以选择Atmel厂家的AT89C52单片机,是因为朱兆祺51学习板所用的单片机是STC89C52RC这个单片机,而STC89C52RC跟AT89C52是兼容的。(3)在弹出的询问框“是否要复制STARTUP.A51这个文件到工程里?”中,STARTUP.A51这个文件有什么含义?STARTUP.A51是一个启动程序文件,在单片机进入.c程序执行main函数之前,先去执行这个启动程序,这个启动程序是专门用来初始化RAM和设置堆栈等,如果我们选“否”不添加这个启动程序,编译器也会自动加入一段我们不能更改的默认启动程序。如果选“是”,那么这个文件就会出现在我们工程里,我们可以根据需要进行更改。但是大多数的情况下,我们都不会去更改这个文件的,所以无论你选“是”还是“否”,只要你不更改START.A51这个文件,对我们都是一样的。我本人一般情况下都是选“否”。第五步:新建一个.c源文件。点击上面”File”选项,在弹出的下拉菜单中选择“New .”,会看到出来一个名字为”Text1”的文件。再一次点击上面”File”选项,在弹出的下拉菜单中选择“Save”,会弹出一个保存的对话框,还是选择保存在第一步新建的文件夹目录下,文件名取“stc89c52rc.c”,单击“保存”。有2个地方需要解释:(1)以上所取的文件名必须带.c这个扩展名,表示此文件是C文件格式。(2)第五步仅仅相当于在工程文件夹里新建了一个.c格式的C文件,此C文件目前跟工程还没有任何关联。第六步:把刚才新建的.c源文件添加到工程里,跟工程建立起关联的关系。点击左边”Porject”选项框里面的”Target 1”前面的“+”号(如果没有发现Project,请按以下第2条解释操作),在展开的下拉菜单下看到“Source Group 1”。右键单击“Source Group 1”选项,在下拉菜单中选择“Add Existing Files to Group Source Group 1.”选项,弹出一个文件选择对话框,单击选中刚才新建的.c源文件,然后单击一次“Add”按钮,此时虽
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年桂林市第十一中学招聘初中教师考试笔试试题(含答案)
- 3D创新创业项目商业计划书
- 淡水贝类深加工技术创新创业项目商业计划书
- 自动驾驶车辆外观与法规遵从创新创业项目商业计划书
- 智能婴儿监护系统创新创业项目商业计划书
- 汽车沙漠驾驶技巧资讯源创新创业项目商业计划书
- 现场急救知识培训简报课件
- 辐射换热基础知识培训课件
- 2025年工业废气净化处理技术成果绿色环保鉴定报告
- 2025年文化产业园产业集聚与服务体系构建中的区域差异分析报告
- 水磨石地面施工技术交底(工程科)
- 手拉葫芦室内钢梁吊装方案
- 业务招待费审批单
- 2021版特种设备目录
- 电子课件-《英语(第二册)(第三版)》-A01-4402 英语 第二册 第三版 课件-Unit 2 lesson 2
- GB∕T 17794-2021 柔性泡沫橡塑绝热制品
- CRT植入推荐步骤和工具课件
- 建筑施工岗位安全风险明白卡
- Q∕GDW 10827-2020 三相智能电能表技术规范
- 空气轴承技术培训教程
- 典范剧本Coming Clean
评论
0/150
提交评论