⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motor.h~

📁 这是一个用AVRM16控制HTM68131,可以跟据这个例子自已做液晶.
💻 H~
字号:
#ifndef __MOTOR_H__
#define __MOTOR_H__
#include "MEGA16.h"    

#define  DIN_L  PORTA=PORTA&0xfe
#define  DIN_H  PORTA=PORTA|0x01    

#define  SCLK_L  PORTA=PORTA&0xfd
#define  SCLK_H  PORTA=PORTA|0x02

#define  CLR_L  PORTA=PORTA&0xfb
#define  CLR_H  PORTA=PORTA|0x04

#define  CS_L  PORTA=PORTA&0xf7
#define  CS_H  PORTA=PORTA|0x08

#define  LDAC_L  PORTA=PORTA&0xef
#define  LDAC_H  PORTA=PORTA|0x10   

#define  stop_TC_L  PORTA=PORTA&0xbf
#define  stop_TC_H  PORTA=PORTA|0x40      
uint    over_loading_dlay=0;
void    outmotor(unsigned  int     data)
{       unsigned        int     i,j,m;   
        float   k=0;  
        if(data==0)
               LED_L;
        else
               LED_H;
        if(mode==1)
        {      
               k=data*101.1358;          //(5/600)/(5.4/65536)  
               rpm_max_reg=640;//648;        //5.4V/(5V/600RPM)
        } 
        if(mode==2)
        { 
               k=data*20.22716;       //(5/3000)/(5.4/65536) 
               rpm_max_reg=3200;//3240;        //5.4V/(5V/3000RPM)
        } 
        if(mode==4)
        {      
               k=data*40.4543;      //(5/1500)/(5.4/65536)
               rpm_max_reg=1600;//1620;        //5.4V/(5V/1500RPM)
        }
        m=(int)k;  
        if(m>=65535)
               m=65530; 
//************************************   
        SCLK_L; 
        CS_H;
        SCLK_H;  
        CS_L;
        for(i=0;i<16;i++)
        {       if(((m<<i)&0x8000)==0x8000)
                        DIN_H;
                else
                        DIN_L; 
                for(j=0;j<50;j++);        
                SCLK_L;  
                for(j=0;j<50;j++);
                SCLK_H; 
                
        }     
        for(j=0;j<50;j++);
        CS_H;
        LDAC_L; 
        for(j=0;j<50;j++);
        LDAC_H;     
}   
//转速值处理
void    fun_rpm(void)
{       float   i; 
        if(b_time2==0&&b_rpm==1)
        {       
                 if(b_com==1)
                        return;
                if(rpm_data_reg>80)
                        i=60/(time2_add_reg*0.00001382);// 0.000009901 
                if(rpm_data_reg<80)
                        i=60/(time2_add_reg*0.0000140);// 0.000009901 
                if(time2_add_reg==0)
                        rpm_data=0;
                else
                        rpm_data=(int)i; 
                if((rpm_data<=0)||(rpm_data>65000))
                        rpm_data=900; 
                time2_add_reg=0;  
                b_rpm=0; 
                if(b_com==1)
                        return; 
                if((rpm_data!=rpm_data_reg)&&(b_rpm_100ms==1)&&(b_run1==1||b_run2==1||b_run3==1))
                {       
                        if(rpm_data<rpm_data_reg)
                        {       if(rpm_add_reg<rpm_max_reg)
                                        rpm_add_reg+=1;        
                                outmotor(rpm_add_reg);
                        }   
                        if(b_com==1)
                        return; 
                        if(rpm_data>rpm_data_reg)
                        {       
                                if(rpm_add_reg>0)
                                        rpm_add_reg-=1;                                          
                                outmotor(rpm_add_reg);
                        } 
                        stop_TC_H; 
                        b_rpm_100ms=0;      
                }  
                if(b_com==1)
                        return;                 
                shu_rpm_data[rpm_add]=rpm_data; 
                rpm_add+=1;
                if(rpm_add>2)
                {       
                        rpm_add=0;
                        if(shu_rpm_data[0]>shu_rpm_data[1]&&shu_rpm_data[0]>shu_rpm_data[2])
                                rpm_data_c=shu_rpm_data[0];
                        if(b_com==1)
                                return;             
                        if(shu_rpm_data[1]>shu_rpm_data[0]&&shu_rpm_data[1]>shu_rpm_data[2])
                                rpm_data_c=shu_rpm_data[1];    
                        if(b_com==1)
                                return;           
                        if(shu_rpm_data[2]>shu_rpm_data[0]&&shu_rpm_data[0]>shu_rpm_data[1])
                                rpm_data_c=shu_rpm_data[2];  
                        if((rpm_data_c<=0)||(rpm_data_c>60000))
                            rpm_data_c=0;
                }              
        }   
        //过载
        if((b_run1==1)||(b_run2==1)||(b_run3==1))
        {       
                if(rpm_data_c<(rpm_data_reg/2)) //5s后通电半S判断有没有过载
                {       if(over_loading_add>3000)
                        {
                                outmotor(0x0000); 
                        } 
                        else                   
                          outmotor(rpm_add_reg);
                        
                }
                over_loading_dlay+=1; 
        }  
        if(over_loading_dlay>30000)
                over_loading_dlay=0;    
                
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -