单片机控制步进电机程序c语言正反转停止,51单片机控制步进电机正反转并实现调速的程序设计…

单片机控制步进电机程序c语言正反转停止,51单片机控制步进电机正反转并实现调速的程序设计…这是一款51单片机控制步进电机正反转的程序,同时还能实现调速。#include”reg51.h“#include“intrins.h”#defineucharunsignedchar#defineuintunsignedint#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};unsignedcharcodeFFW[8]…

大家好,又见面了,我是你们的朋友全栈君。

这是一款51单片机控制步进电机正反转的程序,同时还能实现调速。

#include”reg51.h“

#include “intrins.h”

#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}; //??

90f34ab3e75d4a6eaaa7fa1719efa93d.png

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;

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

{ }

}

}

bit lcd_busy()

{

bit result;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

delayNOP();

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

LCD_EN = 0;

return(result);

}

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;

}

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;

}

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+????

}

void LCD_init_DIS()

{

delay(10); //??

lcd_init(); //???LCD

lcd_pos(0); //????????????1???

m = 0;

while(cdis1[m] != ‘’)

{ //????

lcd_wdat(cdis1[m]);

m++;

}

lcd_pos(0x40); //???????????1???

m = 0;

while(cdis2[m] != ‘’)

{

lcd_wdat(cdis2[m]); //????

m++;

}

delay(3000); //??

lcd_pos(0); //????????????1???

m = 0;

while(cdis3[m] != ‘’)

{ //????

lcd_wdat(cdis3[m]);

m++;

}

lcd_pos(0x40); //???????????1???

m = 0;

while(cdis4[m] != ‘’)

{

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; //??

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(di

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146240.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号