C模块编程范例.docVIP

  • 8
  • 0
  • 约1.21万字
  • 约 7页
  • 2017-06-04 发布于河南
  • 举报
C模块编程范例

/**********************************************************************************/ /*******************课题:直流电机的转速控制(闭环调节)***************************/ /**********************************************************************************/ #include main.h /**********************************************************************************/ /*******************************声明使用的变量*************************************/ /**********************************************************************************/ int set_value; int now_speed; int count; int N_C; /**********************************************************************************/ /**********************************主函数******************************************/ /**********************************************************************************/ void main() { lcd_init(); //LED初始化 TL1 = 0x06; //设定方波周期为0.25ms TH1 = 0x06; TMOD = 0X25; //设置定时器1工作方式1,计数器0的工作方式1(参考书本104页) TL0 = 0x00; //计数器的初值为0 TH0 = 0x00; ET1 = 1; //打开定时器1中断 TR1 = 1; //打开定时器1 TR0 = 1; //打开定时器0 EA =1; //打开全局中断 while(1) { keys(); //扫描设定转速 write_first(8,set_value); //1602第一行显示设定值 write_second(8,now_speed); //1602第二行显示实际值 N_C= (set_value-now_speed)/100.0; //调整 } } /**********************************************************************************/ /****************************中断函数:检测实际转速********************************/ /**********************************************************************************/ void timer1() interrupt 3 //定时器1中断,定时 { count++; if(count60) //60个250uS计数器一直计数 { count = 0; now_speed=(TH0*256+TL0)*17; //计算转速 TL0=0x00; //计数器初值清0 TH0=0x00; TF0=0; //清楚中断标志位 } if(count (set_value/10

文档评论(0)

1亿VIP精品文档

相关文档