冰楓論壇

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

[討論] EM78P157MPJ

[複製鏈接]

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-23 08:54:03 |只看該作者 |倒序瀏覽
EM78P157MPJ  製作萬用測試表 含勾錶功能 能測試電容   電阻  電壓 電流  

製作萬用測試表含勾錶功能的主要步驟如下:

選擇微控制器:根據需求選擇一款能夠滿足測試要求的微控制器。

在這個問題中,EM78P157MPJ 是一款可行的選擇,因為它具有足夠的輸入輸出腳位和適當的運算能力。

選擇顯示屏:選擇一個適合的顯示屏,以便在測試時能夠清楚地顯示測量結果。

LCD 顯示屏是一個不錯的選擇。

選擇電容和電阻:選擇不同的電容和電阻,以便在測試時可以測試不同的電容和電阻值。

選擇其他零件:選擇其他必要的零件,如按鈕、連接器、電源等。

設計電路:設計測試電路,使其能夠測量電容、電阻、電壓和電流。

設計過程中需要注意選擇合適的電阻、電容和元件,以確保電路能夠正確地工作。

寫程式:根據電路設計,撰寫控制微控制器的程式,以便能夠測量電容、電阻、電壓和電流。

在寫程式時,需要注意確保程式能夠正確地解析測試結果並顯示在顯示屏上。

裝配零件:根據設計和程式,裝配所有的零件,測試電路和程式是否正常工作。

下面是 EM78P157MPJ 的連結腳位和程式碼示例,僅供參考:

連結腳位:

VDD
PA0(接電容和電阻)
PA1(接電容和電阻)
PA2(接電容和電阻)
PA3(接電容和電阻)
PA4(接電容和電阻)
PA5(接電容和電阻)
PA6(接電容和電阻)
PA7(接電容和電阻)
GND
PB0(顯示屏控制)
PB1(顯示屏控制)



程式碼:

以下程式碼為示例,僅供參考,需要根據具體需求進行修改和優化:


#include <EM78P157MPJ.h>

// 定義端口
#define CAP_PORT PA
#define CAP_PIN_START 0

#define LCD_RS PB0
#define LCD_EN PB1

// 定義函數
void delay_us(unsigned int us) {
  while (us--) {
    _nop_();
  }
}

void delay_ms(unsigned int ms) {
  while (ms--) {
    delay_us(1000);
  }
}

void lcd_init(void) {
  LCD_RS = 0;
  LCD_EN = 0;
  delay_ms(50);
  LCD_RS = 0;
  LCD_EN = 1;
  delay_ms(5);
  LCD_EN = 0;
  delay_ms(5);
  LCD_RS = 0;
  LCD_EN = 1;
  delay_ms(5);
  LCD_EN = 0;
  delay_ms(5);
  LCD_RS = 0;
  LCD_EN = 1;
  delay_ms(5);
  LCD_EN = 0;
  delay_ms(5);
  LCD_RS = 0;
  LCD_EN = 1;
  delay_ms(5);
  LCD_EN = 0;
  delay_ms(5);
  LCD_RS = 0;
  LCD_EN = 1;
  delay_ms(5);
  LCD_EN = 0;
  delay_ms(5);
  LCD_RS = 0;
  LCD_EN = 1;
  delay_ms(5);
  LCD_EN = 0;
  delay_ms(5);
}

void lcd_send_command(unsigned char command) {
  LCD_RS = 0;
  P1 = command;
  LCD_EN = 1;
  delay_us(40);
  LCD_EN = 0;
}

void lcd_send_data(unsigned char data) {
  LCD_RS = 1;
  P1 = data;
  LCD_EN = 1;
  delay_us(40);
  LCD_EN = 0;
}

void lcd_clear(void) {
  lcd_send_command(0x01);
  delay_ms(2);
}

void lcd_write_string(unsigned char *str) {
  while (*str) {
    lcd_send_data(*str++);
  }
}

void main(void) {
  unsigned int capacitance_value;

  lcd_init();
  lcd_clear();

  while (1) {
    // 測試電容
    capacitance_value = 0;
    CAP_PORT = 0xFF;
    CAP_PORT &= ~(1 << CAP_PIN_START);
    delay_us(2);
    CAP_PORT |= 1 << CAP_PIN_START;
    while (CAP_PORT & (1 << CAP_PIN_START)) {
      capacitance_value++;
      delay_us(1);
    }

    // 顯示電容值
    lcd_clear();
    lcd_write_string("Capacitance Value:");
    lcd_send_command(0xC0);
    lcd_write_string("      ");
    lcd_send_command(0xC0);
    lcd_write_string(capacitance_value);

    // 測試電阻
    // ...

    // 測試電壓
    // ...

    // 測試電流
    // ...
  }
}
收藏收藏0 推0 噓0


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

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

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

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

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

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

GMT+8, 2024-12-22 13:34

回頂部