基于单片机的数控恒流源设计----软件设计.docVIP

基于单片机的数控恒流源设计----软件设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于单片机的数控恒流源设计----软件设计

3.系统软件设计 本系统的软件设计采用C51语言和汇编语言混合编程。主体程序采用C51编写,与硬件有关的程序、特别是对时序要求较严格的程序用汇编语言编写,即键盘扫描子程序、写TLC5618子程序、读MC14433子程序、显示缓冲子程序。因为采用了C51和汇编语言混合编程的方式,故大大提高了本系统软件设计的效率和质量。 数控电流源的软件开发在 Keil μVision4集成开发环境下完成的。Keil μVision4集成开发环境是基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发流程。可以完成从工程建立、管理、编译连接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程。尤其是C语言编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,在开发大型项目时非常理想。 Keil μVision4的使用方法是:1.启动Keil μVision4集成开发环境,创建一个工程文件,并从器件数据库里选择一款CPU芯片(本课题使用AT89C52芯片);2.根据应用要求,在PC上用文本编辑软件编写C语言源程序、汇编语言源程序;利用编译工具软件对源程序进行编译,生成目标文件(.obj文件);利用连接工具对目标程序进行连接定位,生成绝对程序,将程序转化为十六进制代码程序(.hex文件),急可以装载到CPU芯片上运行。 3.1主程序 3.1.1主程序流程框图及程序 主程序流程框图如图3-1所示。由主程序流程框图可知,其中的“扫描键盘”起到了很重要的作用,扫描键盘函数的返回值作为C51主程序中Switch语句的开关变量,根据不同的返回值进行相应的按键处理,因而主程序流程框图相当简单,并且系统软件整体程序的可读性高。 主程序是数控电流源软件设计的核心,主要由电流给定值设置功能函数、电流步进值设置功能函数、菜单选择功能函数、数码管定时刷新功能函数以及中断设置等构成。设置电流给定值程序流程框图如图3-2所示,设置电流步进值程序流程框图如图3-3所示。为完成数控电流源整体系统设计,在C51主程序中适时调用键盘扫描汇编语言子程序、写5618汇编语言子程序、读MC14433汇编语言子程序、显示缓冲汇编语言子程序,从而体现了C51语言程序和汇编语言程序相互调用的方便性。 图3-1 主程序流程框图 #include reg52.h #define uchar unsigned char #define uint unsigned int sbit ledbit=P2^0; /* 功能指示灯控制位 */ uchar idata buffer[8]; /* 定义键盘输入缓冲区 */ uchar idata keycode; /* 扫描键盘码变量 */ uchar idata stepval=1; /* 步进值变量 */ uchar idata showflag=0; /* 当前显示标志,用以决定当前显示内容 */ uint idata givecur=0; /* 电流输出给定值控制变量 */ uint idata truecur; /* 电流实测值变量 */ extern uchar readkey(void); /* 声明扫描键盘函数为外部函数,此函数使用 汇编语言编写 */ extern void showbuffer(uchar*); /* 声明缓冲区显示函数为外部函数,入口参数 为全局变量数组buffer的首址 */ extern void write5618(uint); /* 声明写TLC5618为外部函数,入口参数为要 写入的16-bit二进制数据,默认为TLC5618 的模拟A通道 */ extern uint read14433(void); /* 声明读MC14433为外部函数,无入口参数, 出口参数为读出的16-bit二进制数据 */ /* 函数原型:void de15s(void) */ /* 功能:信息提示延时显示,按任意键返回 */ /* 调用函数:readkey( ) */ /* 入口参数:无 */ /* 出口参数:无 */ void de15s(void) { uint m,n; for(m=0;m=2000;m++) { if(readkey()!=0xff)break; /* 按任意键跳出循环*/ for

文档评论(0)

wyjy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档