找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4868|回复: 1
打印 上一主题 下一主题
收起左侧

基于STCw204单键控制几种工作模式的按摩器的单片机程序和原理图(已量产)

[复制链接]
跳转到指定楼层
楼主
测试指导
开机,关机,模式切换都通过按键操作
1.长按开机,按住按键红灯亮是正常,松开后。蓝灯会闪。
2.按1秒松开后,切换模式一,仅有3种模式循环切换。模式一为红灯,模式二为蓝灯,模式三为绿灯
3.长按3秒关机。
4.无操作3秒关机

按摩器电路原理图如下:


按摩器的单片机源程序如下:
  1. //本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
  2. //若无特别说明,工作频率一般为11.0592MHz


  3. #include "STC15W204S.h"
  4. #include "intrins.h"

  5. typedef unsigned char BYTE;
  6. typedef unsigned int WORD;

  7. #define FOSC 33177600L          //系统频率
  8. #define BAUD 115200             //串口波特率
  9. #define T1MS (65536-FOSC/1000)      //1T模式

  10. #define NONE_PARITY     0       //无校验
  11. #define ODD_PARITY      1       //奇校验
  12. #define EVEN_PARITY     2       //偶校验
  13. #define MARK_PARITY     3       //标记校验
  14. #define SPACE_PARITY    4       //空白校验

  15. #define PARITYBIT EVEN_PARITY   //定义校验位



  16. //sfr P_SW1   = 0xA2;             //外设功能切换寄存器1

  17. #define S1_S0 0x40              //P_SW1.6
  18. #define S1_S1 0x80              //P_SW1.7







  19. #define     LED             P36             //发光二极管                “0”有效
  20. #define     BED             P10     //发光二极管                “0”有效
  21. #define     RED            P11     //发光二极管                “0”有效
  22. #define     C_MO            P15                 //马达控制                   “0”有效
  23. #define     C_FR            P14                 //远红外控制          “0”有效
  24. #define     sys_pw_lock     P32                 //电源锁定              “0”有效
  25. #define     sys_pw_sp       P12                 //开机按键
  26. #define     motor            P13                 //马达控制                   “0”有效
  27. #define     LEDEN             P37                 //DC插头检测              高电平已插进
  28. #define     DO             P33                 //无线模块





  29. #define                UXLmodeoneH           300
  30. #define                UXLmodeoneL           1
  31. #define                UXLmodetwoH           400
  32. #define                UXLmodetwoL           0
  33. #define                UXLmodethrH           400
  34. #define                UXLmodethrL           10

  35. #define                LDLmodeoneH           5
  36. #define                LDLmodeoneL           20
  37. #define                LDLmodetwoH           50
  38. #define                LDLmodetwoL           25
  39. #define                LDLmodethrH           80
  40. #define                LDLmodethrL           30


  41. //char dataBuffer[24]=0;
  42. //char bitBuffer[24]=0;
  43. //char senddataBuffer[15]=0;
  44. WORD  conchar;
  45. //long  conchar1=0x12345678;
  46. char *conint;
  47. BYTE  xinflag=1;
  48. BYTE  low=0;
  49. BYTE  high=0;
  50. BYTE  next1=0;
  51. BYTE  next2=0;        
  52. BYTE  lowcount=0;
  53. BYTE  highcount=0;        
  54. BYTE  timebit=0;        
  55. bit FLAG;                       //1:上升沿中断 0:下降沿中断
  56. BYTE timecnt=0;
  57. BYTE cpdata=0x89;

  58. WORD  tempaddr;//接收地址缓存
  59. WORD  tempkey;//接收数据缓存


  60. bit busy;
  61. BYTE i=0;
  62. BYTE i1=0;
  63. BYTE i2=0;
  64. BYTE i4=0;
  65. BYTE j=0;
  66. BYTE k=0;

  67. bit   busytw;
  68. bit   keyon=0;
  69. bit   turnon=1;
  70. bit   turnon1=0;//开机控制
  71. bit   timetickflag=0;
  72. bit   Beepbit;
  73. bit   Poweron=0;
  74. bit   StartFlag=0;
  75. bit   UXLStartflag=0;
  76. bit   LDLStartflag=0;
  77. bit   switchflag=0;
  78. bit   switchflag1=0;


  79. WORD  Timedatabuffer=0x0f;
  80. WORD  fungtiontimecount=0;
  81. WORD  fungtiontimecount1=0;
  82. WORD  oneminuecount=0;
  83. WORD  DelayTimeCoun=0;
  84. WORD  testeep=0;
  85. BYTE  cycount1=0;
  86. WORD   cycount2=0;
  87. BYTE   cycount3=0;
  88. BYTE   cycount4=0;
  89. BYTE   cycount5=0;
  90. BYTE   cycount6=0;
  91. WORD   cycount7=0;
  92. BYTE   cycount8=0;
  93. WORD   cycount9=0; //延时计时
  94. WORD   cycount10=0; //延时计时
  95. WORD   cycount11=0; //按键计时

  96. BYTE  Poweroncount=0;
  97. BYTE  Powerontime=0;
  98. WORD  BeepCount=0;
  99. BYTE  UR=0;
  100. BYTE  mode=0;
  101.   BYTE  modeon=0;
  102. BYTE  timestart=0;
  103. BYTE  modeuxl=1;
  104. BYTE  modeldl=1;
  105. BYTE  mode3=0;
  106. BYTE  charge=6;

  107. WORD    TenSecand=300;       //设定待机最高为3分钟
  108. BYTE powerlow=0;
  109. BYTE sendlow=0;
  110. BYTE eep=0;
  111. BYTE eep1=0;
  112. BYTE eep2=0;


  113. BYTE  ldlFungtionopenMax=0;
  114. BYTE  ldlFungtioncloseMax=0;
  115. BYTE  uxlFungtionopenMax=0;
  116. BYTE  uxlFungtioncloseMax=0;
  117. BYTE  DelayCloseFlag;


  118. void Delay500ms();                //@33.1776MHz
  119. void SendData(BYTE dat);
  120. void SendString(char *s);
  121. void Timer0Init(void);
  122. void datahandle(void);
  123. void  UXLFungtionInit(void);
  124. void  LDLFungtionInit(void);
  125. void  UXLFungtion(void);
  126. void  LDLFungtion(void);
  127. void  Powkey(void);
  128. void  DelayClose(void);
  129. void Delay100ms();
  130. void Delay10us();


  131. void main()
  132. {
  133. //   ACC = P_SW1;
  134.   //  ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=0
  135. //   P_SW1 = ACC;                //(P3.0/RxD, P3.1/TxD)
  136. //Timer0Init();

  137. //P3M1=0X08;                        //P3口方向设置
  138. // P3M0=0X08;                        //P3口方向设置
  139.                          C_FR=0;        
  140.                         C_MO=0;
  141.   P1M1=0X04;                        //P3口方向设置
  142. P1M0=0X34;                        //P3口方向设置
  143. /*
  144.                                                    motor=0;
  145.                                                   
  146. for(cycount9=0;cycount9<6000;cycount9++)
  147. {
  148.         for(cycount10=0;cycount10<5;cycount10++)
  149.         {
  150.         Delay10us();
  151.         Delay10us();
  152.         Delay10us();
  153.         Delay10us();
  154.         Delay10us();
  155.         }
  156. }
  157.         
  158. motor=1;
  159. */
  160. CMPCR1=0x80; // 10000000
  161. // D5(PIE) =0; 关闭比较器输出由LOW变HIGH的事件引发CMPIF_p = 1产生中断
  162. // D4(NIE) =0; 关闭比较器输出由HIGH变LOW的事件引发CMPIF_n = 1产生中断
  163. CMPCR2=0x00; // 0000 0000,比较器只延时0.1uS
  164.     DO = 1;
  165.     IT1 = 0;                 //设置INT1的中断类型 (1:仅下降沿 0:上升沿和下降沿)
  166.   //  EX1 = 1;                    //使能INT1中断
  167.             EA = 1;
  168. //DO=1;  
  169. //  ACC = P_SW1;
  170. //  ACC &= ~(S1_S0 | S1_S1);    //S1_S0=1 S1_S1=0
  171. //  ACC |= S1_S0;               //(P3.6/RxD_2, P3.7/TxD_2)
  172. //  P_SW1 = ACC;  
  173. //  
  174. //  ACC = P_SW1;
  175. //  ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=1
  176. //  ACC |= S1_S1;               //(P1.6/RxD_3, P1.7/TxD_3)
  177. //  P_SW1 = ACC;  

  178. #if (PARITYBIT == NONE_PARITY)
  179.     SCON = 0x50;                //8位可变波特率
  180. #elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
  181.     SCON = 0xda;                //9位可变波特率,校验位初始为1
  182. #elif (PARITYBIT == SPACE_PARITY)
  183.     SCON = 0xd2;                //9位可变波特率,校验位初始为0
  184. #endif

  185.     T2L = (65536 - (FOSC/4/BAUD));   //设置波特率重装值
  186.     T2H = (65536 - (FOSC/4/BAUD))>>8;
  187.     AUXR = 0x14;                //T2为1T模式, 并启动定时器2
  188.     AUXR |= 0x01;               //选择定时器2为串口1的波特率发生器
  189.     ES = 1;                     //使能串口1中断
  190.     EA = 1;
  191. //          IE=0x9f;                        /*8是允许中断,a是TIMER0,TIMER1中断致能位*/
  192.                                         /*|  7    6    5    4 |  3    2    1    0 |*/
  193.                                                /*| EA |    | ET2| ES | ET1| EX1| ET0| EX0|*/
  194. //         IP=0x01;
  195. i=0;



  196.         lowcount=0;

  197.                                             
  198.                                                          sys_pw_lock=0;          //上电自锁锁住
  199.                                                          turnon=0;
  200.                                 for(cycount3=0;cycount3<25;cycount3++)
  201.                                 {
  202.                                         Delay100ms();
  203.                                 }
  204.                                 cycount3=0;
  205.                                                   motor=0;
  206.                                   Delay100ms();
  207.                                           Delay100ms();
  208.                                                 motor=1;

  209.         SendString("KML10\r\n");                                                  
  210.     LEDEN=0;
  211.         BED=0;
  212.         RED=1;
  213.         LED=1;

  214.         while(RED==0)
  215.                 {
  216.                         C_FR=1;
  217.                  C_MO=1;
  218.                 }
  219.                         C_FR=0;
  220.                  C_MO=0;        
  221.     while(1)
  222.         {
  223.                         
  224.         
  225.                 if((turnon1==0)&&(sys_pw_sp==1))
  226.                 {
  227.                         turnon1=1;//没松按键前不置1
  228.                         turnon=1;
  229.                 }
  230.         
  231.   if(sys_pw_sp==0)
  232.   {
  233. SendData(cycount11);
  234.          if( cycount11>10)//大于3秒
  235.          {
  236.                  sys_pw_lock=1;          //上电自锁锁住
  237.          }
  238.         if((cycount11>1)&&( cycount11<10)&&(turnon==1))//大于3秒
  239.          {
  240.                          mode++;
  241.                         SendData(turnon);

  242.                                       C_MO=0;     

  243.                                  LDLStartflag=1;
  244.                                  StartFlag=1;    //开时间倒计时        
  245.                Timedatabuffer=0x0f;

  246.          if(mode==3)//模式1是20分钟
  247.         {
  248.           Timedatabuffer=0x0f;
  249.         }

  250. cycount4=0;
  251. turnon=0;
  252. modeon=1;         
  253.          }
  254.          if(mode>3)//切换模式超3后复位1
  255.         {
  256.                 mode=1;
  257.         }

  258.         //

  259.   }
  260. else
  261. {
  262.         //turnon=1;
  263.          cycount11=0;
  264. }

  265. if(cycount1++>250)
  266. {
  267.          cycount1=0;
  268. //     LEDEN=~LEDEN;
  269.   cycount5++;
  270.     DelayClose();

  271. if(cycount7++>400)
  272. {
  273. cycount7=0;
  274. if(cpdata==0)
  275. {
  276. LEDEN=~LEDEN;        //工作蓝灯闪
  277. cycount8++;//电源报警灯计数
  278. }

  279. }
  280.   if(cycount2++>2300)
  281.   {
  282.    cycount2=0;
  283.   cycount4++;
  284.   cycount6++;//电源报警灯计数
  285.   SendData(Timedatabuffer);
  286.   if(StartFlag==1)  
  287.   {
  288. cycount6=0;

  289. // BED=~BED;         
  290.            C_FR=0;
  291. if(mode==3)       //自动模式 强按摩1分钟+52度工作5分钟,弱2分钟,发热4分钟,工作时间20分钟
  292.         {
  293.                 turnon=1;

  294.                 BED=1;
  295.                 LED=0;
  296. if((cycount4==1)||(cycount4==21)||(cycount4==41))
  297. {
  298.          modeldl=4;
  299. }
  300. if((cycount4==11)||(cycount4==31)||(cycount4==51))
  301. {
  302.          modeldl=6;
  303. }
  304.          switch(Timedatabuffer)
  305.            {
  306. //SendString("m1");        
  307.                        case 15:
  308.                         {
  309. LDLStartflag=1;  //关LDL功能
  310.                         C_FR=1;

  311.              UXLStartflag=1;  //关UXL功能      
  312.                 modeuxl=7;               

  313.                         };  break;
  314.                         case 14:
  315.                         {
  316.         
  317.                 LDLStartflag=0;  //关LDL功能
  318. C_MO=0;        
  319.                         };  break;
  320.                         case 11:
  321.                         {
  322.                                                 

  323.                          LDLStartflag=1;  //LDL功能
  324.                         };  break;        
  325.                                                 case 10:
  326.                         {
  327.                          LDLStartflag=1;  //LDL功能
  328.     UXLStartflag=0;  //关UXL功能
  329. C_FR=0;
  330.                         };  break;        
  331.                         case 9:
  332.                         {
  333.     UXLStartflag=1;  //关UXL功能
  334.          C_FR=1;
  335.                         LDLStartflag=0;  //关LDL功能
  336. C_MO=0;        
  337.                         };  break;        
  338.                                                 case 6:
  339.                         {
  340.                          LDLStartflag=1;  //LDL功能
  341.                         };  break;        
  342.                         case 5:
  343.                         {
  344.     UXLStartflag=0;  //关UXL功能
  345. C_FR=0;
  346.                         };  break;        
  347.                         case 4:
  348.                         {
  349.     UXLStartflag=1;  //关UXL功能
  350.          C_FR=1;
  351.             LDLStartflag=0;  //LDL功能
  352. C_MO=0;
  353.                         };  break;        
  354.                         case 1:
  355.                         {
  356.    LDLStartflag=1;  //LDL功能
  357.   UXLStartflag=0;  //关UXL功能
  358. C_FR=0;
  359.                         };  break;
  360.                         case 0:
  361.                         {
  362.    LDLStartflag=0;  //LDL功能
  363. C_MO=0;
  364. StartFlag=0;

  365.                         };  break;                                                        
  366.                 default:   break;
  367.            }  
  368.         }
  369. else if(mode==1)  //高效模式
  370.         {        
  371.                 RED=0;
  372.                 LED=1;
  373.         turnon=1;
  374. //        SendString("mode1\r\n");
  375. if((cycount4==1)||(cycount4==21)||(cycount4==41))
  376. {
  377.          modeldl=6;
  378. }
  379. if((cycount4==11)||(cycount4==31)||(cycount4==51))
  380. {
  381.          modeldl=5;
  382. }
  383.          switch(Timedatabuffer)
  384.            {
  385.                        case 15:
  386.                         {
  387. LDLStartflag=1;  //关LDL功能
  388.                                 
  389. UXLStartflag=1;  //关UXL功能   
  390.              C_FR=1;    //直接打开
  391.      //        UXLStartflag=1;  //关UXL功能  
  392. modeuxl=5;         
  393.                         };  break;
  394.                         case 14:
  395.                         {
  396.        LDLStartflag=0;  //关LDL功能
  397. C_MO=0;
  398.                         };  break;
  399.            case 12:
  400.                         {
  401.        LDLStartflag=1;  //关LDL功能

  402.                         };  break;
  403.                                                 case 11:
  404.                         {
  405.        LDLStartflag=0;  //关LDL功能
  406. C_MO=0;
  407.                         };  break;
  408.                                                 case 9:
  409.                         {
  410.        LDLStartflag=1;  //关LDL功能

  411.                         };  break;
  412.                                                 case 8:
  413.                         {
  414.        LDLStartflag=0;  //关LDL功能
  415. C_MO=0;
  416.                         };  break;
  417.             case 6:
  418.                         {
  419.        LDLStartflag=1;  //关LDL功能

  420.                         };  break;
  421.                                                 case 5:
  422.                         {
  423.        LDLStartflag=0;  //关LDL功能
  424. C_MO=0;
  425.                         };  break;
  426. case 3:
  427.                         {
  428.        LDLStartflag=1;  //关LDL功能

  429.                         };  break;
  430.                                                 case 2:
  431.                         {
  432.        LDLStartflag=0;  //关LDL功能
  433. C_MO=0;
  434.                         };  break;
  435.                         case 1:
  436.                         {
  437.   LDLStartflag=1;  //关LDL功能
  438.                    C_FR=0;    //直接打开
  439.                                    UXLStartflag=0;  //关UXL功能
  440.                         };  break;
  441.                         case 0:
  442.                         {

  443.    LDLStartflag=0;  //关LDL功能
  444. C_MO=0;
  445. StartFlag=0;
  446.         modeon=1;

  447.                         };  break;                        
  448.                 default:
  449. {
  450.   C_FR=1;    //直接打开
  451. }
  452.    break;
  453.            }  
  454.         }
  455.         else if(mode==2)  //舒适模式
  456.         {
  457. turnon=1;               
  458. //SendString("mode2\r\n");
  459.                 RED=1;
  460.                 BED=0;
  461.                 LED=1;
  462.                 if((cycount4==1)||(cycount4==21)||(cycount4==41))
  463. {
  464.          modeldl=2;
  465. }
  466. if((cycount4==11)||(cycount4==31)||(cycount4==51))
  467. {
  468.          modeldl=1;
  469. }
  470.          switch(Timedatabuffer)
  471.            {
  472.                        case 15:
  473.                         {
  474. LDLStartflag=1;  //关LDL功能
  475.    C_FR=1;    //直接打开
  476.                   
  477.    modeuxl=7;
  478.                         };  break;

  479.                         case 14:
  480.                         {
  481. LDLStartflag=0;  //关LDL功能
  482. C_MO=0;
  483.   
  484.    UXLStartflag=1;  //关UXL功能
  485.                         };  break;
  486.   case 8:
  487.                         {
  488.                   UXLStartflag=0;  //关UXL功能
  489. C_FR=0;

  490.                         };  break;
  491. case 7:
  492.                         {
  493.                   UXLStartflag=1;  //关UXL功能

  494.                         };  break;
  495.                         case 0:
  496.                         {
  497.                   UXLStartflag=0;  //关UXL功能
  498. C_FR=0;
  499. StartFlag=0;

  500. modeon=1;                        
  501.                         };  break;                     
  502.                 default:   break;
  503.            }  
  504.         }

  505. LDLFungtionInit();
  506.     UXLFungtionInit();
  507.   }        
  508. else
  509. {
  510.         RED=1;
  511.         LED=1;
  512. BED=~BED;
  513.                  
  514. }        
  515.    cpdata= CMPCR1&0x01; // 取比较器结果

  516.    }
  517.    }

  518.    if(cycount5>7)  //5MS工作一次
  519.    {
  520.            UXLFungtion();                   //u线导射功能函数
  521.         LDLFungtion();                   //律动能疗功能函数
  522.         cycount5=0;
  523.         cycount11++; // 按键按下计时
  524.    }




  525. if((cycount4>59)&&(StartFlag==1)&&(Timedatabuffer!=0))
  526. //        if((cycount4>5)&&(StartFlag==1)&&(Timedatabuffer!=0))
  527. {
  528. Timedatabuffer--;
  529. cycount4=0;
  530. SendData(Timedatabuffer);
  531. SendData(mode);
  532. }
  533. if(Timedatabuffer==0)
  534. {
  535.          LDLStartflag=0;
  536.                 StartFlag=0;
  537.                 mode=0;
  538.                  C_MO=0;
  539.                                   UXLStartflag=0;  //关UXL功能
  540. C_FR=0;
  541. StartFlag=0;
  542. if(modeon==1)//工作初始化
  543.                 {
  544.         modeon=0;
  545.   motor=0;
  546.         SendString("moto\r\n");
  547.         Delay100ms();
  548.                                           Delay100ms();
  549.                                                  Delay100ms();
  550.                                           Delay100ms();
  551.                      Delay100ms();
  552.                                           Delay100ms();
  553.                                                 motor=1;
  554.                 }
  555. }


  556.                


  557.         }
  558. }

  559. /*----------------------------
  560. UART 中断服务程序
  561. -----------------------------*/
  562. void Uart() interrupt 4 using 1
  563. {
  564.     if (RI)
  565.     {
  566.         RI = 0;                 //清除RI位
  567.         P0 = SBUF;              //P0显示串口数据
  568.         P22 = RB8;              //P2.2显示校验位
  569.     }
  570.     if (TI)
  571.     {
  572.         TI = 0;                 //清除TI位
  573.         busy = 0;               //清忙标志
  574.     }
  575. }

  576. /*----------------------------
  577. 发送串口数据
  578. ----------------------------*/
  579. void SendData(BYTE dat)
  580. {
  581.     while (busy);               //等待前面的数据发送完成
  582.     ACC = dat;                  //获取校验位P (PSW.0)
  583.     if (P)                      //根据P来设置校验位
  584.     {
  585. #if (PARITYBIT == ODD_PARITY)
  586.         TB8 = 0;                //设置校验位为0
  587. #elif (PARITYBIT == EVEN_PARITY)
  588.         TB8 = 1;                //设置校验位为1
  589. #endif
  590.     }
  591.     else
  592.     {
  593. #if (PARITYBIT == ODD_PARITY)
  594.         TB8 = 1;                //设置校验位为1
  595. #elif (PARITYBIT == EVEN_PARITY)
  596.         TB8 = 0;                //设置校验位为0
  597. #endif
  598.     }
  599.     busy = 1;
  600.     SBUF = ACC;                 //写数据到UART数据寄存器
  601. }

  602. /*----------------------------
  603. 发送字符串
  604. ----------------------------*/
  605. void SendString(char *s)
  606. {
  607.     while (*s)                  //检测字符串结束标志
  608.     {
  609.         SendData(*s++);         //发送当前字符
  610.     }
  611. }

  612. void Timer0Init(void)                //5微秒@33.1776MHz
  613. {
  614.         AUXR |= 0x80;                //定时器时钟1T模式
  615.         TMOD &= 0xF0;                //设置定时器模式
  616. //TL0 = 0x66;                //设置定时初值//5微秒@33.1776MHz
  617. //        TH0 = 0x7E;                //设置定时初值
  618. //TL0 = 0;                //设置定时初值//5微秒@33.1776MHz
  619. //        TH0 = 0;                //设置定时初值
  620.         TL0 = 0x0;                //设置定时初值//100微秒@33.1776MHz
  621.         TH0 = 0x0;                //设置定时初;
  622.         TF0 = 0;                //清除TF0标志
  623.          TR0 = 1;                        //定时器0开始计时
  624.     ET0 = 0;                       //使能定时器0中断
  625.     EA = 1;
  626. }
  627. //中断服务程序
  628. void exint1() interrupt 3   //INT1中断入口
  629. {
  630.          FLAG=DO;
  631.          TR0 = 0;                        //定时器0开始计时
  632.   lowcount=TL0;
  633.   highcount=TH0;               
  634. TL0=0;
  635. TH0=0;
  636. UR=1;
  637. TR0 = 1;                        //定时器0开始计时  

  638. //TR0=0;
  639. // UR=1;
  640. // }


  641. }
  642. void tm0_isr() interrupt 1 using 2
  643. {


  644. timebit++;


  645. }

  646. void datahandle(void)                //一位数据处理
  647. {

  648.         for(i2=0;i2<4;i2++)
  649. {

  650.         conint = (char*)&conchar;   //2字节转换成单字节
  651.         SendData(*conint);
  652.         SendData(*(conint+1));
  653.         //SendData(0x99);




  654. xinflag=1;   //重新等待下一次同步头        
  655. i1=0;
  656.         
  657. }
  658. }

  659. //****************************************
  660. void   UXLFungtionInit(void)
  661. {
  662.         
  663.            switch(modeuxl)
  664.            {
  665.                        case 1:
  666.                         {
  667.                             uxlFungtionopenMax=UXLmodeoneH;
  668.                                 uxlFungtioncloseMax=UXLmodeoneL;        
  669.                                 charge=0;
  670.                         };  break;
  671.                         case 2:
  672.                         {
  673.                             uxlFungtionopenMax=UXLmodetwoH;
  674.                                 uxlFungtioncloseMax=UXLmodetwoL;        
  675.                                 charge=0;

  676.                         };  break;
  677.                         case 3:
  678.                         {
  679.                             uxlFungtionopenMax=UXLmodethrH;
  680.                              uxlFungtioncloseMax=UXLmodethrL;
  681.                                 charge=1;


  682.                         };  break;        
  683.                         case 4:
  684.                         {
  685.                             uxlFungtionopenMax=400;
  686.                              uxlFungtioncloseMax=40;
  687.                                 charge=1;


  688.                         };  break;        
  689.                         case 5:
  690.                         {
  691.                             uxlFungtionopenMax=400;
  692.                              uxlFungtioncloseMax=45;
  693.                                 charge=1;


  694.                         };  break;        
  695.                         case 6:
  696.                         {
  697.                             uxlFungtionopenMax=400;
  698.                              uxlFungtioncloseMax=55;
  699.                                 charge=1;


  700.                         };  break;        
  701.                         case 7:
  702.                         {
  703.                             uxlFungtionopenMax=400;
  704.                              uxlFungtioncloseMax=70;
  705.                                 charge=1;


  706.                         };  break;                        
  707.                 default:   break;
  708.            }


  709. }

  710. //----------------------------------------
  711. void   LDLFungtionInit(void)
  712. {
  713.            switch(modeldl)
  714.            {
  715.                        case 1:
  716.                         {
  717.                         
  718.                              ldlFungtionopenMax=5;
  719.                                  ldlFungtioncloseMax=30;
  720.            
  721.                         };  break;
  722.                         case 2:
  723.                         {
  724.                         
  725.                              ldlFungtionopenMax=5;
  726.                                  ldlFungtioncloseMax=20;
  727.         
  728.                         };  break;
  729.                         case 3:
  730.                         {
  731.                         
  732.                            ldlFungtionopenMax=5;
  733.                                  ldlFungtioncloseMax=10;
  734.                
  735.                         };  break;        
  736.                         case 4:
  737.                         {
  738.                         
  739.                            ldlFungtionopenMax=50;
  740.                                  ldlFungtioncloseMax=25;
  741.         
  742.                         };  break;        
  743.                         case 5:
  744.                         {

  745.                            ldlFungtionopenMax=80;
  746.                                  ldlFungtioncloseMax=30;
  747.                         
  748.                         };  break;        
  749.                         case 6:
  750.                         {
  751.                         
  752.                            ldlFungtionopenMax=120;
  753.                                  ldlFungtioncloseMax=30;
  754.                                 
  755.                         };  break;        
  756.                         case 7:
  757.                         {
  758.                         
  759.                            ldlFungtionopenMax=150;
  760.                                  ldlFungtioncloseMax=30;
  761.                                 
  762.                         };  break;                                
  763.                 default:   break;
  764.            }
  765. }
  766. void  UXLFungtion(void)
  767. {
  768.           if(UXLStartflag==1)
  769.           {
  770.                   
  771.                               cycount6=0;            
  772.            DelayTimeCoun=0;
  773.                       if(switchflag==0)
  774.                         {
  775.                              if(fungtiontimecount++ > uxlFungtionopenMax)         //open
  776. ……………………

  777. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
soft.rar (30.03 KB, 下载次数: 86)
KML02-S10.V1.1.pdf (55.53 KB, 下载次数: 65)





评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:100350 发表于 2019-11-26 13:36 | 只看该作者
好东西啊,感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表