四相步进电机proteus仿真及程序

发布者:devilcore最新更新时间:2016-11-09 来源: eefocus关键字:四相步进电机  proteus仿真 手机看文章 扫描二维码
随时随地手机看文章
#include

  
#define forward  P2_0
#define backward P2_1
#define bujinjia P2_2
#define bujinjian P2_3
#define jiasu  P2_6
#define jiansu  P2_5
#define stop  P2_4
static unsigned int k=0;
static unsigned int j=0;
code char fward[4]={0x33,0x99,0xcc,0x66};
code char bward[4]={0x99,0x33,0x66,0xcc};
unsigned char timer0_tick=0,i=0,times=66,status=1;
void delay()
{
    unsigned char   i;
    for (i=500;i>0;i--);
}
//步进加速
jinjia()
 {
  int m;
  if (P2_2==0)
  delay();
  if(P2_2==1)
  {
   m=m+1;
   k++;
  }
  return  (k);
 }
//步进减速
jinjian()
 {
  int n;
  if (P2_3==0)
  delay();
  if(P2_3==1)
  {
    n=n+1;
   j++;
  }
  return (j);   
 }


/////////外部中断///////
static void timer0_isr(void) interrupt TF0_VECTOR using 1
{
 TR0=0;
 TL0=(time0count & 0x00ff);
 TH0=(time0count>>8);
 TR0=1;
 timer0_tick++;
 if(timer0_tick==times)
 {
  i++;
  if(i==4) i=0;
  timer0_tick=0;
  if(status==1)   P1=fward[i];
  if(status==0)   P1=bward[i];
     if(status==2)   P1=0x00;
 }
}
//时间中断
static void time0_initialize(void)
{
 EA=0;
 timer0_tick=0;
 TR0=0;
 TMOD=0x01;
 TL0=(time0count & 0x00ff);
 TH0=(time0count>>8);
 PT0=0;
 ET0=1;
 TR0=1;
 EA=1;
}
///主函数
void main(void)
{
 time0_initialize();
 while(1)
 {
  if(forward==0)  status=1;
  if(backward==0) status=0;
  if(stop==0)  status=2;
  jinjia();
  if(k==1)        times=61;
  if(k==2)        times=56;
  if(k==3)        times=51;
  if(k==4)        times=46;
  if(k==5)        times=41;
  if(k==6)        times=36;
  if(jiasu==0)    times=32;
  jinjian();
  if(j==1)        times=71;
  if(j==2)        times=76;
  if(j==3)        times=81;
  if(j==4)        times=86;
  if(j==5)        times=91;
  if(j==6)        times=96;
  if(jiansu==0)   times=100;
 }
}

以上便是4相步进电机的程序,下面是仿真图

四相步进电机proteus仿真及程序 - wc - wuchuang8114994 的博客
关键字:四相步进电机  proteus仿真 引用地址:四相步进电机proteus仿真及程序

上一篇:C51成功读写AT24C32(EEPROM)
下一篇:PS2键盘的设计---C51程序

推荐阅读最新更新时间:2024-03-16 15:20

基于51单片机的温控电机proteus仿真及源程序
温控电机项目特别提醒: 用Proteus软件进行电路仿真时,TLC549和AT89C51的电源引脚均隐藏了,在制作电路板时一定要给TLC549的Pin8接+5V,Pin4接地;AT89C51的的Pin40接+5V,Pin20接地。 单片机温控电机源程序如下: //产生频率为100Hz的PWM #include reg51.h #define uchar unsigned char #define uint unsigned int sbit TLC549_SCLK=P1^5; //定义P1.5引脚位名称为TLC549_SCLK sbit TLC549_SDO=P1^3; //定义P1.3引脚位名称为TLC549_S
[单片机]
基于51单片机的温控电机<font color='red'>proteus仿真</font>及源程序
51单片机做的音乐盒,带八段数码管显示程序+Proteus仿真
#include reg52.h #define uchar unsigned char #define uint unsigned int sbit key1=P3^2;//按key1可以暂停播放 sbit key2=P3^3;//按key2可切换歌曲 sbit fm=P3^7;//蜂鸣器连续的IO口 uchar code shuzi0=0x3f; uchar code shuzi1=0x06;//数字1 uchar code shuzi2=0x5b;//数字2 uchar code shuzi3=0x4f; uchar code shuzi4=0x66; uchar code shuzi5=0x6d; uchar code
[单片机]
51单片机做的音乐盒,带八段数码管显示程序+<font color='red'>Proteus仿真</font>
串行通信UART及PROTEUS仿真设计
C51跟atmega64的串行通信。相关理论知识这里就不多说,只提几个: 51的UART所用的几个寄存器 SCON:SM0 SM1 SM2 REN RB8 TX8 RI TI PCON: SMOD -- -- -- --- --- PD IDLE T2CON: TF2 EXF2 RCLK TCLK EXEN2 TR2 C/_T CP/_RL2 TH2,TL2 波特率为9600bps avr:atmega64的USART的两个 所用到的寄存器 这里用的是uart0,所以初始化时应该设置相关的寄存器有: UCSR0A : RXC TXC UDRE FE DOR
[单片机]
Proteus仿真H桥+直流伺服电机 附详细文档+源程序
仿真原理图如下 单片机源程序如下: /******************************************************************************* * 文 件 名 : main.c * 函数功能 : LCD 显示控制|中断初始化|主程序 *******************************************************************************/ #include reg52.h #include stdio.h #include lcd.h #include key.h sbit mot
[单片机]
用<font color='red'>Proteus仿真</font>H桥+直流伺服电机 附详细文档+源程序
利用DS18B20测温,并通过LCD1602 显示 proteus仿真 +DS1302时钟模块
main.c #include reg52.h #include onewire.h #include LCD.h #include ds1302.h #define uchar unsigned char #define uint unsigned int uchar code Write_addr ={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//写地址 uchar code Read_addr = {0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};//读地址 uchar Time = {0x50,0x59,0x23,0x07,0x06,0x02,
[单片机]
利用DS18B20测温,并通过LCD1602 显示 <font color='red'>proteus仿真</font> +DS1302时钟模块
51单片机RS485程序源码与proteus仿真
单片机-485-PC串口通信.jpg (106.21 KB, 下载次数: 21) 下载附件 保存到相册 2018-3-26 01:45 上传 单片机源程序如下: #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit P12=P1^2; char code str = you are the best! nr ; main() { uint j; TMOD=0x20; TL1=0xfd;TH1=0xfd; SCON=0x50; PCON &= 0xef; TR1=1; IE=
[单片机]
51单片机RS485程序源码与<font color='red'>proteus仿真</font>图
PIC16F877 定时采集电压 LCD1602显示 Proteus仿真
功能:定时器间隔50us采集一次AD电压,一共采集30次,并通过LCD1602显示。 软件:MPLAB X IDE v5.35,ISIS 7 Professional 注意事项:系统时钟配置为外部时钟8Mhz,由于间隔50us采集一次,所以AD采集一次时间应该小于50us。可通过调整定时器的数值,间隔不同的时间采集AD。 代码如下: #include pic.h #define RS RC1 //command or data #define RW RC2 //read write io #define EN RC3 //enable __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_
[单片机]
PIC16F877 定时采集电压 LCD1602显示 <font color='red'>Proteus仿真</font>图
51单片机+LCD12864的万年历Proteus仿真
原理图如下 部分程序如下 单片机源程序如下: #include reg51.h #include DS18B20.h #include DS1302.h #include LCD12864.h char a; sbit KEY1=P3^4; sbit KEY2=P3^5; sbit KEY3=P3^6; bit flag=1; //进入/退出设置标志 uchar choose=0x01; //切换标志 void delay10(void) //延时10ms { unsigned char i,j; for(i=0;i 255;i++) for(j=0;j 200;j++); } voi
[单片机]
51单片机+LCD12864的万年历<font color='red'>Proteus仿真</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved