这个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//退出填充 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)