欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

51單片機示波器制作(12864顯示帶字庫)

查看數: 26538 | 評論數: 32 | 收藏 13
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2017-6-29 18:11

正文摘要:

  首先說明:我才接觸51單片機3個星期(6月8號才高考完),對C語言還很陌生。我就是一個萌新,還希望大佬們多多指導。   12864(帶字庫st7920驅動)為顯示器,XPT2046為AD轉換芯片。(不要問我 ...

回復

ID:880853 發表于 2021-1-27 11:30
厲害了,一直都打算玩單片機,都不敢動手,看了你們的帖子有點躍躍欲試了
ID:689120 發表于 2021-1-23 09:59
謝謝樓主,有電路圖就更好了。
ID:876818 發表于 2021-1-22 08:56
好資料,51黑有你更精彩!!!
ID:102800 發表于 2021-1-21 09:39
謝謝分享最近正在搞這個東東
ID:866313 發表于 2021-1-15 20:27
山椒雞爪 發表于 2017-7-16 21:08
**** 作者被禁止或刪除 內容自動屏蔽 ****

XPT2046的命令,0xE4選擇的是AUX輸入模擬信號
ID:253767 發表于 2020-5-26 07:38
謝謝分享!!!
ID:696556 發表于 2020-3-25 23:51
接線圖分享一下唄
ID:288930 發表于 2020-3-19 15:01
很好,謝謝分享!
ID:702057 發表于 2020-3-17 18:22
跪拜,大神啊!
ID:118132 發表于 2020-3-17 17:14
謝謝分享,領教了
ID:544490 發表于 2019-5-25 09:36
用你這個程序有的點偏離比較大是什么原因
ID:481742 發表于 2019-5-3 11:31
試試能不能用
ID:481742 發表于 2019-5-3 11:30
看看
ID:511507 發表于 2019-4-14 20:04
這個read_data函數是干嘛用的
ID:229939 發表于 2018-10-20 10:46
學習中,謝謝分享
ID:399179 發表于 2018-10-12 19:29
這個能不能用?
ID:384206 發表于 2018-10-12 15:14
你好  我在用普中科技板子上的xpt2046寫示波器的程序   但是 我是的外部輸入端(12腳)  在沒有輸入的時候 數碼管也會顯示900=1500 的示數 ,  并且在我接上正弦信號后沒有任何反應, 12腳接地也沒反應 這是為什么 ...  求解
ID:8130 發表于 2018-6-8 21:15
19960601 發表于 2017-7-27 14:49
XPT2046是AD轉換芯片?你確定?不是觸摸屏控制芯片?樓主你逗我呢

別逗,XPT2046是一種典型的逐次逼近型模數轉換器(SARADC),自己百度
ID:319015 發表于 2018-4-29 17:11
積分不夠下,能透漏下XPT2046.c和 XPT2046.h的內容嘛?謝
ID:302712 發表于 2018-4-19 10:00
學習中,謝謝分享
ID:263148 發表于 2017-12-26 15:56
謝謝樓主的分享
ID:253767 發表于 2017-12-21 15:20
這是個很實用的家伙
ID:220927 發表于 2017-12-6 14:08
負半周期電壓不見了是樓主對電位差沒有理解,如果理解了這樣就能采集到負半周期的波形了,頻率這種定西還要啟動定時器,真麻煩
ID:48413 發表于 2017-8-7 19:28
謝謝樓主的分享
ID:98792 發表于 2017-7-27 14:49
XPT2046是AD轉換芯片?你確定?不是觸摸屏控制芯片?樓主你逗我呢
ID:220115 發表于 2017-7-16 21:08
15576118519 發表于 2017-7-4 11:17
這幾天我又對程序進行了修改——將AD檢測過程與屏幕刷新過程分離,大大提高了檢測速度。(此外我將程序修改 ...

a=Read_AD_Data(0xE4);這句代碼怎么來的?
ID:217359 發表于 2017-7-5 14:45
6666
厲害了
ID:209954 發表于 2017-7-4 11:17
這幾天我又對程序進行了修改——將AD檢測過程與屏幕刷新過程分離,大大提高了檢測速度。(此外我將程序修改為5秒自動刷新,以方便觀察。)
修改后的main.c如下。
#include <reg52.h>
#include"XPT2046.h"
#define uint unsigned int
#define uchar unsigned char
uchar xdata a[128];

sbit RS=P2^6; //這個是LCD的數據命令選擇端
sbit RW=P2^5; //這個是LCD的寫入或是讀出選擇端
sbit RST=P1^0; //這個是LCD的復位端口
sbit LCDE=P2^7; // 這個是LCD的使能端
sbit PSB=P3^2;

void delay(uchar i)
{
        while(i--);       
}

void delayms(uint c)   //誤差 0us
{
    uchar a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
           
}


void lcd_busy()

{

    RS=0;

    RW=1;

    P0=0XFF;

    LCDE=1;

    delay(14);

    while((P0&0x80)==0x80);
          LCDE=0;

}

void write_com(uchar com)

{

    lcd_busy();RS=0;

    RW=0;

    LCDE=0;

    P0=com;

    delay(9);

    LCDE=1;

    delay(9);

    LCDE=0;

}

void write_num(uchar num)

{

    lcd_busy();

    RS=1;

    RW=0;

    LCDE=0;

    P0=num;

    delay(7);

    LCDE=1;

    delay(9);

    LCDE=0;

}

uchar read_data()

{

    uchar read;

    lcd_busy();

    RS=1;

    RW=1;

    LCDE=0;

    delay(7);

    LCDE=1;

    delay(9);

    read=P0;

    LCDE=0;

    delay(11);;



    return read;

}

void clear_lcd()

{   

    uchar i,j;

    write_com(0x34);

    for(i=0;i<32;i++)             //因為LCD有縱坐標32格所以寫三十二次

    {

        write_com(0x80+i);         //先寫入縱坐標Y的值

        write_com(0x80);         //再寫入橫坐標X的值

        for(j=0;j<32;j++)         //橫坐標有16位,每位寫入兩個字節的的數據,也就寫入32次

        {                         //因為當寫入兩個字節之后橫坐標會自動加1,所以就不用再次寫入地址了。

            write_num(0x00);   

        }

    }

    write_com(0x36);

    write_com(0x30);

}

void put_point(uchar x,uchar y)

{

    uint bt=0,read=0;

    uchar x_adr,y_adr,h_bit,l_bit;

    y_adr=0x80+y%32;            //計算Y軸的地址,應為縱坐標有64個,所有對32求余,當Y大于31時,Y的坐標是下半屏的。

    if(y>31) //計算X軸的地址當Y大于31時X的地址在下半屏,從0X88開始,小于31時X的地址是在上半屏,從0X80開始

        x_adr=0x88+x/16;        

    else

        x_adr=0x80+x/16;

    bt=0x8000>>(x%16); //求這個點到底是在哪個點

    write_com(0x34);

    write_com(0x34);

    write_com(y_adr);     //讀取數據的時候要先寫入所取數據的地址

    write_com(x_adr);

    read_data();         //讀取的第一個字節不要,

    read=read_data();     //從第二個字節開始接收。

    read<<=8;

    read|=read_data();

    bt=bt|read;

    h_bit=bt>>8;

    l_bit=bt;

    write_com(y_adr);     //寫入點的時候,重新寫入地址,因為地址已經改變。

    write_com(x_adr);

    write_num(h_bit);

    write_num(l_bit);

    write_com(0x36); //開顯示

    write_com(0x30);     //轉回基本指令集        

}

/*

液晶初始化

*/

void lcd_init()

{

    PSB=1;

    RST=1;

    write_com(0x30);     //基本指令操作

    write_com(0x0c);     //開顯示

    write_com(0x01);     //清除LCD顯示

}

void main()

{   
        while(1)

        {

    uchar x,i,y;

    lcd_init();

    clear_lcd();

        write_com(0x34);

        write_com(0x34);

        write_com(0x80);

        write_com(0x88);

        for(i=16;i>0;i--) //畫出X軸

        {

            write_num(0xff);   

        }

        for(i=0;i<64;i++) //畫出Y軸

        {

            put_point(0,i);

        }

                for(i=0;i<128;i++)
                {
                    a[i] = Read_AD_Data(0xE4);
                }

        for(i=0;i<128;i++)

        {

            x=i;

                        y=32-(a[i]/10);

            put_point(x,y);

        }

        write_com(0x36);

        write_com(0x30);

                delayms(5000);
    }



}





ID:209954 發表于 2017-6-29 21:16
blink 發表于 2017-6-29 20:04
這個是可以測頻率的嗎

不可以,就只能顯示波形。不過我參考別人寫的程序后覺得加裝LM393再修改一下程序也許就能測頻率。我現在沒有LM393,也許你可以試一試。
ID:215119 發表于 2017-6-29 20:04
這個是可以測頻率的嗎
ID:1 發表于 2017-6-29 18:16
好資料,51黑有你更精彩!!!

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表