冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 715|回覆: 0
打印 上一主題 下一主題

[討論] PIC16F877A

[複製鏈接]

2609

主題

0

好友

1003

積分

金牌會員

Rank: 6Rank: 6

UID
373967
帖子
9008
主題
2609
精華
0
積分
1003
楓幣
0
威望
980
存款
35891
贊助金額
0
推廣
0
GP
1205
閱讀權限
70
在線時間
460 小時
註冊時間
2023-1-12
最後登入
2024-12-22

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-25 07:01:56 |只看該作者 |倒序瀏覽
製作電池點焊機的零件清單:

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 和繼電器來控制點焊機的運作。

當使用者輸入次數後,按下 '#' 按鈕來開始點焊,點焊完成後顯示完成次數,然後重置次數和顯示器。

如果要停止運行,按下 '*' 按鈕即可。
[發帖際遇]: 洪嵐峰 樂於助人,獎勵 1 楓幣 幸運榜 / 衰神榜
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1鑰匙
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-12-22 22:17

回頂部