李庆锋计算机课程设计(4)

2019-02-15 11:43

12

本科生课程设计(论文)

第3章 系统软件设计

3.1 程序流程

系统上电后首先应该对各个应用模块进行初始化,初始化完毕后对键盘输入模块进行扫描输入,使用者可以根据的实际需求进行定子电压、定子电流、工作温度、工作转速的报警值进行设置,在显示模块LCD12864ZW上显示对应的数据。键盘设定结束后系统开始工作,进行3路AD采样及1路脉冲累加计数处理,对应的处理结果和操作者设置的值做比较如果小于设置报警值,则系统不作出行为,继续采样;若大于设定报警值,则系统会跳到报警步骤,报警后若使用者不消除报警(即关闭电机或者手动降低电机相关工作参数)则系统会持续的报警直至使用者消除报警为止。设计的系统流程图如图3.0所示。

图3.0系统流程图

12

13

本科生课程设计(论文)

XS128对应的编程文件如下:

/*******************头文件**********************/ #include #include \

/***********总线时钟倍频设置此次设置为48MHZ***********/ void SetBusCLK_48M(void) {

CLKSEL=0x00; PLLCTL_PLLON=1; SYNR=0XC0 | 0X05; REFDV=0X80 | 0X01; POSTDIV=0X00; _asm(nop); _asm(nop);

while(0==CRGFLG_LOCK);//锁相环锁定 CLKSEL_PLLSEL=1;//选定外部时钟 }

3.2 各模块程序设计

3.2.1 3路AD模拟采样程序

/************** AD模块初始化程序*******************/ void ADC_Init(void) { ATD0CTL0=0x07; ATD0CTL1=0xc0; ATD0CTL2=0x40; ATD0CTL3=0xB0;

ATD0CTL4=0xa8; ATD0CTL5=0x30; ATD0DIEN=0x00; }

/**************** AD模块采样程序*******************/ void lightAverage(void)

13

14

本科生课程设计(论文)

{ ulong V_Realsum=0,I_Realsum=0,Tem_Realsum =0;int i; for(i=1;i<=50;i++) //算数平均值滤波法 { while(!ATD0STAT0_SCF); //等待转换完成 //累加求和// V_Realsum += ATD0DR0; I_Realsum += ATD0DR1; Tem_Realsum += ATD0DR2; }

V_Real = V_Realsum/50; I_Real= I_Realsumsum/50; Tem_Real=Tem_Realsum/50; }

3.2.2 1路脉冲累加程序

/****************PIT模块初始化*******************/ void PIT_Init(void) { PITCFLMT_PITE=0; PITCE_PCE0=1; PITMTLD0=199; PITLD0=159; PITINTE_PINTE0=1; PITCFLMT_PITE=1; }

/****************中断脉冲计数*******************/ #pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt 8 Timer0_Onput(void) { s++;

TFLG1 |= 0x02; }

#pragma CODE_SEG DEFAULT

3.2.3 4个独立键盘程序

/******************独立键盘程序******************/

14

15

本科生课程设计(论文)

void KeyProcess()

{ if(K1==0) {Delay_ms(10); if(K1==0)

{ while(!K1); }

}

//延时去抖

if(K2==0) {Delay_ms(10); if(K2==0)

{ while(!K2); }

} {

Delay_ms(10); //延时去抖 {

while(!K3);

//等待K3键释放

if(K3==0)

//延时去抖

if(K3==0)

}

//K4键是确认键 //延时去抖 //等待K4键释放

}

if(K4==0) } } }

{

Delay_ms(10); if(K4==0) {while(!K4);

3.2.4 矩阵键盘程序

/******************矩阵键盘程序******************/ void keyscan()

15

16

本科生课程设计(论文)

{ //需提前定义XS123PB4~PB7口作为绝阵键盘的接受I/0口// // scan1为PB口定义变量//

if((scan1&0xf0)!=0xf0) //判键是否按下 { delayms(30); //延时30ms if((scan1&0xf0)!=0xf0) //二次判键是否按下 { POPTB=0x0f; scan2= POPTB;

keycode=scan1|scan2; //组合成键编 for(j=0;j<=15;j++) {

if(keycode== key_code[j]) { key=j; return(key); } } } }

else POPTB =0xff; return (16); }

Void keydown(void) {

POPTB =0xf0;

if((POPTB &0xf0)!=0xf0) {

keyscan(); } }

3.2.5 LCD12864显示程序

/******************显示程序******************/ //定义显示数组//

uchar const IC_DAT[]={\电机运行状态监测\

16


李庆锋计算机课程设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公文写作知识具体分析及范例

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: