冰楓論壇

用戶名  找回密碼
 立即註冊
帖子
查看: 744|回覆: 0
打印 上一主題 下一主題

[討論] PIC16F877A

[複製鏈接]

2609

主題

0

好友

1022

積分

金牌會員

Rank: 6Rank: 6

UID
373967
帖子
9405
主題
2609
精華
0
積分
1022
楓幣
38
威望
998
存款
38547
贊助金額
0
推廣
0
GP
1205
閱讀權限
70
在線時間
476 小時
註冊時間
2023-1-12
最後登入
2025-3-9

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

跳轉到指定樓層
1
發表於 2023-4-25 07:01:56 |只看該作者 |倒序瀏覽
[分享] Stuart Fairchild接受中央社採訪影片
製作電池點焊機的零件清單:

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鑰匙
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
:):(:D:'(
:•̀ὤ•́:o:P:$
;P:L:Q:lol
:loveliness::funk::curse::dizzy:
高級模式
B Color Image Link Quote Code Smilies |

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策詐騙防範及資料調閱

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

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

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

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

GMT+8, 2025-3-9 11:11

回頂部