
单片机源程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define key P3
- #define MotorData P2 //步进电机控制接口定义
- uchar dzheng[4]={0x18,0x24,0x42,0x81}; // 两步进电机正转数组
- uchar dfan[4]={0x81,0x42,0x24,0x18}; // 两步进电机反转数组
- uchar keyval; // 键值
- void Delay_xms(uint x)
- {
- uint i,j;
- for(i=0;i<x;i++)
- for(j=0;j<112;j++);
- }
- void Delay10ms(void) //误差 0us
- {
- unsigned char a,b,c;
- for(c=1;c>0;c--)
- for(b=38;b>0;b--)
- for(a=130;a>0;a--);
- }
- //键扫
- void keyscan(void)
- {
- char a;
- key=0x07;
- if(key!=0x07)
- {
- Delay10ms();//延时10ms进行消抖
- if(key!=0x07)
- {
- switch(key)
- {
- case(0X06): keyval=1;break;
- case(0X05): keyval=2;break;
- case(0X03): keyval=3;break;
-
- }
- while((a<50)&&(key!=0x3f)) //检测按键松手检测
- {
- Delay10ms();
- a++;
- }
- a=0;
- }
- }
-
- }
- void Open()
- {
- uint i,j;
- for(j=0;j<255;j++) // 控制步进电机正转
- {
- for(i=0;i<4;i++)
- {
- P2=dzheng[i];
- Delay_xms(3);
- }
- }
-
- }
- void main(void)
- {
- uint i;
- Delay_xms(50);//等待系统稳定
- while(1)
- {
- keyscan();
- if(keyval==1)
- {
- Open();
- }
-
- }
- }
复制代码 |