南郵綜合設(shè)計(jì)報(bào)告(課程設(shè)計(jì))proteus和Keil_第1頁
南郵綜合設(shè)計(jì)報(bào)告(課程設(shè)計(jì))proteus和Keil_第2頁
南郵綜合設(shè)計(jì)報(bào)告(課程設(shè)計(jì))proteus和Keil_第3頁
南郵綜合設(shè)計(jì)報(bào)告(課程設(shè)計(jì))proteus和Keil_第4頁
南郵綜合設(shè)計(jì)報(bào)告(課程設(shè)計(jì))proteus和Keil_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、電子科學(xué)綜合設(shè)計(jì)目錄一、課題1:數(shù)碼管學(xué)號(hào)滾動(dòng)顯示41.課題任務(wù)要求及技術(shù)指標(biāo)41.1設(shè)計(jì)任務(wù)41.2設(shè)計(jì)要求42.課題分析及設(shè)計(jì)思路42.1功能分析42.2實(shí)現(xiàn)思路42.3難點(diǎn)描述43.系統(tǒng)設(shè)計(jì)(建模)43.1硬件框圖43.2軟件框圖43.3電路圖53.4元件清單53.5源程序64.仿真結(jié)果與結(jié)果分析7二、課題2:led8彩燈花樣顯示71.課題任務(wù)要求及技術(shù)指標(biāo)71.1設(shè)計(jì)任務(wù)71.2設(shè)計(jì)要求72.課題分析及設(shè)計(jì)思路72.1功能分析82.3難點(diǎn)描述83.系統(tǒng)設(shè)計(jì)(建模)83.1硬件框圖83.2軟件框圖83.3電路圖83.4元件清單93.5源程序94.仿真結(jié)果與結(jié)果分析10三、課題3:數(shù)字電子

2、鐘111.課題任務(wù)要求及技術(shù)指標(biāo)111.1設(shè)計(jì)任務(wù)111.2設(shè)計(jì)要求112.課題分析及設(shè)計(jì)思路112.1功能分析112.2實(shí)現(xiàn)思路122.3難點(diǎn)描述123.系統(tǒng)設(shè)計(jì)(建模)123.1硬件設(shè)計(jì)123.2軟件設(shè)計(jì)流程圖133.3電路圖143.4元件清單153.5源程序154.仿真結(jié)果與結(jié)果分析19四、課題6:函數(shù)發(fā)生器201.課題任務(wù)要求及技術(shù)指標(biāo)201.1設(shè)計(jì)任務(wù)201.2設(shè)計(jì)要求202.課題分析及設(shè)計(jì)思路202.1功能分析202.2實(shí)現(xiàn)思路202.3難點(diǎn)描述203.系統(tǒng)設(shè)計(jì)(建模)203.1硬件設(shè)計(jì)203.2軟件流程圖213.3電路圖263.4源程序264.仿真結(jié)果與結(jié)果分析32五、課題12:

3、簡(jiǎn)易溫度計(jì)341.課題任務(wù)要求及技術(shù)指標(biāo)341.1設(shè)計(jì)任務(wù)341.2設(shè)計(jì)要求342.課題分析及設(shè)計(jì)思路342.1功能分析342.2實(shí)現(xiàn)思路342.3難點(diǎn)描述343.系統(tǒng)設(shè)計(jì)(建模)343.1硬件設(shè)計(jì)343.2軟件流程圖353.3電路圖373.4源程序374.仿真結(jié)果與結(jié)果分析46六、課程設(shè)計(jì)小結(jié)47一、課題1:數(shù)碼管學(xué)號(hào)滾動(dòng)顯示1.課題任務(wù)要求及技術(shù)指標(biāo)1.1設(shè)計(jì)任務(wù):要求學(xué)生在六個(gè)數(shù)碼管滾動(dòng)顯示自己的學(xué)號(hào)(六位),每隔一定時(shí)間循環(huán)移位一次,學(xué)號(hào)為奇數(shù)則左移,學(xué)號(hào)為偶數(shù)則右移。間隔時(shí)間可由開關(guān)選擇1秒,2秒,3秒和4秒。1.2設(shè)計(jì)要求:(1)給出正確的原理圖;(2)給出正確的程序,并結(jié)合原理圖

4、給出相應(yīng)結(jié)果。2.課題分析及設(shè)計(jì)思路2.1功能分析:數(shù)碼管滾動(dòng)顯示學(xué)號(hào),可控制間隔時(shí)間。2.2實(shí)現(xiàn)思路:1、動(dòng)態(tài)數(shù)碼顯示技術(shù);如何進(jìn)行動(dòng)態(tài)掃描,由于一次只能讓一個(gè)數(shù)碼管顯示,因此,要顯示6位的數(shù)據(jù),必須經(jīng)過讓數(shù)碼管一個(gè)一個(gè)輪流顯示才可以,同時(shí)每個(gè)數(shù)碼管顯式的時(shí)間大約在1ms到4ms之間,所以為了保證正確顯示,必須每隔1ms,就得刷新一個(gè)數(shù)碼管。而這刷新時(shí)間我們采用單片機(jī)的定時(shí)/計(jì)數(shù)器來控制,每定時(shí)1ms對(duì)數(shù)碼管刷新一次。2、在進(jìn)行數(shù)碼顯示的時(shí)候,要對(duì)顯示單元開辟6個(gè)顯示緩沖區(qū),每個(gè)顯示緩沖區(qū)裝有顯示的不同數(shù)據(jù)即可。2.3難點(diǎn)描述:對(duì)延時(shí)的精度要求比較高。3.系統(tǒng)設(shè)計(jì)(建模)3.1硬件框圖鍵盤復(fù)

5、位電 路stc89c51數(shù)碼管顯示震蕩電 路3.2軟件框圖開 始數(shù)碼管顯示學(xué)號(hào)讀取鍵值根據(jù)鍵值命令數(shù)碼管延時(shí)滾動(dòng)執(zhí)行結(jié)束3.3電路圖3.4元件清單器材規(guī)格數(shù)量單片機(jī)at89c511數(shù)碼管7seg-mpx6-ca-blue1按鍵button2晶振12mhz1瓷片電容22pf2電解電容10uf1電阻2202電阻10k93.5源程序#include #define uint unsigned int #define uchar unsigned charuchar code dis_seg7=0xc0,0xa4,0xc0,0xa4,0xc0,0xf9;/設(shè)置學(xué)號(hào),共陽字形碼uchar code di

6、s_bit6=0x3e,0x3d,0x3b,0x37,0x2f,0x1f;/六位數(shù)碼管位選sbit k1=p10;sbit k2=p11;void delay1ms(uint i) uint j;while(i-) for(j = 0; j 110; j+); void main(void) uchar cnt, ttt;uchar disp = 0, 1, 2, 3, 4, 5,;while(1) for(ttt = 0; ttt 100; ttt+) for(cnt = 0; cnt 6; cnt+) /點(diǎn)亮數(shù)碼管0-5 p2 = 0;p0 = dis_seg7dispcnt;p2 = d

7、is_bitcnt;if(k1=1&k2=1)delay1ms(1);elseif(k1=0&k2=1)delay1ms(2);elseif(k1=1&k2=0)delay1ms(3);elseif(k1=0&k2=0)delay1ms(4);ttt = disp0;disp0 = disp1;disp1 = disp2;disp2 = disp3;disp3 = disp4;disp4 = disp5;disp5 = ttt; 4.仿真結(jié)果與結(jié)果分析當(dāng)按鍵k1、k2彈起時(shí),學(xué)號(hào)延時(shí)1s滾動(dòng);當(dāng)k1按下,k2彈起時(shí),學(xué)號(hào)延時(shí)2s滾動(dòng);當(dāng)k1彈起,k2按下時(shí),學(xué)號(hào)延時(shí)3s滾動(dòng);當(dāng)k1、k2按下時(shí)

8、,學(xué)號(hào)延時(shí)4s滾動(dòng)。二、課題2:led8彩燈花樣顯示1.課題任務(wù)要求及技術(shù)指標(biāo)1.1設(shè)計(jì)任務(wù):要求學(xué)生設(shè)計(jì)出led8彩燈在兩個(gè)撥碼開關(guān)的控制下每隔1秒,2秒,3秒和4秒間隔點(diǎn)亮。1.2設(shè)計(jì)要求:(1)給出正確的原理圖;(2)給出正確的程序,并結(jié)合原理圖給出相應(yīng)結(jié)果。2.課題分析及設(shè)計(jì)思路2.1功能分析:彩燈流水顯示,間隔時(shí)間可控。2.2實(shí)現(xiàn)思路:當(dāng)51單片機(jī)的p2口有高電平輸出時(shí),相應(yīng)的發(fā)光二極管就會(huì)點(diǎn)亮。應(yīng)用這一原理我們可以容易的點(diǎn)亮一個(gè)數(shù)碼管,例如令p2口輸出0000 0001時(shí)d1就會(huì)點(diǎn)亮。若再把0000 0001向左循環(huán)一位,利用p2口輸出,就會(huì)點(diǎn)亮d2。在發(fā)光二極管兩次點(diǎn)亮的間隔中加

9、延時(shí)程序,讓每次點(diǎn)亮停留一段時(shí)間,像這樣人眼就可以看到“流水” 的現(xiàn)象。2.3難點(diǎn)描述: 移位與延時(shí)之間的關(guān)聯(lián)。3.系統(tǒng)設(shè)計(jì)(建模)3.1硬件框圖鍵盤復(fù)位電 路stc89c51流水燈電 路震蕩電 路3.2軟件框圖開 始數(shù)碼管顯示學(xué)號(hào)讀取鍵值根據(jù)鍵值命令數(shù)碼管延時(shí)滾動(dòng)執(zhí)行結(jié)束 3.3電路圖3.4元件清單器材規(guī)格數(shù)量單片機(jī)at89c511發(fā)光二極管藍(lán)+紅+黃+綠2播碼開關(guān)dipsw_21晶振11.0592mhz1瓷片電容22pf2電解電容10uf1電阻2208電阻10k13.5源程序#include #include #define uchar unsigned char #define uint

10、 unsigned int sbit k1=p10;sbit k2=p11;/延時(shí)void delayms(uint x) uchar i; while(x-) for(i=0;i120;i+); /主程序void main() uchar i; p2=0x80; while(1) for(i=0;i7;i+) p2=_crol_(p2,1); /p2 的值向左循環(huán)移動(dòng)if(k1=1&k2=1)delayms(400);elseif(k1=0&k2=1)delayms(800);elseif(k1=1&k2=0)delayms(1200);elseif(k1=0&k2=0)delayms(16

11、00); 4.仿真結(jié)果與結(jié)果分析啟動(dòng)程序,二極管由d1到d8逐個(gè)點(diǎn)亮。播碼開關(guān)播向1,1時(shí),點(diǎn)亮間隔為1s;播碼開關(guān)播向0,1時(shí),點(diǎn)亮間隔為2s;播碼開關(guān)播向1,0時(shí),點(diǎn)亮間隔為3s;播碼開關(guān)播向0,0時(shí),點(diǎn)亮間隔為4s。三、課題3:數(shù)字電子鐘1.課題任務(wù)要求及技術(shù)指標(biāo)1.1設(shè)計(jì)任務(wù):運(yùn)用單片機(jī)的中斷技術(shù),led顯示技術(shù)和鍵盤掃描技術(shù),設(shè)計(jì)一實(shí)用的多功能電子鐘。1.2設(shè)計(jì)要求:(1)給出正確的原理圖;(2)給出正確的程序,并結(jié)合原理圖給出相應(yīng)結(jié)果。2.課題分析及設(shè)計(jì)思路2.1功能分析:數(shù)字電子鐘是一個(gè)將“ 時(shí)”,“分”,“秒”顯示于人的視覺器官的計(jì)時(shí)裝置。它的計(jì)時(shí)周期為24小時(shí),顯示滿刻度為2

12、3時(shí)59分59秒,另外還有校時(shí)功能。2.2實(shí)現(xiàn)思路:8個(gè)數(shù)碼管的段選接到單片機(jī)的p0口,位選接到單片機(jī)的p2口。數(shù)碼管按照數(shù)碼管動(dòng)態(tài)顯示的工作原理工作,將標(biāo)準(zhǔn)秒信號(hào)送入“秒單元”,“秒單元”采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60秒發(fā)出一個(gè)“分脈沖”信號(hào),該信號(hào)將作為“分單元”的時(shí)鐘脈沖。“分單元”也采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60分鐘,發(fā)出一個(gè)“時(shí)脈沖”信號(hào),該信號(hào)將被送到“時(shí)單元”。“時(shí)單元”采用24進(jìn)制計(jì)時(shí)器,可實(shí)現(xiàn)對(duì)一天24小時(shí)的累計(jì)。顯示電路將“時(shí)”、“分”、“秒”通過七段顯示器顯示出來。校時(shí)電路時(shí)用來對(duì)“時(shí)”、“分”、“秒”顯示數(shù)字進(jìn)行校對(duì)調(diào)整,按一下s,秒單元就加1 ,按一下m,分就加1,按

13、一下h,時(shí)就加1。2.3難點(diǎn)描述:按鍵校對(duì)時(shí)間時(shí)容易抖動(dòng),抖動(dòng)問題不解決就會(huì)引起對(duì)閉合鍵的識(shí)別。3.系統(tǒng)設(shè)計(jì)(建模)3.1硬件設(shè)計(jì)(1)最小系統(tǒng)設(shè)計(jì)單片機(jī)的最小系統(tǒng)是由電源、復(fù)位、晶振、/ea=1組成(2)數(shù)碼管顯示電路數(shù)碼管使用條件:a、段及小數(shù)點(diǎn)上加限流電阻 b、使用電壓:段:根據(jù)發(fā)光顏色決定; 小數(shù)點(diǎn):根據(jù)發(fā)光顏色決定。(3)鍵盤控制電路當(dāng)用手按下一個(gè)鍵時(shí),如圖3-8所示,往往按鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個(gè)鍵時(shí),也回會(huì)出現(xiàn)類似的情況。這就是抖動(dòng)。抖動(dòng)的持續(xù)時(shí)間隨鍵盤材料和操作員而異,不過通常總是不大于10ms。很容易想到,抖動(dòng)問題不解決就會(huì)引起對(duì)閉合

14、鍵的識(shí)別。用軟件方法可以很容易地解決抖動(dòng)問題,這就是通過延遲10ms來等待抖動(dòng)消失,這之后,在讀入鍵盤碼。3.2軟件設(shè)計(jì)流程圖n24小時(shí)到?分單元清零,時(shí)單元加1nnnyy時(shí)單元清零時(shí)間顯示中斷返回開始一秒時(shí)間到?60秒時(shí)間到?60分鐘到?秒單元加1秒單元清零,分單元加1yy3.3電路圖3.4元件清單器材規(guī)格數(shù)量單片機(jī)at89c511數(shù)碼管7seg-mpx8-cc-blue1按鍵button3晶振11.0592mhz1瓷片電容22pf2電解電容10uf1電阻10k83.5源程序#include sbit ksec=p30; sbit kmin=p31; sbit khour=p32; unsi

15、gned char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0; unsigned int num=0,sec=0,min=0,hour=0; unsigned char code table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; void delay(unsigned int); void keyscan(); void display();main()tmod=0x01; th0=(65536-50000)/256; tl0=(65536-50000)%256;

16、 ea=1;et0=1;tr0=1; while(1) display(); keyscan(); void delay(unsigned int z) unsigned int x,y; for(x=z;x0;x-) for(y=110;y0;y-);/定時(shí)器中斷程序void time0()interrupt 1 num+; th0=(65536-50000)/256; tl0=(65536-50000)%256; /led顯示程序void display() if(num=20) num=0; sec+; if(sec=60) sec=0; min+; if(min=60) min=0;

17、hour+; if(hour=24) hour=0; min=0; sec=0; secge=sec%10; secshi=sec/10; minge=min%10; minshi=min/10;hourge=hour%10; hourshi=hour/10; p2=0xfe; p0=tablesecge; delay(5); p2=0xfd; p0=tablesecshi;delay(5); p2=0xfb; p0=0x40; delay(5); p2=0xf7; p0=tableminge; delay(5); p2=0xef; p0=tableminshi; delay(5); p2=0

18、xdf;p0=0x40; delay(5); p2=0xbf; p0=tablehourge;delay(5); p2=0x7f; p0=tablehourshi; delay(5); /按鍵控制子程序void keyscan() if(ksec=0) delay(10); if(ksec=0) sec+; if(sec=60) sec=0; while(ksec=0) display(); if(kmin=0) delay(10); if(kmin=0) min+; if(min=60) min=0; while(kmin=0)display(); if(khour=0) delay(10)

19、;if(khour=0) hour+; if(hour=24) hour=0; while(khour=0) display(); 4.仿真結(jié)果與結(jié)果分析走時(shí):默認(rèn)為走時(shí)狀態(tài),按24小時(shí)制分別顯示“時(shí)時(shí)-分分-秒秒”,有2個(gè)“-”動(dòng)態(tài)顯示,時(shí)間會(huì)按實(shí)際時(shí)間以秒為最少單位變化。走時(shí)調(diào)整:按s對(duì)秒進(jìn)行調(diào)整,按一下加一秒;按m對(duì)分進(jìn)行調(diào)整,按一下加一分;按h對(duì)時(shí)進(jìn)行調(diào)整,按一下加一小時(shí),從而達(dá)到快速設(shè)定時(shí)間的目的。四、課題6:函數(shù)發(fā)生器1.課題任務(wù)要求及技術(shù)指標(biāo)1.1設(shè)計(jì)任務(wù):采用數(shù)字合成技術(shù)和d/a轉(zhuǎn)換器件,實(shí)現(xiàn)多種信號(hào)波形的輸出,設(shè)計(jì)一臺(tái)實(shí)用的函數(shù)信號(hào)發(fā)生器。1.2設(shè)計(jì)要求:(1)給出正確的原理

20、圖;(2)給出正確的程序,并結(jié)合原理圖給出相應(yīng)結(jié)果。2.課題分析及設(shè)計(jì)思路2.1功能分析:系統(tǒng)能產(chǎn)生方波、鋸齒及正弦信號(hào);能提供信號(hào)的頻率的顯示,能改變頻率。2.2實(shí)現(xiàn)思路:以89c51為核心,結(jié)合dac0832實(shí)現(xiàn)程序控制產(chǎn)生正弦波、鋸齒波及方波等常用的低頻信號(hào)??梢酝ㄟ^鍵盤選擇波形及增減頻率。2.3難點(diǎn)描述:波形的產(chǎn)生,數(shù)模轉(zhuǎn)換3.系統(tǒng)設(shè)計(jì)(建模)3.1硬件設(shè)計(jì)(1)放大電路dac0832與反相比例放大器相連,實(shí)現(xiàn)電流到電壓的轉(zhuǎn)換,因此輸出模擬信號(hào)的極性與參考電壓的極性相反,數(shù)字量與模擬量的轉(zhuǎn)換關(guān)系為 若d/a轉(zhuǎn)換器輸出為雙極性,如圖3-6所示。運(yùn)算放大器b的作用是把運(yùn)算放大器a的單向輸出

21、電壓轉(zhuǎn)換成雙向輸出電壓。其原理是將b的反向輸入端通過電阻r2與參考電壓vref相連,vref經(jīng)r2向b提供一個(gè)偏流i1,其電流方向與i2相反,因此運(yùn)算放大器b的輸入電流為i1、i2的代數(shù)和。則d/a轉(zhuǎn)換器的總輸出電壓為: 。 因r5= r6=2 r7,所以。(2)顯示模塊 1602液晶器件 3.2軟件流程圖(1)主程序流程圖主程序開始 開轉(zhuǎn)換器的dac寄存器關(guān)閉輸入輸入寄存器初始顯示子程序初始waveform=0設(shè)置定時(shí)器0和外部中斷while(1)循環(huán)等待主程序主要設(shè)置了d/a轉(zhuǎn)換器件dac0832的工作模式,定義了dac0832數(shù)據(jù)端口。調(diào)用了顯示初始子程序,設(shè)置了定時(shí)器工作模式及定時(shí)中斷

22、和外部中斷。(2)定時(shí)中斷程序流程圖定時(shí)器中斷程序開始waveform=2waveform=2設(shè)置th,tl寄存器waveform=0否waveform=1是正弦波輸出子程序否是鋸齒波輸出子程序方波輸出子程序返回定時(shí)中斷的作用是用來改變相應(yīng)波形的頻率,通過改變th,tl的值就可以改變定時(shí)時(shí)間,從而改變相應(yīng)波形的頻率。waveform的值代表不同的波形,waveform=0代表正弦波,waveform=1代表鋸齒波,waveform=2代表方波,根據(jù)waveform值調(diào)用對(duì)應(yīng)的波形輸出子程序。(3)外部中斷按鍵子程序流程圖外部中斷程序開始關(guān)總中斷p3.6=0獲取p3口高四位p3.4=0否p3.5

23、=0waveform+是否是p3.6=06.6是wavefreqwaveform+wavefreqwaveform- 設(shè)定t_temp取值方式求得當(dāng)前頻率值顯示當(dāng)前率值及對(duì)應(yīng)的波形形式開總中斷與定時(shí)器中斷 返回外部中斷是由按鍵引起的p3.2引腳下降沿觸發(fā)的,波形切換、頻率增減都是通過外部中斷和定時(shí)中斷相結(jié)合完成的,外部中斷程序中只是改變了相應(yīng)的參數(shù)或中間值(如波形形式waveform及相應(yīng)波形頻率wavefreqwaveform和定時(shí)器0的定時(shí)初值寄存器的中間值t_temp)另外外部中斷程序還對(duì)波形的頻率做了數(shù)據(jù)處理并送到液晶屏顯示。(4)正弦波子程序流程圖正弦波子程序dadate=sine_

24、tabwavecountwavecount+wavecount255 否 開dac0832輸入寄存器wavecount=0是關(guān)dac0832輸入寄存器返回正弦波主要是通過單片機(jī)向d/a轉(zhuǎn)換器dac0832輸送8位二進(jìn)制數(shù)產(chǎn)生的,本方案選取的256個(gè)8位二進(jìn)制數(shù)存放在數(shù)組sine_tab,中wavecount的作用就是抽點(diǎn)計(jì)數(shù)范圍是0255,本方案中dac0832工作在單緩沖狀態(tài),dac寄存器處于直通狀態(tài),只要在相應(yīng)的時(shí)間打開和關(guān)閉輸入寄存器就能完成數(shù)據(jù)輸送。(5)三角波子主程序流程圖三角波子程序dadate=sawtooth_tabwavecountwavecount+wavecount63否

25、是開dac0832輸入寄存器wavecount=0關(guān)dac0832輸入寄存器返回三角波的產(chǎn)生方法以正弦波類似都是通過取點(diǎn)來產(chǎn)生的,本方案取了64個(gè)點(diǎn),全部存放在sawtooth_tabwavecount中。(6)方波子程序流程圖方波子程序 judge=judgejudge=1否 dadate=0xff 是dadate=0x00開dac0832輸入寄存器關(guān)dac0832輸入寄存器返回(7)初始顯示子程序流程圖初始顯示子程序方波子程序初始化lcd在第一行顯示select wave在第二行顯示press no.1 key!返回方波子程序3.3電路圖3.4源程序#include#define ucha

26、r unsigned char#define uint unsigned int#define dadata p0sbit da_s1= p20;sbit da_s2= p21; sbit key= p32;uchar wavecount; uchar thtemp,tltemp;uchar judge=1; uchar waveform; uchar code freq_unit3=10,50,200;uchar idata wavefreq3=1,1,1; uchar code lcd_hang1=sine wave sawtooth wave square wave select wav

27、e: press no.1 key! ;uchar idata lcd_hang216=f= hz ;uchar code waveth= 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xfc,0xfd,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xf6,0xfb,0xfd,0xfb,0xfe,0xff,0xff,0xff,0xff,0xff;uchar code wavetl= 0x79,0x3d,0x7e,0x9e,0xbe,0xbf,0xc8,0xcf,0xd4,0xd9, /正弦波頻率調(diào)整中間

28、值0xe8,0xf4,0xf8,0x7a,0xc7,0xfc,0x23,0x3d,0x53,0x64,/鋸齒波頻率調(diào)整中間值0x3c,0x1e,0x8f,0x32,0xc7,0x63,0xb1,0xd8,0xec,0xf6; /方波頻率調(diào)整中間值 uchar code sawtooth_tab= 0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c,0x20,0x24,0x28,0x2c,0x30,0x34,0x38,0x3c,0x40,0x44,0x48,0x4c,0x50,0x54,0x58,0x5c,0x60,0x64,0x68,0x6c,0x70,0x74,0

29、x78,0x7c,0x80,0x84,0x88,0x8c,0x90,0x94,0x98,0x9c,0xa0,0xa4,0xa8,0xac,0xb0,0xb4,0xb8,0xbc,0xc0,0xc4,0xc8,0xcc,0xd0,0xd4,0xd8,0xdc,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,; uchar code sine_tab256=0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0

30、xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0

31、xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,

32、0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x0

33、2,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80; void delay(uchar z)

34、uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*void sawtooth_out()uchar i; for(i=255;i0;i-) dadata=i; da_s1=0; da_s1=1; */void sawtooth_out() dadata=sawtooth_tabwavecount+;if(wavecount64) wavecount=0;da_s1=0;da_s1=1; void sine_out() dadata=sine_tabwavecount+;da_s1=0; da_s1=1; void square_out() judge=judg

35、e; if(judge=1) dadata=0xff;else dadata=0x00;da_s1=0; da_s1=1; /*1602液晶的相關(guān)函數(shù)*/#define lcd_ports p1sbit rs=p22;sbit rw=p23;sbit lcden=p24;void write_com(uchar com)rs=0;/置零,表示寫指令lcden=0;lcd_ports=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;/置1,表示寫數(shù)據(jù)(在指令所指的地方寫數(shù)據(jù))lcden=0;lcd_por

36、ts=date;delay(5);lcden=1;delay(5);lcden=0;void disp_lcd(uchar addr,uchar *temp1)uchar num;write_com(addr);delay(1); /延時(shí)一會(huì)兒?for(num=0;num2) waveform=0; break; case 0xd0: /頻率按規(guī)定單位依次增加 wavefreqwaveform+; if(wavefreqwaveform10) wavefreqwaveform=1; / /*這邊要用10,因?yàn)樗?11可靠 break; / 性更高,使加數(shù)有個(gè)上限,不會(huì)一直加下去*/ case

37、 0xb0: /頻率按規(guī)定單位依次衰減 wavefreqwaveform-; if(wavefreqwaveform1) wavefreqwaveform=10; /這邊要用1,因?yàn)樗?0可靠性更高 break;thtemp=wavethwaveform*10+(wavefreqwaveform-1); /方括號(hào)中選取第幾個(gè)數(shù)后,并把該值賦給t_temptltemp=wavetlwaveform*10+(wavefreqwaveform-1); total_freq= wavefreqwaveform * freq_unitwaveform; /求輸出頻率(個(gè)數(shù)*單位) lcd_hang25

38、=total_freq%10+0x30; /在液晶中顯示個(gè)位,(0x30 在液晶顯示中表示數(shù)字0) total_freq/=10; lcd_hang24=total_freq%10+0x30; /在液晶中顯示時(shí)十位 total_freq/=10; lcd_hang23=total_freq%10+0x30; /在液晶中顯示時(shí)百位 total_freq/=10; lcd_hang22=total_freq%10+0x30; /在液晶中顯示時(shí)千位 disp_lcd(0x80,&lcd_hang1waveform*16); /在第一行顯示 disp_lcd(0xc0,lcd_hang2); /在第二

39、行顯示ea=1; tr0=1; /開啟總中斷與定時(shí)器4.仿真結(jié)果與結(jié)果分析 圖1 鋸齒波 圖2 方波 圖3 正弦波系統(tǒng)可以改變頻率的大小,方波的頻率區(qū)間為200hz至2000hz,鋸齒波的頻率區(qū)間是10hz至100hz,正弦波的頻率區(qū)間為10hz至100hz,利用定時(shí)中斷并改變相應(yīng)的定時(shí)時(shí)間即可改變頻率的大小。五、課題12:簡(jiǎn)易溫度計(jì)1.課題任務(wù)要求及技術(shù)指標(biāo)1.1設(shè)計(jì)任務(wù):采用溫度傳感器,采集和顯示室溫,實(shí)現(xiàn)數(shù)字溫度計(jì)功能。1.2設(shè)計(jì)要求:(1)給出正確的原理圖;(2)給出正確的程序,并結(jié)合原理圖給出相應(yīng)結(jié)果。2.課題分析及設(shè)計(jì)思路2.1功能分析: 多點(diǎn)測(cè)量溫度,并在數(shù)碼管上顯示,另加報(bào)警系

40、統(tǒng)。2.2實(shí)現(xiàn)思路:基于at89c51單片機(jī)的測(cè)溫系統(tǒng),并采用了數(shù)字溫度傳感器ds1621和串行總線通信系統(tǒng)。2.3難點(diǎn)描述: 溫度的采集以及轉(zhuǎn)化顯示。3.系統(tǒng)設(shè)計(jì)(建模)3.1硬件設(shè)計(jì)(1)數(shù)字溫度傳感器斜坡累加電路重預(yù)置比較器計(jì)數(shù)溫度低敏感振蕩器重預(yù)置電路溫度寄存器溫度低敏感振蕩器計(jì)數(shù)器=0ds1621的構(gòu)成原理框圖如圖所示,在測(cè)量溫度時(shí)使用了獨(dú)有的在線溫度測(cè)量技術(shù)。它通過在一個(gè)由對(duì)溫度高度敏感的振蕩器決定的計(jì)數(shù)周期內(nèi)對(duì)溫度低敏感的振蕩器時(shí)鐘脈沖的計(jì)數(shù)值的計(jì)算來測(cè)量溫度。ds1621在計(jì)數(shù)器中預(yù)置了一個(gè)初值,它相當(dāng)于50攝氏度。如果計(jì)數(shù)周期結(jié)束之前計(jì)數(shù)器達(dá)到0,已預(yù)置了此初值的溫度寄存器中

41、的數(shù)字就會(huì)增加,從而表明溫度高于55攝氏度。與此同時(shí),計(jì)數(shù)器斜坡累加電路被重新預(yù)置一個(gè)值,然后計(jì)數(shù)器重新對(duì)時(shí)鐘計(jì)數(shù),直到計(jì)數(shù)值為0。通過改變?cè)黾拥拿?s內(nèi)的計(jì)數(shù)器的計(jì)數(shù),斜坡累加電路可以補(bǔ)償振蕩器的非線性誤差,以提高精度,任意溫度下計(jì)數(shù)器的值和每一斜坡累加電路的值對(duì)應(yīng)的計(jì)數(shù)次數(shù)須為已知。 ds1621通過計(jì)算可以得到0. 5攝氏度的精度,溫度輸出為9位,在發(fā)出讀溫度值請(qǐng)求后還會(huì)輸出兩位補(bǔ)償值。表2給出了所測(cè)的溫度和輸出數(shù)據(jù)的關(guān)系。這些數(shù)據(jù)可通過2線制串行口連續(xù)輸出,msb在前,lsb在后。(2)七段led數(shù)碼顯示電路3.2軟件流程圖(1)主程序的設(shè)計(jì)初始化n讀溫度數(shù)據(jù)并存儲(chǔ)生成地址字節(jié)1001

42、000,循環(huán)次數(shù)3延時(shí)1s以上等待結(jié)果啟動(dòng)轉(zhuǎn)換向設(shè)置/狀態(tài)寄存器設(shè)置為連續(xù)工作方式生成地址字節(jié)1001000,循環(huán)次數(shù)3次地址字節(jié)加02h 循環(huán)次數(shù)減1為0?讀溫度數(shù)據(jù)并存儲(chǔ)及顯示地址字節(jié)加02h 循環(huán)次數(shù)減1為0?nn主程序的主要功能是負(fù)責(zé)多點(diǎn)溫度數(shù)據(jù)的實(shí)時(shí)采集、傳輸,處理和顯示。其程序流程如圖所示。(2)溫度計(jì)算模塊設(shè)計(jì)計(jì)算溫度子程序?qū)膁s1621中讀取的溫度值進(jìn)行bcd碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖5-2所示。 開始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度bcd值 計(jì)算整數(shù)位溫度bcd值 結(jié)束置“+”標(biāo)志ny3.3電路圖3.4源程序#include #include #define uchar unsigned char#define uint

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論