「连载15」模块化编程|学单片机做四轴飞行器项目故事

「连载15」模块化编程|学单片机做四轴飞行器项目故事STC15 单片机》为配套视频, 由清华大学出版社权威出版, 并且分别是 STC 官方大学计划和高校

大家好,欢迎来到IT知识分享网。

《 STC15 单片机实战指南( C 语言版)》 一书以一坚科技研发的飞天三号( FSST15-V1.0)实验板为硬件平台, 以《 深入浅出玩转 STC15 单片机》为配套视频, 由清华大学出版社权威出版, 并且分别是 STC 官方大学计划和高校高性能联合实验室推荐教程和视频, 版权归作者和清华大学出版社所有。

本资料以个人学习、 工作经验以及宏晶科技单片机技术为素材, 以单片机初学者、单片机项目开发者为对象, 教大家如何走进单片机,继而达到开发工程项目(如:四轴飞行器设计,多功能收音机等)为目的。 限于时间和水平关系,资料中难免有过失之处,望各位高手批评指教,多多拍砖,拍累了,你们休息,我继续上路。

现已连载的方式免费共享于电子发烧友网,供单片机新手们参考学习,可以自由下载传阅 ,但未经作者许可,不得用于任何商业目的, 转载请注明出处。

作者 | 残弈悟恩

编辑 | Garen

当一个项目小组做一个相对比较复杂的工程时,就需要小组成员分工合作,一起完成项目,意味着不再是某人独自单干,而是要求小组成员各自负责一部分工程。比如你可能只是负责通讯或者显示某一块,这个时候,就应该将自己的这一块程序写成一个模块,单独调试,留出接口供其它模块调用。最后,小组成员都将自己负责的模块写完并调试无误后,由项目组长进行综合调试,像这些场合就要求程序必须模块化。模块化的好处非常多,不仅仅是便于分工,它还有助于程序的调试,有利于程序结构的划分,还能增加程序的可读性和可移植性。

对于刚入门的读者来说,还没发现前面第三章程序的不完美之处,程序当然没有错的,只是在移植、管理方面,存在一些不足,因为部分程一遍又一遍、一页又一页的再重复,鉴于这些不足之处,从本书的开始阶段,笔者就计划将模块化编程列为一项艰巨而有持久的战役,请读者做好准备,跟随笔者一起揭开这块神秘的面纱,一窥其真面目。

4.1 夯实基础——数值的换算以及逻辑运算

单片机的学习中,常常需要和数值、逻辑运算打交道,原因是单片机在某种程度上可以归结到数字电路中,读者应该知道,数字电路中,数值的计算、存储和取值都是以“0”和“1”的形式来体现。所以在真正开始单片机学习之前,掌握基本的数值运算和逻辑运算是必不可少的。

4.1.1 各进制之间的换算关系

二进制、十进制、十六进制。八进制,不常用。敢不敢相信,大家看到电影、图片或听到歌曲在电脑中都是用二进制存储的,同理,学习单片机时,在 12864 上所显示的图片也是二进制存储的。因为电脑、单片机这些“大傻瓜”不认识别的,只认识“1 和 0”,所以得学好二进制,乍一听,好像不是很难,1、0 小学生都认识的。十进制数有 0~9,共 10 个,逢十进一;二进制数 0、1 共两个,逢二进一;十六进制数有 0~9、外加 A~F(a~f),总共 16 个数,逢十六进一。二进制书写前需加 0b,十六进制需加 0x。十六进制数是和四为一,就是 4 个二进制组成一个十六进制数,于是它的每一位有0b0000~0b1111 共计 16 个值。这三个数之间对于关系见表 4-1 所示。

借此为大家推荐一本王玮编著的《感悟设计——电子设计的经验与哲理》一书,我甚是喜欢,他里面写的好多东西,确实值得我们好好学习,虽然有些内容我还没涉及到,但这丝毫不影响我对这本书的喜欢。这本书除了理论、经验,还有他发明的指算(二、十进制之间的转换)。我就引用到这里,希望能和大家共勉。

一只手掌 5 个手指,假设我们规定拇指、食指、中指、无名指、小指分别代表 1、2、4、8、16 这 5 个数(顺序倒过来或搅乱也可以,规定好就行),那么,在 0~31 以内的各个整数都可以通过手指的屈伸来表示了。例如划拳(民间喝酒的一种方法)出的二,就是十进制数5(1+4)。通常做的“OK 手势”表示的就是 28(4+8+16),如此等等。这么一说大家可能会觉得没意思,但当大家用熟练了,就会觉得很好玩。

表 4-1 部分二进制、十进制、十六进制之间的对应关系

「连载15」模块化编程|学单片机做四轴飞行器项目故事
「连载15」模块化编程|学单片机做四轴飞行器项目故事

4.1.2 数字电路和 C语言中的逻辑运算

二进制的逻辑运算,又称其为布尔运算。无论 C 语言中,还是数字电路中,逻辑运算不可缺。在逻辑范畴中,只有“真”和“假”。先来目睹一下 C 语言中的逻辑运算,“0”为“假”,“非 0”为真,不要理解为只有 1 是“真”,2、-43、100 同样也是真。

(1)逻辑运算(是按整体运算),通常叫做逻辑运算符。

&&(and):逻辑与,只有同为真时结果才为真,近似于乘法。

||(or):逻辑或,只有同为假时结果才为假,近似于加法。

!(not):逻辑非,条件为真,结果为假,近似于相反数。

(2)逻辑运算(按每个位来运算),通常叫做位运算符。

&:按位与,变量的每一位都参与(下同),例如:A = 0b0101 1010,B = 0b1010 1010,则 A & B = 0b0000 1010。

|:按位或。则 A | B = 0b1111 1010。

~:按位取反。则~A = 0b1010 0101。

^: 按位异或,异或的意思是,如果运算双方的值不同(即相异),则结果为真,双方值相同则结果为假。这样 A^B = 0b1111 0000。

数字电路的逻辑运算。读者以后看资料或数据手册时,经常会遇到一些逻辑运算符号,笔者列举到这里,以便读者以后查阅。所有符合如表 4-2 所示。

表 4-2 数字逻辑运算符合

「连载15」模块化编程|学单片机做四轴飞行器项目故事
「连载15」模块化编程|学单片机做四轴飞行器项目故事

4.2 简述单片机开发流程

世间万物、世间琐事,无一不需要遵循流程,更无一离不开工具。做单片机项目同样要遵循一定的开发流程,同样需要一定的工具,由于单片机的生产厂家不同、型号不同、开发工具有所不同,从而导致开发流程有别,但基本的软件开发环境必须掌握,开发语言的基础必须有,硬件环境不可缺,接下来简要说明一下单片机的开发流程,顺带介绍各个环节所需的开发工具。具体项目的开发流程和注意事项,我们将会在第 20章学习,因为对于刚入门的菜鸟来说,谈项目开发有点不切实际,因此读者还是先打好基础,后面章节有更精彩的知识等着你。

1.产品需求

根据市场需求或公司安排,确定开发什么产品。开发人员需要和产品需求方沟通,明确客户的需求,对即将开发的产品有一个总体的印象。

2.产品立项

这时产品已经确定要开发,需要立项,开发人员可能要填写立项相关文件,这个可能涉及项目奖金哦…

3.设计机构

一般由高级系统架构师完成整个产品的系统设计,并做系统结构框图。接着选择处理器,是 8位、16位还是 32位的,之后软(软件指上位机应用软件,不是单片机内部程序)、硬件分工,确定各个工程师的任务。

4.攻关技术难点

这里需要技术牛人(软硬通吃)出马了,就是把整个系统比较难或不能确定的部分,先进行研究实验,以确认不会因为这些部分导致项目无法实现。

5.硬件设计

根据功能确定显示(用液晶还是数码管)、存储器(空间大小)、定时器、中断、通信(RS-232、RS-485、USB)、打印、A/D、D/A及其他 I/O口操作。接着绘制原理图、结构图、PCB。最后选购元器件、焊接电路板、组装、测试。这部分是硬件工程师的强项了。

6.软件设计

终于要编程了,到单片机工程大显身手的时候了。建立数学模型,确定算法及数据结构;进行资源分配及结构设计;绘制流程图,结合流程图设计并编写各子程序模块;最后仿真、调试、固化。

7. 样机联试

这时软、硬件结合起来调试。测试硬件系统各个模块工作是否正常,软件运行是否稳定、能否满足要求;进行一些老化、高低温测试,震动实验等。

8.小批量试产

这时,产品都搞完了,不过开发人员需要提供测试报告、使用说明等文档;制定产生工艺流程,形成工艺,进入小批量生产;接着送样或投放市场,让客户检验是否是金子;依客户反映来升级产品。

9.产品量产

产品量产,并销售于市场,若有问题,一般由售后来处理,若搞不定,还得开发人员出马,毕竟开发人员熟悉产品呀。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/48226.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信