跟家电维修工深入浅出学单片机编程入门《一》
编辑时间:2018-06-30 作者:LCDHOME论坛网友 浏览量:2092 来源:LCDHOME论坛

以下所有我发的内容,随时根据实际情况加以修改,望大家反复阅读

可能有好多想学单片机的朋友看了好几本单片机的书,学了几年都还没有入门,这里我谈一下自己学单片机的体会:

  1、要用C语言,不要用汇编语言,这样对以后发展有利。因为不同类型的单片机汇编语言不通用,而C语言是通用的,用C语言编写的程序有时不加修改或略加修改就可应用到不同的单片机上。

  2、要选好书,如果教材选的不对,你费好大劲也白搭。郭天祥编写的一本书不错。

  3、必须多动手实际操作,不实践再好的书你也学不会。

  4、对书中一些名词不要按中文意思去理解,毕竟单片机是来自外国,好多翻译的名词与中文含义不同。

  如果有时间的话,我用我自己对单片机的理解来带领想学单片机的朋友入门。

  关于数据类型:

  数据类型实际就是选取的数的大小范围.就好像用车去拉一个旅游团。它有有符号与无符号之分,就像人有男女之分一样。咱现在把无符号比作男人,有符号的比作男女混合;一字节8位比作8个人,两字节16位比作16个人,就拿旅游去理解。

  如果把数据比作是水,那么选取确定数据类型就相当于选取装水容器的大小。   

字符型数据:   

  unsigned char   无符号字符型数据,数值取值范围为0----255,好比要用一辆8座的面包车,可载8个男人(相当于8位),重量最大可装255千克。

  char   有符号字符型数据,数值取值范围为-128---+127,好比要用一辆8座的面包车(可载4男4女)重量最大可装255千克。

  整型数据:

  unsigned int   无符号整型数据,数值取值范围为0----65535,好比要用一辆16座的车,可载16个男人(相当于16位),重量最大可装65535千克(当然这个数值与实际比不恰当)。

  int   有符号整型数据,数值取值范围为-32768---32767,好比要用一辆16座的车,可载8男8女(16人),重量最大可装65535千克(当然这个数值与实际比不恰当)。

  其它数据类型依次类推。

  定义数据类型实际就是给数据在单片机内部划分一个存储器范围,选大了浪费,选小了不够用,就像是包车旅游一样。

关于寄存器:

  寄存器本人好长时间不明白是怎么回事,后来才知道。如果把整个单片机比作是一个公司或一个单位,那么寄存器就是他的管理部门。如果寄存器你会设置了,单片机技术基本上你就学会了。这就好比你把一个工厂里的管理人员领导好了,整个工厂也就搞活了。你要是实现某些功能,就要设置相应的寄存器位。就好比是你要想进行技术改造,就要向你的领导申请、向工程部申请、向另外一些领导申请(好比设置不同的寄存器)。所有的寄存器你会设置了,单片机你就等于入门了。

关于寄存器的寻址方式:

  寄存器寻址方式分按位寻址和按字节寻址:

  上面说了,寄存器就是单片机的管理部门,这些部门有8个人一个的(8位寄存器),也有16个人一个的(16位寄存器)。你要是找他办事(设置相应的功能),有两种类型:

  一种是只能按字节寻址,按字节寻址就好比你只能找一个部门(8个人),具体这个部门8个人当中一个人你也不认识。比如你找到了电工班。

  另一种是按位寻址,按位寻址就好比你能找一个部门8个人当中的任何一个人,比如你找到了人事部。人事部部长是张三,他是管整个厂的人员调动;李四呢,管的是对外招工工作;王五负责人事统计;赵六..,明白了吧?

设置寄存器就像是你找人开后门办事,你给他一送礼(一般是把对应的功能位置1),他一看你给他送东西了,:“吆嘻”一声就给你办了。

关于标志寄存器与寄存器标志位:

  标志寄存器与有的寄存器某些位是标志位。所谓标志位,就是一个信号,好比一个自动机器上的电器控制箱上的指示灯,当他正常工作时,运行灯亮;当电机过载热继电器动作时,故障灯亮。

  当单片机运行到一定的程度(完成某一功能)后,相应的位会有所变化(一般是置1),这就是它的标志位的显示.,相当于电控箱上的某一个指示灯亮了。这样,你就可以根据这个变化去实现各种控制。

为什么看了好多书单片机你学不会?原因是好多书多数讲的是内部结构,把人给搞蒙了。一般的技术学习是先理论后实践,我的歪理是“先实践后理论”。咱就那学开车来说,学司机目的是会开车,我们没必要了解发动机是怎么工作的,甚至轮子为什么是圆的而不是方的。我们只要学会掌握着方向盘能在路上行走,懂得安全知识,懂得交通规则(不然交警可要扣分或者罚款的)就行了。我们是学开车,不是学修车或者是制造车。等学会开车后再说学修理它。好多一个字不识的文盲不也开车相当牛()的吗?

  学单片机也是这样,我们没必要掌握它的内部结构,只要掌握控制它的端口什么时间输出高电平,什么时间输出低电平就行了。我们是在使用单片机,不是设计制造单片机。等到会用后再来研究他的结构。

学单片机我推荐C语言,这种语言好学易懂,移植性强,有的编写的程序不加修改就可用到别的地方,甚至其它单片机,不像是汇编语言,每一种单片机一种汇编语言,不通用。

  说到C语言,可能有很多未接触过的朋友觉得很难,电灯点火——其实不然,只要你认识英文26个字母,你就能学会。单片机所用到的C语言不多,就常用的几个,C语言你只要有一个了解,懂得一半就够学习用了。

  学单片机最好有逻辑运算、逻辑电路的一点知识;会进行进制转换,如果进制转换不会也不要紧,咱们的电脑上的计算器就行。点击:开始---程序---附件----计算器---查看---选科学型就可转换。

我不是个单片机高手,小学毕业,初中吗,只上了半期。充其量也就是个业余爱好者,只懂得8051单片机的开发流程,技术上是一瓶子不满,半瓶子还晃荡,只能带领大家学8051单片机了。

  干什么工作就得用什么家伙,开发单片机就得用单片机的工具。 像我们这些游击队(农民工打工族)今天这儿,明天那儿,三天打渔两天半晒网(有时没时间有时没条件),身上的银子又不多,怎么办?

  电脑是必须的,最好是带串口和并口的,如果没有,可买转换卡或USB转换线 。编译软件keil可从网上下载。单片机选用AT89S52或国产的STC89C52,也就是5---6元一个,不用买实验板,自己用万能板焊接,实验什么就用什么,因为所编程序必须和硬件电路相匹配,省得与市场上卖的实验板不配套。自己做下载线,这样我们就不用去买编程器,可省下一笔钱。本人建议选STC89C52,这样可用串口下载程序,也可做串口通讯实验。具体这些东西网上和书上都有,我就不说了。



来说两句吧