基于proteus的步进电机电机仿真

基于proteus的步进电机电机仿真
基于proteus的步进电机电机仿真

基于proteus的步进电机电机仿真

摘要:步进电机广泛应用在生产实践的各个领域。它最大的应用是在数控机床的制造中,因为步进电机不需要A/D转换,能够直接将数字脉冲信号转化成为角位移,所以被认为是理想的数控机床的执行元件。本设计利用proteus仿真软件进行电路仿真,系统通过设置四个按键分别控制不进电机的起止、圈数、方向、不进速度,使用1602液晶显示以上参数。整个系统具有稳定性好,实用性强,操作界面友好等优点。

关键词:proteus 仿真不进电机拍数

一、 Proteus简介

Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:

①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。

④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

二、整体电路分析

如下图,整个设计以STC89C51单片机为中心,由复位电路,时钟电路,电机驱动,步进电机,显示电路等组成,硬件模块如图2-1所示:

图1 硬件模块图

通过按键进行相应的参数设定,单片机接收到信号后经过判断驱动电机驱动模块,然后由驱动电路驱动步进电机运转,并用1602显示设置的参数。

三、系统硬件电路选择与设计

1、主控器的选择

按照题目要求本次主控单元使用C51单片机对整个系统进行控制。STC89C51RC包含512字节RAM 、32条I/O口线、3个16位定时/计数器、8输入4优先级嵌套中断结构、1个串行I/O口(可用于多机通信、I/O扩展或全双工UART)以及片内振荡器和时钟电路。此外,由于器件采用了静态设计,可提供很宽的操作频率范围(频率可降至0)。可实现两个由软件选择的节电模式、空闲模式和掉电模式。空闲模式冻结CPU,但RAM、定时器、串口和中断系统仍然工作。掉电模式保存RAM的内容,但是冻结振荡器,导致所有其它的片内功能停止工作。由于设计是静态的,时钟可停止而不会丢失用户数据。运行可从时钟停止处恢复。所以该单片机可以满足系统要求,电路图如下:

图2 单片机最小系统电路图

2、步进电机选择

步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机。单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。多相步进电动机有多相方波脉冲驱动,用途很广。本设计使用的是四相三拍步进电机,连接图如下:

图3 步进电机接线图

3、驱动电路的选择

驱动模块我们使用集成驱动芯片ULN2003,给芯片是高耐压、大电流达林顿管由七个硅NPN 达林顿管组成。该电路的特点如下:ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN 2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。

图4 ULN2003内部结构图图5 ULN2003管脚图ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。所以足以满足驱动步进电机的要求,连接图如下:

图6 uln2003接线图

4、显示电路的

LCD显示模块是把LCD显示屏、背景光源、线路板和驱动集成电路等部件构造成1个整体作为1个独立部件使用,只留1个接口与外部通信。显示模块通过这个接口接收显示的命令和数据,并按指令和数据的要求进行显示,外部电路通过这个接口读出显示模块的工作状态和显示数据。16 02液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每1个字符都有1个固定的代码。用户对模块写入适当的控制命令,即可完成清屏、显示、地址设置等操作。设计采用并行方式控制,LCD与单片机的通讯接口电路如图3所示采用直连的方法。

D 0D 7D 1D 2D 3D 4D 5D 6R S R W

E V C C V C C /V D D G N D D 7

14

D 613D 512D 411D 310D 29D 18D 07

E 6

R W 5R S 4V S S 1V D D 2V E E

3LM016L

图7 1602显示电路接线图

5键盘输入模块电路

设计中,键盘采用非编码键盘系统中的独立式按 键结构。键盘工作方式采用定时扫描方式。采用定时 器TO 定时,通过输出数据,识别按键的工作状态。键 盘

主要用来提供人机接口,电路如图3所示,采用独立 式按键电路,各按键开关均采用了上拉电阻,保证在按 键断开时,各I /O 有确定的高电平。按键功定义如 下:当P3.2按下时,步进电机开始加速;当P3.3按下 时,步进电机开始减速;当P3.4按下时,步进电机开始 正转;当P3.5按下时,步进电机开始反转。按键抖动的消除采用软件消抖实现。连接图如下:

图8 按键接连接图

四、系统软件设计 1、软件流程图

图9 系统流程图

2程序代码

见附件。

五、总结

采用模块程序设计,逐个模块调好以后,再进行系统程序总调试。利用仿真软件Proteus 及KeilC5l进行调试。系统实现了可程序设定和显示步进角、步进方向和步进速度,支持用开关量单独控制步进电机的转向,转速。电路简单可靠,结构紧凑,控制灵活,成本低,可移植性强。经实验验证,本系统对步进电机的各项控制都能达到比较理想的效果,具有较高的实用价值。通过此次课程设计,我不仅将知识融会贯通,而且在查找资料的过程中也了解了许多课外知识,开拓了视野,使自己在专业知识方面和动手能力方面有了很大的提高,让我学会了理论到实践的转化,即如何将自己学到的运用到以后的生活和工作中,同时,也让我意识到团队精神的重要性。

此外,感谢丁老师的悉心教导以及同学的帮助,正是王老师细心的辅导和提供的一些参考资料还有同学们的互相帮助,让我顺利的完成了毕业设计,相信这对我以后的生活和工作都会有很大的帮助。

六参考文献

[1]徐薇莉,曹柱中.控制理论与设计[M].上海:上海交通大学出版社.2003.

[2]黄坚.自动控制原理及其应用[M].北京:高等教育出版社,2004.

[3]先锋工作室.单片机程序设计实例[M].北京:清华大学出版社,2003.’

[4]王幸之,钟爱琴.AT89系列单片机原理及接口技术[M].北京:北京航天大学出版社,2004.

[5]康华光,陈大钦.模拟电子电路[M].北京:高教育出版社,2004.

七附录

(1) 整体电路图

G N D

S1S2

S3

S4

A B C D

S 1S 2S 3S 4D 0D 7

D 0D 7D 1D 2D 3D 4D 5D 6R S R W

E D0D1D2D3D4D5D6D7

V C C V C C /V D D G N D D 1D 2D 3D 4D 5D 6R S R W E D A B C X T A L 2

18

X T A L 1

19

A L E 30E A

31

P S E N 29R S T

9

P 0.0/A D 039P 0.1/A D 138P 0.2/A D 237P 0.3/A D 336P 0.4/A D 435P 0.5/A D 534P 0.6/A D 633P 0.7/A D 7

32P 1.01P 1.12P 1.23P 1.34P 1.45P 1.56P 1.67P 1.7

8

P 3.0/R X D 10P 3.1/T X D 11P 3.2/I N T 012P 3.3/I N T 113P 3.4/T 014P 3.7/R D

17

P 3.6/W R 16P 3.5/T 115P 2.7/A 15

28

P 2.0/A 821P 2.1/A 922P 2.2/A 1023P 2.3/A 1124P 2.4/A 1225P 2.5/A 1326P 2.6/A 1427U1

AT89C51

D 7

14

D 613D 512D 411D 310D 29D 18D 07

E 6

R W 5R S 4V S S 1V D D 2V E E

3LCD2

LM016L

1B 11C 162B 22C 153B 33C 144B 44C 135B 55C 126B 66C 117B

7

7C

10

COM 9U2

ULN2004A

起始键圈数键方向键

速度键

-4.81

234567891RP1

RESPACK-8

(2)程序代码

#include #include #define uchar unsigned char #define uint unsigned int

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

unsigned char code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; //反转 unsigned char code REV[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe}; //正转 //unsigned char code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //反转 //unsigned char code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //正转 sbit K1 = P3^2; //运行与停止 sbit K2 = P3^3; //设定圈数 sbit K3 = P3^4; //方向转换 sbit K4 = P3^5; //速率调整

sbit LCD_RS = P2^0; sbit LCD_RW = P2^1;

sbit LCD_EN = P2^2;

bit on_off=0; //运行与停止标志

bit direction=1; //方向标志

bit rate_dr=1; //速率标志

bit snum_dr=1; //圈数标志

uchar code cdis1[ ] = {"NO.0738230126 "};

uchar code cdis2[ ] = {" 2012/5/24"};

uchar code cdis3[ ] = {" STOP "};

uchar code cdis4[ ] = {"NUM: RATE: "};

uchar code cdis5[ ] = {" RUNNING "};

uchar m,v=0,q=0;

uchar number=0,number1=0;

uchar snum=20,snum1=20; //预设定圈数

uchar rate=3; //预设定速率

uchar data_temp,data_temP0,data_temp2;

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

/*

/* 延时t毫秒

/* 11.0592MHz时钟,延时约1ms /*

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

void delay(uint t)

{

uchar k;

while(t--)

{

for(k=0; k<124; k++)

{ }

}

}

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

void delayB(uchar x) //x*0.14MS

{

uchar i;

while(x--)

{

for (i=0; i<13; i++)

{ }

}

}

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

/* /*检查LCD忙状态

/*lcd_busy为1时,忙,等待。为0时,闲,可写指令与数据。

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

bit lcd_busy()

{

bit result;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

delayNOP();

result = (bit)(P0&0x80);

LCD_EN = 0;

return(result);

}

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

/* /*写指令数据到LCD /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。

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

void lcd_wcmd(uchar cmd)

{

while(lcd_busy());

LCD_RS = 0;

LCD_RW = 0;

LCD_EN = 0;

_nop_();

_nop_();

P0 = cmd;

delayNOP();

LCD_EN = 1;

delayNOP();

LCD_EN = 0;

}

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

/* /*写显示数据到LCD /*RS=H,RW=L,E=高脉冲,D0-D7=数据。

/*

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

void lcd_wdat(uchar dat)

{

while(lcd_busy());

LCD_RS = 1;

LCD_RW = 0;

LCD_EN = 0;

P0 = dat;

delayNOP();

LCD_EN = 1;

delayNOP();

LCD_EN = 0;

}

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

/* /* LCD初始化设定

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

void lcd_init()

{

delay(30);

lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据

delay(5);

lcd_wcmd(0x38);

delay(5);

lcd_wcmd(0x38);

delay(5);

lcd_wcmd(0x0c); //显示开,关光标

delay(5);

lcd_wcmd(0x06); //移动光标

delay(5);

lcd_wcmd(0x01); //清除LCD的显示内容

delay(5);

}

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

/* /* 设定显示位置

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

void lcd_pos(uchar pos)

{

lcd_wcmd(pos | 0x80); //数据指针=80+地址变量

}

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

/*

/* LCD1602初始显示子程序

/*

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

void LCD_init_DIS()

{

delay(10); //延时

lcd_init(); //初始化LCD

lcd_pos(0); //设置显示位置为第一行的第1个字符 m = 0;

while(cdis1[m] != '\0')

{ //显示字符

lcd_wdat(cdis1[m]);

m++;

}

lcd_pos(0x40); //设置显示位置为第二行第1个字符

m = 0;

while(cdis2[m] != '\0')

{

lcd_wdat(cdis2[m]); //显示字符

m++;

}

delay(3000); //延时

lcd_pos(0); //设置显示位置为第一行的第1个字符 m = 0;

while(cdis3[m] != '\0')

{ //显示字符

lcd_wdat(cdis3[m]);

m++;

}

lcd_pos(0x40); //设置显示位置为第二行第1个字符 m = 0;

while(cdis4[m] != '\0')

{

lcd_wdat(cdis4[m]); //显示字符

m++;

}

for(m=0;m<2;m++)

{

lcd_pos(0x0c+m); //显示方向符号

lcd_wdat(0x3e);

}

}

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

/*数据转换子程序

/*

/********************************************************/ void data_conv()

{

data_temP0=data_temp/10; //高位

if(data_temP0==0)

{data_temP0=0x20;} //高位为0不显示

else

{data_temP0=data_temP0+0x30;}

data_temp2=data_temp%10; //低位

data_temp2=data_temp2+0x30;

}

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

/*数据显示子程序

/*

/********************************************************/ void data_dis()

{

data_temp = snum; //显示圈数

data_conv();

lcd_pos(0x44);

lcd_wdat(data_temP0);

lcd_pos(0x45);

lcd_wdat(data_temp2);

data_temp = rate; //显示速率

data_conv();

lcd_pos(0x4d);

lcd_wdat(data_temP0);

lcd_pos(0x4e);

lcd_wdat(data_temp2);

}

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

/* 显示运行方向符号

/*

/********************************************************/ void motor_DR()

{

if(direction==1) //正转方向标志

{ for(m=0;m<2;m++)

{

lcd_pos(0x0c+m); //显示方向符号

lcd_wdat(0x3e);

}

}

else

{ for(m=0;m<2;m++) //反转方向标志

{

lcd_pos(0x0c+m); //显示方向符号

lcd_wdat(0x3c);

}

}

}

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

/* 显示运行状态

/*

/********************************************************/ void motor_RUN()

{

if(on_off==1)

{ TR0=1;

lcd_pos(0); //设置显示位置为第一行的第1个字符

m = 0;

while(cdis5[m] != '\0')

{ lcd_wdat(cdis5[m]); //RUNNING

m++; }

motor_DR(); //

}

else

{ TR0=0; P0 =0x0f;

lcd_pos(0); //设置显示位置为第一行的第1个字符

m = 0;

while(cdis3[m] != '\0')

{ lcd_wdat(cdis3[m]); //STOP

m++; }

motor_DR(); //

snum=snum1; //

number1=0; //清圈数计数器

}

}

/******************************************************** * * 主程序

*

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

main()

{

LCD_init_DIS();

TMOD = 0x01; //T0定时方式1

TL0 = 0x33;

TH0 = 0xf5;

EA = 1;

ET0 = 1;

P1=0;

while(1)

{

if(K1==0)

{

//beep();

while(K1==0); //等待键释放

on_off=~on_off;

motor_RUN();

} //K1 end

/********************************************************/ if(K2==0)

{

if(snum_dr==1)

{ snum++;

snum1=snum;

if(snum==0x14)

{ snum_dr=~snum_dr;}

}

else

{snum--;

snum1=snum;

if(snum==0x01)

{ snum_dr=~snum_dr; }

}

} //K2 end

/********************************************************/ if(K3==0)

{

direction=~direction;

motor_DR();

}//K3 end

/********************************************************/ if(K4==0)

{

if(rate_dr==1)

{ rate++;

if(rate==0x10)

{ rate_dr=~rate_dr;}

}

else

{

rate--;

if(rate==0x01)

{ rate_dr=~rate_dr; }

}

} //K4 end

/********************************************************/ if(number1==snum1) //与设定圈数是否相等

{ number1=0;

on_off=0;

TR0=0;

snum=snum1;

P1=0x0f;

motor_RUN();

}

data_dis();

} // while(1) end

} //main end

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

/* 定时器 T0 中断

/*

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

void motor_onoff() interrupt 1

{

TL0 = 0x33;

TH0 = 0xf5;

q++;

if(q < rate)

{ return; }

else

{ q=0;

number++; //脉冲计数

if(number==64) //64个脉冲电机转一圈 { snum--;

number=0;

number1++; } //电机转动圈数

if(direction==1) //方向标志

{ if(v<8)

{P1 = FFW[v];v++;} //取数据,正转

if(v==8)

{ v=0; }

}

else

{ if(v<8)

{P1 = REV[v];v++;} //取数据,反转

if(v==8)

{ v=0; }

}

}

}

基于单片机和proteus的步进电机控制

航空航天大学 课程设计 (论文) 题目:基于单片机和proteus的步进电机控制 班级 ******* 学号 ************ 学生姓名 X X X 指导教师 X X X

航空航天大学 课程设计任务书 课程名称计算机控制技术 院(系)专业 班级 ******** 学号 *********** 学生 ****** 课程设计题目基于单片机和Proteus的步进电机控制 课程设计时间年月日至年月日 课程设计容及要求: 利用Proteus仿真环境和C51编程软件,绘制基于51单片机的步进电机控制系统硬件原理电路、编制基于C51的步进电机控制软件,实现步进电机速度、方向、及旋转角度的计算机控制。本设计主要容有: 1) 了解51系列单片机及外围相关芯片、电路的工作原理和接口技术,学会 进行控制系统软件程序设计。 2) 编制程序完成步进电机速度、方向、及旋转角度的控制。 3) 设计相关的硬件电路,软硬调试实现步进电机速度、方向、及旋转角度的 控制,分析结果。 4) 学会运用“自动控制原理”、“现代控制理论”和“计算机控制技术”所 学理论知识进行控制器的设计和计算机控制的算法实现。为今后毕业设计、将来工作做必要的知识储备。 课程设计主要要求有:

1) 掌握步进电机工作原理和51单片机的工作原理、控制方式设置方法,给 出完整硬件原理图。 2) 学会利用C或C++等高级语言编程,实现步进电机速度、方向、及旋转角 度的控制功能。 3) 整理程序设计文档、按照课程设计要求撰写课程设计报告,字数不少于 8000字。 指导教师年月日 负责教师年月日 学生签字年月日

基于proteus的步进电机电机仿真

基于proteus的步进电机电机仿真 摘要:步进电机广泛应用在生产实践的各个领域。它最大的应用是在数控机床的制造中,因为步进电机不需要A/D转换,能够直接将数字脉冲信号转化成为角位移,所以被认为是理想的数控机床的执行元件。本设计利用proteus仿真软件进行电路仿真,系统通过设置四个按键分别控制不进电机的起止、圈数、方向、不进速度,使用1602液晶显示以上参数。整个系统具有稳定性好,实用性强,操作界面友好等优点。 关键词:proteus 仿真不进电机拍数 一、Proteus简介 Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是: ①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 ②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 ③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51uVision2等软件。 ④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 二、整体电路分析 如下图,整个设计以STC89C51单片机为中心,由复位电路,时钟电路,电机驱动,步进电机,显示电路等组成,硬件模块如图2-1所示: 图1 硬件模块图

Proteus仿真软件简介

Proteus仿真软件简介

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件,可完成从原理图布图、PCB设计、代码调试到单片机与外围电路的协同仿真,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC、A VR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。Proteus软件主要具有以下特点: ①具有强大的原理图绘制功能。 ②实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路的系统仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 ③支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、A VR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 ④提供软件调试功能。具有全速、单步、设置断点等调试功能,同时可以观察各变量以及寄存器等的当前状态,并支持第三方编译和调试环境,如wave6000、Keil等软件。 1. 新建设计文件 运行ISIS,它会自动打开一个空白文件,或者选择工具栏中的新建文件按钮,也可以执行菜单命令:“File”→“New Design”,单击“OK”按钮,创建一个空白文件。不管哪种方式新建的设计文件,其默认文件名都是UNTITLED.DSN,其图纸样式都是基于系统的默认设置,如果图纸样式有特殊要求,用户可以从System菜单进行相应的设置。单击保存按钮,弹出“Save ISIS Design File”对话框,选择好设计文件的保存地址后,在文件名框中输入设计文件名,再单击“保存”按钮,则完成新建设计文件操作,其扩展名自动为.DSN。 2. 选取元器件并添加到对象选择器中 选择主模式工具栏中的按钮,并选择对象选择器中的P按钮,或者直接单击编辑工具栏中的按钮,也可以使用快捷键P(ISIS系统默认的快捷键,表示Pick),会出现如图1所示的选择元器件对话框。 图1选择元器件对话框

根据Proteus的步进电机的设计仿真

目录 目录 (1) 摘要 (2) 第一章 Proteus绘制仿真原理图 (3) 1.1 Proteus简介 (3) 1.2 Proteus ISIS简介 (3) 第二章硬件电路设计 (4) 2.1 步进电机 (5) 2.1.1 步进电机简介 (5) 2.1.2 步进电机的特点 (5) 2.2 STC8951单片机 (6) 2.2.1 总述 (6) 2.2.2 性能 (6) 2.2.3 结构概览 (7) 2.2.4 芯片的引脚排列和说明 (8) 2.3 ULN2003A介绍 (10) 2.4 复位电路和时钟电路 (11) 2.5 整个电路的原理 (12) 第三章软件系统设计 (13) 3.1 电路流程图 (13) 第四章电路仿真 (13) 4.1 Proteus原理图绘制过程 (13) 4.2 仿真设置 (16) 第五章硬件电路的制作与调试 (19) 5.1焊接准备与注意事项 (19) 5.2单片机程序写入 (20) 5.3 硬件安装 (21) 5.4硬件调试 (22) 总结 (23) 参考文献 (24) 附录(程序) (25)

摘要 步进电机广泛应用在生产实践的各个领域。它最大的应用是在数控机床的制造中,因为步进电机不需要A/D转换,能够直接将数字脉冲信号转化成为角位移,所以被认为是理想的数控机床的执行元件。本设计利用proteus仿真软件进行电路仿真,系统通过设置四个按键分别控制不进电机的起止、圈数、方向、不进速度,使用1602液晶显示以上参数。整个系统具有稳定性好,实用性强,操作界面友好等优点。本文应用单片机、步进电机驱动芯片、字符型LCD和键盘阵列,构建了集步进电机控制器和驱动器为一体的步进电机控制系统。二维工作台作为被控对象通过步进电机驱动滚珠丝杆在X/Y轴方向联动。文中讨论了一种以最少参数确定一条圆弧轨迹的插补方法和步进电机变频调速的方法。步进电机控制系统的开发采用了软硬件协同仿真的方法,可以有效地减少系统开发的周期和成本。最后给出了步进电机控制系统的应用实例。

实验一proteus仿真软件使用方法

实验一 Proteus仿真软件使用方法 一.实验目的: (1)了解Proteus仿真软件的使用方法。 (2)了解51单片机编程器Keil与Proteus仿真软件的联用方法。 二.实验要求: 通过讲授和操作练习,学会正确使用Proteus仿真软件及Keil编程及其联合调试。 三.实验内容: (1)Proteus 仿真软件介绍 Proteus 软件是由英国LabCenter Electronics 公司开发的EDA工具软件,由ISIS 和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑软件。它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。 通过Proteus ISIS软件的VSM(虚拟仿真技术), 用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。 图1是Proteus ISIS的编辑窗口: 图1 ISIS的编辑界面 图中最顶端一栏是“标题栏”,其下的“File View Edit ……”是“菜单栏”,再下面的一栏是“命令工具栏”,最左边的一栏是“模式选择工具栏”;左上角的小方框是“预览窗口”,其下的长方框是“对象选择窗口”,其右侧的大方框是“原理图编辑窗口”。 选择左侧“模式选择工具栏”中的图标,并选择“对象选择窗口”中的P按钮,就会出现如图2的元器件选择界面:

图2 元器件库选择界面 在元器件列表框中点击你需要的器件类型(例如:电阻-Resistors,单片机芯片-MicroprocessorICs, LED-Optoelectronics)或在左上角的关键字(Keywords)框中输入你需要的器件名称的关键字(如:信号源 - Clock, 运放 - CA3140等),就会在图2中间的大空白框列出你所需的一系列相关的元件。此时,你可用鼠标选中你要的元件,则图2右上角的预览框会显示你所要元件的示意图,若就是你要的元器件,则点击OK按钮,该元器件的名称就会列入位于图1左侧的“对象选择窗口”中(参见图1左侧下方框)。 所需元器件选择好后,在“对象选择窗口”选择某器件,就可以将它放到图1中的“原理图编辑窗口”中(若器件的方向不合适,你可以利用图1左下角的旋转按钮来改变它)。将所要的元器件都选好后,将它们安放到合适的位置,就可以用连接线把电路连接好,结果存盘(请按规定的目录存盘,并记住其路径/目录/文件名[学号-实验序号])。 (2)51单片机编程器– Keil V3的使用 Keil编程器可用于MCS-51单片机软件编程与调试,它的工作界面如图3所示: Keil编程器是Keil Software Inc/Keil Electronic GmbH 开发的基于80C51内核的微处理器软件开发平台,可以完成从工程(Project)的建立和管理、程序的编译和连接、目标代码的形成、软件仿真等一套完整的软件开发流程。它与Proteus挂接,可以进行单片机应用系统的硬件仿真。 汇编语言编程方法: ①打开“File”菜单→选择新建“New...”→在弹出的文本框(Text1)中编写所需的汇编语言程序→程序写好后,保存(从File→Save As..→选择某目录,文件名.ASM, 存盘); ②打开“Project”菜单→选择新建工程“New Project...”→在弹出的窗口填写:工程名→保存(文件名的后缀是 .uv2 。此时图3的工程窗口中将建立Target1

proteus下步进电机控制

p r o t e u s下步进电机控 制 The Standardization Office was revised on the afternoon of December 13, 2020

目录 摘要 ........................................................................................... 错误!未定义书签。 一、课程设计目的与要求....................................................... 错误!未定义书签。 1.课程设计目的......................................................................... 错误!未定义书签。2.设计要求.............................................................................. 错误!未定义书签。 二、电路设计原理及原理图................................................... 错误!未定义书签。 1.设计方案................................................................................. 错误!未定义书签。 2.电路原理................................................................................. 错误!未定义书签。 开关控制电路........................................................................ 错误!未定义书签。 晶振电路................................................................................ 错误!未定义书签。 复位电路................................................................................ 错误!未定义书签。 电机驱动电路........................................................................ 错误!未定义书签。 3.原理图..................................................................................... 错误!未定义书签。 4.流程图..................................................................................... 错误!未定义书签。 5.软件设计................................................................................. 错误!未定义书签。 三、设计过程........................................................................... 错误!未定义书签。 1.筹备过程................................................................................. 错误!未定义书签。 2.制作过程................................................................................. 错误!未定义书签。 3.调试过程................................................................................. 错误!未定义书签。 4.元件清单................................................................................. 错误!未定义书签。 四、总结.................................................................................... 错误!未定义书签。 1.结论总结................................................................................. 错误!未定义书签。 2.心得体会................................................................................. 错误!未定义书签。 五、致谢................................................................................... 错误!未定义书签。 六、参考文献............................................................................ 错误!未定义书签。附件............................................................................................ 错误!未定义书签。

步进电机的驱动L298 L297与PROTEUS仿真

第十一章 步进电机 本章主要讲述步进电机的驱动。 11.1:L298 C 程序: #include sbit enable=P3^0;//使能 sbit set=P3^1; //设置 //延时 void delay(int i) { int j; for(;i>0;i--) for(j=50;j>0;j--) ; } //主程序 void main() { int step[]={0x01, 0x05,0x04,0x06, 0x02,0x0a,0x08,0x09}; //正转模型 int i=0; enable=1;//使能 while(1) { if(set==0) {if(i==0) i=7;P2=step[i--];} //反转 else {if(i==8) i=0;P2=step[i++];} //正转 delay(50); //延时 //越小速度越快 } }

11.2:L297与L298 C程序: #include sbit clock=P2^0; sbit cw=P2^1; sbit en=P2^2; void main() { TMOD=0X01; TH0=(65536-5000)/256; TL0=(65536-5000)%256; ET0=1;TR0=1;EA=1; while(1); } void timer0() interrupt 1 { static int n=0; if(n==3){n=0;clock=!clock;} n++; TH0=(65536-5000)/256; TL0=(65536-5000)%256; }

单片机温度传感器proteus仿真

仿真程序仿真: LED_0 EQU 30H LED_1 EQU 31H LED_2 EQU 32H ADC EQU 35H TCNTA EQU 36H TCNTB EQU 37H H_TEMP EQU 38H L_TEMP EQU 39H FLAG BIT 00H H_ALM BIT P3.0 L_ALM BIT P3.1 SOUND BIT P3.7 CLOCK BIT P2.4 ST BIT P2.5 EOC BIT P2.6 OE BIT P2.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0 ORG 1BH LJMP INT_T1 START:MOV LED_0,#00H

MOV LED_1,#00H MOV LED_2,#00H MOV DPTR,#TABLE MOV H_TEMP,#153 MOV L_TEMP,#77 MOV TMOD,#12H MOV TH0,#245 MOV TL0,#0 MOV TH1,#(65536-1000)/256 MOV TL1,#(65536-1000)/256 MOV IE,#8AH CLR C SETB TR0 WAIT:SETB H_ALM SETB L_ALM CLR ST SETB ST CLR ST JNB EOC,$ SETB OE MOV ADC,P1 CLR OE MOV A,ADC SUBB A,L_TEMP JC LALM MOV A,H_TEMP MOV R0,ADC SUBB A,R0 JC HALM CLR TR1 LJMP PROC1 LALM:CLR L_ALM SETB TR1 CLR FLAG LJMP PROC1 HALM:CLR H_ALM SETB TR1 SETB FLAG LJMP PROC1 PROC1:MOV A,ADC MOV B,#100 DIV AB MOV LED_2,A MOV A,B

单片机PROTEUS仿真100实例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例 第01 篇基础程序设计 01 闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间间隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } } 02 从左到右的流水灯 /* 名称:从左到右的流水灯 说明:接在P0口的8个LED 从左到右循环依次点亮,产生走 马灯效果 */ #include #include #define uchar unsigned char #define uint unsigned int

//延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } } 03 8只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {

用proteus学习步进电机

用proteus学习步进电机 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。2.步进电机分哪几种? 步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB) 永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度; 反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。这种步进电机的应用最为广泛。 上面是我在网上搜到的,重复的事情就不要做了,所以我直接给粘过了,我简单的解释一下, 步进电机了,一般有,二相的,三相的,五相的,所谓的的相,就是电机里面推动电机的转的东西,叫绕组,二相的了,就是有两个绕组,如果说分A,B的话,A转一下,B再转一下,一圈了是360度,一个可以转1.8度,算一算,就是20次,AB它们就像接力一样,你推着轴转一些,我在接着转。很显然,如果有三项,或是五项的话,那么就会比较精细,也就是说,每次转度的角度,可以更小,可以更精确的控制,反正就是这么回事。 上图。 一开始,我看了这个MOTOR的线不知道怎么接,有6根,其实,中间的两根是接电源的, 上面的两根,下面的两根,分别接单片机的IO口。驱动步进电机的,用的是ULN2003 还有L297/L298 我问下朋友,他们说L297/298现在用的多些,今天先用ULN2003联下,有时间再用L297/L298试下,另我买的开发板是个两相的,是用H式三极管来驱动的,很有意思,

Proteus仿真软件使用方法

实验八 Proteus仿真软件使用方法 1.实验目的: (1)了解Proteus仿真软件的使用方法。 (2)了解51单片机编程器Keil与Proteus仿真软件的联用方法。 2.实验要求: 通过讲授和操作练习,学会正确使用Proteus仿真软件及Keil编程及其联合调试。 3.实验内容: (1)Proteus 仿真软件介绍 Proteus 软件是由英国LabCenter Electronics 公司开发的EDA工具软件,由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑软件。它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。 通过Proteus ISIS软件的VSM(虚拟仿真技术), 用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。 图8-1是Proteus ISIS的编辑窗口: 图8-1 ISIS的编辑界面 图中最顶端一栏是“标题栏”,其下的“File View Edit ……”是“菜单栏”,再下面的一栏是“命令工具栏”,最左边的一栏是“模式选择工具栏”;左上角的小方框是“预览窗口”,其下的长方框是“对象选择窗口”,其右侧的大方框是“原理图编辑窗口”。 选择左侧“模式选择工具栏”中的图标,并选择“对象选择窗口”中的P按钮,就会出现如图8-2的元器件选择界面:

图8-2 元器件库选择界面 在元器件列表框中点击你需要的器件类型(例如:电阻-Resistors,单片机芯片-MicroprocessorICs, LED-Optoelectronics)或在左上角的关键字(Keywords)框中输入你需要的器件名称的关键字(如:信号源 - Clock, 运放 - CA3140等),就会在图8-2中间的大空白框列出你所需的一系列相关的元件。此时,你可用鼠标选中你要的元件,则图8-2右上角的预览框会显示你所要元件的示意图,若就是你要的元器件,则点击OK按钮,该元器件的名称就会列入位于图8-1左侧的“对象选择窗口”中(参见图1左侧下方框)。 所需元器件选择好后,在“对象选择窗口”选择某器件,就可以将它放到图8-1中的“原理图编辑窗口”中(若器件的方向不合适,你可以利用图1左下角的旋转按钮来改变它)。将所要的元器件都选好后,将它们安放到合适的位置,就可以用连接线把电路连接好,结果存盘(请按规定的目录存盘,并记住其路径/目录/文件名[学号-实验序号])。 (2)51单片机编程器– Keil V3的使用 Keil编程器可用于MCS-51单片机软件编程与调试,它的工作界面如图8-3所示: Keil编程器是Keil Software Inc/Keil Electronic GmbH 开发的基于80C51内核的微处理器软件开发平台,可以完成从工程(Project)的建立和管理、程序的编译和连接、目标代码的形成、软件仿真等一套完整的软件开发流程。它与Proteus挂接,可以进行单片机应用系统的硬件仿真。 汇编语言编程方法: ①打开“File”菜单→选择新建“New...”→在弹出的文本框(Text1)中编写所需的汇编语言程序→程序写好后,保存(从File→Save As..→选择某目录,文件名.ASM, 存盘); ②打开“Project”菜单→选择新建工程“New Project...”→在弹出的窗口填写:工程名→保存(文件名的后缀是 .uv2 。此时图8-3的工程窗口中将建立Target1及 Source Group 1);

基于proteus的步进电机仿真

目录 摘要: (2) 一、Proteus简介 (2) 二、步进电机原理 (3) 三、整体电路分析 (4) 四、系统硬件电路选择与设计 (5) 1、主控器的选择 (5) 2、步进电机选择 (5) 3、驱动电路的选择 (6) 4、显示电路 (6) 5、键盘输入模块电路 (7) 五、系统软件设计 (7) 六、总结 (8) 七、参考文献 (8) 附录 (9)

基于proteus的步进电机仿真 摘要:步进电机广泛应用在生产实践的各个领域。步进电机是一种进行精确步进运动的机电执行元件,它广泛应用于工业机械的数字控制,为使系统的可靠性、通用性、可维护 性以及性价比最优,根据控制系统功能要求及步进电机应用环境,确定了设计系统硬件和软 件的功能划分,从而实现了基于8051单片机的四相步进电机的开环控制系统。控制系统通 过单片机存储器、I/O接口、中断、键盘、LED显示器的扩展、步进电机的环形分频器、驱 动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计,实现了 四相步进电机的正反转,急停等功能。人们用它来驱动时钟和其他采用指针的仪器,打印机、 绘图仪,磁盘光盘驱动器、各种自动控制阀、各种工具,还有机器人等机械装置。此外作 为执行元件,步进电机是机电一体化的关键产品之一,被广泛应用在各种自动化控制系统 中,随着微电子和计算机技术的发展,它的需要量与日俱增,在各个国民经济领域都有应用。 步进电机是机电数字控制系统中常用的执行元件,由于其精度高、体积小、控制方便灵活, 因此在智能仪表和位置控制中得到了广泛的应用,大规模集成电路的发展以及单片机技术 的迅速普及,为设计功能强,价格低的步进电机控制驱动器提供了先进的技术和充足的资源。 为实现单片机控制步进电机系统在数控机床上的应用,系统设计了两个外部中断,以实现 步进电机在某段时间内的反复正反转功能,也即数控机床的刀架自动进给运动,随着单片 机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,自六十年代初期以来, 步进电机的应用得到很大的提高。 关键词:proteus 仿真四相步进电机拍数 一、Proteus简介 Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是: ①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

基于Proteus的步进电机控制系统仿真设计-精品

计算机控制技术课程设计报告《基于Proteus的步进电机控制系统仿真设计》 专业及班级______ 09自动化(1)班_________ 姓名_____ 吴红田坤王林 指导老师_______ 丁健______________ 完成时间_______ _ 2012-6-17__________________

基于protues的步进电机控制系统设计 摘要:步进电机是一种进行精确步进运动的机电执行元件,它广泛应用于工业机械的数字控制,为使系统的可靠性、通用性、可维护性以及性价比最优,根据控制系统功能要求及步进电机应用环境,确定了设计系统硬件和软件的功能划分,从而实现了基于8051单片机的四相步进电机的开环控制系统。控制系统通过单片机存储器、I/O接口、中断、键盘、LED显示器的扩展、步进电机的环形分频器、驱动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计,实现了四相步进电机的正反转,急停等功能。为实现单片机控制步进电机系统在数控机床上的应用,系统设计了两个外部中断,以实现步进电机在某段时间内的反复正反转功能,也即数控机床的刀架自动进给运动,随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,自六十年代初期以来,步进电机的应用得到很大的提高。人们用它来驱动时钟和其他采用指针的仪器,打印机、绘图仪,磁盘光盘驱动器、各种自动控制阀、各种工具,还有机器人等机械装置。此外作为执行元件,步进电机是机电一体化的关键产品之一,被广泛应用在各种自动化控制系统中,随着微电子和计算机技术的发展,它的需要量与日俱增,在各个国民经济领域都有应用。步进电机是机电数字控制系统中常用的执行元件,由于其精度高、体积小、控制方便灵活,因此在智能仪表和位置控制中得到了广泛的应用,大规模集成电路的发展以及单片机技术的迅速普及,为设计功能强,价格低的步进电机控制驱动器提供了先进的技术和充足的资源。

Proteus仿真实验

Proteus仿真实验 矩阵式键盘识别一 一、实验目的 通过对实验环境调试程序的使用 设计出满足指标要求的电源电路 熟悉Proteus对电源电路的仿真、测试过程。设计一个4x4的矩阵键盘,以P3.0~P3.3作为行线,以P3.4~P3.7作为列线,在数码管上显示每个按键的0~F序号。 二、实验器件 单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 11.0592MHz、电解电容CAP-ELEC、电阻RES、排阻RESPACLK-7、按钮BUTTON、共阳数码管7SEG-COM-AM-GRN。 三、实验原理 程序: #include"reg51.h" #define uchar unsigned char #define uint unsigned int uchar buff,times,j; uchar code dispcode[]={0xC0,0xF9,0xA4,0 xB0,0x99,0x92,0x82,0xF8,0x8 0,0x90,0x88,0x83,0xC6,0xA1, 0x86,0x8E}; uchar idata value[8]; void delay1ms(void) { uchar i; for(i=200;i>0;i--); } void delay5ms(void) { unsigned char i,j; for(i=5;i>0;i--) for(j=230;j>0;j--); } void key_scan(void) { uchar hang,lie,key;

P3=0xf0; if((P3&0xf0)!=0xf0) { delay1ms(); if((P3&0xf0)!=0xf0) {hang=0xfe; times++; if(times=9) times=1; while((hang&0x10)!=0) {P3=hang; if((P3&0xf0)!=0xf0) {lie=(P3&0xf0)|0x0f; buff=((~hang)+(~lie)); switch(buff) { case 0x11:key=0;break; case 0x21:key=1;break; case 0x41:key=2;break; case 0x81:key=3;break; case 0x12:key=4;break; case 0x22:key=5;break; case 0x42:key=6;break; case 0x82:key=7;break; case 0x14:key=8;break; case 0x24:key=9;break; case 0x44:key=10;break; case 0x84:key=11;break; case 0x18:key=12;break; case 0x28:key=13;break; case 0x48:key=14;break; case 0x88:key=15;break; } value[times-1]=key; } else hang=(hang<<1)|0x01; } } } } void main(void) { while(1)

基于proteus的电机仿真

基于proteus的电机仿真 1 引言 步进电机在简单的开环工作方式下能够达到相当高的定位精度,且低速运行时又可输出很大的转矩,因此在运动控制中得到了广泛的应用[1]。PC 机步进电机控制系统,应用于多个领域如数控机床、机器人、激光加工设备等各种仪器设备。一个完整的PC 机步进电机控制系统,下位机与PC 机构成主从式控制结构:PC 机负责人机交互界面的管理,包括键盘和鼠标的管理、系统状态的显示、控制指令的发送等部分工作;下位机完成运动控制的所有细节,包括脉冲和方向信号的输出、自动升降速的处理等部分工作。实际下位机开发过程复杂,主体包含硬件电路设计和控制程序设计两方面。控制程序设计过程需要软件调试、硬件调试、系统调试 3 个过程。软件调试一般比较容易进行,但如果要进行牵涉硬件的硬件调试或系统调试,包括元器件选用、PCB 板制作、元器件焊接、程序烧录环节,其中任一环节的疏漏都可能造成程序调试失真。通过Proteus 中各虚拟仪器所构建硬件电路,调试所设计程序的控制效果,达到虚拟硬件调试、虚拟系统调试程序的目的,为PC 机步进电机系统开发提供有效的理论实践依据,避免因硬件电路设计过程错误引起的程序异常或硬件实验条件限制影响开发。 Proteus 是英国Labcenter 公司开发的电路分析与实物仿真软件实现了单片机仿真和SPICE 电路仿真相结合,具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI 调试器、键盘、LCD、虚拟仪器、示波器、逻辑分析仪系统仿真的功能;支持主流单片机系统的仿真功能;在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态;支持第三方的软件编译和调试环境,如Keil uVision2、MTLAB 等软件。由于Proteus 软件本身的优良仿真特性,所设计程序能于Proteus 中完成仿真过程的同时,即基本证明了所设计程序的准确性,从而基本完成了系统开发中的控制程序设计部分,并为系统硬件电路设计提供指导意义。 2 设计要求 以构建基于Proteus 的PC 机对步进电机运动控制仿真系统为例,上位机人机交互界面由VB 开发完成;下位机硬件电路由Proteus 中各虚拟仪器所构建完成;下位机控制程序由Keil uVision2开发完成;期间还要采用虚拟串口(VSPD),用于模拟一根串口通信线,实现上位机与下位机的串口通信,最终实现上位机(VB)对下位机(Proteus)中步进电机的实时控制过程。 2.1 系统总体框图 上位机通过RS232C 串口通信方式实现对下位机下达指令,下位机AT89C51 单片机根据接受到的指令,按一定的时序产生A、B、C、D 四相控制信号,分别实现单拍、双拍、单双拍的三种步进电机驱动方式。在实际运用中,单片机与步进电机之间一般还需要信号隔离、放大集成电路。下位机部分增设显示功能,

基于proteus的步进电机电机仿真

基于proteus的步进电机电机仿真 摘要:步进电机广泛应用在生产实践的各个领域。它最大的应用是在数控机床的制造中,因为步进电机不需要A/D转换,能够直接将数字脉冲信号转化成为角位移,所以被认为是理想的数控机床的执行元件。本设计利用proteus仿真软件进行电路仿真,系统通过设置四个按键分别控制不进电机的起止、圈数、方向、不进速度,使用1602液晶显示以上参数。整个系统具有稳定性好,实用性强,操作界面友好等优点。 关键词:proteus 仿真不进电机拍数 一、 Proteus简介 Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是: ①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 ②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 ③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。 ④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 二、整体电路分析 如下图,整个设计以STC89C51单片机为中心,由复位电路,时钟电路,电机驱动,步进电机,显示电路等组成,硬件模块如图2-1所示: 图1 硬件模块图

基于proteus步进电机仿真及程序

proteus中的步进电机有两种, 六线制(MOTOR-STEPPER)和四线制(MOTOR-BISTEPPER),六线制的左右中间两根线接电源,任然剩下四根,但的顺序和四线制的不同,见下图。 注意a,b,c,d的顺序 在实际情况中,单片机是不能直接拖动步进电机的,需用ULN2003这样的器件 两个步进电机都是四相电机。 如果用四拍: 那么P2输出的(顺时针)顺序就是:0x03,0x06,0x0c,0x09 a 1 0 0 1 b 1 1 0 0 c 0 1 1 0 d 0 0 1 1 如果用八拍: 那么P2输出的(顺时针)顺序就是:0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09 a 1 1 0 0 0 0 0 1 b 0 1 1 1 0 0 0 0 c 0 0 0 1 1 1 0 0 d 0 0 0 0 0 1 1 1

给一个测试八拍的仿真程序: 1.#include<reg5 2.h> 2. 3.main(){ 4.while(1){ 5.unsigned int i,j,k; 6.for(k=0;k<255;k++){ 7.for(i=0;i<75;i++) 8.for(j=0;j<255;j++); 9.P2=0x01; 10.for(i=0;i<75;i++) 11.for(j=0;j<255;j++); 12.P2=0x03; 13. for(i=0;i<75;i++) 14.for(j=0;j<255;j++); 15.P2=0x02; 16. 17. for(i=0;i<75;i++) 18.for(j=0;j<255;j++); 19.P2=0x06; 20.for(i=0;i<75;i++) 21.for(j=0;j<255;j++); 22.P2=0x04; 23.for(i=0;i<75;i++) 24.for(j=0;j<255;j++); 25.P2=0x0c; 26. for(i=0;i<75;i++) 27.for(j=0;j<255;j++); 28.P2=0x08; 29. 30. for(i=0;i<75;i++)

相关文档
最新文档