洪嵐峰 發表於 2023-4-23 08:54:03

EM78P157MPJ

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);

    // 測試電阻
    // ...

    // 測試電壓
    // ...

    // 測試電流
    // ...
  }
}
頁: [1]
查看完整版本: EM78P157MPJ