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