单片机c语言和图形化编程的区别

Python015

单片机c语言和图形化编程的区别,第1张

单片机可以用汇编语言编程,也可以用高级语言C、Basic编程,也可以用图形化语言编程。工业控制中普遍采用可编程控制器,其CPU模块内的微控制器往往是普通的单片机,而可编程控制器可以梯形图编程,或者用流程图编程。现在的智能教育机器人控制器均用单片机,而这些机器人的编程大多支持流程图编程。上海广茂达电子信息有限公司的能力风暴系列机器人采用VJC可视化流程图与C语言编程;中鸣机器人系列采用机器人快车软件编程,该软件也是可视化流程图与C语言编程;西米亚公司的乐高系列、博思威龙机器人、美国的VEX系列机器人、双龙公司的机器人DIY系列均可以采用可视化流程图与C语言编程。而这些机器人的控制系统核心均为单片机。由此可知,普通单片机的开发一定可以采用流程图编程。其实,机器人的流程图编制软件可以反过来作为相应单片机的编程软件。下面用一个实例详细说明单片机如何用图形化编程。

1 问题描述

某机器上,2台电机通过滚珠丝杠驱动工作台做顺序运动,如图1所示。用单片机系统控制2台电机,实现规定的顺序动作。当行程开关KX1压下时,电机D1带动卡紧机构右移,右移到撞块压下KX2时,电机D1停转,并且这种状态延迟一段时间T1。电机D2按以下顺序开始动作:当行程开关KX3压下时,电机D2带动工作台右移,工作台右移到撞块压下KX4时,电机D2停转,并且这种状态延迟一段时间T2;然后电机D2反转,带着工作台向左返回,工作台返回左侧压下KX3时,电机D2停转,同时电机D1反转,松开卡紧机构直到KX1压下,电机D1停转。

图1 卡紧机构和工作台的顺序动作动作

顺序如图2所示。

图2 动作顺序图

2 单片机控制系统组成

实现上述控制功能的方案有多种,如继电器接触器控制系统、可编程序控制器控制系统、单片机控制系统等。本文用单片机控制系统来实现上述控制动作,单片机控制系统的组成如图3所示。

图3 单片机控制系统结构图

单片机采用Motorola公司的MC68HC11E1。为了仿真实验的需要,单片机控制系统采用上海广茂达电子信息有限公司的能力风暴机器人ASUII中的主控制板。行程开关KX1~KX4用机器人上的碰撞开关来模拟,碰撞开关电路如图4(a)所示。电机D1、D2用机器人2轮的驱动电机来模拟,电路如图4(b)所示。其中,电机驱动芯片选用的是TI公司的SN754410。

图4 能力风暴机器人上的碰撞开关电路和驱动电机电路

3 VJC程序流程

使用能力风暴机器人的编程开发环境VJC1.6(可以从上海广茂达电子信息有限公司网站www.grandar.com上下载)编制、调试和下载程序。针对上述单片机双电机启停控制系统,用VJC1.6编制的流程图如图5所示。实际的单片机控制系统,只要把相应的传感器及其驱动电路、电机及其驱动电路更改成适应实际对象的元器件,就仍然可以用这种单片机控制板和相应的编程软件。更进一步的应用可以扩充软硬件系统。

程序总体为一循环程序。在每一次循环中,依次检测4个碰撞开关,按照电机的动作顺序要求启动或停止电机。程序模块的使用和变量的设置方法此处从略,请参见说明书,或与上海广茂达电子信息有限公司联系。

图5的流程图在VJC1.6环境下可以转化为C语言程序,具体可参看VJC1.6的使用。

在VJC1.6环境下编制的程序,无论是流程图还是C语言程序,均可以直接下载到单片机的闪存或EEPROM中, 这也是这种编程和开发方法受到人们欢迎的原因。但是目前这种方法仅用在以单片机为核心的智能机器人的程序开发之中,还没有专门用于单片机开发的这种图形化编程环境,相信不久的将来就会出现这种方法。

图5 双电机启停控制部分流程图

结语

这里单片机系统实现的功能就相当于一个可编程控制器系统,而且编程语言是流程图语言。可见,某些单片机系统略加扩充就可以成为一个可以使用流程图编程、C语言编程和汇编语言编程的功能相当完备的可编程控制器,从而与现有的可编程控制器在工业控制领域并驾齐驱。

打开APP阅读更多精彩内容

相关推荐

图形

面向STEM教育的图形化编程机器人

2023-01-03

16

Codecraft:嵌入式机器学习的图形化编程

2022-11-08

79

求openharmony图形化的编程软件

2022-05-05

0

Mixly图形化编程软件介绍

2021-09-01

0

最近做了个【51单片机积木式图形化中文编程软件/c语言代码生成器/电路仿真】

2021-08-08

0

浅析Mixly图形化编程软件

2021-08-04

0

Scratch图形化编程软件安装包下载

2021-06-18

752

labview图形化编程分享!

2019-10-20

0

【推荐】Arduino图形化编程软件

2018-05-13

0

LabVIEW图形化编程语言的编程范式

2015-01-19

0

图形化编程软件LabVIEW应用课程

2013-08-01

0

图形化编程

2013-05-24

0

Arduino教程_Arduino图形化编程教程_ArduBlock

2012-09-25

10969

cpuview图形化单片机编程软件下载

2010-04-09

5615

当千本樱遇上步进电机。。。

机械工程 电路设计分析

周广x

2022年02月11日 10:21:57

教你制作流水灯

电工技术 电路设计分析 流水灯

周广x

2022年02月10日 16:20:29

和同学制作特斯拉线圈,暑假特别的一天

元器件 芯片验证板 开发板

周广x

2022年02月10日 16:15:25

高中某UP用7分钟教你制作特斯拉线圈 - 1.高中某UP用7分钟教你制作特斯拉线圈

电气设备 电路设计分析

周广x

2022年02月11日 10:29:51

教你制作LM317扩流可调稳压电源,最大电流能到5A呢!

稳压电源 LM lm317 可调稳压电源

周广x

2022年02

在C语言编程中,图的创建和遍历:

#include<stdio.h>

#define N 20

#define TRUE 1

#define FALSE 0

int visited[N] 

typedef struct    /*队列的定义*/

{

int data[N]

int front,rear

}queue

typedef struct    /*图的邻接矩阵*/

{

int vexnum,arcnum

char vexs[N]

int arcs[N][N]

}

graph

void createGraph(graph *g) /*建立一个无向图的邻接矩阵*/

void dfs(int i,graph *g)   /*从第i个顶点出发深度优先搜索*/

void tdfs(graph *g)         /*深度优先搜索整个图*/

void bfs(int k,graph *g)   /*从第k个顶点广度优先搜索*/

void tbfs(graph *g)         /*广度优先搜索整个图*/

void init_visit()           /*初始化访问标识数组*/

void createGraph(graph *g)   /*建立一个无向图的邻接矩阵*/

{   int i,j

char v

g->vexnum=0

g->arcnum=0

i=0

printf("输入顶点序列(以#结束):

")

while((v=getchar())!='#')

{

g->vexs[i]=v       /*读入顶点信息*/

i++

}

g->vexnum=i            /*顶点数目*/

for(i=0i<g->vexnumi++) /*邻接矩阵初始化*/

for(j=0j<g->vexnumj++)

g->arcs[i][j]=0

printf("输入边的信息:

")

scanf("%d,%d",&i,&j) /*读入边i,j*/

while(i!=-1)              /*读入i,j为-1时结束*/

{

g->arcs[i][j]=1

g->arcs[j][i]=1

scanf("%d,%d",&i,&j)

}

}

void dfs(int i,graph *g) /*从第i个顶点出发深度优先搜索*/

{

int j

printf("%c",g->vexs[i])

visited[i]=TRUE

for(j=0j<g->vexnumj++)

if((g->arcs[i][j]==1)&&(!visited[j]))

dfs(j,g)

}

void tdfs(graph *g)      /*深度优先搜索整个图*/

{

int i

printf("

从顶点%C开始深度优先搜索序列:",g->vexs[0])

for(i=0i<g->vexnumi++)

if(visited[i]!=TRUE)

dfs(i,g)

}

void bfs(int k,graph *g)  /*从第k个顶点广度优先搜索*/

{

int i,j

queue qlist,*q

q=&qlist

q->rear=0

q->front=0

printf("%c",g->vexs[k])

visited[k]=TRUE

q->data[q->rear]=k

q->rear=(q->rear+1)%N

while(q->rear!=q->front)

{

i=q->data[q->front]

q->front=(q->front+1)%N

for(j=0j<g->vexnumj++)

if((g->arcs[i][j]==1)&&(!visited[j]))

{

printf("%c",g->vexs[j])

visited[j]=TRUE

q->data[q->rear]=j

q->rear=(q->rear+1)%N

}

}

}

void tbfs(graph *g) /*广度优先搜索整个图*/

{

int i

printf("

从顶点%C开始广度优先搜索序列:",g->vexs[0])

for(i=0i<g->vexnumi++)

if(visited[i]!=TRUE)

bfs(i,g)

printf("

")

}

void init_visit()   /*初始化访问标识数组*/

{

int i

for(i=0i<Ni++)

visited[i]=FALSE

}

int main()

{

graph ga

int i,j

createGraph(&ga)

printf("无向图的邻接矩阵:

")

for(i=0i<ga.vexnumi++)

{

for(j=0j<ga.vexnumj++)

printf("%3d",ga.arcs[i][j])

printf("

")

}

init_visit()

tdfs(&ga)

init_visit()

tbfs(&ga)

return 0

}

C语言编程,顾名思义,就是用C语言来进行计算机编程工作。

C语言是国际上广泛流行的,很有发展前途的计算机高级语言.它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件.

C语言是一种引用广泛,并且实现灵活的一种计算机编程语言,用C语言编出来的程序,可以在很多平台上运行,可移植性强。具体的C语言编程内容请参加C或者C++等。

树和图是两种常见的数据结构,在计算机技术应用十分广泛,他们也是两种思考问题的方式,常用于结局实际问题。树最直观的用途就是如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。在数据库系统中,树型结构也是信息的重要组织形式之一,一切具有层次关系的问题都可用树来描述。数据结构的图就是实际情况的抽象,即逻辑模型,然后通过计算机编程来解决问题。比如一个很复杂的地图,有很多城市,有很多路,如何找出最短路径呢?当然是用计算机来算了,你就得用图来表示等等,很多用途,如果你学习数学建模,你会经常遇到他们的好好学吧