冰楓論壇

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

[討論] EM78P157SYP8-G

[複製鏈接]

2609

主題

0

好友

945

積分

高級會員

Rank: 4

UID
373967
帖子
7420
主題
2609
精華
0
積分
945
楓幣
1080
威望
925
存款
26000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
407 小時
註冊時間
2023-1-12
最後登入
2024-5-1

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

跳轉到指定樓層
1
發表於 2023-4-22 23:09:55 |只看該作者 |倒序瀏覽
EM78P157SYP8-G是一款8位元微控制器

需要以下零件才能製作多通道示波器:

EM78P157SYP8-G微控制器
電容:100nF、10uF
電阻:10KΩ、220Ω
訊號放大器:AD623AN
雙極性電容:1uF、0.1uF
低通濾波器:LM358
微動開關:12x12mm
示波器探針
以下是EM78P157SYP8-G微控制器的腳位連結:

P1.0 - 顯示器RS (寄存器選擇)
P1.1 - 顯示器EN (使能信號)
P1.2 - 顯示器D4
P1.3 - 顯示器D5
P1.4 - 顯示器D6
P1.5 - 顯示器D7
P1.6 - 訊號放大器輸入端
P1.7 - 示波器探針輸入端
以下是示波器的程式碼示例:

#include <REG_EM78P157S.h>

#define RS P10
#define EN P11
#define D4 P12
#define D5 P13
#define D6 P14
#define D7 P15
#define AMP_INPUT P16
#define PROBE_INPUT P17

void delay_us(unsigned int n)
{
    unsigned int i;
    while(n--)
    {
        i = 2;
        while(--i);
    }
}

void delay_ms(unsigned int n)
{
    unsigned int i;
    while(n--)
    {
        i = 5971;
        while(--i);
    }
}

void lcd_write_cmd(unsigned char cmd)
{
    RS = 0;
    EN = 1;
    D7 = cmd & 0x80;
    D6 = cmd & 0x40;
    D5 = cmd & 0x20;
    D4 = cmd & 0x10;
    EN = 0;
    delay_us(50);
    EN = 1;
    D7 = cmd & 0x08;
    D6 = cmd & 0x04;
    D5 = cmd & 0x02;
    D4 = cmd & 0x01;
    EN = 0;
    delay_us(50);
}

void lcd_write_data(unsigned char data)
{
    RS = 1;
    EN = 1;
    D7 = data & 0x80;
    D6 = data & 0x40;
    D5 = data & 0x20;
    D4 = data & 0x10;
    EN = 0;
    delay_us(50);
    EN = 1;
    D7 = data & 0x08;
    D6 = data & 0x04;
    D5 = data & 0x02;
    D4 = data & 0x01;
    EN = 0;
    delay_us(50);
}

void lcd_init(void)
{
   
delay_ms(20);
lcd_write_cmd(0x33);
lcd_write_cmd(0x32);
lcd_write_cmd(0x28);
lcd_write_cmd(0x0C);
lcd_write_cmd(0x06);
lcd_write_cmd(0x01);
delay_ms(2);
}

void adc_init(void)
{
// 初始化ADC
ADCON1 = 0x80; // 將ADC設定為單通道、左對齊、Fosc/8
ADCON0 = 0x81; // 啟用ADC、選擇AN1通道
}

unsigned int adc_read(unsigned char channel)
{
unsigned int adc_value;
ADCON0 &= 0xC5; // 清除通道選擇位元
ADCON0 |= (channel << 3); // 選擇通道
ADCON0 |= 0x04; // 啟動ADC轉換
while(ADCON0 & 0x04); // 等待ADC轉換完成
adc_value = ADRESH; // 讀取高位元
adc_value <<= 8;
adc_value |= ADRESL; // 讀取低位元
return adc_value;
}

void main()
{
unsigned int adc_value;
unsigned char str[16];

lcd_init(); // 初始化顯示器
adc_init(); // 初始化ADC

while(1)
{
    adc_value = adc_read(1); // 讀取ADC值
    sprintf(str, "ADC = %04d", adc_value); // 轉換為字串
    lcd_write_cmd(0x80); // 設定顯示器為第一行
    lcd_write_data('C'); // 輸出字元'C'
    lcd_write_data('h'); // 輸出字元'h'
    lcd_write_data('1'); // 輸出字元'1'
    lcd_write_data(':'); // 輸出字元':'
    lcd_write_cmd(0x85); // 設定顯示器為第一行第六個位置
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(' '); // 輸出空格
    lcd_write_data(str[0]); // 輸出字串

lcd_write_data(str[1]);
lcd_write_data(str[2]);
lcd_write_data(str[3]);
lcd_write_data(str[4]);
lcd_write_data(str[5]);
lcd_write_data(str[6]);
lcd_write_data(str[7]);
lcd_write_data(str[8]);
lcd_write_data(str[9]);
lcd_write_data(str[10]);
lcd_write_data(str[11]);
lcd_write_data(str[12]);
lcd_write_data(str[13]);
lcd_write_data(str[14]);
lcd_write_data(str[15]);


    delay_ms(200); // 稍微延遲一下
}
}

在這個程式碼中,我們首先將LCD初始化,然後設置ADC,然後進入無限迴圈。

在無限迴圈中,我們讀取ADC值,將其轉換為字串,然後輸出到LCD顯示器上。

程式會每200毫秒重複執行這個操作,因此LCD顯示器會以一定的頻率更新。
收藏收藏0 推0 噓0


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

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

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

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

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

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

GMT+8, 2024-5-1 09:09

回頂部