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