一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

非代码类编程方法及使用该编程方法的手持编程装置与流程

2021-12-08 00:09:00 来源:中国专利 TAG:


1.本发明涉及手持编程器领域,具体的指一种非代码类编程方法及使用该编程方法的手持编程装置。


背景技术:

2.近年来,编程课和单片机已经成为家长之间交流的热门话题,单片机编程的普及,一方面得益于开源硬件与软件带来的低成本,另一方面,软件上的图形化编程模式显著降低了学习编程的门槛与难度。从工程科学的角度来看,一个优秀的工程师首先需要具备良好的专业基础,在大量的实际项目中积累经验,才可能在未来的工作中更加高效地进行产能输出。从机电一体化的角度来衡量,做出一件合格的产品原型必须具备四个能够协调运作的、相辅相成的子系统(即四要素):机械、电子、软件和控制系统。而编程技术又是实现软件控制所不可或缺的必要工具与技能储备,这一技能的学习过程通常需要依赖在计算机的程序编辑器上文本输入编写程序并运行查看结果,这一操作过程就需要专门学习,并且复杂而枯燥,如果有一种学习方式与看得见摸得到的硬件相结合而又上手简单必将能够达到更好学习的效果。
3.发明人自2007年起在欧洲一所大学从事电子专业的理论与实践课程教学,并于2015年起开始尝试将专业性较强的电子与程序类教育内容引入中小学教学环境,以课外科技课和兴趣小组的形式对学生进行特长培养。根据以往的教学经验,大多数处于接受全面学科教育与课外教育阶段的中学生(尤其是国内的中学),并不具备长期学习代码编程技能的时间和精力,尤其是在大多数情况下图形化编程只作为了解,真正的编程训练基本上要到大学阶段才能更加深入有序地开展。而且,现有的非专业与低龄段编程教育中的拖拽式图形化编程载体多为手机和平板电脑,其学习过程更类似于解谜益智类游戏,并不具备与软件行业方向上更加深入、专业和高效率的代码类编程衔接的可能性,也无法对接电子行业所广泛采用的实际的电子器件与模块,相比较而言在科技教育这一主线上缺乏必要的延续性与承接性。并且,代码类编程通常要求有一定的英语基础,传统编程教育对计算机及机房也有一定的依赖。
4.基于上述问题,本发明提出一种基于流程图编程思维较为简单易学的半专业化编程方式,具体为通过一种非代码编程的手持设备的形式来实现无需依赖于计算机的编程思维培养与学习,围绕使用教程与基础案例进行编程思维的推广与教学,以期实现编程思维能够有效面向各个年龄段群体,在不需要具备编程基础或掌握任何编程语言的条件下,能够有效开展编程学习并获得显著成效,旨在从专业角度帮助非专业人士对流程图编程思维进行学习,为将来进一步走向代码编程打下一定基础。
5.目前,现有技术中与本发明最接近的技术方案为各微控制器厂商所广泛采用的计算机汇编语言。汇编语言和它的编程模型能够以较为清晰的结构将功能流程图转化为程序,与本案主推的流程图编程思维相近似。
6.但是,汇编语言的学习课程通常设置在大学专科或本科的电子及计算机类专业的
二至三年级阶段,同时需要一定的数据手册学习基础。汇编语言的指令及参数通常为英文电子技术专业短语的首字母缩写,如microchip公司产品中的movsf、pushl,atmel公司产品中的rcall,mov等,对于非专业人士来说较为晦涩难懂。此外,汇编语言的学习通常需要较为专业的微控制器烧录机才能够将写好的程序烧录到单片机上,并至少需要使用面包板搭建较为专业复杂的外围电路才能使微控制器正常运行。因此现有技术中的计算机汇编语言及其所需专业背景知识不适用于非专业人士的编程教学


技术实现要素:

7.有鉴于先前技术的问题,本发明者认为应有一种改进的技术方案,为此设计一种非代码类编程方法及使用该编程方法的手持编程装置,其具体的技术手段为:
8.本发明提供一种非代码类编程方法,其基于运算元模型结合硬件操作实现了程序行的数字化运行,具体的其包含核心板,其上设置有核心板电路,其上包含:输入区域、运算区域、存储区域、输出区域、电源区域及扩展区域。其中,上述输入区域由若干按钮构成,其排布方式为手柄布局,其中一侧为上、下、左、右四个方向按钮,另一侧为确认和返回两个功能按钮。其中,上述运算区域由微处理器与周边电路构成,上述微处理器上内置有操作系统固件程序,其负责维持系统正常运行、读取并解释系统所连接的各硬件传感器的数值、利用上述运算元模型作为核心算法处理使用者输入的程序。其中,上述输出区域包含多个单色led灯、彩色led灯、蜂鸣器、以及液晶屏,其中上述液晶屏通过扩展插口与上述微处理器连接。其中,上述电源区域包含电源开关,micro usb接口,限流保险以及集成电路。其中,上述存储区域包含若干排母接口,用于连接外部存储模块。其中,上述扩展区域包含若干单排排母的扩展孔位,其布局采用上下两面非对称分布方式。
9.进一步的,上述输出区域包含一块编程操作屏以及一块信息显示屏,上述编程操作屏为lcd1602双行16字符液晶屏,上述信息显示屏为128x64点阵型oled液晶屏。
10.进一步的,上述操作系统固件程序采用核心板上的若干按钮作为输入媒介,通过按钮进行用户操作及程序编写,具体包含对程序的编辑、存取、运行、调试、查看运行状态及运行结果、显示内部存储空间的数据。
11.进一步的,上述操作系统固件程序包含按钮响应、系统菜单、程序输入、程序存取、程序运行、变量存储、信息显示、外设驱动、外部通信模块。
12.其中,上述按钮响应模块,关联上述核心板上的各输入按钮,并使用中断的形式获取按钮状态,具体为在按钮被按下时触发系统外部输入中断,跳转至上述按钮响应模块并获取当前按下的各按钮对应的单片机管脚的编号、当前按下的按钮的数量以及每个被按下的按钮的单片机管脚的编号,并判断是否形成有效组合键。
13.其中,上述系统菜单模块,关联上述核心板上的按钮及上述编程操作屏的驱动,采用枚举方式在上述编程操作屏上展示系统主菜单,其包含:“1.edit”、“2.run”、“3.save”、“4.load”菜单项目,并分别对应“编辑”、“运行”、“存储”、“读取”程序执行模块,上述系统菜单模块还定义了存储当前正在显示的菜单变量cm用于显示当前已经选择的菜单项目,当前选中菜单项的序号的菜单变量cs用来响应操作按钮选择的菜单项目。
14.其中,上述程序输入模块,关联上述核心板上的按钮及上述编程操作屏的驱动,采用结构体形式定义可编辑的程序区ups的一个数据类型program_entry_t,通过上述系统菜
单模块及上述按钮响应模块获取用户操作内容后对于上述程序区ups进行改写;同时所述编程操作屏的屏幕下行显示当前程序的代码,上行显示两个16

bit运算元的数值,或用于显示四个8

bit子运算元的十进制值。
15.其中,上述程序存储模块,关联上述核心板上的按钮、上述编程操作屏的驱动及上述存储区域的排母接口外接的存储模块,上述程序存储模块包含5个存取区域分别映射到上述外接的存储模块,具体为用户操作按钮选择上述液晶屏显示的“3.save”或“4.load”菜单项目,通过上述按钮响应模块进行操作判断后将上述程序区ups中的程序行以字节形式存储至各上述存储区域中。
16.其中,上述程序运行模块,关联上述核心板上的按钮、上述编程操作屏驱动及用户程序中可能涉及的各类外设模块,使用枚举的方式定义了用户可选指令inst的数据类型instruction_t,以及程序运行状态的一个数据类型sys_status_t,其包含运行run、停止stop、及单步调试step三个状态,同时上述程序运行模块还预置了代码解释器函数,用于运行程序中实时解释用户选择的指令inst,并将其指向的功能在硬件设备上运行或呈现,在调试程序中上述程序运行模块接收上述按钮响应模块传递的运行状态数值并按其执行调试操作。
17.其中,上述变量存储模块,关联用户程序中可能涉及的各类外设模块,其预置了多个用户可访问的寄存器,每个寄存器均为16

bit宽度,可以用于存储16bit数值。
18.其中,上述信息显示模块,关联上述核心板上的按钮、上述信息显示屏及用户程序中可能涉及的各类外设模块,采用枚举的形式定义了上述信息显示屏所显示的内容页sys_info_display_t,通过上述按钮响应功能模块判断用户操作的组合键并进行翻页,在上述信息显示屏上展示各上述内容页的信息,其中包含:寄存器信息,传感器信息,程序调试信息,各外设模块关联信息以及程序执行指令的绘图或文字及贴图内容。
19.其中,上述外设驱动模块,关联用户程序中可能涉及的各类外设模块以及上述编程操作屏和上述信息显示屏的驱动,其预置有i2c接口的芯片驱动程序,在系统启动时对于预置的外设模块进行连接状态检查,并采用枚举的方式定义外设模块的按位代码peripheral_switches_t,同时还定义了控制各外设模块的启或停的状态变量peripheral_switches,以及对应各外设模块配置信息的数值结构体peripheral_values_t。
20.其中,上述外部通信模块,定义了若干串口命令,并使用串口uart2作为外部通信接口用以连接外部串口设备或串口程序。
21.进一步的,上述操作系统固件程序,采用上述运算元模型方式,即“执行结果=指令函数(运算元1,运算元2)”实现程序行的数字化描述并通过选择配置参数形成程序行集合后进行顺序执行,具体实现方式为:
22.a1:系统中预置多条指令函数;
23.a2:通过操控按钮并根据上述按钮相应模块的按钮响应,选择一条或多条指令函数并输入各自的运算元参数,形成有顺序的程序行集合;
24.a3:通过上述程序运行模块的解释器程序对于程序行集合进行逐条解释,并将指令函数与核心板底层的通讯接口、外设以及运算单元进行对接;
25.a4:上述程序运行模块设置有程序行指针,程序运行启动上述程序指针指向第000行,第000行程序行按照步骤a3执行完成后上述程序指针加1后顺序指向下一行即第001行
并继续按照步骤a3执行,直至程序的最后一行;
26.a5:上述程序指针可根据部分上述指令函数的执行结果直接跳转指向到非顺序位置的程序行并执行。
27.进一步的,还包含扩展板,其连接至上述核心板的上述扩展区域中向下的排母孔位,并可同时连接6个具有i2c接口的模块。
28.再有,本发明提供了一种用使用非代码类编程方法的手持编程装置,其基于运算元模型结合硬件操作实现了程序行的数字化运行,具体的其包含核心板,其上设置有核心板电路,包含:输入区域、运算区域、存储区域、输出区域、电源区域及扩展区域。其中,上述输入区域由若干按钮微型开关构成,其排布方式为手柄布局,其中一侧为上、下、左、右四个方向按钮微型开关,另一侧为确认和返回两个功能按钮微型开关。其中,上述运算区域由微处理器芯片与周边电路构成,上述微处理器芯片上内置有操作系统固件程序,其负责维持系统正常运行、读取并解释系统所连接的各硬件传感器的数值、利用上述运算元模型作为核心算法处理使用者输入的程序。其中,上述输出区域包含多个单色led灯、彩色led灯、蜂鸣器、以及液晶屏,其中上述液晶屏通过扩展插口与上述微处理器芯片连接;其中,上述电源区域包含电源开关,micro usb接口,限流保险器件以及集成电路。其中,上述存储区域包含若干排母接口,用于连接外部存储模块。其中,上述扩展区域包含若干单排排母的扩展孔位,其布局采用上下两面非对称分布方式。
29.上述输出区域具体包含一块编程操作屏以及一块信息显示屏,其中,上述编程操作屏为lcd1602双行16字符液晶屏,上述信息显示屏为128x64点阵型oled液晶屏。
30.上述操作系统固件程序采用核心板上的若干按钮型微动开关作为输入媒介,通过按钮进行用户操作及程序编写,包含对程序的编辑、存取、运行、调试、查看运行状态及运行结果、显示内部存储空间的数据;具体的上述操作系统固件程序包含按钮响应、系统菜单、程序输入、程序存取、程序运行、变量存储、信息显示、外设驱动、外部通信模块。
31.其中,上述按钮响应模块,关联上述核心板上的各输入按钮型微动开关,并使用中断的形式获取按钮状态,具体为在按钮被按下时触发系统外部输入中断,跳转至上述按钮响应模块并获取当前按下的各按钮对应的单片机管脚的编号、当前按下的按钮的数量以及每个被按下的按钮的单片机管脚的编号,并判断是否形成有效组合键。
32.其中,上述系统菜单模块,关联上述核心板上的按钮及上述编程操作屏的驱动,采用枚举方式在上述编程操作屏上展示系统主菜单,其包含:“1.edit”、“2.run”、“3.save”、“4.load”菜单项目,并分别对应“编辑”、“运行”、“存储”、“读取”程序执行模块,上述系统菜单模块还定义了存储当前正在显示的菜单变量cm用于显示当前已经选择的菜单项目,当前选中菜单项的序号的菜单变量cs用来响应操作按钮选择的菜单项目。
33.其中,上述程序输入模块,关联上述核心板上的按钮及上述编程操作屏的驱动,采用结构体形式定义可编辑的程序区ups的一个数据类型program_entry_t,通过上述系统菜单模块及上述按钮响应模块获取用户操作内容后对于上述程序区ups进行改写;同时所述编程操作屏的屏幕下行显示当前程序的代码,上行显示两个16

bit运算元的数值,或用于显示四个8

bit子运算元的十进制值。
34.其中,上述程序存储模块,关联上述核心板上的按钮、上述编程操作屏的驱动及上述存储区域的排母接口外接的存储模块,上述程序存储模块包含5个存取区域分别映射到
上述外接的存储模块,具体为用户操作按钮选择上述液晶屏显示的“3.save”或“4.load”菜单项目,通过上述按钮响应模块进行操作判断后将上述程序区ups中的程序行以字节形式存储至各上述存储区域中。
35.其中,上述程序运行模块,关联上述核心板上的按钮、上述编程操作屏驱动及用户程序中可能涉及的各类外设模块,使用枚举的方式定义了用户可选指令inst的数据类型instruction_t,以及程序运行状态的一个数据类型sys_status_t,其包含运行run、停止stop、及单步调试step三个状态,同时上述程序运行模块还预置了代码解释器函数,用于运行程序中实时解释用户选择的指令inst,并将其指向的功能在硬件设备上运行或呈现,在调试程序中上述程序运行模块接收上述按钮响应模块传递的运行状态数值并按其执行调试操作。
36.其中,上述变量存储模块,关联用户程序中可能涉及的各类外设模块,其预置了多个用户可访问的寄存器,每个寄存器均为16

bit宽度,可以用于存储16bit数值。
37.其中,上述信息显示模块,关联上述核心板上的按钮、上述信息显示屏及用户程序中可能涉及的各类外设模块,采用枚举的形式定义了上述信息显示屏所显示的内容页sys_info_display_t,通过上述按钮响应功能模块判断用户操作的组合键并进行翻页,在上述信息显示屏上展示各上述内容页的信息,其中包含:寄存器信息,传感器信息,程序调试信息,各外设模块关联信息以及程序执行指令的绘图或文字及贴图内容。
38.其中,上述外设驱动模块,关联用户程序中可能涉及的各类外设模块以及上述编程操作屏和上述信息显示屏的驱动,其预置有i2c接口的芯片驱动程序,在系统启动时对于预置的外设模块进行连接状态检查,并采用枚举的方式定义外设模块的按位代码peripheral_switches_t,同时还定义了控制各外设模块的启或停的状态变量peripheral_switches,以及对应各外设模块配置信息的数值结构体peripheral_values_t。
39.其中,上述外部通信模块,定义了若干串口命令,并使用串口uart2作为外部通信接口用以连接外部串口设备或串口程序。
40.进一步的,上述操作系统固件程序,采用上述运算元模型方式,即“执行结果=指令函数(运算元1,运算元2)”实现程序行的数字化描述并通过选择配置参数形成程序行集合后进行顺序执行,具体实现方式为:
41.a1:系统中预置多条指令函数;
42.a2:通过操控按钮并根据上述按钮相应模块的按钮响应,选择一条或多条指令函数并输入各自的运算元参数,形成有顺序的程序行集合;
43.a3:通过上述程序运行模块的解释器程序对于程序行集合进行逐条解释,并将指令函数与核心板底层的通讯接口、外设以及运算单元进行对接;
44.a4:上述程序运行模块设置有程序行指针,程序运行启动上述程序指针指向第000行,第000行程序行按照步骤a3执行完成后上述程序指针加1后顺序指向下一行即第001行并继续按照步骤a3执行,直至程序的最后一行;
45.a5:上述程序指针可根据部分上述指令函数的执行结果直接跳转指向到非顺序位置的程序行并执行。
46.进一步的,还包含扩展板,其连接至上述核心板的上述扩展区域中向下的排母孔位,并可同时连接6个具有i2c接口的模块。
47.进一步的,上述核心板为正反双面布线,布线之外的空白区域采用覆铜处理,且在上述电源区域设有散热铜区。上述微处理器芯片位于上述核心板的正面中部偏上位置,其为48管脚的qfp封装。上述按钮区域位于上述核心板的下部,由六个6x6毫米的方底微动开关组成。上述micro usb接口位于上述核心板的右侧中部位置。
48.本发明一种非代码类编程方法及使用该编程方法的手持编程装置,其核心优势是为非软件编程行业的非专业人士,以及对编程思维及编程逻辑有学习需要的群体提供了一套有效的学习方法及器材。无需使用计算机,也无需预先学习门槛相对较高的编程语言,只需适当掌握进制转换的基础知识以及顺序执行思维,便可通过指令

参数

参数组成的程序行集合的数字化指令代码形式形式代替英文指令,进行编程训练,获得程序运行结果,大大降低了编程思维的学习难度。同时注重电子技术与相关知识的拓展,用户能够通过一系列电子模块以及电路搭建,有针对性地对电子技术进行学习。其进一步具有如下有益效果:
49.(1)手持编程装置小巧灵活,在普通环境中能够以大班的形式开展课程,无需占用机房资源,随时随地均可开展编程的学习。
50.(2)手持编程装置核心板上用户输入区域内的用户输入按钮以传统手柄的方式排布,使用手柄配合指令集进行功能编程和编程思维的学习。手柄式的按键布局使用普遍,各年龄段接受度高,无需特殊学习即可快速上手。并且手柄上设有的组合按钮在普通运行模式下最多为两个,在程序单步调试运行模式下最多为三个,组合数量有限,在提高趣味性的同时保持了操作低复杂度的优点。
51.(3)手持编程装置的程序组织形式简单,每个程序行的程序格式和长度完全相同,均使用“指令

运算元

运算元”这一执行模型融入手持编程器主机的固件中,其准确反映了程序设计中”函数”的特点,具有可以调整参数的、特定的逻辑或运算功能,符合现有编程习惯,容易上手,容易被初学者接受,将其通过按钮选择方式形成程序行集合并顺序执行,之后在将执行结果通过硬件进行反馈。其中,每个运算元为16

bit,依指令不同可描述为两个8

bit的子运算元,形如执行效率最高的计算机汇编语言,具备对内部存储空间直接访问的特征与运行模式,但同时又避免了汇编语言的高门槛,以数字化指令代码的形式代替了英文指令,简单直观,操作方便,有利于降低编程思维的学习难度。
52.(4)手持编程装置的核心板上设有存储区域,其包含若干个排母接口可以连接类似闪存模块的存储模块用于将用户生成的程序存储到多个区域,从而为编程学习中程序的反复设计及打磨提供了有效支持。
53.(5)手持编程装置的核心板上的输出区域包含有两个液晶显示屏,分别由于程序编辑以及执行信息显示,并设有多个led灯,以及蜂鸣器,使得用户在编程学习中的交互体验更丰富直观,进一步提升学习效率及兴趣。
54.(6)手持编程装置的核心板上设有扩展区域,其包含的若干单排排母的扩展孔位,可与扩展板及其他外部电子设备连接,例如接入计算机进行代码输入,并且也能够通过连接蓝牙模块与他人共享自己所写的程序,从而为用户提供了更丰富的编程方式,学习过程更加灵活方便。
55.(7)手持编程装置的电源区域可通过usb电源或电池供电,并配有限流保险,若因任何问题发生短路造成大电流,限流保险将自动断开,避免损坏usb电源,保证用户的使用安全。
56.(8)手持编程装置的采用国际主流的主板芯片及通用的电子器件,制造通用性强,且器件价格实惠,生产性价比较高,具有很高的经济价值。
附图说明
57.图1为本发明的手持编程装置的核心板电路中输入区域的电路图。
58.图2为本发明的手持编程装置的核心板电路中运算区域的电路图。
59.图3为本发明的手持编程装置的核心板电路中存储区域的电路图。
60.图4为本发明的手持编程装置的核心板电路中输出区域的电路图。
61.图5为本发明的手持编程装置的核心板电路中电源区域的电路图。
62.图6为本发明的手持编程装置的核心板电路中扩展区域的电路图。
63.图7a,图7b为本发明的手持编程装置的核心板正反面布线图,图7a为正面,图7b为反面。
64.图8a,图8b为本发明的手持编程装置的核心板正反面元器件分区布置图,图8a为正面,图8b为反面。
65.图9为本发明的手持编程装置核心板元器件分区布置的立体效果俯视图。
66.图10为本发明的手持编程装置扩展板带有部分元器件及接口的实物图。
67.图11为本发明的手持编程装置的编程操作屏上展示的系统菜单实例图。
68.图12为本发明的手持编程装置的编程操作屏上展示的数字化程序行描述信息实例图。
69.图13为本发明的手持编程装置的操作系统执行框图。
具体实施方式
70.如图1至图6所示,其为本发明的手持编程装置的核心板电路图,核心板上设置的核心板电路,包含:输入区域、运算区域、存储区域、输出区域、电源区域及扩展区域。
71.其中,该核心板上的各区域中包含下列直接焊接在板上的不可拆卸或替换的元器件:
72.·
stm32f103cbt6型号微处理器芯片;
73.·
模数转换芯片ads1115;
74.·
3.3v电压转换芯片ams1117

3.3;
75.·
ws2812b全彩色led灯;
76.·
micro usb插口;
77.·
单色贴片电源指示led灯1个;
78.·
8mhz贴片晶振;
79.·
贴片电流保险;
80.·
保障各元器件正常工作所需的贴片电容、电阻;
81.·
蜂鸣器;
82.·
用户可编程的单色贴片led灯8个;
83.·
用于用户输入的按钮型微动开关7个;
84.·
用于复位单片机的按钮型微动开关1个;
85.·
用于连通或断开usb电源的拨码开关1个。
86.其中,该核心板上的扩展区域预留了以下专用扩展接口位,用于连接可拆卸或替换的扩展电子模块:
87.·
四孔hx2.54插座:用于连接显示编程界面的编程操作屏幕;
88.·
四孔普通排母1:用于连接oled信息显示屏幕;
89.·
四孔普通排母2:用于连接mpu6050模块;
90.·
四孔插孔:用于编程器固件升级;
91.·
六孔普通排母:用于连接w25q系列flash存储模块;
92.·
十八孔普通排母与二十孔普通排母:用于连接基础的扩展板。
93.如图7a、7b所示的本发明的手持编程装置的核心板正反面布线图,手持编程装置的核心电路板为双面设计(图7a为正面布线图,图7b为反面布线图)。其中在双面布线的空白区域采用覆铜处理,并为电源芯片ams1117

3.3所在区域设计了散热铜区,该铜区的网络为3.3v,板上其余覆铜区域网络为gnd。
94.如图8a、8b所示的本发明的手持编程装置的核心板正反面元器件分区布置图(图8a为正面、图8b为反面),以及图9中所示的本发明的手持编程装置核心板元器件分区布置的立体效果俯视图,其中具体展示了各区域所包含的元器件的位置排布情况。
95.优选的,如图9所示编号10指向的区域为运算区域,该运算区域由微处理器与周边电路构成,该微处理器上内置有操作系统固件程序,其负责维持系统正常运行、读取并解释系统所连接的各硬件传感器的数值、利用所述运算元模型作为核心算法处理使用者输入的程序。其中,同时参考如图8a所示,该微处理器位于核心板正面中部偏上位置,为48管脚的qfp(方型扁平式封装技术quad flat package)封装。其周围还布置有微处理器启动运行所需的、包括晶振(参考图1中编号y1的器件)在内的外部电路及电容电阻等器件。核心板中所涉贴片电容电阻较多,参考编号均以c或r开头的编号形式标识(例如,图1中编号c12,r22的器件)。具体可采用stm32f103cbt6型号微处理器芯片及8mhz贴片晶振。
96.优选的,如图9所示编号11指向的区域为输入区域,该输入区域由若干按钮构成,其排布方式为手柄布局,其中一侧为上、下、左、右四个方向按钮,另一侧为确认和返回两个功能按钮。其中,同时参考如图8a、8b所示,该按钮区域位于核心板下部,可由六个6x6毫米的方底微动开关组成。其中,在方向键上键和左键之间还设有一个功能按键func,作为组合键或切换功能时使用。此外,编程器上还设有两个微动贴片按钮。上述类似手柄按钮排布的按键上、下、左、右、确认和返回按钮分别连接于微处理器的pb5、pb8、pb9、pc13、pc14和pc15管脚,功能按键func连接至pa0管脚。手柄式的按键布局使用普遍,各年龄段接受度高,无需特殊学习即可快速上手。
97.优选的,如图9所示编号14指向的区域为输出区域,该输出区域包含多个单色led灯、彩色led灯、蜂鸣器、以及液晶屏,其中该液晶屏通过扩展插口与微处理器连接。如图8a、8b所示,在核心板的中上部设置了一个可以使用程序控制的蜂鸣器和八个单色led灯,其中该蜂鸣器的类型为12x9.6有源蜂鸣器,led灯为标准的0805封装led。八个单色led灯分为两组,其中左侧四个均为白色,右侧四个分别为绿、黄、橙、红四种颜色。左侧四个白色led灯允许使用pwm(pulse width modulation脉宽调制)信号进行亮度控制,右侧四个使用标准的开关模式控制亮灭。从左到右的八个led灯分别连接到微处理器的pb1、pb0、pb3、pb4、pa8、
pa9,pa10、pa15管脚。此外还包含一个ws2812b全彩色led灯,两块液晶屏分别为编程操作屏以及信息显示屏,其中,该编程操作屏为lcd1602双行16字符液晶屏,该信息显示屏为128x64点阵型oled液晶屏。
98.其中,如图8a所示,核心板正面中部的白色方框为0.96英寸oled液晶信息显示屏的预留插口,位于方框顶部的四个孔位分别为gnd、3.3v、scl和sda插口。该oled液晶信息显示屏用于在编程过程中实时查看内部寄存器的数值、使用指令绘图、查看程序、显示时间日期、显示已保存的贴图。其中scl和sda对应微处理器的pb6和pb7管脚。如图9所示编号16指向即为安装在核心板上的oled液晶信息显屏。
99.其中,如图9所示,位于核心板左上部的xh

2.54插座用于连接i2c接口的lcd1602液晶编程操作屏(图中编号15)。该编程操作屏用于显示joykit os操作系统界面与程序输入界面的信息。从上到下的四个孔位分别连接到gnd、vcc、sda和scl,其中vcc为usb供电或通过扩展板进行供电的5v电压,gnd为核心板接地位。其中scl和sda对应微处理器的pb6和pb7管脚。
100.优选的,如图9所示编号13指向的区域为电源区域,该电源区域包含电源开关,micro usb接口,限流保险以及5v转3.3v集成电路。电源区域通过usb电源或电池供电,配有一个限流保险,若因任何问题发生短路造成大电流,限流保险将自动断开,避免损坏usb电源。其中,如图8a所示,核心板右侧中部为micro usb接口(参考图中编号u2),在电源开关(参考图中编号sw2)连通的状态下,可通过usb接口为核心板供电。这一接口同时具备供电和usb数据传输功能,可通过usb数据线连接至计算机等设备进行数据交换。其中,micro usb接口的数据管脚d

和d 分别通过串联20ω电阻的方式连接至微处理器的pa11和pa12管脚。手持编程装置支持通过板载的usb接口,以及扩展板上的串口进行程序行的读取和写入,能够根据需要完全脱离按钮输入,在手机或计算机端进行编程,为学习者提供了更灵活且丰富的编程学习方式。
101.优选的,如图9所示编号12指向的区域为存储区域,该存储区域包含若干排母接口,用于连接外部存储模块,可以为w25q闪存模块提供排母接口,使用者可将编辑的程序存储在闪存里,供后续读取修改或继续编辑。如图8a所示,闪存模块(参考图中编号u3)的预留位置在核心板正面右上部,该芯片可通过微处理器上的spi串行外设接口进行访问。其中,闪存模块上spi的四个信号管脚mosi、miso、sck及ss分别连接至微处理器的pa7、pa6、pa5和pa4管脚。
102.优选的,如图9所示编号17指向的区域为扩展区域,该扩展区域包含若干单排排母的扩展孔位,其布局采用上下两面非对称分布方式。按照核心电路板上文字丝印可读方向为正向,如图8a所示,此方向面向使用者时,20孔排母在上侧,18孔排母在下侧。这一非对称设计的目的之一在于使用者在连接扩展板时更方便对齐,防止反插造成的电路损坏。其中,排母上各孔位与核心板上的芯片、电源等元器件的管脚相连接,用于连接扩展板。
103.此外,如图8a所示,手持编程装置的核心板上预置了若干特定功能的i2c芯片驱动,在核心板上可通过位于该核心板左上部的四孔排母插座(参考图中编号j17)进行连接。该j17插座自上而下的四个孔位分别连接了微处理器的3.3v,gnd,pb6和pb7管脚(即i2c信号的scl和sda)。手持编程器装置的核心板上还为固件更新预留了接口,可通过其左侧中部的四孔(参考图中编号j1)进行固件烧写。其从上到下的四个孔位分别连接到3.3v,swio,
swclk和gnd。其中swio和swclk对应微处理器的pa13和pa14管脚。
104.如图10所示,手持编程装置还包含扩展板,其可连接至所述核心板的所述扩展区域中向下的排母孔位。扩展板与核心板具体的连接方式为:将核心板上的包含四个数字输出信号(其与核心板上部右侧四个单色led灯共用管脚)、四个pwm信号(其与核心板上部左侧四个单色led灯共用管脚)、四个模拟输入信号(ads1115的模拟数据采集管脚),四个数字输入信号、两个串行接口、全彩色led灯接口,i2c总线引至扩展板上的排针、排母或xh2.54型插座。该扩展板可同时连接6个i2c接口的模块,其中三个i2c接口位已为特定的颜色识别传感器(图10中标号1)、温湿度传感器(图10中标号2)、rtc时钟模块预留(图10中标号3)。
105.优选的,本发明手持编程装置的核心板上的操作系统固件程序为一套命名为joykit os的迷你操作系统,其使用c/c 混合代码在stm32cubeide开发环境中实现。所述操作系统固件程序采用核心板上的若干按钮作为输入媒介,通过按钮进行用户操作及程序编写,具体包含对程序的编辑、存取、运行、调试、查看运行状态及运行结果、显示内部存储空间的数据。在操作的过程中,编程操作屏lcd1602和信息显示屏oled可以被视为计算机上的显示器,供使用者获取系统反馈,查看程序的运行结果、内部寄存器的数据、所连接的外设模块的数据及连接状态。
106.优选的,如图12所示,该操作系统固件程序,采用运算元模型方式,即“执行结果=指令函数(运算元1,运算元2)”实现程序行按照“行号

指令

运算元0

运算元1”的统一的数字化描述,在lcd1602编程操作液晶屏上呈现,并通过按钮选择配置参数形成程序行集合后进行顺序执行,具体实现方式为:
107.a1:系统中预置多条指令函数,每条指令都以一个十六进制的数字表示,每个指令可类比于c语言中所定义的一个函数,而运算元则可类比于c语言中所定义函数的参数,且指令可根据实际课程需要,进行补充、更新或增删。
108.a2:以c/c 语言在单片机上实现操作系统人机交互界面,通过操控按钮并根据所述按钮相应模块的按钮响应,选择一条或多条指令函数并输入各自的运算元参数,形成有顺序的程序行集合,指令的多样性与多功能性,构成了一套可用于编程的指令集,学生可通过查阅手册的方式了解指令的使用方法,这一学习过程与工程人员学习使用某种设备、装置、器件或芯片的流程非常类似,有利于形成并推广良好的工程学习习惯。
109.a3:以c/c 语言在单片机上实现通过该程序运行模块的解释器程序对于程序行集合进行逐条解释,并将指令函数与核心板底层的通讯接口、外设以及运算单元进行对接,每条指令均具备特定功能,对应的运算元能够作为参数,影响所在行指令的功能结果。
110.a4:所述程序运行模块设置有程序行指针,程序运行启动所述程序指针指向第000行,第000行程序行按照步骤a3执行完成后所述程序指针加1后顺序指向下一行即第001行并继续按照步骤a3执行,直至程序的最后一行,顺序化的逐行执行,可类比于basic语言的执行方式。
111.a5:所述程序指针可根据部分所述指令函数的执行结果直接跳转指向到非顺序位置的程序行并执行,运行过程中有条件地、或无条件地跳转至其他行的执行方式,可类比于basic语言的执行方式。
112.其中,在本发明中,发明人提出的运算元模型来源于rm=fn(a,b)的数学函数描述。在该描述中,fn可为一种指令、功能或函数。rm为执行结果;a和b均为参数,其用于在当
前指令范畴内调整指令的细分功能。“rm=fn(a,b)”模型可应用于描述实际生活中的场景,例如,:例1,在某文化广场上有若干盏彩灯,f1代表彩灯的控制指令,a表示彩灯编号,b表示点亮的颜色,若b为零,被控制的彩灯将熄灭,形成函数f1(20,127),当f1执行完成时,其对应的结果rm为第20号彩灯被设置为127这一数值所代表的色彩。例2,定义f2作为向冰箱里的几个保鲜抽屉中放入苹果的指令,其中a为抽屉编号,b为放入苹果的数量,如果数量为零则清空该抽屉中的苹果。
113.其中,具体到本发明的“指令

运算元”这一执行模式采用了8

bit或16

bit数值,即单字节和双字节的组织形式。运算元默认以十六进制形式输入并表示,单个运算元的数值取值范围为0

65535或0

255。这一形式变量范围小,易于理解,从教学角度来看,适用于二进制、十进制、十六进制的转换,以及使用二进制来描述信号的入门学习。例如,表1中展示的在本发明中预置的指令0x56(函数:inst_draw_circle),其可实现在信息展示屏的绘图页绘制空心圆形,其中指令函数的运算元以两个8bit的形式构成,分别表示半径以及绘制的位置(可直接定义坐标,或从某个寄存器中获取坐标),要求首先在(16,16)位置绘制一个半径为5像素的空心圆形,之后在r04数值所表示的位置绘制一个半径为18像素的空心圆形。
114.表1:信息展示屏的绘图页绘制空心圆形的预置指令示例
[0115][0116][0117]
其中,上表中,运算元1半径参数的取值范围为00

ff;运算元2,绘制位置参数取值范围在0x00

0x7f,即十进制0

127时表示背景区目标像素点x,当取值为0x80时,执行时将在值对应编号的寄存器中读取坐标位置。
[0118]
优选的,该操作系统固件程序包含按钮响应、系统菜单、程序输入、程序存取、程序运行、变量存储、信息显示、外设驱动、外部通信模块。
[0119]
其中,该按钮响应模块,关联该核心板上的各输入按钮,并使用中断的形式获取按钮状态,具体为在按钮被按下时触发系统外部输入中断,跳转至所述按钮响应模块并获取当前按下的各按钮对应的单片机管脚的编号、当前按下的按钮的数量以及每个被按下的按钮的单片机管脚的编号,并判断是否形成有效组合键;
[0120]
其中,该系统菜单模块,关联该核心板上的按钮及该编程操作屏的驱动,采用枚举方式在该编程操作屏上展示系统主菜单,如图11所示,其包含:“1.edit”、“2.run”、“3.save”、“4.load”菜单项目,并分别对应“编辑”、“运行”、“存储”、“读取”程序执行模块,所述系统菜单模块还定义了存储当前正在显示的菜单变量cm用于显示当前已经选择的菜单项目,当前选中菜单项的序号的菜单变量cs用来响应操作按钮选择的菜单项目。在菜单显示模式下,按钮响应功能模块始终对按钮状态进行监听,根据所按下的按钮更改当前选中的菜单项的序号变量cs,从而实现用户选择功能。在用户按下确认按钮时,系统菜单功能模块将修改当前正在显示的菜单变量cm,从而呈现用户已选择的选项中的内容。
[0121]
其中,该程序输入模块,关联该核心板上的按钮及该编程操作屏的驱动,采用结构体形式定义可编辑的程序区ups的一个数据类型program_entry_t,通过所述系统菜单模块及所述按钮响应模块获取用户操作内容后对于所述程序区ups进行改写,同时如图12所示,在程序编辑模式下,所述编程操作屏的屏幕下行用于显示当前程序的代码,上行用于显示两个16

bit运算元的数值,或用于显示四个8

bit子运算元的十进制值。
[0122]
其中,该程序存储模块,关联该核心板上的按钮、该编程操作屏的驱动及该存储区域的排母接口外接的存储模块,该程序存储模块包含5个默认的存取区域分别映射到外接的w25qxx系列存储芯片,具体为用户操作按钮选择该编程操作屏显示的“3.save”或“4.load”菜单项目,通过按钮响应功能模块对用户操作进行判断,从而用户编辑程序区ups中的程序代码行将以字节的形式被存储于w25qxx芯片的五个扇区中,或从五个扇区中读取至ups,为编程学习中程序的反复设计及打磨提供了有效支持。
[0123]
其中,该程序运行模块,关联所述核心板上的按钮、所述编程操作屏驱动及用户程序中可能涉及的各类外设模块,使用枚举的方式定义了用户可选指令inst的数据类型instruction_t,以及程序运行状态的一个数据类型sys_status_t,其包含运行run、停止stop、及单步调试step三个状态,同时所述程序运行模块还预置了代码解释器函数,用于运行程序中实时解释用户选择的指令inst,并将其指向的功能在硬件设备上运行或呈现(例如,点亮led灯,使蜂鸣器发声,修改内部寄存器的数值,改变当前正在执行的程序行,启用或停用外设硬件模块),在调试程序中所述程序运行模块接收所述按钮响应模块传递的运行状态数值并按其执行调试操作,具体为通过按钮响应功能模块对用户操作进行判断,可在运行run、停止stop、及单步调试step三个状态之间进行切换,从而影响ups中用户输入的程序行的运行方式,观察运行过程与结果。并且系统固件程序模仿微控制器的汇编语言定义了程序指针(pc,programcounter),在固件中的系统结构体下以成员pc表示,用于指向当前正在运行的程序行。
[0124]
其中,所述变量存储模块,关联用户程序中可能涉及的各类外设模块,其预置了多个用户可访问的寄存器,每个寄存器均为16

bit宽度,可以用于存储16bit数值;用户可自由访问并修改其中大部分寄存器的数值,小部分寄存器由系统固件程序保留并进行实时读写传感器中所包含的数值,例如,颜色检测传感器所检测到的rgb数值,惯性测量单元模块所检测到的加速度、角速度数值。
[0125]
其中,该信息显示模块,关联该核心板上的按钮、该信息显示屏及用户程序中可能涉及的各类外设模块,采用枚举的形式定义了所述信息显示屏所显示的内容页sys_info_display_t,通过该按钮响应功能模块判断用户操作的组合键并进行翻页,在该信息显示屏上展示各内容页的信息,例如:信息屏关闭(可节省cpu时钟)、128个寄存器的十六进制数值(分为16页显示),系统部分传感器信息(是否连接,是否启用),程序调试信息,各外设模块关联信息以及程序执行指令的绘图或文字及贴图内容。
[0126]
其中,该外设驱动模块,关联用户程序中可能涉及的各类外设模块以及该编程操作屏和所述信息显示屏的驱动,其预置有i2c接口的芯片驱动程序,在系统启动时对于预置的外设模块进行连接状态检查,并采用枚举的方式定义外设模块的按位代码peripheral_switches_t,同时还定义了控制各外设模块的启或停的状态变量peripheral_switches,来判定是否启用或停用某一模块,以及对应各外设模块配置信息的数值结构体peripheral_
values_t,用于操作系统在后台直接读取或配置各个外设模块。从而实现了用户能够以指令的形式,通过程序指令的形式(peripheral_switches以参数形式输入)停用非必要的i2c设备来节省cpu占用率,达到最大化运行速度的效果。
[0127]
其中,该外部通信模块,定义了若干串口命令,并使用串口uart2作为外部通信接口用以连接外部串口设备或串口程序。从而实现了用户可通过串口设备和串口程序,以非按钮输入的形式对编程器进行程序编写、运行与调试。
[0128]
如图13所示的本发明的手持编程装置的系统固件程序执行框图,展示了系统固件各功能模块的执行逻辑,具体包含以下步骤:
[0129]
b1:主机启动,系统初始化:对所支持的i2c接口芯片进行初始化并检查连接状态,同时将初始化所有寄存器的值为零。
[0130]
b2:调用系统菜单模块:在lcd1602编程操作屏上展示“1.edit”、“2.run”、“3.save”、“4.load”四个菜单项目,分别指向编辑,运行,存储和读取四个界面。
[0131]
b3:用户操控按钮,调用按钮响应模块:获取当前按下的按钮选择的步骤b2中的菜单项目的序号并执行对应的操作。具体为:
[0132]
b3

1:选择“1.edit”进行编辑操作,调用上述程序输入模块,lcd1602编程操作屏上显示当前程序行(包括行号、指令、运算元信息),初此进入编辑页面默认为第000行,通过按钮对于程序行的指令及运算元进行逐行编辑,最后使用组合键退出编辑界面;
[0133]
b3

2:选择“2.run”运行程序,调用上述程序运行模块,进入程序运行模式并从第000行等待开始运行,按照程序行排列顺序逐行解释程序并在息显示屏oled上展示执行状态及结果信息,在顺序执行过程中可通过点击“左”按钮重置到第000行程序重新执行,也可通过点击“上”按钮进入单步调试模式,程序将停止顺序自动执行,当用户点击“下”按钮后才会移动至后一程序行并运行该行程序指令,同时也可以通过点击“左”按钮重置到第000行程序,并可通过点击“右”按钮退出调试模式,最后使用组合键退出运行界面;
[0134]
b3

3:选择“3.save”存储程序,调用上述程序存储模块,lcd1602编程操作屏上显示程序的编号,并可通过左右按钮进行选择,之后点击功能按钮“确认”将编辑的程序保存至外部闪存模块,或点击“返回”按钮取消保存并退出存储界面;
[0135]
b3

4:选择“4.load”,调用上述程序存储模块,lcd1602编程操作屏上显示程序的编号,并可通过左右按钮进行选择,之后点击功能按钮“确认”展示程序内容信息,或点击“返回”按钮退出读取界面。
[0136]
由上述可知,本发明创新的提出一种非代码类编程方法及使用该编程方法的手持编程装置,其核心优势是为非软件编程行业的非专业人士,以及对编程思维及编程逻辑有学习需要的群体提供了一套有效的学习方法及器材。无需使用计算机,也无需预先学习门槛相对较高的编程语言,只需适当掌握进制转换的基础知识以及顺序执行思维,便可通过指令

参数

参数组成的程序行集合的数字化指令代码形式代替英文指令,进行编程训练,获得程序运行结果,大大降低了编程思维的学习难度。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献