- UID
- 373967
- 帖子
- 9008
- 主題
- 2609
- 精華
- 0
- 積分
- 1003
- 楓幣
- 0
- 威望
- 980
- 存款
- 35891
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 460 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-12-22
|
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);
// 測試電阻
// ...
// 測試電壓
// ...
// 測試電流
// ...
}
} |
|