技术文档

单片机 数据手册 学好单片机,看懂这个就够了

小编 2024-10-12 技术文档 23 0

学好单片机,看懂这个就够了

五年之前

那是在大学期间,距离现在大约有4年了吧,教我们单片机的老师要离我们而去了,因为她要去她的城市教书去了。怎么形容她呢?那是一个风度翩翩,很有才华、做事很干练不像老师的女老师。她走的时候要搬行李,我们几个学习成绩好的一块去送的她,可能是送别的时候都爱下雨吧,那天也不例外,下起了绵绵小雨,在送老师走的时候,我问的也是这个问题:“我看我们现在的教科书如同看天书,有什么好的书籍推荐吗?”老师只是很随性的一笑,说:”我们现在用的这一本书就不错,单片机之类的书都大同小异“,当时也并没有深究,我们当时用的就是标准的规中规矩的教科书,名字叫做《XXXXX基础》,具体名字就不说了,免得被当广告。

五年之后

现在想想当时老师所说的,完全就是我现在所想的,在五年之前真不晓得思想会有这样的转变,归根到底是我对51单片机深刻的理解,还有自己的工作经验和积淀,你让我推荐学习单片机的书籍,别说几本了,就是几十本,我都能给你脱口而出,像郭天祥的《51单片机C语言教程》,还有其他的《51单片机项目教程》、《实例解读51单片机完全学习与应用》等等、这些都是不错的单片机教程书,我也全都读过,如果你让我就给你推荐一本,那么很抱歉,我是真不知道哪一本更好一些,根本原因是这些书都是根据51单片机的官方数据手册所编写的,你以为那些作者凭空就能出书?关于单片机所有的用法数据手册上都解释清楚了,对于刚入门的同学可能不适应,但数据手册是最具有权威的参考资料,像我现在工作的书柜上关于专业的书很少有了,为什么呢?现在有哪里不清楚的都是去访问他的电子版的数据手册,关于51单片机的数据手册我也都给你们打包到云端了,私信笔者“数据手册”,收到之后秒回信息。

数据手册?

至于是看书还是数据手册,这得取决于你,如果你只是想玩玩,那么从我上面推荐的书里面随便选择一本对你来说就足够了,如果你以后想从事半片机的工作,读那些作者编著的书是远远不够的,或许书上已经把你要知道的已经很清楚了,但如果换一个单片机,我敢保证你照样一头雾水,唯有我们掌握了单片机的数据手册,再去读别的单片机的数据手册,你会发现都是一个套路,比如你对51单片机的数据手册已经了然于胸,我现在让你用STM32写代码,这时候我们打开STM32的数据手册写程序对我们来说是信手沾来的。

比51更优的选择

如果你是从来没有接触过单片机的新手,或许Arduino比51更适合你,为什么这么说呢?曾经带过一个要学习单片机的新人,本来他是对单片机不感兴趣的,为了让他对电子提起兴趣,我就是让他学的Arduino做的项目,不到一个星期,教会了他点亮LED、中断、红外、舵机、自动寻迹小车、WiFi小车等一系列高级项目,要知道这些在51上做出来至少得花费半年的时间。在中国提起Arduino,更多的人对他的映像是不专业,或者建高楼于浮沙,他们这么说不是没有道理,这只是因为Arduino把软件和硬件整合的天衣无缝,比如他的单片机的引脚,还有他的库编写的简洁至极。可以这么比喻,51是手动挡的汽车的话,那么Arduino就好似全自动档的汽车,即使我们不懂各种引擎、离合依旧可以轻松驾驶,难道你们会说开自动挡的人不会开车。STM32何尝不是呢?为什么STM32也是库函数配置,之所以人们很少说他不专业,是因为STM32的库更加的繁琐,这就是我们中国人的性情。当Arduino在全球大火的时候,在中国招致而来的确是口诛笔伐。

当我在很小的时候,一直期望从事制造出电脑、手机之类的高端工作,然我的梦想实现之后,却期望着在浩瀚无垠的草原上沐浴春风,在美丽的夜空下遥望星空,感受大自然的花香鸟语,事实永远和我们期望的永远不一样,就连上个月几十年不遇的蓝月亮都没有观看,为了赶项目,我都是偷偷的在手机上看直播,想想这是何等的悲催,想想在我们工作之后又如何谁能保持初心,现在想想学习一门知识的时候那才叫幸福,等你把需要的知识学到尽头,你会发现自己走出半生,不是少年!

初学单片机,组合函数有参照,数据手册是样板

通过前面的学习,我们已经初步了解了24cxx器件手册里的部分内容,也初步了解了编写程序函数语句的方法,今天我们看如何把它们组合起来,形成一个个完整的读写模式代码,然后就可以运用到我们的各种程序里面去了。

下面我们举例编写两个函数,一个是字节写模式:

图1.字节写模式函数写法

通过上面的图,我们可以看出,编写函数其实就是“照猫画虎写程序”,似乎有点简单?我们在网上下载别人的代码看的时候,包括很多非常普及的教程,我们会发现很多语句都是没有实质意义的,编程者只是想象那里应该有一条延时,其实真正是否需要并不确定。当然我们自己也避免不了经常写出一些无效的语句,这里只是想说明我们写函数语句的根据是器件手册。在后面调试过程中,还需要根据实际情况做出修改。

下面再对照时序图编写一个随机读模式的函数:

图2. 随机读模式函数写法

上图中Set_WriteCommand和Set_ReadCommand是两个带参数的宏定义,用到了我们前面文章中提到的知识,定义如下:

#definei_BusAddr_U1 0x00

// #definei_BusAddr_U2 0x04 //总线接多个从机(24cxx)

#define Set_WriteCommand(uiAddr) (0xa0 | ((uiAddr & 0x0100) >> 7) | i_BusAddr_U1 << 1) //24C04

#define Set_ReadCommand(uiAddr) (0xa1 | ((uiAddr & 0x0100) >> 7) | i_BusAddr_U1 << 1) //24C04

因为24c04的地址超过了一个字节(0xff),所以int型的地址变量uiAddr中的高位存储了24c04的高位地址,通过公式转换把它赋值到控制字节的bit1位,也就是A0的位(1, 0, 1, 0, A2, A1, A0, Ack)。

i_BusAddr_U1是硬件地址(A2,A1,A0)。(24c04的A0硬件管脚无效,程序中代表高位地址。)

另外,在不使用多个从机的情况下, i_BusAddr_U1就用不到,单硬件管脚连接(VCC或GND)和程序控制字节里的bit位(1/0)要一致。

下面我们看一下几种读写模式的对比:

图3. 几种读写模式的对照

从上图中我们可以看出,只要有图表,然后有了翻译词典软件,即使不会英语,也能准确的使用英文器件手册。反过来,在我们查看翻译的过程中,不知不觉的熟悉了很多英文单词,以后会越来越熟悉那些曾经陌生的单词。这就是我们前面一篇文章中聊的学习单片机和英语的关系。

今天就聊到这里,下次我会把前面的函数放在一起,给大家贴出一个完整的测试程序,并通过实际电路测试。

感谢阅读以上小文,如果您喜欢,可以关注头条号/春天说,欢迎在评论区发表留言,如果您觉得有用,也欢迎分享给更多朋友。。。

相关问答

proteus怎么找 单片机 ?

要找出符合proteus要求的单片机并不困难。1.Proteus是一款专门用来设计嵌入式系统的软件,在软件中预设了多种单片机型号和库文件,方便开发者使用,不需要自己...

单片机 寄存器位查看方法?

看寄存器编程手册方法,凡是看到由软件清零的位我们直接设置为0,其他的寄存器的位根据具体功能或者根据他手册上的建议的功能实现2、如果碰到只读的,那么我们...

会51 单片机 ,如何快速学习使用STM32 单片机 ?

单片机其实都是相通的,会了一种单片机,对着数据手册查看一下寄存器的设置可以快速的入手其他型号的单片机。会51单片机,说明有单片机的基础,再去学习STM32单...

单片机 在通电后所有接口都是高电平吗?

单片机上电后,端口的状态一般为高阻态。在《单片机初级教程》这本书中是这样说的:复位后,P0~P3口输出高电平且使这些双向口皆处于输入状态。在MSP430单片机...

51 单片机 P0M0 |=(1<<3)什么意思?

P0M0是STC单片机用来设置IO状态的寄存器之一具体看STC的手册P0M0|=(1<<3)中1对应16进制是0x01向左移动3位变成0x40语句简化成P0M0|=0X40再简化P0M0=...

单片机 如何才能算掌握好?

对于题主的困惑,想要深入单片机,学得更明白的话,谈谈我是怎么做的吧。1.51入门单片机很好,已经明白寄存器原理就OK,说明程序中的代码对IO口在做什么事情至...

什么是51 单片机 的负载电容?

这里要说明一个概念,一般情况下,负载电容是指晶振的两条引线连接IC块内部及外部所有有效电容之和,可看作晶振片在电路中串接电容。一、什么是负载电容从石英...

正在做一个基于51 单片机 的rc522门禁系统, 数据手册 太难啃了,求大佬给点建议?

前一段刚刚搞了个非接触卡的项目,当时确实费了点功夫。网上有的例程还是可以参考的。有的例程直接移植就可使用前一段刚刚搞了个非接触卡的项目,当时确实费了...

单片机 供电电压会影响adc基准电压吗?

单片机供电电压的变化...单片机供电电压会影响ADC基准电压。ADC(模数转换器)是将模拟信号转换为数字信号的设备,其中基准电压是ADC进行模拟信号转换的参考电...

飞思卡尔9S12XS128 单片机 的中断向量和中断号,在芯片 手册 里...

第一章,1.6ResetsandInterrupts一般都是exception的章节里面,或者看BSP代码相关的.h里面看那些宏即可。工程下面有个文件夹“Includes”面包含文...

猜你喜欢