|
最近做了一個(gè)用單片機(jī)的點(diǎn)焊機(jī)控制裝置,使用的是89C51單片機(jī)、LCD5110顯示屏和微型繼電器,通過(guò)檢測(cè)按鈕信號(hào),精確控制點(diǎn)焊機(jī)變壓器的導(dǎo)通時(shí)間和兩次焊接的間隔時(shí)間。變壓器導(dǎo)通時(shí)間從40毫秒到2600毫秒之間,按20毫秒為一檔連續(xù)可調(diào),兩次焊接的間隔時(shí)間則為5秒和10秒兩檔,這兩個(gè)參數(shù)均通過(guò)7+1位撥碼開(kāi)關(guān)由用戶(hù)根據(jù)需要?jiǎng)討B(tài)設(shè)置,設(shè)置結(jié)果即時(shí)顯示在屏幕上。參見(jiàn)下圖:
131753t97glg29z7yljzji.jpg (44 KB, 下載次數(shù): 108)
下載附件
2018-12-19 16:27 上傳
003電子點(diǎn)焊機(jī).jpg(44 KB, 下載次數(shù): 0)
下載附件
前天 13:17 上傳
屏幕中間顯示的是設(shè)置的點(diǎn)焊時(shí)間,以毫秒為單位,通過(guò)左起的7位撥碼開(kāi)關(guān)設(shè)置。下部左邊顯示的的是設(shè)置的間隔時(shí)間,為5秒和10秒兩檔, 通過(guò)最右邊的撥碼開(kāi)關(guān)設(shè)置。屏幕右下角顯示的是間隔時(shí)間倒計(jì)時(shí),只有倒計(jì)時(shí)為零時(shí),單片機(jī)才接收點(diǎn)焊按鈕的信號(hào)。下圖是點(diǎn)焊機(jī)的正面:
131605whz43xju4x64rtxd.jpg (140.45 KB, 下載次數(shù): 114)
下載附件
2018-12-19 16:27 上傳
115控制板制作_通電測(cè)試.jpg(140.45 KB, 下載次數(shù): 0)
下載附件
前天 13:16 上傳
機(jī)箱面板上有3個(gè)LED指示燈,最上面紅色的是電源指示燈,面板上開(kāi)關(guān)打開(kāi)接通控制電源后常亮。中間橙色的是工作指示燈,點(diǎn)焊機(jī)變壓器接通后點(diǎn)亮,關(guān)閉后即滅。下面綠色的是準(zhǔn)備好信號(hào)燈,當(dāng)?shù)褂?jì)時(shí)為零時(shí)此燈閃爍,只有綠色信號(hào)燈閃爍時(shí)點(diǎn)焊按鈕才有效,這個(gè)信號(hào)燈在焊把上也同時(shí)存在。
下面是控制線(xiàn)路的原理圖:
131601obifr7kgxdsi3btf.jpg (138.18 KB, 下載次數(shù): 142)
下載附件
2018-12-19 16:27 上傳
整個(gè)控制線(xiàn)路用了兩塊萬(wàn)用板搭焊,一塊安裝了3個(gè)LED信號(hào)燈、LCD5110顯示屏和8位撥碼開(kāi)關(guān),另一塊則是單片機(jī)及外圍電路、微型繼電器以及7805穩(wěn)壓塊等。
單片機(jī)源程序如下:
- /*******************************************************************************
- * *
- * 點(diǎn)焊機(jī)控制器 *
- --------------------------------------------------------------------------------
- * 結(jié)構(gòu)說(shuō)明: 51單片機(jī)計(jì)時(shí)控制 *
- * 在檢測(cè)到點(diǎn)焊手柄發(fā)出的工作信號(hào)時(shí), *
- * 立即接通點(diǎn)焊機(jī)的電源,點(diǎn)焊機(jī)開(kāi)始工作,設(shè)定的時(shí)間結(jié)束后切斷電源,*
- * 在設(shè)定的間隔時(shí)間內(nèi),不接收點(diǎn)焊手柄發(fā)出的工作信號(hào)。 *
- * 版本說(shuō)明: 胡家峻@2018年8月 *
- *******************************************************************************/
- /*
- * 單片機(jī)P0^0~P0^4口分配給LCD5110使用:RET、CE、D/C、DIN、CLK(在LCD_5110.h中定義
- * P0^5 設(shè)備等待(可以工作)信號(hào)燈
- * P0^6 設(shè)備工作間隙(不接收點(diǎn)焊信號(hào))信號(hào)燈
- *
- * P1^0~P1^6 開(kāi)關(guān)設(shè)置點(diǎn)焊時(shí)間(20毫秒為1單位,0~127單位)
- * P1^7 工作間隙:0=5秒,1=10秒
- *******************************************************************************/
- #include<reg51.h>
- //#include<intrins.h>
- #include"LCD_5110.h" //包含LCD顯示驅(qū)動(dòng)文件
- #define u8 unsigned char //單字節(jié)
- #define u16 unsigned int //雙字節(jié)
- #define u64 unsigned long //四字節(jié)
- #define SZP1 P1 //P1口為初始設(shè)置的數(shù)據(jù),低七位為定時(shí)數(shù)值(0-127)*20ms,
- //第八位為間隙時(shí)間,0=5秒,1=10秒
- sbit LED_work = P0^5; //設(shè)備工作信號(hào)(低電平點(diǎn)焊機(jī)接通)
- sbit LED_read = P0^6; //設(shè)備就緒信號(hào)(低電平可以工作)
- sbit work = P0^7; //點(diǎn)焊按鈕信號(hào)(低電平按下)
-
- //--定義全局變量--//
- u8 sdsj = 0; //設(shè)定的點(diǎn)焊單位
- u64 shsj = 0; //設(shè)定的點(diǎn)焊時(shí)間(雙字節(jié),以毫秒為單位)
- u8 wait = 5; //設(shè)置的間隔時(shí)間(5秒或10秒,根據(jù)P1.7確定)
-
- u8 time_work = 0; //焊接時(shí)間計(jì)時(shí)(20毫秒/單位)
- u8 time_wait = 0; //等待時(shí)間計(jì)時(shí)(單位秒)
- bit time_1s = 0; //秒信號(hào)
- bit time_20ms = 0; //20毫秒信號(hào)
- bit flag = 0; //定時(shí)工作標(biāo)志(0=待機(jī)或間隔,1=正在工作
- /*******************************************************************************
- * 函 數(shù) 名 : ReadSet
- * 函數(shù)功能 : 讀設(shè)置并顯示
- * 輸 入 : 無(wú)
- * 輸 出 : 無(wú)
- *******************************************************************************/
- void ReadSet(void)
- {
- sdsj = SZP1; //從P1口讀入一個(gè)字節(jié)的數(shù)據(jù)
- if (sdsj>127) wait = 10; //最高位1,間隔時(shí)間=10秒
- else wait = 5;
- LCD_write_val(27,4,2,wait);//顯示設(shè)定的間隔時(shí)間
-
- sdsj = (sdsj & 0x7f) + 3; //取低7位定時(shí)值再加3(60毫秒)
- shsj = sdsj * 20; //20毫秒基本單位
- LCD_write_val(27,2,4,shsj);//顯示設(shè)定的點(diǎn)焊時(shí)間
- }
- /*******************************************************************************
- * 函 數(shù) 名 : timehand
- * 函數(shù)功能 : 20毫秒處理函數(shù),即每隔20毫秒處理一次
- * 輸 入 : 無(wú)
- * 輸 出 : 無(wú)
- *******************************************************************************/
- void TimeHand(void)
- {
- if (flag == 0) //待機(jī)狀態(tài)
- {
- if (work == 0) //收到點(diǎn)焊按鈕信號(hào)
- {
- flag = 1; //設(shè)置工作標(biāo)志
- time_work = sdsj;//取設(shè)定時(shí)間
- LED_work = 0; //開(kāi)通工作電源
- LED_read = 1; //關(guān)閉等待信號(hào)燈
- }
- else //無(wú)點(diǎn)焊按鈕信號(hào)
- {
- ReadSet(); //檢查更新設(shè)置
- }
- }
- else //工作狀態(tài)
- {
- time_work--;
- if (time_work == 0)//定時(shí)時(shí)間到
- {
- LED_work = 1; //關(guān)閉點(diǎn)焊機(jī)電源
- LED_read = 1; //取消準(zhǔn)備好信號(hào)燈
- flag = 0; //撤銷(xiāo)工作標(biāo)志
- time_wait = wait;//恢復(fù)間隔時(shí)間
- LCD_write_val(61,4,2,time_wait);//顯示剩余間隔時(shí)間
- }
- }
- }
- /*******************************************************************************
- * 函 數(shù) 名 :
- * 函數(shù)功能 : T0中斷服務(wù)函數(shù)
- * 輸 入 : 無(wú)
- * 輸 出 : 無(wú)
- *******************************************************************************/
- void InterruptTimer0() interrupt 1
- {
- static u8 i = 0; //毫秒
- static u8 j = 0; //20毫秒
- TH0 = 0xFC; //重新加載初值,定時(shí)1ms
- TL0 = 0x66;
- i++;
- if (i > 19) //20毫秒計(jì)時(shí)到
- {
- i = 0;
- time_20ms = 1; //置20毫秒標(biāo)志
- j++;
- if (j > 49) //1秒
- {
- j = 0;
- time_1s = 1; //置1秒標(biāo)志
- }
- }
- }
- /*******************************************************************************
- * 函 數(shù) 名 : main
- * 函數(shù)功能 : 主函數(shù)
- * 輸 入 : 無(wú)
- * 輸 出 : 無(wú)
- *******************************************************************************/
- void main(void)
- {
- //設(shè)置初始屏幕顯示
- u8 i, x ,y;
-
- LED_work = 1; //測(cè)試
- LED_read = 1;
- LCD_init(); //初始化5110屏幕
- x = 8; //顯示的起始位置
- y = 0;
- for (i = 0; i < 5; i++)//顯示“電子點(diǎn)焊機(jī)”
- {
- LCD_write_char(x,y,i);//
- x = x + 14; //下一字的顯示位置
- }
- x = 0;
- y = 2;
- LCD_write_char(x,y,3); //顯示“焊”
- x = 14;
- LCD_write_char(x,y,5); //顯示“接”
- x = 59;
- LCD_write_char(x,y,8); //顯示“毫”
- x = 72;
- LCD_write_char(x,y,9); //顯示“秒”
- x = 0;
- y = 4;
- LCD_write_char(x,y,6); //顯示“間”
- x = 14;
- LCD_write_char(x,y,7); //顯示“隔”
- x = 44;
- LCD_write_char(x,y,9); //顯示“秒”
- x = 76;
- LCD_write_ASCII(x,y,12);//顯示“s”
- ReadSet(); //讀取設(shè)定定時(shí)時(shí)間并顯示
- LCD_write_val(61,4,2,time_wait);//顯示剩余間隔時(shí)間
- LED_read = 0; //顯示準(zhǔn)備好信號(hào)燈
- TMOD = 0x01; //設(shè)置T0為模式1
- // TH0 = 0xF8; //為T(mén)0賦初值0xF8CD,定時(shí)2ms
- // TL0 = 0xCD;
- TH0 = 0xFC; //為T(mén)0賦初值0xFC67,定時(shí)1ms
- TL0 = 0x66;
- // TH0 = 0xFC;
- // TL0 = 0xC3; //為T(mén)0賦初值0xFA02,定時(shí)1ms
- ET0 = 1; //開(kāi)T0中斷
- TR0 = 1; //啟動(dòng)定時(shí)器0
- EA = 1; //開(kāi)總中斷
-
- while(1)
- {
- if (time_1s == 1) //每秒處理
- {
- time_1s = 0; //重置秒標(biāo)志
-
- if (time_wait > 0)
- {
- time_wait--;
- if (time_wait == 0)
- {
- LED_read = 0;//顯示就緒信號(hào)
- }
- LCD_write_val(61,4,2,time_wait);//顯示剩余間隔時(shí)間
- }
- else
- {
- if (LED_work == 1)
- {
- LED_read = ~LED_read;//等待時(shí)每秒閃一次
- }
- }
- }
-
- if (time_20ms == 1)
- {
- time_20ms = 0; //重置20毫秒標(biāo)志
- if (time_wait == 0)
- {
- TimeHand(); //調(diào)用20毫秒處理程序
- }
- }
- }
- }
復(fù)制代碼
0.png (47.49 KB, 下載次數(shù): 108)
下載附件
2018-12-19 16:27 上傳
所有資料51hei提供下載:
點(diǎn)焊機(jī).rar
(708.39 KB, 下載次數(shù): 252)
2018-12-19 12:52 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
Keil項(xiàng)目文件包
|
評(píng)分
-
查看全部評(píng)分
|