冰楓論壇

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

[討論] EM78P157SP

[複製鏈接]

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 09:04:45 |只看該作者 |倒序瀏覽
製作萬用測試表需要以下零件:

EM78P157SP 微控制器
示波螢幕模組
4位數7段顯示器模組
電容測試模組
電阻測試模組
電壓測試模組
電流測試模組
按鈕開關模組
杜邦線、電阻、電容等基本元件
EM78P157SP 微控制器腳位連結如下:

P0.0 - 電容測試模組輸入
P0.1 - 電阻測試模組輸入
P0.2 - 電壓測試模組輸入
P0.3 - 電流測試模組輸入
P0.4 - 示波螢幕SCL
P0.5 - 示波螢幕SDA
P1.0-P1.3 - 4位數7段顯示器模組控制腳
P2.0-P2.3 - 按鈕開關模組輸入

程式碼如下:


#include <reg_em78p157sp.h>

#define SCL P04   // 示波螢幕SCL
#define SDA P05   // 示波螢幕SDA
#define DISP_CTRL P1   // 4位數7段顯示器控制腳
#define BUTTON P2    // 按鈕開關模組輸入

void delay(int n) {
    int i, j;
    for (i = 0; i < n; i++)
        for (j = 0; j < 100; j++);
}

void IIC_Start() {
    SDA = 1;
    SCL = 1;
    delay(1);
    SDA = 0;
    delay(1);
    SCL = 0;
}

void IIC_Stop() {
    SDA = 0;
    SCL = 1;
    delay(1);
    SDA = 1;
}

void IIC_WriteByte(unsigned char data) {
    unsigned char i;
    for (i = 0; i < 8; i++) {
        SDA = (data & 0x80) >> 7;
        data <<= 1;
        SCL = 1;
        delay(1);
        SCL = 0;
    }
    SDA = 1;
    SCL = 1;
    delay(1);
    SCL = 0;
}

void IIC_WriteCommand(unsigned char command) {
    IIC_Start();
    IIC_WriteByte(0x78);
    IIC_WriteByte(0x00);
    IIC_WriteByte(command);
    IIC_Stop();
}

void IIC_WriteData(unsigned char data) {
    IIC_Start();
    IIC_WriteByte(0x78);
    IIC_WriteByte(0x40);
    IIC_WriteByte(dataIIC_Stop();
}

void Init_LCD() {
IIC_WriteCommand(0xAE); // turn off display
IIC_WriteCommand(0xD5); // set display clock divide ratio/oscillator frequency
IIC_WriteCommand(0x80);
IIC_WriteCommand(0xA8); // set multiplex ratio
IIC_WriteCommand(0x3F);
IIC_WriteCommand(0xD3); // set display offset
IIC_WriteCommand(0x00);
IIC_WriteCommand(0x40); // set display start line
IIC_WriteCommand(0x8D); // set charge pump
IIC_WriteCommand(0x14);
IIC_WriteCommand(0x20); // set memory addressing mode
IIC_WriteCommand(0x00);
IIC_WriteCommand(0xA1); // set segment remap
IIC_WriteCommand(0xC8); // set COM output scan direction
IIC_WriteCommand(0xDA); // set COM pins hardware configuration
IIC_WriteCommand(0x12);
IIC_WriteCommand(0x81); // set contrast control
IIC_WriteCommand(0xCF);
IIC_WriteCommand(0xD9); // set pre-charge period
IIC_WriteCommand(0xF1);
IIC_WriteCommand(0xDB); // set VCOMH deselect level
IIC_WriteCommand(0x40);
IIC_WriteCommand(0xA4); // set entire display on/off
IIC_WriteCommand(0xA6); // set normal/inverse display
IIC_WriteCommand(0xAF); // turn on display
}

void Disp_Digit(unsigned char digit) {
unsigned char seg_data = 0;
switch (digit) {
case 0: seg_data = 0xC0; break;
case 1: seg_data = 0xF9; break;
case 2: seg_data = 0xA4; break;
case 3: seg_data = 0xB0; break;
case 4: seg_data = 0x99; break;
case 5: seg_data = 0x92; break;
case 6: seg_data = 0x82; break;
case 7: seg_data = 0xF8; break;
case 8: seg_data = 0x80; break;
case 9: seg_data = 0x90; break;
default: break;
}
IIC_WriteData(seg_data);
}

void Disp_Num(unsigned int num) {
unsigned char i, digit;
for (i = 0; i < 4; i++) {
digit = num % 10;
num /= 10;
Disp_Digit(digit);
DISP_CTRL = ~(1 << i);
delay(10);
}
}

int Measure_Capacitance() {
// 電容測試程式碼
}

int Measure_Resistor() {
// 電阻測試程式碼
}

int Measure_Voltage() {
// 電壓測試程式碼
}

int Measure_Current() {
// 電流測試程式碼
}

void main() {
unsigned char btn_state = 0;
unsigned int value;
Init_LCD();
while (1) {
value = 0;
if (BUTTON & 0x01) { // 電容測試

        value = Measure_Capacitance();
    }
    else if (BUTTON & 0x02) { // 電阻測試
        value = Measure_Resistor();
    }
    else if (BUTTON & 0x04) { // 電壓測試
        value = Measure_Voltage();
    }
    else if (BUTTON & 0x08) { // 電流測試
        value = Measure_Current();
    }
    Disp_Num(value);
    delay(500);
}
}
[發帖際遇]: 洪嵐峰 為了避免被「就讀腐大的咬蚊子」嗆「多讀點書」,因此購買大量書籍,花費 1 楓幣 幸運榜 / 衰神榜
收藏收藏0 推0 噓0


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

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

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

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

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

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

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

回頂部