基于单片机的步进电机系统设计 联系客服

发布时间 : 星期六 文章基于单片机的步进电机系统设计更新完毕开始阅读

河南科技大学毕业设计(论文)

致 谢

首先诚挚的感谢我的论文指导老师,从选题的确定、论文的写作、修改到最后定稿过程中,自始至终都倾注着老师的心血。特别是他多次询问写作进程,并为我指点迷津,帮助我开拓思路,老师以严谨的治学之道、宽厚仁慈的胸怀、积极乐观的生活态度,兢兢业业、孜孜以求的工作作风和大胆创新的进取精神为我树立了一辈子学习的典范,他的教诲与鞭策将激励我在学习和生活的道路上励精图治,开拓创新。他渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。我以最诚挚的心意感谢指导老师。

在毕业设计期间,我要感谢许多让我分享他们宝贵经验和知识的老师,教会我正确的思考方式。同时,也要感谢在论文写作过程中,帮助过我、并且共同奋斗四年的大学同学们,能够顺利完成论文,离不开他们的帮助,在此表示最深的谢意。

37

河南科技大学毕业设计(论文)

附 录

毕业设计源程序

#include

#define uchar unsigned char #define uint unsigned int

sbit key_jiasu =P3^0; //定义加速按键 sbit key_jiansu=P3^1; //定义 减速按键 sbit key_stop=P3^2; //定义停止按键 sbit key_zheng=P3^3; //定义正传按键 sbit key_fan=P3^4; //定义反转按键 sbit dis_seg=P3^6; //锁存段 sbit dis_bit=P3^5; //s锁存位

unsigned char code dis_code[15]={~0xc0,~0xf9,~0xa4,~0xb0,

// 0, 1, 2, 3

~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90, ~0xff,0x40};// 4, 5, 6, 7, 8, 9, off fu、定义0-10字符

uint moto_delay, speed ,state; //转速变量 电机工作状态变量 uchar rotate[5]={0x03,0x06,0x0c,0x09,0x00}; //电机转动 /*下面设定15个转速值,及15个转速值的定时器时间*/

uint zhuansu[]={4600,4350, 4100,3850, 3600 ,3350 ,3100

,2850,2600, 2350, 2100,1850,1600, 1350 ,1100, } ;

uint timer_set[]={62988 , 62842 ,62678 , 62492 , 62281

, 62038 , 61756 , 61424 ,61029 ,60549 ,59956 ,59202 ,58212 ,56855 ,

54883};

uchar dis_temp[5];//定义临时显存 //数码管显示模块 void delay(uint z)

38

河南科技大学毕业设计(论文)

{

uint x,y;

for(x=100;x>1;x--) for(y=z;y>1;y--); }

void data_ref(void) //显存更新 {

if(state!=0) {

if(state==1) dis_temp[0]=10; else dis_temp[0]=11;

dis_temp[1]=zhuansu[speed]/1000; // 千位 dis_temp[2]=(zhuansu[speed]00)/100; //

百位

// 反转显示负号

dis_temp[3]=(zhuansu[speed]0)/10; //十位 dis_temp[4]=(zhuansu[speed]); } else {

dis_temp[4]=10; dis_temp[0]=10;

dis_temp[1]=10; dis_temp[2]=10; dis_temp[3]=10;

//清楚显示

//个位

} }

void display() {

static unsigned char k; if((++k)>4) k=0; P2= 0xff; dis_bit=1;

39

河南科技大学毕业设计(论文)

dis_bit=0;

if((k==2)&&(state!=0)) P2=dis_code[dis_temp[k]]|0x80; else P2=dis_code[dis_temp[k]]; dis_seg=1; dis_seg=0; P2=~(1<

void key_scan (void) {

if(key_stop==0) {

delay(20); //延时20ms 消抖 if(key_stop==0) 记=ting

while (key_stop ==0); data_ref(); }

//等待停止按键松开

state=0; //确认停止按键按下 正反转标

//停止按键按下

else if(key_zheng==0) {

delay(20);

if(key_zheng==0) state=1; //确认正传按键按下 正反转标记=zheng

while (key_zheng ==0); data_ref(); }

else if(key_fan==0) {

delay(20);

if(key_fan==0) state=2; //确认反转按键按下 正反转标记=fan

40