查看: 704|回复: 4

天问Block库文件制作详解

[复制链接]

17

主题

42

帖子

466

积分

版主

Rank: 7Rank: 7Rank: 7

积分
466
发表于 2021-1-16 17:56:16 | 显示全部楼层 |阅读模式
本帖最后由 zly188 于 2021-3-5 15:48 编辑

天问Block图形化编程,大大降低了学习单片机开发门槛,只要用鼠标拖动模块就能完成编程,图形化模块自动生成的代码为专业C语言代码,可以通过在线导出keil工程,还有一些优秀性能不一一表述。
面对复杂的元器件,不可能只用一套图形块编程实现。比如液晶显示有1602,4004,0802,12864...,那就需要开发这些器件的驱动库,才能实现图形化编程。
一个库文件的实现有以下几个部分:

库文件编程界面

库文件编程界面
①是库的中文名称;②是函数图形块;③是驱动所需的头文件;④是图形块生成的代码。

下面就以lcd1602为例通过库开发工具,完成以上库的制作工作。
库的添加和库开发工具,通过编程界面左下角的“添加扩展”按钮进入的。点击“添加扩展“按钮后,出现下面界面:
库文件2.png
①是库封面;②库项目链接;③库的中文名称和介绍;

在”扩展“界面,顶部工具栏有“官方库”、“用户库”、“新建库”。
“官方库”就是通过官方验证发布的库,编程时可以直接加载使用。
“用户库”是用户自己编写的私有库,上传加载使用。
“新建库”就是库开发工具。
上图所示:每个库封面都有一个封面图,项目链接,中文名称和介绍。其中封面图分辨率最好设置成:262*150。

因此新建库前要规划好,准备好以下文件和内容:
1.分辨率为262*150的封面图(格式jpg\png)一张(如没有图片,将用内部默认图片)。
2.准备好“xxx.h" 驱动文件,格式可以从“天问Block"的字符编程模式中查看(如无驱动文件,确保生成代码内置库文件有)
3.规划好库的中文名称,英文名称,库的介绍文字。
4.规划好库里要使用的图形块名称(英文)和调用函数生成的代码。

根据以上要求:规划库的中文名称为“液晶屏测试”,英文名称为“lcdtest_lib”,介绍文字“液晶库制作测试使用”。图形块先制作一个液晶屏初始化(模块名称lcdtest_init),程序模块内容:“液晶屏初始化 RS xx RW xx E xx 数据口 xx”,生成代码:;"lcd1602_init();”。
头文件采用原库中的“lib/C51_lcd1602.h”,适用芯片:C51。
lcdtest_lib.png
库封面图片文件

点击“新建库”,开始我们制作旅程:
image-20210201193516878.png

1.先修改模块名称、外观、连接方式、颜色。
image-20210201195728603.png

2.添加模块的输入节点:假输入文本、值输入rs\rw\e\port,如图所示。
image-20210201200052307.png

3.给每个输入节点,添加文本:RS、RW、E、数据口,如图所标。
image-20210201201326015.png

4.如下图所示声明中添加“声明”模块,点蓝色设置按钮添加5个option,分别用于4个声明和1个头文件声明。
image-20210201201548970.png


第一个声明是“#define LCD1602_RS”:
Blockly.Arduino.definitions_['define_rs'] = '#define LCD1602_RS '+value_rs;
其中'define_rs'是自定义内容,等于后面是生成代码的内容,value_rs是rs输入框的值,最终可以生成代码:#define LCD1602_RS  P1_0。注意'#define LCD1602_RS ',RS后面有空格。不然生成代码会是:#define LCD1602_RSP1_0。

第二、三、四个声明原理和第一个声明一样:
Blockly.Arduino.definitions_['define_rw'] = '#define LCD1602_RW '+value_rw;
Blockly.Arduino.definitions_['define_e'] = '#define LCD1602_E '+value_e;
Blockly.Arduino.definitions_['define_port'] = '#define LCD1602_Data '+value_port;


第五个是头文件声明,语句如下图:
Blockly.Arduino.definitions_['include_lcd'] = '#include "lib/C51_lcd1602.h"'

在代码部分输入:'lcd1620_init();//custom code\n'

5.各部分声明、头文件、代码生成输入后如下图所示:
image-20210201202248537.png

至此图形模块生成和代码生成全部设置完成。


6.PNG

要生成如上图所示的默认值和下拉引脚值,还需要设置XML文件实现。


点击“生成库”按钮后,弹出生成库对话框:

image-20210202093031643.png


再点击XML文件“编辑”按钮,弹出XML编辑页面:

image-20210201202539624.png


在图示位置插入3个引脚,和1个端口,并修改值输入框名称:
image-20210201202547055.png

最终修改后结果如下:
11.PNG
保存XML文件。
在生成库对话框,按要求输入下面内容:
image-20210202093228921.png


点击“确定”按钮,生成库"lcdtest_lib.zip"。
lcdtest_lib.zip (43.56 KB, 下载次数: 10)
至此在“天问Block”中导入这个库,就可以使用这个库了。



为了方便库的制作,可以使用以下功能:
  • 可以使用模块-导入功能,在已有模版的基础上进行修改。
  • 可以使用导入库功能,在已有库的基础上进行修改。
image-20210202151438780.png

导入官方库:可以查看官方制作的库,并在其基础上修改制作自己的库。
导入本地库:可以导入之前制作的库。
image-20210202152900770.png

此处以导入本地库为例(导入官方库情况类似):
点击导入本地库,导入之前生成的库"lcdtest_lib.zip",点击生成库,可以查看配置信息。
image-20210202203432706.png

点击查看导入库XML,可以参考编辑XML。
image-20210202203725217.png

然后点击编辑,可以在编辑同时查看导入库XML。
image-20210202203825340.png

有了这些功能,就可以方便的制作扩展库了。


C51_delay.zip

631 Bytes, 下载次数: 4

回复

使用道具 举报

2

主题

11

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2021-1-17 00:34:30 | 显示全部楼层
牛b
回复

使用道具 举报

2

主题

11

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2021-1-17 00:35:55 | 显示全部楼层
睡觉明天在研究。
回复

使用道具 举报

0

主题

1

帖子

18

积分

注册会员

Rank: 2

积分
18
发表于 2021-1-20 21:20:02 | 显示全部楼层
非常期待后边的作品
回复

使用道具 举报

0

主题

1

帖子

18

积分

注册会员

Rank: 2

积分
18
发表于 2021-2-13 11:17:03 | 显示全部楼层
:lol:lol:lol:lol
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2021-3-6 02:36 , Processed in 0.312330 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2021 Comsenz Inc.

快速回复 返回顶部 返回列表