我想用STC12C5A60S单片机控制STI6608驱动步进电机动作,请问C程序怎么写?

我想用STC12C5A60S单片机控制STI6608驱动步进电机动作,请问C程序怎么写?,第1张

这个STI6608驱动器输入信号是Pluse+DIR方式控制,可以带2个步进电机。Reset可以置位步进电机到位置1。刚启动是置位1次就可以了。以下编一简单的演示程序:

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned char

sbit pluse1=P1^0

sbit pluse2=P1^1

sbit dir1=P1^2

sbit dir2=P1^3

sbit reset1=P1^4

sbit reset2=P1^5

void delay(uint a)

{

uint i

while(a--)for(i=0i<1100i++)

}

main()

{

uint i

reset1=0

reset2=0

delay(1000)

reset1=1

reset2=1

while(1)

    {

    for(i=0i<4800i++)

        {

        pluse1=~pluse1

        dir1=1

        delay(5)

        }

    for(i=0i<4800i++)

        {

        pluse2=~pluse2

        dir2=1

        delay(5)

        }

    for(i=0i<4800i++)

        {

        pluse1=~pluse1

        dir1=0

        delay(5)

    for(i=0i<4800i++)

        {

        pluse2=~pluse2

        dir2=0

        delay(5)

        }        

    }

}

说法都对。如果每次亮不超过5个,符合要求。

可以用74HC595串行锁存一下,两片可以带16个。用3个IO口

或用74HC573并行锁存,也是两片带16个,要用8+2个口

武汉 谷鑫科技基于STC单片机彩屏驱动程序实例部分展示,篇幅有限

AUXR = 0x8e//////////////////////////////////注意增加该语句。

#include <reg51.h>

#include <absacc.h>

#define X_ADDR XBYTE[0x0000]

#define Y_ADDR XBYTE[0x0100]

#define CMD XBYTE[0x0200]

#define DAT XBYTE[0x0300]

unsigned char code zk[32] = {//请

0x00, 0x47, 0x20, 0x23, 0x00, 0xEF, 0x20, 0x23, //left

0x22, 0x23, 0x22, 0x23, 0x2A, 0x32, 0x22, 0x02,

0x48, 0xFC, 0x40, 0xF8, 0x40, 0xFE, 0x08, 0xFC, //right

0x08, 0xF8, 0x08, 0xF8, 0x08, 0x08, 0x28, 0x10}

unsigned char code picture[]

main()

{

unsigned int x,y,x2,y2

unsigned int i

unsigned char key,x1,y1,j,k,z,m,n,bright

AUXR = 0x02//////////////////////////////////注意增加该语句。

bright = 8

key = 1//////////////////////////////////////选择液晶屏型号

//0:TFT2432

//1:TFT3224

//2:TFT480234

//3:TFT480272

//4:TFT6448

//5:TFT8048

//6:TFT8060

//7:TFT8060

if(P13==1)

{

if(key==0){x2=240y2=320x1=6y1=16goto loop1}//x1/32,y1/20

if(key==1){x2=320y2=240x1=8y1=12goto loop1}

if(key==2){x2=480y2=240x1=12y1=12goto loop1}

if(key==3){x2=480y2=272x1=12y1=14goto loop1}

if(key==4){x2=640y2=480x1=16y1=24goto loop1}

if(key==5){x2=800y2=480x1=20y1=24goto loop1}

if(key==6){x2=800y2=600x1=20y1=30goto loop1}

if(key==7){x2=800y2=600x1=20y1=30goto loop1}//亮度测试

}

loop1:

bright--if(bright==255)bright=7

CMD = 0x06

DAT = bright

///////////////////////以下是清屏功能///////////////////////////////////////

//用红色清屏

CMD = 0x04DAT = 0xe0//背景色

CMD = 0x08//启动填充 *** 作

for(y=0y<260*12y++)//延时16.6毫秒

CMD = 0x00//退出填充 *** 作

///////////////////////以上是清屏功能///////////////////////////////////////

while(key==1)

{

for(bright=7bright!=255bright--)

{

CMD = 0x06

DAT = bright

for(y=0y<15y++){x=1while(x!=0)x++}

}

CMD = 0x20//关断显示,poweroff

for(y=0y<15y++){x=1while(x!=0)x++}

key = P1&0x07

}

for(y=0y<1y++){x=1while(x!=0)x++}

for(y=0y<1y++){x=1while(x!=0)x++}

//用红色清屏

CMD = 0x04DAT = 0x1c//背景色

CMD = 0x08//启动填充 *** 作

for(y=0y<260*12y++)//延时16.6毫秒

CMD = 0x00//退出填充 *** 作


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8100247.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存