- 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)