内容发布更新时间 : 2024/11/19 20:24:23星期一 下面是文章的全部内容请认真阅读。
电路得到等值输出电流对应的电压信号。这两个信号进入MAXl97进行模数转换,最终送入单片机通过程序控制使其在液晶模块中显示出来。本系统采用MAXl97内部时钟模式,内部控制的转换模式和内部的参考电压值4.096V,量程为0--一10V。图3.18为A/D转换电路图。
图3.18 A/D转换电路图
本论文选择CH0与CHl通道分别作为电压和电流的采样输入通道。对A/D转换芯片来说,高精度的参考电压是十分重要的,因为他可以直接影响数据转换的精度,一般的A/D转换芯片都要外接参考电压,而MAXl97内部自带参考电压,本电路即采用其内部4.096V的参考电压。 图3.18中REF脚接4.7,uF电容到地,同时REFADJ脚接0.01/zF至U地是采用内部参考电压的典型接法。两芯片的读写控制端相连,单片机的P0口线用来接收MAXl97的12位转换结果。AT89C52通过检测P1.6脚电平来查询转换是否结束,通过对P1.7脚的置位来分时传送12位检测结果的高位与低位,最后由单片机的程序控制将输出电压和电流显示在液晶模块上。
4.系统软件设计
有了硬件电路这个平台,还需要结合一定的软件才能使系统有效的执行预期功能。软件的研发主要是针对本单元核心处理器AT89C51和AT89C52的编程,使其在各条指令的控制下,有序高效的完成各项任务。在研制单片机应用系统中,汇编语言是一种常用的软件工具,它能直接操作硬件,指令的执行速度快,但其指令的固有格式受硬件结构的限制很大,难以编写与调试,可移植性也差。与汇编语言相比,C51在功能、结构、可读性、可维护性上有明显的优势,另外,C51的语言简洁,可移植性好,生成的代码质量高,在代码效率方面可以与汇编语言
相媲美。因此,(251己成为开发51系列单片机的流行软件工具。本系统的软件开发同样也是基于C51编型了71。
本系统的软件部分主要包括两大部分功能模块,其中单片机AT89C51主要负责控制功能的实现,例如键盘输入模块和控制脉冲产生程序。而AT89C52则主要作为检测芯片完成系统输出电压与电流的模数转换以及脉宽和频率的测定功能。与此同时,不管在控制芯片或者检测芯片工作过程中,两者都涉及到液晶显示功能的实现。
本系统主要采用模块化的思想对系统的软件模块进行划分。主程序主要完成对各个功能块的依次调用即可。下面将予以详细介绍。 4.1整体程序流程
本系统的整体程序主要完成脉宽频率值的设定,控制脉冲的产生,输出参数的检测和显示等功能。此程序是系统软件部分的主干,其他各个模块的子程序都在主程序的基础上发展起来,受主程序调用。系统整体程序流程见图4.1。 系统上电后,首先进行各个参数变量的初始化工作,然后在液晶上显示系统欢迎界面“欢迎使用本系统\,持续数秒延时后进入初始设定界面,在此界面用户需设定要求的输出脉宽和频率值。在等待键盘操作的同时,液晶上一直显示初始设定界面内容直到有按键被检测到为止。当“ENTER”键被按下时,说明默认参数无须修改,直接开始输出控制脉冲;当“SURE\键被按下时,说明需要对默认参数进行修改,则进入参数设定子程序,其中包括keyboard()和key_scan()两个函数调用,前者完成修改项选择功能,后者实现键盘扫描以及数值修改的操作。当设定完毕之后,同样按下“ENTER’’键开始输出控制脉冲。由于设计要求在运行过程中需要对输出参数进行调整,所以设置了修改功能。当“MODIFY\键被按下后,单片机持续输出高电平信号,同时进入设定界面配合键盘操作修改输出参数使之满足要求;而“MODIFY\键不动作时,AT89C51始终保持输出控制脉冲并进行键盘扫描循环动作,AT89C52开始检测输出参数并且显示在液晶屏幕上。
4.2控制芯片程序模块4.2.1键盘处理程序
图4.1整体程序流程
图4.2keyboard0函数流程图
在单片机应用系统中,通常具有人机对话功能,能随时发出各种控制命令和数据输入以及报告应用系统的运行状态与运行结果,因此键盘电路被广泛应用于各种人机界面的环节中。键盘电路可分为独立连接式和矩阵式两类,每一类按其编码方法又都分为编码及非编码两种类型。
独立式按键是指直接用I/O口线构成的单个按键电路。每个独立式按键单独占有一根I/O口线。每根I/O口线的工作状态不会影响其他I/O口线的工作状态。独立式按键接口电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线。 在键数多时,I/0口线浪费较大,故只在按键数量不多时才采用这种按键电路。
在键盘中按键数量较多时,为了减少I/o口线的占用,通常将按键排列成矩阵形式。此种方法在键数比较多时才能体现出其自身的优势。
本系统键盘处理程序由两个函数构成,其中keyboard()函数主要执行外层频率与脉宽的参数选定工作,内层key_scan()函数则主要完成对选定参数的数值更改等功能。外层keyboard()函数的流程图如_图4.2所示。
Key_scan()函数是键盘键值扫描程序,通过调用此程序便可得到用户按键的键值,从而了解用户意图,实现人机对话。Key_scan()函数的工作过程是:单片机将P2.0一P2.5.口置为高电平,随后采用查询方式不停判断这6个口线上电平的变化情况,当有低电平出现时,说明有键按下,去抖后再次判断此口是否仍旧是低电平,如果是说明此次按键有效,通过判断是哪个口为低电平便可确认是哪个键按下,从而获取对应的键值。 4.2.2脉冲产生程序
本模块有output()函数和output timer()函数构成。output0函数调用output timer()函数主要完成输出高低电平工作,同时其也被主函数调用。当参
数设定完毕之后,单片机AT89C51的P1.O引脚不断输出控制脉冲,保证系统的正常运行。
脉冲产生程序模块用来给出控制SG3525工作时间的脉冲波形,单片机与脉宽调制芯片SG3525的关断控制引脚10相连。在控制脉冲为高电平时间段,SG3525停止工作,系统输出端为低电平。反之则为高电平。在用户输入了系统输出端要求的脉宽和频率值后,便可得到控制脉冲的高低电平时间。图4.3为脉冲产生程序流程图。由于程序语言在单片机中的执行时间是以微秒为计量单位的,所以为了使脉冲的高低电平时间更加精确,程序中以微秒作为时间单位。由于本系统单片机采用12M晶振,那么其定时器最长定时只有65.535ms,但是要求的频率变化范围是1Hz\,脉宽变化范围是10%\%,也就是说单片机输出脉冲的高低电平时间在2ms\之间变化,其范围超出了65.535ms的极限值。因此,此脉冲产生算法的思路为对传递进来的时间参数以50ms为时间节点分为两个流程,分别对其定时输出高低电平。
图4.3脉冲产生程序流程图
算法具体工作流程为:若时间参数大于50ms,则变量m为50ms的整数个数,。n为时间参数去掉ra个50ms剩余的时间,此时长在50ms以内。第一步定时50ms,在中断服务程序中设置标志位t记录申请中断次数使其累计计时m个50ms,第二步再对剩余时间n定时,同样当标志位flago置位时,定时结束,立即将P1.0口电平取反,重复上述步骤;而时间参数小于50ms的情况等同于上述情况第二