基于單片機(jī)的簡易數(shù)字示波器
本科生課程設(shè)計(jì)題目: 基于單片機(jī)的簡易數(shù)字示波器 題目來源:省部級以上 市廳級 橫向 自選題目性質(zhì):理論研究 應(yīng)用與理論研究 實(shí)際應(yīng)用研究學(xué) 院: 信息工程學(xué)院 系: 自動化 專業(yè)班級: 學(xué)生姓名: 學(xué)號: 起訖日期: 指導(dǎo)教師: 職稱: 指導(dǎo)教師所在單位: 學(xué)院審核(簽名): 審核日期: 二0 年制 目 錄1、設(shè)計(jì)原理概述.1.1設(shè)計(jì)背景.1.2設(shè)計(jì)原理框圖.2 硬件的設(shè)計(jì). 2.1.最小系統(tǒng)的設(shè)計(jì). 2.1.1最小系統(tǒng)的電路設(shè)計(jì). 2.1.2單片機(jī)STC89c52介紹. 2.2 采樣設(shè)計(jì) 2.2.1 采樣電路設(shè)計(jì). 2.2.2 ADC0809介紹. 2.3顯示設(shè)計(jì) 2.3.1 顯示電路設(shè)計(jì)。. 2.3.2 12864液晶介紹.3. 軟件設(shè)計(jì). 3.1程序流程圖. 3.2 采樣程序設(shè)計(jì)與分析. 3.3顯示程序設(shè)計(jì)與分析.4. 仿真. 4.1 Proteus仿真軟件介紹. 4.2 矩形波仿真. 4.2三角波仿真. 4.3正弦波仿真.5. 設(shè)計(jì)總結(jié).6. 參考文獻(xiàn).7. 附錄.1設(shè)計(jì)原理概述1.1、設(shè)計(jì)背景示波器被廣泛應(yīng)用于各個(gè)領(lǐng)域。隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的飛速發(fā)展,示波器也從模擬示波器向數(shù)字示波器發(fā)展。同模擬示波器相比,數(shù)字示波器具有很多優(yōu)點(diǎn),并開始逐步取代模擬示波器,成為市場上的主流。示波器是現(xiàn)代電子測量中最常用的儀器,它是一種可以用來觀察、測量、記錄各種瞬時(shí)電壓,并以波形方式顯示其與時(shí)間關(guān)系的電子儀器??墒乾F(xiàn)在的數(shù)字示波器比較貴,普遍在1000元以上,這對于許多電子愛好者來說是一個(gè)比較大的負(fù)擔(dān),尤其是學(xué)生?;趩纹瑱C(jī)的簡易數(shù)字示波器可以很好的解決這個(gè)問題,簡易數(shù)字示波器不但成本低廉,而且能夠滿足許多電子愛好者的測量需求,可以得到很廣泛的應(yīng)用。1.2設(shè)計(jì)原理框圖 原理圖設(shè)計(jì)2硬件設(shè)計(jì)2.1 最小系統(tǒng)設(shè)計(jì)2.1.1 最小系統(tǒng)電路設(shè)計(jì)2.1.2單片機(jī)AT89S51介紹AT89S51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,AT89S51在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。ATS8951的管腳圖及主要性能參數(shù):AT89S51提供以下標(biāo)準(zhǔn)功能:4K字節(jié)閃速存儲器,128字節(jié)內(nèi)部RAM,32個(gè)I/O口線,看門狗(WDT),兩個(gè)數(shù)據(jù)指針,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量兩級中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89S51可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中到內(nèi)容,但振蕩器停止工作并禁止其它所有工作部件直到下一個(gè)硬件復(fù)位。與MCS-51產(chǎn)品指令系統(tǒng)完全兼容,4K字節(jié)在系統(tǒng)編程(ISP)Flash 閃速存儲器,1000次擦寫周期,4.0-5.5V的工作電壓范圍,全靜態(tài)工作模式:0HZ-33MHZ,三級程序加密鎖,128*8字節(jié)內(nèi)部RAM、32個(gè)可編程I/O口線、2個(gè)16位定時(shí)/計(jì)數(shù)器、6個(gè)中斷源,全雙工串行UART通道,低功耗空閑和掉電模式,中斷可從空閑模式喚醒系統(tǒng),看門狗(WDT)及雙數(shù)據(jù)指針,掉電標(biāo)示和快速編程特性,靈活的在系統(tǒng)編程(ISP-字節(jié)或頁寫模式)。2.2采樣設(shè)計(jì)2.2.1采樣電路設(shè)計(jì)2.2.2 ADC0809介紹ADC0809是帶有8位A/D轉(zhuǎn)換器、8路多路開關(guān)以及微處理機(jī)兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉(zhuǎn)換器,可以和單片機(jī)直接接口。 1ADC0809引腳結(jié)構(gòu) ADC0809各腳功能如下:D7-D0:8位數(shù)字量輸出引腳。IN0-IN7:8位模擬量輸入引腳。VCC:+5V工作電壓。GND:地。REF(+):參考電壓正端。REF(-):參考電壓負(fù)端。START:A/D轉(zhuǎn)換啟動信號輸入端。ALE:地址鎖存允許信號輸入端。(以上兩種信號用于啟動A/D轉(zhuǎn)換).EOC:轉(zhuǎn)換結(jié)束信號輸出引腳,開始轉(zhuǎn)換時(shí)為低電平,當(dāng)轉(zhuǎn)換結(jié)束時(shí)為高電平。OE:輸出允許控制端,用以打開三態(tài)數(shù)據(jù)輸出鎖存器。CLK:時(shí)鐘信號輸入端(一般為500KHz)。2 ADC0809應(yīng)用說明 (1) ADC0809內(nèi)部帶有輸出鎖存器,可以與AT89S51單片機(jī)直接相連。 (2) 初始化時(shí),使ST和OE信號全為低電平。 (3) 送要轉(zhuǎn)換的哪一通道的地址到A,B,C端口上。 (4) 在ST端給出一個(gè)至少有100ns寬的正脈沖信號。 (5) 是否轉(zhuǎn)換完畢,我們根據(jù)EOC信號來判斷。 (6) 當(dāng)EOC變?yōu)楦唠娖綍r(shí),這時(shí)給OE為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸出給單片機(jī)了。2.2.3 電路設(shè)計(jì)說明A、 B、C接地默認(rèn)IN0為輸入端 VREF+接5V參考電源 CLOCK信號為600KHZ2.3顯示設(shè)計(jì)2.3.1顯示電路設(shè)計(jì)2.3.2、液晶屏LCD12864介紹LCD12864 分為兩種,帶字庫和不帶字庫的此次使用的是不帶字庫的LCD12864液晶Proteus 中AMPIRE128*64,如下圖所示,該液晶驅(qū)動器為KS0108引腳功能: 與帶字庫液晶不同,此塊液晶中含有兩個(gè)液晶驅(qū)動器,一塊驅(qū)動器控制64*64 個(gè)點(diǎn),左右顯示,這就是為什么AMPIRE128*64 引腳有CS1 和CS2 的原因。學(xué)習(xí)液晶主要看的它的指令系統(tǒng),再次先說明一下“頁”的概念,此液晶有8 頁,一頁有8 行。68/8=8;如下圖所示。3、 軟件設(shè)計(jì)3.1程序流程圖3.2 采樣程序設(shè)計(jì)與分析uchar ad_data96; sbit START=P34; sbit OE=P36; sbit EOC=P35; uchar adc() uchar AD; START=1; START=0; while(EOC=0) OE=1; AD=P1; OE=0;return(AD); void ad_cai()uchar b;for(b=0;b<=95;b+)ad_datab=3*adc(); Uchar ad_data96 申請96個(gè)8位的空間變量用于存儲96個(gè)采樣數(shù)據(jù)。Ucahr adc()為根據(jù)ADC0809的時(shí)序編寫的采樣函數(shù)。Void ad_cai() 為采樣96次的函數(shù)。3.3顯示函數(shù)設(shè)計(jì)與分析uchar page(uchar d_ata)uchar page; if(d_ata<=51) page=0x05; else if(d_ata<=102) page=0x04; else if(d_ata<=153) page=0x03; else if(d_ata<=204) page=0x02; else if(d_ata<=255) page=0x01; return(page);uchar D_data(uchar page,d_ata)uchar D_data;switch (page)case(1):D_data=d_ata-204;D_data=D_data/6;break;case(2):D_data=d_ata-153;D_data=D_data/6;break;case(3):D_data=d_ata-102;D_data=D_data/6;break;case(4):D_data=d_ata-51;D_data=D_data/6;break;case(5):D_data=d_ata/6;break;default:break;return(D_data); uchar dian(uchar D_data)uchar d_data;switch(D_data)case(0):d_data=0x00;break;case(1):d_data=0x80;break;case(2):d_data=0x40;break;case(3):d_data=0x20;break;case(4):d_data=0x10;break;case(5):d_data=0x08;break;case(6):d_data=0x04;break;case(7):d_data=0x02;break;case(8):d_data=0x01;break;default:break;return(d_data);void tudisplay(uchar *p)uchar i,num,D_num,d_data,c=1;SelectScreen(1);Set_column(16);for(i=0;i<=95;i+)num=page(pi);D_num=D_data(num,pi);d_data=dian(D_num);if(i>=48&&c) SelectScreen(2); Set_column(0);c=0; Set_page(num);write_LCD_data(d_data);P1=num;波形都是由像素點(diǎn)組成的,波形的基礎(chǔ)其實(shí)就是畫點(diǎn)。只要我們能點(diǎn)亮液晶的任意一個(gè)點(diǎn),就能顯示任意波形,從上面的圖我們知道,它是分為兩個(gè)半屏的,首先,我們要確定這個(gè)點(diǎn)是在左半屏還是右半屏,然后確定它是在那一行(page),再確定它是在哪一個(gè)字節(jié)的哪一個(gè)位(也就是確定它在那一列。這些都確定后我們就定位到某一個(gè)具體的位上了,只就將這個(gè)位置1,就可以點(diǎn)亮這個(gè)點(diǎn)。確定頁8位轉(zhuǎn)換,255個(gè)數(shù),Page=255/5=51uchar page(uchar d_ata)uchar page; if(d_ata<=51) page=0x05; else if(d_ata<=102) page=0x04; else if(d_ata<=153) page=0x03; else if(d_ata<=204) page=0x02; else if(d_ata<=255) page=0x01; return(page);以此確定頁,然后根據(jù)頁和轉(zhuǎn)換的數(shù)據(jù)確定是點(diǎn)亮那一位uchar D_data(uchar page,d_ata)uchar D_data;switch (page)case(1):D_data=d_ata-204;D_data=D_data/6;break;case(2):D_data=d_ata-153;D_data=D_data/6;break;case(3):D_data=d_ata-102;D_data=D_data/6;break;case(4):D_data=d_ata-51;D_data=D_data/6;break;case(5):D_data=d_ata/6;break;default:break;return(D_data); 其中6.375=255/40,這里近似除6,然后根據(jù)第幾位給出顯示數(shù)據(jù)由uchar dian(uchar D_data)函數(shù)完成。由于LCD12864列自動加一,所以只需確定第幾頁并確定顯示那個(gè)點(diǎn)然后依次顯示就能完成顯示波形的需要。4、 仿真4.1 矩形波仿真結(jié)果如下圖:由于算法的缺陷矩形波并不能像示波器一樣顯示完整的波形。4.2 三角波仿真:4.3 正弦波仿真5、 設(shè)計(jì)總結(jié):6、 參考文獻(xiàn)7、附錄: