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

📄 main.c

📁 基于Cortex-M3的全自动焊接机
💻 C
字号:
/*****************************************************************************
使用MCU: LM3S1138
开发环境:IAR5.5
硬件说明:用于主控板上位机程序  
程序说明:
完成日期:2010.5.22
版本:V0.1
******************************************************************************/
#include  <stdio.h>
#include  "systemInit.h"
#include  "function.h"
#include  "LM3S_I2CM.h"
#include  "ZLG7290.h"
#include  "24C16.h"
#include  "check.h"
#include  "LM3S_UART.H"


tI2CM_DEVICE   zlg7290;//定义一个7290机构体
tI2CM_DEVICE   zlg7290_One;//定义一个7290机构体  用于数码管显示的I2C1
tI2CM_DEVICE tmp101;
unsigned char TMP101_cBuf[2]={0x60,0};//即便只写入一个数据也必须设置此数组为2元素,而不能只是设定一个指针变量


unsigned char Flash_frequency[2] = {0x00};   //数码管数字显示闪烁频率


//主函数(程序入口)
int main(void)
{  

    clockInit();      //时钟初始化:晶振,6MHz
    GPIOB_IntInit();  //ZLG7290中断PB0初始化函数   
    I2CM_Init_One();  //I2C1主机初始化
    I2CM_Init();
    BuzzerInit();     //蜂鸣器初始化函数
    Timer0_Init();    //定时器0初始化函数
    Timer3_Init();    //定时器1初始化函数
    Timer2_Init();    //定时器2处死缓函数
    ADC_Init();       //ADC初始化函数
    UART0_Init();     //  UART0初始化 
    UART1_Init();     //  UART0初始化 
    GPIO_Init();      //单片机GPIO初始化
     
    I2CM_DeviceInitSet_One(&zlg7290_One, 0x70 >> 1, 0, 1, cBuf, 0); //暂先考虑寄存器地址长度为一个字节的情况
    ZLG7290_WriteReg_One(ZLG7290_FlashOnOff,Flash_frequency);//配置7290闪烁寄存器  使得闪烁最快0x00为最快
    I2CM_DeviceInitSet(&zlg7290, 0x71 >> 1, 0, 1, cBuf, 0); //暂先考虑寄存器地址长度为一个字节的情况  
      
    I2CM_DeviceInitSet(&tmp101, 0x94 >> 1, 0, 1, (void*)0, 0);//100的地址
    I2CM_DeviceDataSet(&tmp101, 0x01,TMP101_cBuf,1);
    I2CM_DataSend(&tmp101);   
 
    Error_Code = Self_checking(); //获取系统自检的错误代码 ,正常时返回 0 
    while(Error_Code!=0)
    {
      Error_Display();  //显示Error_Code所对应的错误信息 
      Key_Deal();  //按键处理  读取按键值
    }
    
    ClearAll(0,5);
    ClearAll_LED(0,3);      //清除所有LED 
    
  
    /*WriteSetDataToEEPROM(50,1234);  
    Delay(0x1fff);   //读写中间必须有延时  
    DispPresent_Data[0] = ReadSetDataFromEEPROM(50);  */ 
    
    
    read24C16_mode = 0; 
    switch(read24C16_mode)
    {
        case 0 :
          MOde_flag = 0;
          break;  //显示横纹模式下的焊枪位置
        case 1 : 
          MOde_flag = 1;
          break;  //显示单道模式下的焊枪位置
        case 2 : 
          MOde_flag = 2;
          break;  //显示摆动模式下的焊枪位置
        case 3 : 
          MOde_flag = 3;
          break;  //显示其他模式下的焊枪位置
        default :
          break;
    }//end switch(read24C16_mode)
           
    //产生时间片的定时
    TimerLoadSet(TIMER3_BASE , TIMER_A , 1500UL);  //  设置定时器初值  决定定时多久   定时50ms
    TimerEnable(TIMER3_BASE , TIMER_A);            //  使能Timer3A
  
    Led_Display(1,0X82);
    Led_Display(2,0x80); 
    

    First_circle();       //焊机控制初次执行程序

    while(1)
     {   
        Key_Deal();  //按键处理  读取按键值
        Display_Show();               //显示设定函数
        Display(MOde_flag,Function_Num,Seg_Flag);     //显示函数
        
      
        Mode_select();                //模式选择函数
        Shengjiang_contrl();          //升降控制函数
        Hengyi_contrl();              //横移控制函数
        Lasi_contrl();                //拉丝机控制函数
        Hengyi_Zero();                //横移零点和回零点函数
        //Shengjiang_Zero();            //升降零点和回零函数
        Start_Stop_Arc();             //起停弧函数
        Alarm_Driver();               //音响驱动函数
        Di_Do_Deal();   //数字量输入输出处理

        if(Mode_other)
            Other_Mode();             //其它模式函数  
        else if(Mode_dandao)
            Dandao_Mode();            //单道焊函数   横移电机速度位置正确、拉丝机速度启停正确、升降电机速度提枪高度正确。
        else if(Mode_baidong)
            Baidong_Mode();           //摆动焊函数
        else
            Hengwen_Mode();           //横纹焊函数
        
        

     }
}




⌨️ 快捷键说明

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