产品选型

单片机混合编程 面向对象过程编程思路

小编 2024-10-06 产品选型 23 0

面向对象过程编程思路

数学原理及场景分析

两大编程思想

1.面向过程

2.面向对象

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。

举个栗子:将大象装进冰箱,面向过程做法。

1.打开冰箱门 2.大象装进去 3.关上冰箱门

面向过程,就是按照我们分析好了的步骤,按照步骤解决问题。

面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。

面向对象是以对象功能来划分问题,而不是步骤。

举个栗子:将大象装进冰箱,面向对象做法。

先找出对象,并写出这些对象的功能:

1. 大象对象

l 进去

2. 冰箱对象

l 打开

l 关闭

3. 使用大象和冰箱的功能

我们要先找出里面的对象,写出这些对象里面有什么功能,是以对象的功能来实现业务,最后把功能使用起来,以对象为中心

在面向对象程序开发思想中,每一个对象都是功能中心,具有明确分工。

面向对象编程具有灵活、代码可复用、容易维护和开发的优点,更适合多人合作的大型软件项目。

面向对象的特性:

l封装性

l继承性

l多态性备注:不同时刻体现出不同的状态;

面向过程 面向对象

l 优点:性能比面向对象高,适合跟硬

件联系很紧密的东西,例如单片机就

采用的面向过程编程。

l 缺点:没有面向对象易维护、易复用、

易扩展

l 优点:易维护、易复用、易扩展,由于

面向对象有封装、继承、多态性的特性,

可以设计出低耦合的系统,使系统 更

加灵活、更加易于维护

l 缺点:性能比面向过程低

舌尖上的前端面向过程的方法写出来的程序是一份蛋炒饭:

优点:把白米饭的香味与鸡蛋的鲜味完美融合,让舌尖的味蕾欲罢不能(性能好)。

缺点:如果把饭炒好了,女朋友说今天不想吃鸡蛋,那这份饭就白炒了因为鸡蛋和白米饭已经混合在一起了(难以维护)

面向对象写出来的程序是一份盖浇饭:

优点:准备一份白米饭 再准备饭汁,如果女朋友说今天想吃番茄汁的,做份番茄汁浇上去就好了,突然又说想吃辣椒味的 就做份黑椒味(易复用)

缺点:需要自己搅拌 味道才会更均匀一些(性能问题)

自学单片机第二十三篇:混合输入

我们通过学习,基本掌握了一般的按键输入检测,也了解了在检测时的注意事项,对于输入的程序,算是入门了。接下来我们就输入方法,再说下混合型输入,就是不同输入方式的结合。

其实就混合而言,前边已经做了讲解,多点和单点的结合,已经算是比较复杂的了,对于初学者,这类处理方法,可以完成很多实际应用的处理了。但是考虑到一个端口的复用和其他原因,我们会就这类按键的操作,再做一次详细的讲解。

在单片机中,P3口一般都有第二功能,例如我们的P3.0/P3.1就是程序刷写的端口,使用时,非必要情况下,不用这两个,避免造成干扰。P1就比较单纯了,标准的输入输出,P2有时会作为总线使用,P0我们很少使用,不是不用,是因为这个端口没有上拉电阻,使用时需要自己添加,所以一直没有用,添加上拉电阻后,也是可以使用的。今天,我们就P1来讲解如何通过一个端口,既可以控制输入,又可以控制输出。为以后的实际应用做打算。

我们假设,P1口的前四位是输入,后四位是输入输出通用。

因为输入输出的复用,就需要对端口的操作做出一些改变,因为还没有说到中断,所以我们就延时函数来解决这些问题,相对于复杂高速场合,后期的中断讲解完会更加方便处理。

遇到问题,先分析处理思路,然后再上手。就这个应用而言,P1八位都是可以进行输入检测的,然后高四位又同时可以输出,我们明白,一个io就一根线,肯定是无法完成输出的同时进行输入操作的,那如何完成呢?这就需要引入一个思想,分时复用,就是在整个时间段中,假设有两分钟,前一分钟检测输入,后一分钟完成输出。

之前我们已经说过,动态显示的刷新时间在10ms以内就比较完美了,人眼基本看不出闪烁,那么这个刷新时间,就可以成为我们输入检测的空档期。这是我们的操作思路,接下来我们根据这个思路来写下程序。

我们的处理方式是,先置1,然后把按键值送给新的变量,判断此时按键是否按下,若按下,则端口的值就不会全为1,此时执行处理函数,判断当前的键值符合什么输出,若符合某一条件,则将输出送给变量m,然后跳出判断,m把数值送给p1完成输出,为了让人眼可以看到,此时需要延时一段时间,我们延时了6ms,小于10ms,完全可以,然后会继续从头开始,往复循环判断键值,如果此时全为1,则就不进入按键处理程序,所以此时m的值不会改变,于是就在结束时继续赋值给P1,这样P1就可以显示我们需要输出的结果,同时,可以作为按键使用。

然后先用软件仿真试一下效果,虽然软件仿真有诸多不便,但是好在省劲不是。可以随时查看自己明显出错的地方。

对电路稍作修改,把四个LED灯泡接到了P1的高四位上。

打开仿真,首先看到,所有端口都是低电位,我们从程序中可以看出,我们定义了输出变量m,在定义时,变量m的初始值是全为零的。于是就输出了0x00.我们按下P1.0测试下。

观察发现,没有反应,难道是因为我们两端都是低电位,所以无响应?那我们直接测试我们设置好的开关位试一下。我们处理函数的第一个开关是:0xf7,也就是1111 0111,就是P1.3这个io,输出响应为:0x7f,也就是0111 1111,就是P1.7为低电位。

当按下P1.3时,P1.7熄灭,其他灯点亮,接着我们测试下复用的io,我们按下P1.7试试,程序结果是0x6f,就是0110 1111,如果程序扫描的正确,那么即使现在P1.7是低电位,其实在某个很短的时间内,它是被拉到了高电位的,我们程序中有那么一瞬间将其置1了。

程序响应符合预期,说明我们的操作时可以的。这样通过这种操作我们可以节省端口的数量,以达到更多的功能。不过需要说明的是,对于高速场合,或对响应要求是实时响应的场合,此操作不适用,建议使用中断来进行。一般的设备还是没有问题的。

我们这个仅是提供一种方案,说明下单片机有很多种应用手法,限制我们使用的不是硬件,而是我们的思想。我们开发硬件和软件,一方面要严格遵守规则,另一方面又要有天马行空的想象力,这样才能创造出更多更好的东西。死板教条是没有出路的。

相关问答

单片机 编程 ?

单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的...

单片机 除了可以用汇编和c语言 编程 ,还有其他什么 编程 语言吗?

除了C和汇编,超子还接触过使用Arduino、Labview、Python以及Lua对单片机进行程序开发。不过这些相对比较小众,没有普适性。一、ArduinoArduino应该算是一种对...

单片机 C51的汇编语言 编程

pragma只是用于之间潜入asm代码,不是变了相的混合编程技术,它不能直接调用其他文件(注意是文件)中的函数。真正意义上的多模块编程,每个模块之间都...

单片机 C51的汇编语言 编程

pragma只是用于之间潜入asm代码,不是变了相的混合编程技术,它不能直接调用其他文件(注意是文件)中的函数。真正意义上的多模块编程,每个模块之间都...

是不是所有的高级 编程 语言都能编译成汇编语言?

程序源码被翻译成机器码之后才能被电脑执行。通过汇编和反汇编,汇编语言和机器码可以相互转换。我的回答中就只说机器码了。按照执行方式大致可将程序语言分成三...

如何利用 单片机 控制步进电机精确定位?

二、永磁式步进电机的控制下面以电子爱好者业余制作中常用的永磁式步进电机为例,来介绍如何用单片机控制步进电机。图1是35BY型永磁步进电机的外形图,图2是该...

proteus主要有4大结构体系即是什么?

具有4大功能模块(1)智能原理图设计(ISIS)丰富的器件库:超过27000种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;智...

c8051f120 单片机 是什么公司?

SiliconLaboratories(芯科实验室)成立于1996年,位于美国德州奥斯汀市,是一家专业研发设计类比电路及混合信号IC的公司,为成长快速的通信产业设计等提供广...

智能穿戴设备发展的现状是怎样的?

在小米科技率先布局AIoT市场并坚持“手机+AIoT”的双引擎战略之后,包括华为在内的其他手机厂商也开始建立并丰富自家的AIoT生态,不过目前只有小米科技推出了自...

什么是c语言程序的制作?

C语言是CombinedLanguage(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语...

猜你喜欢