久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4136|回復: 2
打印 上一主題 下一主題
收起左側

我也來 普通氬弧焊改冷焊機

  [復制鏈接]
跳轉到指定樓層
樓主
在論壇看到個普通氬弧焊改冷焊機程序的帖子挺有意思的,可惜只發了代碼部分。
我也有個氬弧焊機啊沒法了干脆自己動手也搞了個發上來一起研究下。
先上電路圖,


看看嘉立創里的效果哈哈


已經裝機了,沒有焊板子的圖了直接上裝機效果https://www.bilibili.com/video/BV1nW4y1u7tz/?spm_id_from=333.999.0.0&vd_source=319f267cc6110f5c414f91b611c5d0d8

代碼因為不是KEIL的隨便看看就好了,最后面會放編譯完的固件的。
  1. #define KEY_COUNT_DESHAKING 15//按鍵消抖時間15MS
  2. #define KEY_COUNT_LONGT 1000//長按按鍵判斷時間1000MS
  3. #define KEY_COUNT_DUAL 180//雙擊按鍵判斷時間180MS
  4. #define KEY_LONG_REPEAT 2000//長按按鍵時響應的時間間隔2000MS
  5. #define  TASKS_MAX   4
  6. #define SMG_PORT P1
  7. #define SMG_PORT_MODE {P1M1=0x00;P1M0=0xff;}//P1推挽輸出
  8. #define SMG_WEI1 P3_5
  9. #define SMG_WEI1_OUT {P3M1&=~0x20;P3M0|=0x20;}//P3_5推挽輸出
  10. #define SMG_WEI2 P3_1
  11. #define SMG_WEI2_OUT {P3M1&=~0x02;P3M0|=0x02;}//P3_1推挽輸出
  12. #define SMG_WEI3 P3_6
  13. #define SMG_WEI3_OUT {P3M1&=~0x40;P3M0|=0x40;}//P3_6推挽輸出
  14. #define smg_lx0
  15. #define duan_0
  16. #define smg_clear
  17. #define smg_shunum
  18. #define smg_displa_dian
  19. #define smg_update_buf

  20. #include <STC8HX.h>
  21. uint32 sys_clk = 24000000;//設置PWM、定時器、串口、EEPROM頻率參數
  22. #include "myLib/LUNXUN.h"
  23. #include "shumaguan.h"
  24. #include "lib/eeprom.h"
  25. #include "myLib/EC11_51.h"//聲明庫頭文件
  26. #include "xiaogju.h"

  27. uint8 huilingjs = 0;
  28. uint8 dianhanzt = 0;
  29. uint16 i = 0;
  30. uint8 shezhishijian[3]={0,0,0};
  31. uint8 jianhc_A1;

  32. void Timer0Init(void)        //100微秒@24.000MHz
  33. {
  34.   AUXR &= 0x7f;                //定時器時鐘12T模式
  35.   TMOD &= 0xf0;                //設置定時器模式
  36.   TL0 = 0x38;                        //設定定時初值
  37.   TH0 = 0xff;                        //設定定時初值
  38. }

  39. void T_IRQ0(void) interrupt 1 using 1{
  40.   TaskReMarks(); //此函數在中斷中調用
  41. }

  42. void renwu1() {
  43.   //↑ ↑ ↑顯示更新處理/100ms
  44.   switch (shezhishijian[(int)(2)]) {
  45.    case 0:
  46.     smg_display_clear_bit(8);//數碼管清指定位
  47.     smg_display_num(1-1,shezhishijian[(int)(0)]);//數碼管顯示數字
  48.     break;
  49.    case 1:
  50.     smg_display_clear_bit(8);//數碼管清指定位
  51.     smg_display_num(1-1,(shezhishijian[(int)(1)]<<1));//數碼管顯示數字
  52.     smg_display_dian(2-1,1);//數碼管指定位控制小數點
  53.     smg_display_dian(3-1,1);//數碼管指定位控制小數點
  54.     break;
  55.    case 2:
  56.     smg_display_clear_bit(8);//數碼管清指定位
  57.     smg_display_update_buf(1-1,15);//數碼管指定位顯示字符
  58.     smg_display_update_buf(2-1,15);//數碼管指定位顯示字符
  59.     smg_display_update_buf(3-1,0);//數碼管指定位顯示字符
  60.     break;
  61.   }
  62.   if((huilingjs != 0) && (shezhishijian[(int)(2)] != 2)){
  63.     huilingjs--;
  64.     if(huilingjs == 0){
  65.       shezhishijian[(int)(2)] = 0;
  66.       eeprom_sector_erase(0);  //EEPROM擦除指定扇區
  67.       eeprom_write_uchar(0,shezhishijian,(sizeof(shezhishijian)/sizeof(shezhishijian[0])));  //EEPROM寫數據
  68.     }
  69.   }

  70. }
  71. xdata tongdaoHC HC_A1 = {0,0,0,0,0,0,0};//聲明A1通道全局結構體緩存
  72. void renwu0() {
  73.   //↑ ↑ ↑編碼器輸入處理/1ms
  74.   smg_scan_callback(10);//數碼管掃描回調
  75.    HC_A1.EC11_A_dq = P3_3;
  76.    HC_A1.EC11_B_dq = P3_4;
  77.    HC_A1.EC11_D_dq = P3_2;
  78.    jianhc_A1 = Encoder_EC11_Scan(&HC_A1);
  79.    switch ( jianhc_A1)
  80.     {
  81.       case 1:
  82.          if(shezhishijian[(int)(2)] < 2){
  83.       if(shezhishijian[(int)(shezhishijian[(int)(2)])] >= 12){
  84.         shezhishijian[(int)(shezhishijian[(int)(2)])] = shezhishijian[(int)(shezhishijian[(int)(2)])] - 1;
  85.       }
  86.       huilingjs = 30;
  87.     }
  88.        break;
  89.       case 2:
  90.          if(shezhishijian[(int)(2)] < 2){
  91.       if(shezhishijian[(int)(shezhishijian[(int)(2)])] < 255){
  92.         shezhishijian[(int)(shezhishijian[(int)(2)])] = shezhishijian[(int)(shezhishijian[(int)(2)])] + 1;
  93.       }
  94.       huilingjs = 30;
  95.     }
  96.        break;
  97.       case 3:
  98.          if(shezhishijian[(int)(2)] < 2){
  99.       if(shezhishijian[(int)(shezhishijian[(int)(2)])] >= 30){
  100.         shezhishijian[(int)(shezhishijian[(int)(2)])] = shezhishijian[(int)(shezhishijian[(int)(2)])] - 10;
  101.       }
  102.       huilingjs = 30;
  103.     }
  104.        break;
  105.       case 4:
  106.          if(shezhishijian[(int)(2)] < 2){
  107.       if(shezhishijian[(int)(shezhishijian[(int)(2)])] < 240){
  108.         shezhishijian[(int)(shezhishijian[(int)(2)])] = shezhishijian[(int)(shezhishijian[(int)(2)])] + 10;
  109.       }
  110.       huilingjs = 30;
  111.     }
  112.        break;
  113.       case 5:
  114.             break;
  115.       case 6:
  116.          if(shezhishijian[(int)(2)] == 0){
  117.       shezhishijian[(int)(2)] = 1;
  118.     }
  119.     else{
  120.       shezhishijian[(int)(2)] = 0;
  121.       eeprom_sector_erase(0);  //EEPROM擦除指定扇區
  122.       eeprom_write_uchar(0,shezhishijian,(sizeof(shezhishijian)/sizeof(shezhishijian[0])));  //EEPROM寫數據
  123.     }
  124.     huilingjs = 30;
  125.        break;
  126.       case 7:
  127.          if(shezhishijian[(int)(2)] != 2){
  128.       shezhishijian[(int)(2)] = 2;
  129.       eeprom_sector_erase(0);  //EEPROM擦除指定扇區
  130.       eeprom_write_uchar(0,shezhishijian,(sizeof(shezhishijian)/sizeof(shezhishijian[0])));  //EEPROM寫數據
  131.     }
  132.     else{
  133.       shezhishijian[(int)(2)] = 0;
  134.       eeprom_sector_erase(0);  //EEPROM擦除指定扇區
  135.       eeprom_write_uchar(0,shezhishijian,(sizeof(shezhishijian)/sizeof(shezhishijian[0])));  //EEPROM寫數據
  136.     }
  137.        break;
  138.       case 8:
  139.             break;
  140.     }
  141.   WDT_CONTR = 0X38;//在溢出設定時間到前調用

  142. }
  143. void renwu2() {
  144.   //↑ ↑ ↑點焊處理/1ms
  145.   if(shezhishijian[(int)(2)] == 2){
  146.     if(P5_4){
  147.       P3_7 = 0;
  148.       smg_display_dian(1-1,0);//數碼管指定位控制小數點
  149.       dianhanzt = 0;
  150.     }
  151.     else{
  152.       P3_7 = 1;
  153.       smg_display_dian(1-1,1);//數碼管指定位控制小數點
  154.     }
  155.   }
  156.   else{
  157.     if(P5_4){
  158.       P3_7 = 0;
  159.       smg_display_dian(1-1,0);//數碼管指定位控制小數點
  160.       dianhanzt = 0;
  161.     }
  162.     else{
  163.       switch (dianhanzt) {
  164.        case 0:
  165.         P3_7 = 1;
  166.         smg_display_dian(1-1,1);//數碼管指定位控制小數點
  167.         dianhanzt = 1;
  168.         i = 0;
  169.         break;
  170.        case 1:
  171.         i++;
  172.         if(i >= shezhishijian[(int)(0)]){
  173.           P3_7 = 0;
  174.           smg_display_dian(1-1,0);//數碼管指定位控制小數點
  175.           dianhanzt = 2;
  176.           i = 0;
  177.         }
  178.         break;
  179.        case 2:
  180.         i++;
  181.         if(i >= 1000){
  182.           P3_7 = 1;
  183.           smg_display_dian(1-1,1);//數碼管指定位控制小數點
  184.           dianhanzt = 3;
  185.           i = 0;
  186.         }
  187.         break;
  188.        case 3:
  189.         i++;
  190.         if(i >= shezhishijian[(int)(0)]){
  191.           P3_7 = 0;
  192.           smg_display_dian(1-1,0);//數碼管指定位控制小數點
  193.           dianhanzt = 4;
  194.           i = 0;
  195.         }
  196.         break;
  197.        case 4:
  198.         i++;
  199.         if(i >= (shezhishijian[(int)(1)]<<1)){
  200.           P3_7 = 1;
  201.           smg_display_dian(1-1,1);//數碼管指定位控制小數點
  202.           dianhanzt = 3;
  203.           i = 0;
  204.         }
  205.         break;
  206.       }
  207.     }
  208.   }

  209. }

  210. void setup()
  211. {
  212.   P5M1|=0x10;P5M0&=~0x10;//高阻輸入
  213.   P3M1&=~0x80;P3M0|=0x80;//推挽輸出
  214.   Timer0Init();
  215.   TR0 = 1;// 定時器0開始計時
  216.   EA = 1; // 控制總中斷
  217.   ET0 = 1; // 控制定時器中斷
  218.   TaskComps[0].Yun = 1;
  219.    TaskComps[0].Run = 1;
  220.    TaskComps[0].Timer = 10;
  221.    TaskComps[0].ItvTimer = 10;
  222.    TaskComps[0].TaskHook = renwu0;
  223.   TaskComps[1].Yun = 1;
  224.    TaskComps[1].Run = 1;
  225.    TaskComps[1].Timer = 1000;
  226.    TaskComps[1].ItvTimer = 1000;
  227.    TaskComps[1].TaskHook = renwu1;
  228.   TaskComps[2].Yun = 1;
  229.    TaskComps[2].Run = 1;
  230.    TaskComps[2].Timer = 10;
  231.    TaskComps[2].ItvTimer = 10;
  232.    TaskComps[2].TaskHook = renwu2;
  233.   smg_init();//數碼管初始化
  234.   smg_display_clear_bit(8);//數碼管清指定位
  235.   eeprom_read_uchar(0,shezhishijian,(sizeof(shezhishijian)/sizeof(shezhishijian[0])));  //EEPROM讀數據
  236.   P3M1|=0x04;P3M0&=~0x04;//P3_2高阻輸入
  237.   P3M1|=0x10;P3M0&=~0x10;//P3_4高阻輸入
  238.   P3M1|=0x08;P3M0&=~0x08;//P3_3高阻輸入
  239. }

  240. void loop()
  241. {
  242.   TaskProcess();
  243.   TaskProcess();
  244.   TaskProcess();
  245. }

  246. void main(void)
  247. {
  248.   setup();
  249.   while(1){
  250.     loop();
  251.   }
  252. }
復制代碼
完工后面上干貨了。

上圖8個文件下載: 氬弧焊脈沖點焊控制.rar (474.88 KB, 下載次數: 76)

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:1084100 發表于 2023-6-14 16:52 | 只看該作者
樓主問下大電流是怎么控制的,能上個圖嗎,看有的用mos管  有的用igbt  也不知道選什么型號合適
回復

使用道具 舉報

板凳
ID:399179 發表于 2023-8-7 22:11 來自手機 | 只看該作者
單片機會不會受到高壓的干擾?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩成人av在线 | 一区中文字幕 | 久久免费国产 | 蜜臀av日日欢夜夜爽一区 | 三级成人在线 | 男女网站在线观看 | 在线观看成人精品 | 999热精品 | www.99久久.com | 电影91久久久| 色欧美片视频在线观看 | 国产高清视频 | 精品视频一区二区三区在线观看 | 亚洲精品白浆高清久久久久久 | 久久久www成人免费无遮挡大片 | 黄色香蕉视频在线观看 | 无吗视频 | 久久国产精品色av免费观看 | 成年免费大片黄在线观看一级 | 99这里只有精品视频 | 久久久国产精品一区 | 久久久久久蜜桃一区二区 | 欧美在线成人影院 | 亚洲一区 中文字幕 | 久久国产区 | 久久综合香蕉 | 国产精品久久久久久中文字 | 国产精品成人一区二区三区吃奶 | 成人国产精品久久久 | 精品一区二区在线视频 | 国产日韩欧美 | 亚洲欧美精品一区 | 色花av| www.久 | 亚洲精品456 | 日韩福利 | 精品综合久久 | 国产一区二区三区在线 | 国产你懂的在线观看 | 久久精品免费一区二区三 | 亚洲一区亚洲二区 |