UDF编程设计

2024-05-12

UDF编程设计(共4篇)

UDF编程设计 篇1

可编程触摸键盘是一种为满足人们日益提高的人机界面要求而研制的多功能小型人机界面,可被广泛应用于各种工业环境和军用设备中。其突出优点在于可按用户需求定义和修改键盘内容,克服了传统薄膜键盘键名固定的缺点。

本文主要介绍了可编程触摸键盘的组成、工作原理及软件设计。

1 组成及工作原理

1.1 组成及特点

1.1.1 硬件组成

可编程触摸键盘示意图见图1,其硬件由五线电阻式触摸屏及相关转换处理电路、EL平板显示器及相关驱动控制电路、信号处理单元等3部分组成,其分解图见图2。

五线电阻式触摸屏作为传感器,提供手指按下的位置信息。五线电阻式触摸屏以玻璃或有机玻璃作为基底,表面涂有2层透明的导电层(OTI,氧化铟),在2层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。当手指接触屏幕,两层OTI导电层出现一个接触点,因其中一面导电层接通X、Y轴方向的5 V均匀电压场,使得侦测层的电压由零变为非零,控制器侦测到这个接通信息后,进行A/D转换,即可得触摸点的位置信息。

EL平板显示器是一种场致发光显示屏,其驱动控制电路通过激活行列栅格交叉处的发光体而点亮显示屏。EL平板显示器具有高对比度、高亮度、宽温限等优点,可视角度超过±80°。

信号处理单元采用CPU模块,完成系统控制、数据处理等功能。

1.1.2 特点

(1)采用分离式栅格设计避免产生误按操作,并增加了触摸键盘的形象性;

(2)五线电阻式触摸屏、EL平板显示器可靠性高,并对键盘整体进行加固处理,保证了整机可靠性;

(3)连接器采用不相容设计措施,防止出现误连、误接现象。

1.2 工作原理

可编程触摸键盘信息流程图如图3所示。五线电阻式触摸屏作为传感器提供手指按下的地址坐标值,该坐标值通过转换处理电路处理后经串口传送至信号处理单元,信号处理单元经键值计算,产生相应的键值控制EL平板显示器显示,并将键值传送至用户计算机。用户可借助提供的数据生成器修改键盘内容和属性,通过串口下载至可编程触摸键盘。

2 软件设计

可编程触摸键盘软件主要由控制软件及数据生成器2部分组成。

2.1 控制软件

控制软件用以实现多种规格键盘功能,完成键值输出,显示多级菜单及键盘内容、状态,实现信号处理单元与计算机、触摸屏通信等,其流程图见图4。主要由设备初始化模块、触摸屏数据更新模块、键值计算模块、页面及状态显示模块、键值输出模块等几个模块组成。

设备初始化模块用以实现设备硬件初始化和变量属性赋初值等功能,初始化完成后进入系统正常运行状态。当有PC机串口中断时,数据更新模块被调用。数据更新模块接收PC机发送的用户修改后的键盘内容、属性信息,将上一次保存的信息进行更新并保存新的信息。当有触摸屏串口中断时,键值计算模块被调用。键值计算模块接收五线电阻式触摸屏发送的地址坐标信息,并利用地址坐标信息进行计算,将其转换成相应的键值编码。键值计算完成后,触摸键盘通过页面及状态显示模块驱动EL平板显示器显示,并通过键值输出模块将键值编码传送至用户计算机。

2.2 数据生成器软件

数据生成器是为用户提供的应用软件,其流程图见图5。在用户计算机上通过数据生成器对键盘的内容及属性进行定义和修改,可给各个键设闪烁、开关、互斥、一键二字等不同属性,每个键亦可添加或删除下级菜单。修改、定义完毕后通过串口将数据下载至触摸键盘,触摸键盘接收到串口数据后自动将键盘显示更新。数据生成器功能的实现,使触摸键盘功能灵活、使用方便。

3 结语

可编程触摸键盘作为一种可定义的操控部件,可按用户需求定义、修改键盘内容,改变了传统薄膜键盘键名固定的缺点。结构紧凑牢固,显示界面友好,使用方便,具有一定的推广价值。

参考文献

[1]罗仁鉴.人机界面设计[M].北京:机械工业出版社,2002.

[2]谭浩强.C语言程序设计[M].北京:清华大学出版社,2000.

[3]胡广书.数字信号处理理论、算法与实现[M].北京:清华大学出版社,2003.

[4]电子工业部.军用电子装备可靠性维修性设计规范[S].

[5]EL640.480-AG1 Flat Panel Display Operations Manua[Z].

中国象棋的编程设计 篇2

关键词:中国象棋,编程设计,人工智能,开放数据库,知识库

象棋是世界上最流行的棋类游戏之一,在中国大陆和台湾以及有中国人居住的地方大概有十亿人在玩。象棋有着十分悠久的历史,其在南宋时就开始流行[1]。象棋的最早记录以及写着其游戏理论的书都来自于那个时代。

象棋有两个玩家,零记录便是全部的信息。象棋专业的知识在800年前就开始发展。如今,世界上已经有很多优秀的人类棋手。然而现在最好的象棋程序已经和这些人类棋手不相上下,尽管象棋十分的复杂。

1 中国象棋算法的设计

1.1 棋子位置关系

位置的评价是中国象棋最需要智力的地方。一些特殊的棋盘位置很难确定搜索树在什么时间要扩大到15步或20步移动。例如,一方有三个“兵”击败对方有两个“士”和两个“象”。派出三个“兵”越过“河”可能需要30步或40步,但如果所有棋子可以进行交换来产生这种情况,那么胜利肯定是确定的。这种嵌入的方法可减少所需增加的搜索深度,但它肯定需要增加时间来计算每个评价函数。在中国象棋中位置的评价有以下三个要素:(1)棋子能力的发挥;(2)重要的位置;(3)根据状态动态调整的能力。

以下将讨论这些要素的细节。

1.1.1 棋子能力的发挥

计算棋子的威胁力最简单的方法是衡量目前棋子在棋盘上的位置。每个棋子有着不同的攻击力和防御力,这些都是不同的。“将”是最重要的棋子,它的价值比所有的棋子加起来都大。“车”的重要性等同于一个“炮”加上一个“马”。“马”的重要性等同于两个“象”。基于这些启发式规则,给棋子了以下的价值(见表1)。

1.1.2 位置的重要性

除了棋子的重要性,每个棋子的位置也相当的重要。对方的“宫”是威胁对方“将”的最好的地方。因为每个棋子有着不同的移动方式,大多数程序会配备着一个表,这个表储藏着每个棋子最有可能的重要位置。“车”,“马”的位置的重要性的表在下列图中(1-2图)被给。

1.1.3 动态调整根据状态

动态调整使用了模拟识别技术去动态地调整目前棋子的价值和位置能量表。在图3中,“炮”的位置有c0、C1、c2、e0、E1和E2,可能间接地威胁敌人的“将”或“马”,这些位置将会被优化调整。当敌人移动“将”或“马”时,这些位置必须重新进行调整。

1.2 搜索技术

因为中国象棋和国际象棋都有着相同的复杂性,因此搜索方法也同样的适用二者。基本上,一个中国象棋程序会建造一个最小的游戏树,即α-β搜索。在基于变化的搜索结构(PVS)的搜索过程中,使用以下的几种方法会减少计算的时间并且增加搜索的准确性。

1.2.1 静态搜索

静态搜索会探索所有的攻击,并且检查当前的位置,静态位置的终止条件为寻找那些不受攻击的或者受攻击程度最轻的位置。

1.2.2 永久情况的处理

永久的状态不得不在搜索的过程中定义,其受一个频繁发生的动作影响。如果一个程序仅被评估在第一级,它将会导致一个重复尝试的错误棋盘状态。

1.2.3 提前的计算和存储结果

当对手正在思考时,程序能够充分的利用这个时间去预测对手的移动并且储存结果。如果预测是准确的,取得的结果会被进一步的计算。

1.2.4 移动命令

包括杀手启发式,历史启发式(谢弗,1983年)以及内部迭代深化。

2 结束语

相比其他如跳棋,黑白棋,围棋等棋类来说,中国象棋更类似于西方的国际象棋。正因为如此,基于人工智能的计算机中国象棋从许多国际象棋的编程技术中受益。在开始阶段,中国象棋程序目前使用一个开放的数据库来支持计算。一个开放的数据库能根据来自互联网的中国象棋的比赛以及比赛的结果得到极大扩展。根据人类与计算机的比赛结果,依靠一个合适的数据库所得到的最好的象棋程序的水平相当于6段的棋手。目前中国象棋程序的实现需要依赖结局数据库和检索系统,自分析能力不是很强,相信随着硬件的飞速发展,在不久的将来中国象棋程序会克服这些困难,取得更高的独立性及自适应性。

参考文献

[1]Lai F P.Chinese Chess History[EB/OJ].http://chess.cc.ntu.edu.tw/.

[2]Wu R,Beal D F(2001c).Fast,memory-efficient retrograde algorithms[J].ICGA Journal,24(3):147-159.

[3]Yen S.J.,Chen J.C.,Hsu S.C.(2004).Chinese Chess Informa-tion.[EB/OJ]ICGA Games Information homepage.http://www.cs.unimaas.nl/icga/games/chinesechess.

VBA编程设计变位系数 篇3

在齿轴初步设计阶段, 通过VBA中心距设计程序可计算出中心距范围、速比以及模数、螺旋角、齿数、压力角等多个齿轮参数。在设计前期, 所得相关参数均为一个范围的前提下, 开发该程序可用于指导齿轴系统变位系数及齿顶高、齿根高系数设计。该程序设计实现了快速计算变位系数等复杂参数以及VBA程序在传动系统概念设计中的应用。

1 程序介绍

1.1 程序功能

功能:根据速比、中心距、模数、螺旋角、法向压力角范围计算出满足要求的变位系数, 进而得出齿轮相关参数。

运动学参数初步设计中仅以齿顶厚、啮合起始圆直径与滑动参数作为评价标准, 且一般齿根处滑动系数较大, 所以以齿根处滑动系数作为评价标准, 其他参数可在后期详细设计中进一步设计评价。

1.2 参数输入

根据中心距计算程序可计算出齿轮副速比, 表1所示参数作为变位系数的基本输入。

表2中定义参数作为齿厚及顶隙判断基准;通常, 我们希望齿轮的滑动系数尽可能小, 同时, 配对齿轮的最大滑动系数应基本接近为好, 以保证配对齿轮的均匀磨损。

1.3 齿轮参数计算

根据齿厚及滑动系数、齿轮参数与变位系数的关系:

1) 进行变位系数匹配, 由输入参数速比i, 中心距a, 模数mn, 螺旋角β, 得到齿轮齿数z1, z2;

2) 将z1, z2圆整即round (z) 得到初步齿数;

3) 取齿顶高系数初始范围, 计算出齿厚s_an;

4) 将s_an结果与判断基准进行比较后重复判断使其匹配, 计算出此时齿顶高系数ha*;

5) 根据公式计算出hf*;

6) 判断啮合起始圆直径d_Nf是否小于基圆直径d_b, 若小于则退出计算;若大于则进行下一步;

7) 根据齿轮参数计算出滑动系数ζ_f, 使主、从动齿轮的滑动系数接近, 其差值在一定范围, 若超出则重新计算, 若满足条件则保存结果。

当完成所有计算后, 会初步得出不同结果, 后期从结果中选择最好的作为变位系数筛选结果。

参数计算公式如表3所示。

1.4 工作界面 (如图1)

2 实例计算

以某双离合自动变速器某档齿轮副为例进行初步设计计算。定义目标齿顶厚s_an=1.5。

2.1 参数输入范围 (表4)

共计循环次数为n=6×67×6×6×6=86 832。

2.2 筛选方案 (如图2)

3 软件代码

1) 主程序。实现参数定义, 调用子程序以及计算结果保存等的主功能, 此处省略。

2) 计算变位系数x1的子程序。实现被不同主程序调用, 以及x1的判断及结果返回的功能:

3) 计算齿顶系数h*a的函数。实现h*a值计算及返回:

4) 计算齿根系数hf*的函数。实现hf*值计算及返回, 根据公式计算, 此处省略。

4 结论

本论文通过应用VBA编程的方式, 解决复杂变速箱中心距设计的问题。应用计算机每分钟可以完成3×104种方案筛选, 这是手工计算所不能达到的, 同时可以从筛选的结果中选出最优化的方案, 实现优化变速箱中心距、变位系数等多方面的功能。

参考文献

[1]谭浩强.Visual Basic程序设计[M].北京:清华大学出版社, 2000.

[2]闻邦椿.机械设计手册[M].北京:机械工业出版社, 2012.

《信息的编程加工》教学设计 篇4

本课是教育科学出版社出版的普通高中课程标准实验教科书《信息技术基础》 (必修) 第三章的第二节, 按教学大纲要求, 本节共2课时, 本课是第1课时。

教材选用了“绘制函数图像”作为范例, 考虑到绘制图像的代码书写复杂, 并且需要一定的计算机图形学的知识支撑, 学生需要花时间和精力去了解相关知识, 不适合作为高一信息编程加工第一课时内容。结合教学大纲要求, 笔者在搜集大量资料的基础上对教材内容做了二次开发, 将“绘制函数图像”安排到第二课时。本课让学生初步了解信息编程加工的一般过程, 初步认识程序代码, 感受利用计算机编制程序解决问题的魅力。教材没有详细介绍编程加工的关键步骤———算法, 但是这部分内容是程序的核心, 所以, 引入算法的定义及简单算法的设计内容, 对学生了解编程加工的各个环节更有帮助。

学情分析

高一学生思维活跃, 已经具有一定的独立研究能力, 逻辑思维能力也日趋严密, 对编程涉及的一些数理逻辑基础知识有了一定了解。所教学生大部分来自城市, 动手能力较强, 思维较活跃, 也乐于接受新鲜事物。但是, 程序设计很少有学生接触过, 再加上内容本身相对枯燥, 因此, 创设情景, 激发学生兴趣, 消除他们对程序设计的陌生和畏难情绪, 调动他们学习和探究的主动性、积极性, 显得尤为重要。学生不可能用一节课的时间对编程掌握多少, 但让他们在体验中理解编程加工的主要过程, 了解其内在机制, 并通过解决事先设计的问题, 有成功的体验和收获是完全能够达到的。

课时安排

一课时。

教学目标

知识与技能———了解信息编程加工的概念并体验信息编程加工的主要过程;掌握解决问题的方法和步骤———算法, 初步学习简单算法的设计;理解并能够用VB语言实现算法, 尝试简单代码的书写。

过程与方法———通过经典故事的导入, 激发学生学习兴趣和学习积极性;通过对问题的分析, 了解编程加工的一般过程;通过一个问题有多种算法, 感受算法设计的魅力, 了解算法是编程的核心;通过学生自我探究, 教师适当地引导讲解, 让学生掌握编程中简单算法设计、代码实现的方法。

情感态度和价值观———消除学生对程序设计的神秘感, 产生对程序设计的求知欲, 形成积极主动地学习算法与程序设计的态度;逐步养成严谨、科学的程序设计思想, 初步培养利用计算机解决问题的思维;通过自主探究, 培养学生的探索精神与合作精神。

教学重、难点

教学重点———分析人与计算机解决问题的特点;引导学生了解计算机解决问题的过程;简单算法的设计;尝试程序设计。

教学难点———引导学生分析问题的解决步骤;让学生理解算法、用VB语言书写简单代码。

教学方法

讲解演示法、任务驱动法、游戏教学法、讨论探究法。

教学环境

计算机教室、广播软件。

课前准备

学生下载半成品源代码、学习任务书。

教学过程

一、故事导入, 引出课题 (6分钟)

【教师】展示“国际象棋与麦子”的故事:相传古印度宰相达依尔, 是国际象棋的发明者。有一次, 国王因为他的贡献要奖励他, 问他想要什么。达依尔说:“请在棋盘的第一个格子里放上1粒麦子, 在第2个格子里放上2粒麦子, 在第3个格子里放上4粒麦子, 在第4个格子里放上8粒麦子, 依此类推, 每个格子里放的麦子数都是前一个格子里放的麦子数的2倍, 直到第64个格子。请给我足够的粮食来实现上述要求。”你认为国王有能力满足达依尔上述要求吗?

同学们思考一下, 用已经学过的知识, 能够计算出棋盘按照达依尔的要求放满后一共有多少粒麦子吗?

【学生】讨论。可以运用口算、笔算, 甚至利用计算器计算。

【教师】这些人工的计算手段计算效率低下, 老师编写了一个简单的小软件, 大家使用看看!

【学生体验】使用小软件, 点击计算按钮, 窗体上打印出计算结果:总计需要麦粒1.84467440737096E+19粒。

【教师】事实上, 按当时的生产力水平, 填到第36个方格的时候, 地球上的粮食就已经告罄了, 这位宰相真是聪明。我们可以想象, 他们当时计算这个结果时肯定花了很多功夫。而同学们利用小软件很快就算出了结果。由此, 请同学们分析人和计算机解决问题的区别?

【学生】填写学习任务书中的表格:

【教师】那么, 如何编写程序, 帮助我们利用计算机更好地解决问题呢?

展示课题:信息的编程加工。

设计意图:创设情境, 激发兴趣, 任务驱动。通过计算效率的对比, 让学生对编程有个直观认识。

二、活动1:体验信息的编程加工的整个过程 (18分钟)

【教师】编程加工:利用某种计算机语言, 对解决问题的方法和步骤进行描述, 然后通过调试和修改得到可实现加工目标的程序, 最终解决问题。

展示问题:利用VB编写程序实现交换两个变量中的数据 (经典题目) 。

【教师】下面我就带领大家通过这个经典问题, 了解一下信息编程加工的一般步骤。

1.分析、体验解决问题的过程第1步:需求分析

显然, 我们的目的是要换两个变量中的数据。第2步:算法设计

明确了需求, 接下来就是算法设计。那么什么是算法呢?

【教师】有个农夫要把一筐白菜、一只羊和一条狼运过河。可他的船很小, 每次只能运一样东西。当他运白菜的时候, 狼会把羊吃掉;而运狼的时候, 羊又会把白菜吃掉!他该怎样搬运呢?看谁完成得最快最好?

【学生】体验“农夫过河”小游戏, 找到解决问题的方法。

【教师】在计算机的世界里面, 我们把解决问题的方法和步骤叫算法。算法不仅是指计算的方法, 而且还包含从何处着手、解题步骤以及结果处理等全过程。算法设计是整个编程的核心。

那么, 如何实现交换两个变量中的数据呢?请同学们思考一个生活中的例子:A瓶中装有酒精, B杯中装有醋, 现在我们要把两个瓶子中的内容交换, 怎样交换?

【学生】讨论, 回答。

【教师】答案很显然, 我们要借助于一个空瓶子C, 首先将A瓶中的酒精放入空瓶C中;然后将B瓶中的醋放入A瓶中;最后将C瓶中的酒精放入B瓶中。

【教师】那么同学们能不能把这个问题的解法迁移到两数交换上来呢?

【学生】讨论, 回答。

【教师】算法可以使用自然语言、伪代码、流程图等多种不同的方法来描述。

【学生】尝试利用所学知识, 画出算法的流程图 (如图4) (结合文本信息的结构化相关内容) 。

第3步:编程实现 (给学生准备已经设计好界面的半成品源文件) 。

【教师】算法有了之后, 接下来就是利用编程软件实现算法了。

简要介绍软件半成品窗口界面各元素。

【学生】打开“交换两数.frm”, 补充代码完成程序。VB语法提示:参考学习任务书 (赋值语句) 。

Private Sub Command1_Click ()

'定义变量 (不要修改此区域代码)

Dim a As Integer'将变量a定义为整型, 用来存放待交换的第一个数

Dim b As Integer'将变量b定义为整型, 用来存放待交换的第二个数

Dim c As Integer'将变量c定义为整型, 用来存放临时数值

'将文本框中的值给变量a和b (不要修改此区域代码)

a=Val (Text1.Text)

b=Val (Text2.Text)

'程序部分, 请在以下区域填写代码

'将变量a和b的值给文本框 (不要修改此区域代码)

Text1.Text=a

Text2.Text=b

End Sub

第4步:调试运行。

【教师】刚编写的程序不一定正确, 必须在计算机上实际运行, 排除程序中的错误, 测试其能否达到预期的结果。编程本身其实就是个不断完善的过程。

2.分析学生实践中出现的问题、易错点

赋值语句“=”与代数表达式“=”的区别, 例:a=3;b=1;a=a+3;a=a+b。

3.小结

计算机解决问题的过程 (如图6) :

设计意图:通过编程解决交换两数这一经典问题, 步步分解, 让学生体验信息编程加工的整个过程。

三、活动2:算法再思考, 体验算法设计的魅力 (6分钟)

问题:如果不使用中间变量, 如何实现交换两个变量中的数据?

【教师】计算机解决问题的方法是多种多样的, 对于两个变量中数据的交换, 如果不使用中间变量, 有没有办法实现?

【学生】探究讨论, 得出结论。

方法2:方法3:

a=a+ba=a-b

b=a-bb=a+b

a=a-ba=b-a

设计意图:通过一题多解, 学生自主思考体会算法设计

的巧妙, 加深对算法这一编程核心的理解。

四、活动3:自我挑战 (10分钟)

【学生实践】计算出棋盘按照达依尔的要求放满后一共有多少粒麦子 (任务提示:可参考知识链接中的循环结构相关知识点) ?

1.算法描述 (完善流程图, 如图7)

2.完善代码: (打开“麦子问题.vbp”)

Dim s As Double'棋盘上麦子的总数为S

Dim n As Integer'棋盘的格数为n

'程序部分, 请在以下区域填写代码

Print″麦子的总数是″;;″粒″

设计意图:通过学习任务单提供帮助, 学生完成“国际象棋与麦子”程序的编写, 与课堂导入相呼应, 让学生体会到成功的喜悦, 增强了学习的自信心和对编程的兴趣。

五、练习讲评 (4分钟)

六、小结 (1分钟)

(1) 人和计算机解决问题的区别。

(2) 计算机解决问题的实质是人分析问题、设计算法, 然后编写程序, 计算机只是工具, 将烦琐的计算交给计算机。

上一篇:标准曲线下一篇:《新建筑》等