找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18090|回复: 37
收起左侧

单片机点焊机控制完整程序+PCB电路图

  [复制链接]
ID:601757 发表于 2019-8-24 23:38 | 显示全部楼层 |阅读模式
完整的点焊机控制完善论坛里不全的pcb工程程序一起附上

Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
0.png 0.png
0.png
单片机源程序如下:
  1. /*******************************************************************************
  2. *                                                                                                                                            *
  3. *                                        点焊机控制器                                                                           *
  4. --------------------------------------------------------------------------------
  5. * 结构说明:    51单片机计时控制                                                                                                   *
  6. *              在检测到点焊手柄发出的工作信号时,                                                           *
  7. *              立即接通点焊机的电源,点焊机开始工作,设定的时间结束后切断电源,*
  8. *              在设定的间隔时间内,不接收点焊手柄发出的工作信号。              *                                                                                             *
  9. *******************************************************************************/
  10. /*
  11. * 单片机P0^0~P0^4口分配给LCD5110使用:RET、CE、D/C、DIN、CLK(在LCD_5110.h中定义
  12. *       P0^5     设备等待(可以工作)信号灯
  13. *            P0^6     设备工作间隙(不接收点焊信号)信号灯
  14. *
  15. *            P1^0~P1^6   开关设置点焊时间(20毫秒为1单位,0~127单位)
  16. *            P1^7        工作间隙:0=5秒,1=10秒
  17. *******************************************************************************/

  18. #include<reg51.h>
  19. //#include<intrins.h>
  20. #include"LCD_5110.h"      //包含LCD显示驱动文件

  21. #define u8 unsigned char  //单字节
  22. #define u16 unsigned int  //双字节
  23. #define        u64 unsigned long //四字节

  24. #define        SZP1 P1           //P1口为初始设置的数据,低七位为定时数值(0-127)*20ms,                                                                                                  
  25.                           //第八位为间隙时间,0=5秒,1=10秒
  26. sbit LED_work = P0^5;     //设备工作信号(低电平点焊机接通)
  27. sbit LED_read = P0^6;     //设备就绪信号(低电平可以工作)
  28. sbit work     = P0^7;          //点焊按钮信号(低电平按下)
  29.                                                                                                                        
  30. //--定义全局变量--//
  31. u8  sdsj = 0;             //设定的点焊单位
  32. u64 shsj = 0;             //设定的点焊时间(双字节,以毫秒为单位)
  33. u8 wait = 5;                          //设置的间隔时间(5秒或10秒,根据P1.7确定)
  34.                                                           
  35. u8 time_work = 0;         //焊接时间计时(20毫秒/单位)
  36. u8 time_wait = 0;                  //等待时间计时(单位秒)
  37. bit time_1s = 0;              //秒信号
  38. bit time_20ms = 0;                  //20毫秒信号
  39. bit flag = 0;             //定时工作标志(0=待机或间隔,1=正在工作


  40. /*******************************************************************************
  41. * 函 数 名         : ReadSet
  42. * 函数功能                   : 读设置并显示
  43. * 输    入         : 无                                                                                                                                               
  44. * 输    出         : 无
  45. *******************************************************************************/
  46. void ReadSet(void)
  47. {
  48.         sdsj = SZP1;               //从P1口读入一个字节的数据
  49.         if (sdsj>127) wait = 10;   //最高位1,间隔时间=10秒
  50.         else wait = 5;
  51.         LCD_write_val(27,4,2,wait);//显示设定的间隔时间
  52.           
  53.         sdsj = (sdsj & 0x7f) + 3;  //取低7位定时值再加3(60毫秒)
  54.         shsj = sdsj * 20;                   //20毫秒基本单位
  55.         LCD_write_val(27,2,4,shsj);//显示设定的点焊时间
  56. }


  57. /*******************************************************************************
  58. * 函 数 名         : timehand
  59. * 函数功能                   : 20毫秒处理函数,即每隔20毫秒处理一次
  60. * 输    入         : 无
  61. * 输    出         : 无
  62. *******************************************************************************/
  63. void TimeHand(void)
  64. {
  65.     if (flag == 0)        //待机状态
  66.         {
  67.             if (work == 0)    //收到点焊按钮信号
  68.                 {
  69.                         flag = 1;     //设置工作标志
  70.                         time_work = sdsj;//取设定时间
  71.                         LED_work = 0; //开通工作电源
  72.                         LED_read = 1; //关闭等待信号灯
  73.                 }
  74.                 else                          //无点焊按钮信号
  75.                 {
  76.                         ReadSet();          //检查更新设置
  77.                 }                                                                       
  78.         }
  79.         else                          //工作状态
  80.         {
  81.                 time_work--;
  82.                 if (time_work == 0)//定时时间到
  83.                 {
  84.                         LED_work = 1;  //关闭点焊机电源
  85.                         LED_read = 1;  //取消准备好信号灯
  86.                         flag = 0;            //撤销工作标志
  87.                         time_wait = wait;//恢复间隔时间
  88.                         LCD_write_val(61,4,2,time_wait);//显示剩余间隔时间
  89.                 }
  90.         }
  91. }



  92. /*******************************************************************************
  93. * 函 数 名         :
  94. * 函数功能                   : T0中断服务函数
  95. * 输    入         : 无
  96. * 输    出         : 无
  97. *******************************************************************************/
  98. void InterruptTimer0() interrupt 1
  99. {
  100.         static u8 i = 0;           //毫秒
  101.         static u8 j = 0;           //20毫秒

  102.         TH0 = 0xFC;            //重新加载初值,定时1ms
  103.         TL0 = 0x66;

  104.         i++;
  105.         if (i > 19)                   //20毫秒计时到
  106.         {
  107.             i = 0;
  108.                 time_20ms = 1;           //置20毫秒标志
  109.             j++;
  110.             if (j > 49)        //1秒
  111.                 {
  112.                     j = 0;
  113.                         time_1s = 1;   //置1秒标志
  114.             }
  115.         }
  116. }


  117. /*******************************************************************************
  118. * 函 数 名         : main
  119. * 函数功能                   : 主函数
  120. * 输    入         : 无
  121. * 输    出         : 无
  122. *******************************************************************************/
  123. void main(void)
  124. {
  125. //设置初始屏幕显示
  126.     u8 i, x ,y;
  127.        
  128.         LED_work = 1; //测试
  129.         LED_read = 1;
  130.         LCD_init();                   //初始化5110屏幕

  131.         x = 8;                                   //显示的起始位置
  132.         y = 0;
  133.         for (i = 0; i < 5; i++)//显示“电子点焊机”
  134.         {
  135.                 LCD_write_char(x,y,i);//
  136.                 x = x +        14;        //下一字的显示位置
  137.         }
  138.         x = 0;
  139.         y = 2;
  140.         LCD_write_char(x,y,3); //显示“焊”
  141.         x = 14;
  142.         LCD_write_char(x,y,5); //显示“接”
  143.         x = 59;
  144.         LCD_write_char(x,y,8); //显示“毫”
  145.     x = 72;
  146.         LCD_write_char(x,y,9); //显示“秒”
  147.         x = 0;
  148.         y = 4;
  149.         LCD_write_char(x,y,6); //显示“间”
  150.         x = 14;
  151.         LCD_write_char(x,y,7); //显示“隔”
  152.         x = 44;
  153.         LCD_write_char(x,y,9); //显示“秒”
  154.         x = 76;
  155.         LCD_write_ASCII(x,y,12);//显示“s”

  156.         ReadSet();              //读取设定定时时间并显示
  157.         LCD_write_val(61,4,2,time_wait);//显示剩余间隔时间
  158.         LED_read = 0;           //显示准备好信号灯

  159.         TMOD = 0x01;            //设置T0为模式1
  160. //        TH0 = 0xF8;             //为T0赋初值0xF8CD,定时2ms
  161. //        TL0 = 0xCD;
  162.     TH0 = 0xFC;             //为T0赋初值0xFC67,定时1ms
  163.     TL0 = 0x66;
  164. //        TH0 = 0xFC;
  165. //        TL0 = 0xC3;                    //为T0赋初值0xFA02,定时1ms
  166.         ET0 = 1;                //开T0中断
  167.         TR0 = 1;                //启动定时器0
  168.         EA = 1;                 //开总中断
  169.        
  170.         while(1)
  171.         {
  172.                 if (time_1s == 1)   //每秒处理
  173.                 {
  174.                     time_1s = 0;    //重置秒标志
  175.                        
  176.                         if (time_wait > 0)
  177.                         {
  178.                             time_wait--;
  179.                         if (time_wait == 0)
  180.                             {
  181.                                 LED_read = 0;//显示就绪信号
  182.                             }
  183.                                 LCD_write_val(61,4,2,time_wait);//显示剩余间隔时间
  184.                    }
  185.                         else
  186.                         {
  187.                             if (LED_work == 1)
  188.                                 {
  189.                                     LED_read = ~LED_read;//等待时每秒闪一次
  190.                                 }
  191.                     }
  192.                 }       
  193.                        
  194.                 if (time_20ms == 1)
  195.                 {
  196.                         time_20ms = 0;          //重置20毫秒标志
  197.                         if (time_wait == 0)
  198.                         {
  199.                             TimeHand();   //调用20毫秒处理程序
  200.                         }
  201.                 }
  202.         }
  203. }
复制代码
0.png
所有资料51hei提供下载:
点焊机程序.zip (717.83 KB, 下载次数: 250)

评分

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

查看全部评分

回复

使用道具 举报

ID:387410 发表于 2019-9-7 07:02 来自手机 | 显示全部楼层
楼主优秀,好文章,支持
回复

使用道具 举报

ID:601757 发表于 2019-9-11 16:41 来自手机 | 显示全部楼层
lls5201 发表于 2019-9-7 07:02
楼主优秀,好文章,支持

谢谢.有什么缺陷可以提出来我再做改进
回复

使用道具 举报

ID:617981 发表于 2019-10-11 09:50 | 显示全部楼层
7805电路的输入输出电容需要加上去,LDO进出都没有电容电路稳定性不行。还有P0端口我记得是需要加上拉电阻吧。
回复

使用道具 举报

ID:477512 发表于 2019-10-19 15:28 | 显示全部楼层
我按照你提供电路图焊了一块万用板子,发现显示屏不显示,是怎么回事?
回复

使用道具 举报

ID:477512 发表于 2019-10-20 07:26 | 显示全部楼层
我按楼上的提示给它接了5.1千欧的上拉电阻,结果有显示。我记得别的同型号单片机例子,没接上拉电阻也照样显示,这个单片机电路就不行!就是不知道接多大电阻合适?
回复

使用道具 举报

ID:477512 发表于 2019-10-23 15:12 | 显示全部楼层
看来大家不喜欢玩电子点焊机,没人跟帖,也没人发现该帖子的电路图有问题,我一直在搞点焊机,没有成功,我怀疑这个电路有问题!
回复

使用道具 举报

ID:628841 发表于 2019-10-23 15:43 | 显示全部楼层
终于有高手发表了,刚好用
回复

使用道具 举报

ID:693678 发表于 2020-2-15 21:54 | 显示全部楼层
怎样改变 20毫秒一个单位,变成5毫秒一个单位?
回复

使用道具 举报

ID:219115 发表于 2020-4-9 14:29 | 显示全部楼层
拿走用了,待实验成功以后在回来回复
回复

使用道具 举报

ID:532603 发表于 2020-4-15 18:17 | 显示全部楼层
不错,下载学习下哈
回复

使用道具 举报

ID:116662 发表于 2020-4-15 20:36 | 显示全部楼层
好帖子,多谢楼主分享。学习了
回复

使用道具 举报

ID:686387 发表于 2020-4-15 22:58 | 显示全部楼层
好贴学习了,资料非常详细。
回复

使用道具 举报

ID:591489 发表于 2020-4-17 21:25 | 显示全部楼层
我也打算自己diy一个点焊机,现在硬件完成了,开始着手程序的编制,希望能成功,要是成功了也来这分享。
回复

使用道具 举报

ID:479579 发表于 2020-5-11 17:41 | 显示全部楼层
楼主制作成功了吗?
回复

使用道具 举报

ID:729886 发表于 2020-5-11 22:53 | 显示全部楼层
点焊机早就做好了,就等个好控制,完美后下载上机试
回复

使用道具 举报

ID:243748 发表于 2020-5-11 23:40 来自手机 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:865614 发表于 2020-12-28 19:12 来自手机 | 显示全部楼层
1ylh 发表于 2020-4-17 21:25
我也打算自己diy一个点焊机,现在硬件完成了,开始着手程序的编制,希望能成功,要是成功了也来这分享。

成功了吗?
回复

使用道具 举报

ID:800086 发表于 2020-12-28 23:15 来自手机 | 显示全部楼层
刚好需要一个,先收藏了
回复

使用道具 举报

ID:854314 发表于 2021-1-4 09:15 | 显示全部楼层
PDF原理图和PCB图不一样,不利于咋小白学习呀,能弄个对应的或者说明最好。为了下载,专门来赚币。
回复

使用道具 举报

ID:854314 发表于 2021-1-4 09:18 | 显示全部楼层
非常感谢,器件还在准备中,就是PDF原理图和PCB的图相差这么大,设计的机理还没研究,小白不容易啊。
回复

使用道具 举报

ID:854314 发表于 2021-1-10 00:57 | 显示全部楼层
今晚上终于有时间来上台测试一下,还蛮好的,焊接时间调整正常,间隔时间切换正常。程序运行没啥问题。,下一步做板了再来。感谢楼主。

点焊机器件测试

点焊机器件测试

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:110323 发表于 2021-1-21 14:18 | 显示全部楼层
看着不错,试试,谢谢楼主
回复

使用道具 举报

ID:884089 发表于 2021-2-13 22:30 来自手机 | 显示全部楼层
这个拨码原理图和pcb不一样呀??
回复

使用道具 举报

ID:689425 发表于 2021-2-16 13:11 | 显示全部楼层
好物件,谢谢楼主
回复

使用道具 举报

ID:884089 发表于 2021-2-17 10:50 来自手机 | 显示全部楼层
JP1是输出JP2是电源么?
回复

使用道具 举报

ID:802380 发表于 2021-11-14 22:02 来自手机 | 显示全部楼层
亲测有用,不过作者用拨码开关调节时间,逻辑不容易搞懂,得多熟悉熟悉,电路及程序没问题,不过我用的微波炉变压器改的,最大160毫秒点0.15的镍片,好像大于200毫秒的时间没啥用,150的焊点都黑了。
回复

使用道具 举报

ID:802380 发表于 2021-11-14 22:03 来自手机 | 显示全部楼层
上帝的左手 发表于 2021-1-4 09:15
PDF原理图和PCB图不一样,不利于咋小白学习呀,能弄个对应的或者说明最好。为了下载,专门来赚币。

我亲测好用,只是作者用拨码开关调节时间,不容易适应
回复

使用道具 举报

ID:624685 发表于 2021-11-15 17:21 | 显示全部楼层
有成功的,谢谢。马上下载,制作
回复

使用道具 举报

ID:219185 发表于 2022-2-25 14:50 | 显示全部楼层
自己有一块加了密磨掉芯片型号的,现在坏了想修修无从下手,这篇很有参考价值,谢谢楼主。
回复

使用道具 举报

ID:93164 发表于 2022-4-9 12:14 来自手机 | 显示全部楼层
有直流微点焊机吗?谢谢楼主
回复

使用道具 举报

ID:701376 发表于 2022-8-7 12:18 | 显示全部楼层
改个编码器的多好
回复

使用道具 举报

ID:228452 发表于 2022-8-7 18:18 | 显示全部楼层
Q1 transistor must be NPN
回复

使用道具 举报

ID:228452 发表于 2022-8-7 18:25 | 显示全部楼层
It is better to use Triac , relay is slow for some applications
Then you can use time and phase control together
Also use switching power supply for CPU board
回复

使用道具 举报

ID:1077206 发表于 2023-5-13 11:04 | 显示全部楼层
好东西,非常感谢分享
回复

使用道具 举报

ID:9486 发表于 2023-6-11 08:08 | 显示全部楼层
王培旭 发表于 2019-9-11 16:41
谢谢.有什么缺陷可以提出来我再做改进

续流二极管D1接地端不应该用VCC
回复

使用道具 举报

ID:375055 发表于 2023-9-12 14:55 | 显示全部楼层
好帖子,多谢楼主分享。学习了
回复

使用道具 举报

ID:1058675 发表于 2023-9-18 15:57 | 显示全部楼层
感觉不错的项目,就是继电器能不能抗住这样的开关频率,
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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