久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

由STC12C5A50S2與NOKIA1100液晶屏構(gòu)成的袖珍示波器

作者:huqin   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年11月15日   【字體:
     由STC12C5A50S2與NOKIA1100液晶屏構(gòu)成的袖珍示波器,功能簡(jiǎn)介:可測(cè)量雙通道波形,采樣率從75KHz到15Hz,輸入電壓應(yīng)該能到50V(本人沒(méi)有測(cè)試過(guò)較高的電壓)。

 


 

 

        主要器件:手機(jī)電池供電,PT1301升壓到5V,以TL431輸出的2.5V為探頭的信號(hào)地,運(yùn)放TL082做信號(hào)放大,數(shù)字電位器MCP41010做增益調(diào)節(jié),NOKIA1100液晶屏做為顯示,96*65像素點(diǎn),其工作所需3.3V電壓是5V電壓串聯(lián)LED后得來(lái)的。STC12C5A50S2做為核心控制,據(jù)資料介紹其ADC采樣速度可達(dá)250KHz,兩路ADC采集波形數(shù)據(jù),一路ADC采集2.5V電壓,一路ADC采集電池電壓,兩路PWM經(jīng)低通濾波后控制調(diào)理電路的偏移。探頭接口是用的雙聲道耳機(jī)接口,比較節(jié)省空間,但是通道間會(huì)有干擾。按鍵有9個(gè),CH:選通道; Vp/Hp:主菜單選擇:POWER:開(kāi)機(jī);Vs/Hs:(本程序未用)        INC:+ ,STOP:關(guān)機(jī) SET:進(jìn)彈出菜單     DEC:-   ESC:退出/暫停
        程序介紹:
        程序中為了方便圖形操作,為液晶屏建立了內(nèi)存緩沖,繪圖操做在單片機(jī)內(nèi)存中進(jìn)行,然后整體復(fù)制到液晶屏.由于內(nèi)存不太充裕,采用了分塊的方法,以時(shí)間換取空間:
#define LCD_WIDTH 96
#define LCD_HEIGHT 8
//液晶分區(qū)數(shù)
#define LCD_PART 2
//U8 lcd_x=0;
//U8 lcd_y=0;
xdata U8 lcd_buf[LCD_HEIGHT/LCD_PART][LCD_WIDTH];//lcd顯示緩存(1/LCD_PART屏)
xdata S16 lcd_bufx0=0,lcd_bufy0=0,lcd_bufx1=0,lcd_bufy1=0;//緩沖區(qū)對(duì)應(yīng)四角坐標(biāo),(去掉右邊框)
//x0 <= x < x1;y0 <= y < y1;
//-------------------------------------------------------
//選擇液晶屏區(qū)域
//s=0~LCD_PART-1
//-------------------------------------------------------
void lcd_buf_sel(U8 s)
{
        if(s>=LCD_PART)return;
        lcd_bufx0=0;
        lcd_bufx1=LCD_WIDTH;
        lcd_bufy0=LCD_HEIGHT*s/LCD_PART;       
        lcd_bufy1=LCD_HEIGHT*(s+1)/LCD_PART;
}

繪圖時(shí)需遍歷每個(gè)顯示緩存塊:
        for(p=0;p<LCD_PART;p++)
        {
                lcd_buf_sel(p);
                //LCD_DrawPic(0,0,160,123,0,gImage_t1);
                lcd_buf_fill(0x04);               
                GUI_SetFont6x8();
                GUI_dispnum(i,3,0,5,13,0);
                GUI_PutStr(5,5,"welcome...");
                GUI_SetFont8x16();
                GUI_PutStr(5,25,"welcome...");
                lcd_refresh();
        }

  程序在timer0中斷里采集波形數(shù)據(jù),主要代碼如下:
//--------------------------------------------------
//定時(shí)器中查詢AD
//--------------------------------------------------
void timer0(void)        interrupt 1 using 3        //T0中斷,用寄存器組0
{
        //while(TF0==0);
        //TF0=0;
        U8 ad;
        //static U8 fp=0;//分頻       
        if(T0EXC==0)
        {
                //mmm++;
                TH0=TH0RLD;//重裝初值
                TL0=TL0RLD;
                T0EXC=T0EXH;
                //dosamp();
                while(ADC_CONTR&BIT(3));//等待通道0轉(zhuǎn)換完成
                //while(!(ADC_CONTR&BIT(4)));
                ad=ADC_RES;//讀通道0
                if(TrigCh==0)//通道1觸發(fā)
                {
                        if(ChEnable & BIT(1))//通道2使能
                                ADC_CONTR=(0xE8|ADCH2);//選通道2
                        else                //否則選通道1
                                ADC_CONTR=(0xE8|ADCH1);//選通道1
                        ADCBuf[0][BUF_Wps]=ad;//循環(huán)存儲(chǔ)數(shù)據(jù)
                }
                else
                {
                        if(ChEnable & BIT(0))//通道1使能
                                ADC_CONTR=(0xE8|ADCH1);//選通道1
                        else                //否則選通道1
                                ADC_CONTR=(0xE8|ADCH2);//選通道2
                        ADCBuf[1][BUF_Wps]=ad;//循環(huán)存儲(chǔ)數(shù)據(jù)               
                }
               
               
                //if(BUF_Wps>=ADCBUFSIZE)BUF_Wps=0;
                if(SampState==0)//預(yù)采數(shù)據(jù)
                {
                        //if(ADC_Cnt<ADCBUFSIZE)
                        ADC_Cnt++;        //數(shù)據(jù)個(gè)數(shù)加1
                        BUF_Cnt++;
                        if(ADC_Cnt>=TrigPs)//觸發(fā)位置
                        {
                                if(TrigEdge==0)//上升沿觸發(fā)
                                        SampState=1;
                                else                        //下降沿觸發(fā)
                                        SampState=2;
                        }
                }
                //------------------------上升沿狀態(tài)為1-2-3,下降沿狀態(tài)為2-1-3
                else if(SampState==1)
                {                       
                        if(ad<=TrigLevel)//低于觸發(fā)電平
                        {
                                if(TrigEdge==0)//上升沿觸發(fā)
                                        SampState=2;
                                else                        //下降沿觸發(fā)
                                        SampState=3;
                                //if(ADC_Cnt<ADCBUFSIZE)
                                ADC_Cnt++;//數(shù)據(jù)個(gè)數(shù)加1
                                BUF_Cnt++;
                        }
                        else//否則讀取隊(duì)列,ADC_Cnt,BUF_Cnt就不加了
                        {
                                BUF_Rps++;
                                if(BUF_Rps>=ADCBUFSIZE)BUF_Rps=0;
                        }
                }
                else if(SampState==2)
                {
                        if(ad>TrigLevel)//高于觸發(fā)電平
                        {
                                if(TrigEdge==0)//上升沿觸發(fā)
                                        SampState=3;
                                else                        //下降沿觸發(fā)
                                        SampState=1;
                                //if(ADC_Cnt<ADCBUFSIZE)
                                ADC_Cnt++;//數(shù)據(jù)個(gè)數(shù)加1
                                BUF_Cnt++;
                        }
                        else//否則讀取隊(duì)列,ADC_Cnt,BUF_Cnt就不加了
                        {
                                BUF_Rps++;
                                if(BUF_Rps>=ADCBUFSIZE)BUF_Rps=0;
                        }
                }
                else if(SampState==3)//已觸發(fā)
                {
                        ADC_Cnt++;        //數(shù)據(jù)個(gè)數(shù)加1
                        BUF_Cnt++;
                        if(ADC_Cnt>=ADCBUFSIZE)//采了足夠的數(shù)據(jù)
                        {
                                SampState=4;
                                TR0=0;
                        }
                }
                if((TrigMode==0)&&(SampState<3))//自動(dòng)觸發(fā)處理
                {               
                        if(TrigWait==0)//等待時(shí)間低位
                        {
                                if(TrigWaitH)//等待時(shí)間高位
                                {
                                        TrigWaitH--;
                                }
                                else
                                {
                                        SampState=3;
                                }
                        }
                        TrigWait--;
                }
                if(TrigCh==0)//通道1觸發(fā)
                {
                        if(ChEnable & BIT(1))//通道2使能       
                        {
                                while(ADC_CONTR&BIT(3));//等待通道1轉(zhuǎn)換完成
                                //while(!(ADC_CONTR&BIT(4)));
                                ad=ADC_RES;//讀通道1
                                ADC_CONTR=(0xE8|ADCH1);//選通道1
                                ADCBuf[1][BUF_Wps]=ad;//循環(huán)存儲(chǔ)數(shù)據(jù)
                        }
                }
                else
                {
                        if(ChEnable & BIT(0))//通道1使能       
                        {
                                while(ADC_CONTR&BIT(3));//等待通道1轉(zhuǎn)換完成
                                //while(!(ADC_CONTR&BIT(4)));
                                ad=ADC_RES;//讀通道1
                                ADC_CONTR=(0xE8|ADCH2);//選通道2
                                ADCBuf[0][BUF_Wps]=ad;//循環(huán)存儲(chǔ)數(shù)據(jù)
                        }               
                }
                //寫(xiě)指針下移
                BUF_Wps++;
                if(BUF_Wps>=ADCBUFSIZE)BUF_Wps=0;
        }
        else
        {
                T0EXC--;
        }
}
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 欧美视频第三页 | www.av7788.com| 成人深夜福利 | 国产精品日韩高清伦字幕搜索 | 亚洲成色777777在线观看影院 | 国产一区二区三区www | 久久精品一级 | 亚洲国产一区二区视频 | 精品国产1区2区3区 一区二区手机在线 | 国产激情一区二区三区 | 欧美精品成人 | 亚洲欧美综合 | 黄视频网址| 日本特黄a级高清免费大片 特黄色一级毛片 | 国产馆 | 中文字幕在线观 | 中日av| 欧美日韩成人影院 | 国产精品爱久久久久久久 | 成人超碰 | 亚洲一区二区三区四区五区中文 | 国产成人午夜精品影院游乐网 | 久久久久国产视频 | 狠狠操婷婷| 欧美精品福利 | 国产9 9在线 | 中文 | 国产目拍亚洲精品99久久精品 | www.狠狠干| 特级丰满少妇一级aaaa爱毛片 | 国产成人免费在线 | 免费黄色的视频 | 色偷偷噜噜噜亚洲男人 | 91精品国产综合久久福利软件 | 国产1区2区3区 | 91婷婷韩国欧美一区二区 | 久久精品毛片 | 精品国产一级 | 国产资源一区二区三区 | 国产一区二区三区久久久久久久久 | 国产高清在线精品 | 91精品国产色综合久久不卡蜜臀 |