参考文献
[1] 张文灼.单片机应用技术.机械工业出版社.2008 [2] 李先允.电力电子技术.中国电力出版社.2006
[3] 张琛.直流无刷电机原理及应用.机械工业出版社.1996 [4] 谭建成.电机控制专用集成电路.机械工业出版社.1997 [5] 王晓明.电动机的单片机控制.北京航空航天大学出版社.2002 [6] 吴守箴,臧英杰.电气传动的脉宽调制控制技术.机械工业出版.1995
[7] 胡文静.永磁无刷直流电动机的发展及展望.微特电机.2002.35(4):34~38
[8] 张毅刚 ,等.新编MCS-51单片机应用设计.哈尔滨工业大学出版社.2003
[9] 赵亮 侯国锐.单片机C语言编程与实例.人民邮电出版社.2003 [10] 蔡耀成.无刷直流电机中的霍尔位置传感器.微特电机.1999.27(5):23~25
25 / 37
致谢
在这次毕业设计中,要特别感谢我的导师河北科技大学李争(博士)给予的耐心细致的指导,对于在设计过程中所遇到的许多具体问题,他均提出了相应的解决方案。这对于毕业设计的顺利完成起到了十分重要的作用。
26 / 37
附录A: 程序:
#include
#define uchar unsigned char #define ulong unsigned long
extern uchar zs; /*定义转速变量*/
extern uchar tag=0x00,tag1=0x00; /*启动标志位和闪烁标志位*/ extern ulong zssd=3000; /*转速设定*/ ulong count; /*脉冲计数*/ ulong zkbg,zkbd; /*占空比高低*/ sbit P14=P1^4; sbit P15=P1^5; sbit P16=P1^6; sbit P17=P1^7;
uchar code p1[]={0x00,0x90,0x91,0x92,0x93,0x00}; /*数码管位选*/ uchar *zy=p1; /*定义指针指向数组p1*/ void d_ms(uchar m) {
uchar i,j;
for(i=0;i /*延时程序*/ for(j=0;j<100;j++) /*延时100*m微秒*/ } void start() { if(tag==0) /*系统未启动*/ { 27 / 37 { } ; /*开始程序*/ P0=0xFF; /*数码管各段全亮,确认完好无损*/ P1=0xFF; /*数码管全部选通*/ P0=0x00; P1=0x00; tag=1; /*启动标志位置1系统启动*/ } else tag=0; /*再次按下,标志位置0*/ } void up() /*向上箭头函数*/ { if(tag1==0) /*闪烁标志位为0*/ { If(zssd<=4000) /*最大转速为4000转*/ { zssd+=100; /*无闪烁,转速设定+100转*/ } } void fanzhuan() /*反转函数*/ { } else /*有闪烁,位选与转速*/ switch(*zy) { } case 0x90: zssd=zs+1000;break; case 0x91: zssd=zs+100;break; case 0x92: zssd=zs+10;break; case 0x93: zssd=zs+1;break; 28 / 37