单片机控制步进电机程序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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎样让浏览器变身代码编辑器?

    怎样让浏览器变身代码编辑器?将浏览器变成一个简易文本编辑器一开始的功能非常简单,根本没有语法高亮,也没有自动缩进,仅仅是将浏览器变成一个文本编辑器而已。Jose分享的代码如下:data:text/html,htmlcontenteditable>只需要将上面的代码复制粘贴到浏览器的地址栏,然后按回车,就可以让浏览器变成编辑器。是不是非常简单?背后的原理并不高

    2022年6月22日
    41
  • 安卓中activity的生命周期_产品生命周期五个阶段

    安卓中activity的生命周期_产品生命周期五个阶段Android系统根据生命周期的不同阶段唤起对应的回调函数来执行代码。系统存在启动与销毁一个activity的一套有序的回调函数。本节来讨论下不同生命周期的回调函数里都该做哪些事情,不该做哪些事情。理解生命周期的回调在一个activity的生命周期中,系统会像金字塔模型一样去调用一系列的生命周期回调函数。Activity生命周期的每一个阶段就像金字塔中的台阶。当系统创建了一个新的activity实例

    2022年8月16日
    7
  • linux查看运行中的java_linux怎么查看当前进程

    linux查看运行中的java_linux怎么查看当前进程【www.hyheiban.com–知识文库】在linux系统下可以通过命令查看进程,那么具体是那个命令呢?下面由小编为大家整理了linux查看进程的命令,希望对大家有帮助!一、linux查看进程的命令有ps、pstree、pgrep等1、ps显示进程信息,参数可省略-aux以BSD风格显示进程常用-efH以SystemV风格显示进程-e,-A显示所有进程a显示终端上所有用户的…

    2022年8月24日
    6
  • 64位Win10 Modelsim破解及证书LICENSE.TXT无法生成解决方法

    64位Win10 Modelsim破解及证书LICENSE.TXT无法生成解决方法将patch_dll.bat和MentorKG.exe放到安装目录的win64目录下安装时一路点YES,可以不用重启。方法1:找到安装目录下win64的mgls64.dll,取消只读         打开cmd(快捷键:super+R,输入cmd)         输入E:(安装磁盘)回车         输入cd :/Modelsim/win64(安装目录中的wi

    2022年5月24日
    100
  • Word2vec之CBOW模型和Skip-gram模型形象解释「建议收藏」

    Word2vec之CBOW模型和Skip-gram模型形象解释「建议收藏」Word2vec中两个重要模型是:CBOW和Skip-gram模型这里主要讲下我本人对CBOW模型的理解,这是主要是举个例子简化下首先说下CBOW的三层结构:输入层,投影层(中间层),输出层假设语料库有10个词:【今天,我,你,他,小明,玩,北京,去,和,好】现在有这样一句话:今天我和小明去北京玩很显然,对这个句子分词后应该是:今天我和小明去北京玩对于小明而言,选择他的前

    2025年8月27日
    8
  • JAVA中json转Map,jsonArray转List集合,List集合转json

    JAVA中json转Map,jsonArray转List集合,List集合转json在写代码时,经常会遇到各转类型之间互相转换,比如json转换为Map,jsonArray转List集合,List集合转json,现在整理一个工具类,方便日后查阅。importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importorg.apac

    2022年6月23日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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