「连载15」模块化编程|学单片机做四轴飞行器项目故事
《 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 部分二进制、十进制、十六进制之间的对应关系
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 数字逻辑运算符合
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.产品量产
产品量产,并销售于市场,若有问题,一般由售后来处理,若搞不定,还得开发人员出马,毕竟开发人员熟悉产品呀。
详尽PPT课件初窥STC15系列可仿真单片机项目化应用教程(C语言)
机工教育原创出品,欢迎转发到朋友圈,其他公众号未经授权请勿转载。
STC15系列可仿真单片机项目化应用教程(C语言) 《STC15系列可仿真单片机项目化应用教程(C语言)》(ISBN:978-7-111-52901-9),作者:顾菊芬,赠送免费电子课件、习题答案详解、模拟试卷及答案等。复制链接查看专题详情: http://www.cmpedu.com/zhuanti/2020/zt2004/202004_plc/202004_plc.html
下方仅展示部分课件👇
相关书籍点击 上方图片 查看详情
书名:STC15系列可仿真单片机项目化应用教程(C语言)
作者:顾菊芬
ISBN:978-7-111-52901-9
定价:36.00元
本书特色:
本书是高职高专“十三五”规划教材,配套免费电子课件、习题答案详解、模拟试卷及答案等。
资料获取方法:
1、分享本文章到朋友圈(全部可见)或者相关专业群
2、加下方小编微信
3、把分享朋友圈(群)截图发送给小编即可获取资料
— 样书获取方式 —
1. 登陆机工教育服务网(www.cmpedu.com)注册教师会员自助申请;
样书自助申请流程:http://www.cmpedu.com/help/yssq.html
2. 查看下方图片,联系身边的教学服务人员获取。 为方便各位老师分享、沟通、交流,机工教育搭建了一些教师交流微信群,以便大家共同进步,目前有如下各群:注:1、入群仅限高校教师 ,为确认您的教师身份,请提前在机工教育服务网www.cmpedu.com注册教师会员,以便快速拉您入群。2、目前大部分群都已超过百人,无法直接扫码进去,想进群的老师请加小编微信,我们拉您入群。每位老师仅限加入一个与自己课程最相关的 教师群。请加小助手微信(添加时请务必备注学校+姓名+所授课程+想加入群名 ,仅限相关专业教师 ),拉您入群。相关问答
为什么stc 15单片机 延时不对?如果不要求特别精确,按照单片机的指令周期和系统时钟频率,差不多估计下for循环需要执行多少次,然后用这个延时函数去控制翻转IO口,拿示波器测测周期,然后再...
stc 15 和51有什么区别?哪个好?假如给一个 单片机 stc90c51,它的每个字母都代表什么?stc90系列单片机好像是为了代替89系列单片机推出来的,因为89系列单片机加密比较容易解密,所以推出了解密成本更高的90系列单片机,90系列的单片机和89系列的功...
stc 15单片机 不用外部晶振可靠吗?只用内部晶振对串口通信有影响吗?单片机可以不用外部晶振,只用内部晶振对串口通讯有一定影响,因为内部晶振是RC电路,温度影响较大,所以波特率是不稳定的。单片机可以不用外部晶振,只用内部晶...
STC 15 系列哪一款 单片机 晶振能达到30M?STC15系列单片机晶振频率0-35MHZ,由于是1T单片机,最高频率35MHZ相当于普通51单片机的420MHZSTC15系列单片机晶振频率0-35MHZ,由于是1T单片机,最高频率35MHZ相....
STM8和STC 15 这两个系列的 单片机 哪个比较好?从性能和价格优势,STM8是首选,STC15价格比较STM8高,资源也没有STM8多自己可以下载STM8手册和STC15的手册对比一下看看。从性能和价格优势,STM8是首选,STC15价...
51 单片机 代码能用于stc 15 系列吗?完全可以用,后者功能更多,速度更快,但管脚排列不同。与外部设备通讯的时序需要调整。STC15W4K32S4系列单片机可直接通过电脑USB接口进行ISP下载编程,集成了...
stc 15 w204s是什么 单片机 ?是增强型51单片机,1T单周期,速度为原来的51的6-7倍,宽电压、高稳定、难破解,集成了FLASHROM/ADC/PWM/内震荡/复位等电路,新的15系列不需任何外围元件,是真...
15单片机 如何使用串口2进行串口通信?15单片机使用串口2进行串口通信的方法如下:15单片机可以通过配置串口2的相关寄存器来实现串口通信。串口2是15单片机上的一个硬件模块,可以通过设置相关寄存器...
SOP16封装的 单片机 ,第1脚是VCC,16脚是GND,7脚和 15 脚是ADC,是哪个型号的 单片机 ?这个基本上确定是自己订做的IC,这个需要研究好电路的功能从新设计电路。这个基本上确定是自己订做的IC,这个需要研究好电路的功能从新设计电路。
stc 15 w204s 单片机 可以用其他型号代用吗?可以代替。不过at的芯片需要专门的下载板哈,stc只需要个串口就可以了,至于芯片本身是完全兼容兼容的哈可以代替。不过at的芯片需要专门的下载板哈,stc只需要...