- UID
- 373967
- 帖子
- 9008
- 主題
- 2609
- 精華
- 0
- 積分
- 1003
- 楓幣
- 0
- 威望
- 980
- 存款
- 35891
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 460 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-12-22
|
製作電池點焊機的零件清單:
PIC16F877A 微控制器
電源模組(5V 和 12V)
MOSFET(用於控制點焊電流)
16x2 字元 LCD 顯示屏
4x4 矩陣鍵盤
繼電器模組
1k歐姆電阻
母頭排針、公頭排針、接線板等
點焊機程式碼(C 語言):
#include <16f877a.h>
#include <lcd.h>
#include <stdlib.h>
#include <string.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#define KEYPAD_PORT PORTB
#define KEYPAD_C1 PIN_B0
#define KEYPAD_C2 PIN_B1
#define KEYPAD_C3 PIN_B2
#define KEYPAD_C4 PIN_B3
#define KEYPAD_R1 PIN_B4
#define KEYPAD_R2 PIN_B5
#define KEYPAD_R3 PIN_B6
#define KEYPAD_R4 PIN_B7
#define RELAY PIN_C0
#define MOSFET PIN_C1
int count = 0;
void main()
{
lcd_init();
output_low(RELAY);
output_low(MOSFET);
while(TRUE)
{
char key = read_keypad();
if(key != 0)
{
if(key == '*')
{
lcd_putc('\f');
count = 0;
output_low(RELAY);
}
else if(key == '#')
{
if(count > 0)
{
output_high(RELAY);
delay_ms(500);
output_high(MOSFET);
delay_ms(200);
output_low(MOSFET);
output_low(RELAY);
lcd_putc('\f');
printf(lcd_putc,"Complete %3u",count);
count = 0;
}
}
else
{
count++;
printf(lcd_putc,"%c",key);
}
delay_ms(200);
}
}
}
char read_keypad()
{
output_low(KEYPAD_R1);
output_high(KEYPAD_R2);
output_high(KEYPAD_R3);
output_high(KEYPAD_R4);
if(input(KEYPAD_C1)) { delay_ms(20); if(input(KEYPAD_C1)) return '1'; }
if(input(KEYPAD_C2)) { delay_ms(20); if(input(KEYPAD_C2)) return '2'; }
if(input(KEYPAD_C3)) { delay_ms(20); if(input(KEYPAD_C3)) return '3'; }
if(input(KEYPAD_C4)) { delay_ms(20); if(input(KEYPAD_C4)) return 'A'; }
output_high(KEYPAD_R1);
output_low(KEYPAD_R2);
output_high(KEYPAD_R3);
output_high(KEYPAD_R4);
if(input(KEYPAD_C1)) { delay_ms(20); if(input(KEYPAD_C1)) return '4'; }
if(input(KEYPAD_C2)) { delay_ms(20); if(input(KEYPAD_C2)) return '5'; }
if(input(KEYPAD_C3)) { delay_ms(20); if(input(KEYPAD_C3)) return '6'; }
if(input(KEYPAD_C4)) { delay_ms(20); if(input(KEYPAD_C4)) return 'B'; }
output_high(KEYPAD_R1);
output_high(KEYPAD_R2);
output_low(KEYPAD_R3);
output_high(KEYPAD_R4);
if(input(KEYPAD_C1)) { delay_ms(20); if(input(KEYPAD_C1)) return '7'; }
if(input(KEYPAD_C2)) { delay_ms(20); if(input(KEYPAD_C2)) return '8'; }
if(input(KEYPAD_C3)) { delay_ms(20); if(input(KEYPAD_C3)) return '9'; }
if(input(KEYPAD_C4)) { delay_ms(20); if(input(KEYPAD_C4)) return 'C'; }
output_high(KEYPAD_R1);
output_high(KEYPAD_R2);
output_high(KEYPAD_R3);
output_low(KEYPAD_R4);
if(input(KEYPAD_C1)) { delay_ms(20); if(input(KEYPAD_C1)) return '*'; }
if(input(KEYPAD_C2)) { delay_ms(20); if(input(KEYPAD_C2)) return '0'; }
if(input(KEYPAD_C3)) { delay_ms(20); if(input(KEYPAD_C3)) return '#'; }
if(input(KEYPAD_C4)) { delay_ms(20); if(input(KEYPAD_C4)) return 'D'; }
return 0;
}
這個程式碼包含了使用矩陣鍵盤輸入點焊次數,以及控制 MOSFET 和繼電器來控制點焊機的運作。
當使用者輸入次數後,按下 '#' 按鈕來開始點焊,點焊完成後顯示完成次數,然後重置次數和顯示器。
如果要停止運行,按下 '*' 按鈕即可。 |
|