基于单片机直流电动机控制系统设计及程序实现.pdfVIP

  • 1
  • 0
  • 约9.15千字
  • 约 12页
  • 2026-01-15 发布于北京
  • 举报

基于单片机直流电动机控制系统设计及程序实现.pdf

附录1直流电机控制系统程序

#includereg51.h//包含单片机寄存器的头文件

#includeintrins.h//包含_nop_()函数定义的头文件

#defineucharunsignedchar

#defineuintunsignedint

sbitS1=P1^2;//位定义S1为P1.2

sbitS2=P1^3;//位定义S2为P1.3

sbitS3=P1^4;//位定义S3为P1.4

sbitK1=P2^4;//位定义K1为P2.4

sbitK2=P2^5;//位定义K2为P2.5

sbitK3=P2^6;//位定义K3为P2.6

sbitK4=P2^7;//位定义K3为P2.7

sbitRS=P2^0;//寄存器选择位,将RS位定义为P2.0引脚

sbitRW=P2^1;//读写选择位,将RW位定义为P2.1引脚

sbitE=P2^2;//使能信号位,将E位定义为P2.2引脚

sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚

/********************************************************

PC向单片机发送数据的串口程序

********************************************************/

unsignedcharReceive(void)

{

unsignedchardat;

while(RI==0)//只要接收中断标志位RI没有被置“1”

;//等待,直至接收完毕(RI=1)

RI=0;//为了接收下一帧数据,需将RI清0

dat=SBUF;//将接收缓冲器中的数据存于dat

returndat;

}

/*****************************************************

函数功能:延时1ms

(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒

***************************************************/

voiddelay1ms()

{

unsignedchari,j;

for(i=0;i10;i++)

for(j=0;j33;j++)

;

}

/*****************************************************

函数功能:延时若干毫秒

参数:n

***************************************************/

voiddelay(unsignedcharn)

{

unsignedchari;

for(i=0;in;i++)

delay1ms();

}

/*****************************************************

函数功能:判断液晶模块的忙碌状态

返回值:result。result=1,忙碌;result=0,不忙

***************************************************/

unsignedcharBusyTest(void)

{

bitresult;

RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态

RW=1;

E=1;//E=1,才允许读写

_nop_();//空操作

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

result=BF;//将忙碌标志电平赋给result

E=0;

returnresult;

}

/****************************************************

文档评论(0)

1亿VIP精品文档

相关文档