




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、信息與電氣工程學(xué)院課程設(shè)計(jì)說明書(2010/2011學(xué)年第二學(xué)期)課程名稱 : dsp控制器及其應(yīng)用 題 目 : 溫度采集與顯示 專業(yè)班級 : 學(xué)生姓名 : 學(xué) 號 : 指導(dǎo)教師 : 設(shè)計(jì)周數(shù) : 2周 設(shè)計(jì)成績 : 2011年7月7日1 課程設(shè)計(jì)目的通過我們對dsp控制器及其應(yīng)用課程的學(xué)習(xí)和理解,綜合運(yùn)用課本中所學(xué)到的理論知識完成一個溫度采集與顯示的課程設(shè)計(jì)。通過這次實(shí)踐鍛煉我們查閱資料、方案比較、團(tuán)結(jié)合作的能力。在這個過程我們必須掌握溫度采集技術(shù)的硬件設(shè)計(jì)、熟悉a/d轉(zhuǎn)換技術(shù)和dsp液晶顯示功能的軟件設(shè)計(jì)。學(xué)會采用簡單電路的實(shí)驗(yàn)調(diào)試和整機(jī)指標(biāo)測試方法,增強(qiáng)我們的動手能力,為以后學(xué)習(xí)和工作打
2、下堅(jiān)實(shí)基礎(chǔ)。2 課程設(shè)計(jì)正文2.1 系統(tǒng)分析2.1.1 設(shè)計(jì)的任務(wù)及步驟(1)熟悉mc1403芯片的應(yīng)用; (2)根據(jù)實(shí)驗(yàn)測得熱敏電阻和溫度的一些數(shù)據(jù),設(shè)計(jì)溫度電阻公式; (3)設(shè)計(jì)外部硬件電路; (4)軟件完成程序流程圖設(shè)計(jì)和編程,其中包括a/d轉(zhuǎn)換和液晶顯示部分; (5)軟硬件聯(lián)合調(diào)試;(6)書寫設(shè)計(jì)說明書。2.1.2設(shè)計(jì)思路 首先設(shè)計(jì)溫度采集電路,由于考慮到使用的是非線性負(fù)溫度系數(shù)的熱敏電阻,因此采用了橋式電路盡量減小因外接不必要因素導(dǎo)致的誤差,通過多次試驗(yàn)測得幾個點(diǎn),并擬合出一條合適的線性函數(shù)關(guān)系。其次進(jìn)行軟件設(shè)計(jì),主要包括ad轉(zhuǎn)換模塊、液晶顯示模塊、算法轉(zhuǎn)換模塊以及主函數(shù)模塊。最后進(jìn)
3、行軟硬件聯(lián)系調(diào)試,并能在液晶上正常顯示溫度值2.2 總體設(shè)計(jì)2.2.1 硬件設(shè)計(jì)tms320f2812作為本次課設(shè)使用的dsp芯片。它包含33個電源引腳(為使器件正常運(yùn)行,所有電源引腳必須正確連接且不能懸空)時鐘源模塊,dsp有六種信號可以使dsp控制器復(fù)位,即電源復(fù)位、復(fù)位引腳rs、軟件復(fù)位、非法地址復(fù)位、看門狗定時器溢出、欠壓復(fù)位六種復(fù)位信號。所以在設(shè)計(jì)的初期,把它分成了五個模塊。其中復(fù)位采用電源復(fù)位的方式,由引腳pcreset引起。為了可靠復(fù)位,其中低電平的有效時間至少6個cpu時鐘周期。dsp最小系統(tǒng)組成框圖如圖1所示。圖1 dsp最小系統(tǒng)其中:開關(guān)sw-pb、電容以及電阻構(gòu)成一個簡單
4、的撫慰電路;晶振與兩個并聯(lián)電容接在xtal1與xtal2為2812提供外部時鐘;ht7133芯片將5v直流電源轉(zhuǎn)換為3.3v直流電源構(gòu)成電源模塊為2812供電。2.2.2系統(tǒng)框圖設(shè)計(jì)該系統(tǒng)包括溫度采集模塊、f2812芯片、ad轉(zhuǎn)換模塊以及液晶顯示模塊,首先通過熱敏電阻對外界溫度的變化,從而改變其電位的變化,f2812芯片等待中斷并接收數(shù)據(jù),然后送入ad轉(zhuǎn)換模塊,ad對模擬信號進(jìn)行轉(zhuǎn)換,并將轉(zhuǎn)換結(jié)果存放在結(jié)果寄存器的高12位,為保證數(shù)據(jù)精確多次采樣求平均值,最后通過算法轉(zhuǎn)換,將結(jié)果顯示在lcd液晶上。系統(tǒng)設(shè)計(jì)流程如圖2所示。圖2 系統(tǒng)設(shè)計(jì)流程圖2.3 單元電路的設(shè)計(jì)2.3.1溫度采集電路考慮到此
5、次使用的是非線性負(fù)溫度系數(shù)的熱敏電阻,因此采用橋式電路盡量確保其精度,并使用低壓基準(zhǔn)芯片mc1403為電路提供基準(zhǔn)電壓,確保其盡量減少外界不必要因素的影響。溫度采集電路如圖3所示。圖3 溫度采集電路2.3.2單元模塊的分析(1)mc1403低壓基準(zhǔn)芯片引腳如圖4所示。圖4 mc1403低壓基準(zhǔn)芯片引腳圖vin端口輸入一個4.540v的模擬電壓值(接p2口的1引腳),在vout端輸出了一個穩(wěn)定的電壓值(接p2口的1引腳,為ad模塊提供參考模擬高電平),gnd端接模擬地(接p2口的33引腳)為ad提供參考模擬低電平,并與數(shù)字地短接。(2)ad轉(zhuǎn)換模塊12位數(shù)字結(jié)果=4095*(輸入電壓/基準(zhǔn)電壓)
6、基準(zhǔn)電壓:3v輸入電壓:a/d采集的電壓12位數(shù)字結(jié)果:12位的轉(zhuǎn)換結(jié)果是放在結(jié)果寄存器的高12位上。(3)lcd液晶顯示模塊液晶顯示為128行和64列的矩陣,它分左右兩個平面,而一個字是16行和16列的矩陣,在按頁的顯示中每一頁是一個8行和128列的矩陣,所以每一行字是分兩頁顯示的系統(tǒng)設(shè)計(jì)總電路圖如圖5所示。圖.5 系統(tǒng)設(shè)計(jì)總電路圖2.4 軟件程序設(shè)計(jì)2.4.1 軟件系統(tǒng)流程圖圖6 軟件系統(tǒng)流程圖3聯(lián)機(jī)調(diào)試調(diào)試結(jié)果如圖7 所示。圖7 聯(lián)機(jī)調(diào)試結(jié)果4課程設(shè)計(jì)總結(jié)這次課程設(shè)計(jì)除了關(guān)于dsp方面的心得體會,還有是關(guān)于人與人之間關(guān)系方面的。在這期間,我得到了很多同學(xué)的幫助。我本人對dsp也并不是很熟
7、悉,學(xué)的東西應(yīng)用不是很好,理論聯(lián)系不了實(shí)際。以前的c語言沒學(xué)好,一開始的程序這塊兒就要令我束手無策了。后來請教同學(xué)和老師,看他邊做邊給我講解,是我取得了很大的進(jìn)步。最后說明自己對這門課程的感受,課堂教學(xué)考慮到大多數(shù)同學(xué)的需求,主要強(qiáng)調(diào)“基本”基本知識、基本理論、基本方法、基本技能。而這次設(shè)計(jì)正是為我們提供了一個深入學(xué)習(xí)、探索的機(jī)會,成為課堂教學(xué)的有益補(bǔ)充。課程設(shè)計(jì)誠然是一門專業(yè)課,給我很多專業(yè)知識以及專業(yè)技能上的提升,同時又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時,設(shè)計(jì)讓我感觸很深。使我對抽象的理論有了具體的認(rèn)識?;仡櫰鸫苏n程設(shè)計(jì),至今我仍感慨頗多,從理論到
8、實(shí)踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。 實(shí)驗(yàn)過程中,也對團(tuán)隊(duì)精神的進(jìn)行了考察,讓我們在合作起來更加默契,在成功后一起體會喜悅的心情。果然是團(tuán)結(jié)就是力量,只有互相之間默契融洽的配合才能換來最終完美的結(jié)果。此次設(shè)計(jì)也讓我明白
9、了思路即出路,有什么不懂不明白的地方要及時請教或上網(wǎng)查詢,只要認(rèn)真鉆研,動腦思考,動手實(shí)踐,就沒有弄不懂的知識,收獲頗豐。5 參考文獻(xiàn)1 蘇奎峰,呂強(qiáng),.tms32ox281xdsp原理及c程序開發(fā). 北京航空航天大學(xué)出版社,20082 郁有文,常健,程繼紅.傳感器原理及工程應(yīng)用.西安電子科技大學(xué)出版社,2008主程序模塊代碼:#include dsp281x_device.h / dsp281x headerfile include file#include dsp281x_examples.h / dsp281x examples include file/聲明子函數(shù)interrupt v
10、oid adc_isr(void);void wendu(float c);void delay( int ndelay);void turnonlcd();void lcdcls();void lcdwrite(unsigned int x,unsigned int y,unsigned int lr,unsigned int n);void writenb(unsigned int x,unsigned int y,unsigned char *no,unsigned f,unsigned int lr);/定義全局變量uint16 loopcount;uint16 conversionc
11、ount;uint16 voltage11024;uint16 voltage21024;float temp;float temperature;uint16 i,j;int t_tempe,d_tempe,t_tempe0,t_tempe1; /溫度的整數(shù)部分和小數(shù)部分/宏定義#define lcddelay 1#define lcdcmdturnon 0x3f#define lcdcmdturnoff 0x3e#define lcdcmdstartline 0xc0#define lcdcmdpage 0xb8#define lcdcmdveraddress 0x40/定義數(shù)字字模uns
12、igned char ledkey108=0x00,0x00,0x7c,0x82,0x82,0x82,0x7c,0x00,/00x00,0x00,0x00,0x84,0xfe,0x80,0x00,0x00,/10x00,0x00,0x84,0xc2,0xa2,0x92,0x8c,0x00,/20x00,0x00,0x44,0x92,0x92,0x92,0x6c,0x00,/30x00,0x00,0x30,0x28,0x24,0xfe,0x20,0x00,/40x00,0x00,0x4e,0x92,0x92,0x92,0x62,0x00,/50x00,0x00,0x7c,0x92,0x92,0x
13、92,0x64,0x00,/60x00,0x00,0x02,0xc2,0x32,0x0a,0x06,0x00,/70x00,0x00,0x6c,0x92,0x92,0x92,0x6c,0x00,/80x00,0x00,0x4c,0x92,0x92,0x92,0x7c,0x00/9;main() initsysctrl();/初始化cpu eallow; sysctrlregs.hispcp.all = 0x3; / hspclk = sysclkout/6 edis; dint; initpiectrl();/初始化pie寄存器 ier = 0x0000;/ier為中斷使能寄存器,賦值清0 i
14、fr = 0x0000;/中斷標(biāo)志寄存器,復(fù)位 initpievecttable();/初始化向量表 eallow; / this is needed to write to eallow protected register pievecttable.adcint = &adc_isr;/把中斷首地址賦值給tit0 edis; / this is needed to disable write to eallow protected registers initadc(); / 初始化ad piectrlregs.pieier1.bit.intx6 = 1;/使用6號中斷 ier |= m_
15、int1; / enable cpu interrupt 1使用第一組中斷 eint; / enable global interrupt intm ertm; / enable global realtime interrupt dbgm loopcount = 0; conversioncount = 0;turnonlcd(); /打開顯示 lcdcls(); /清除顯示內(nèi)存 *(int *)0x108000=0x80;/ 初始化icetek-ctrdelay(lcddelay);*(int *)0x108000=0x0;delay(lcddelay);*(int *)0x108000=
16、0x80;delay(lcddelay);*(int *)0x108001=lcdcmdstartline;/ 設(shè)置顯示起始行delay(lcddelay);*(int *)0x108002=0;delay(lcddelay); for(;) wendu(temp); lcdwrite(2,0,0,0); lcdwrite(2,16,0,1); lcdwrite(2,32,1,2); lcdwrite(2,48,1,3); lcdwrite(6,48,1,4);/在液晶屏上顯示相應(yīng)的漢字及符號 writenb(6,6,ledkeyt_tempe0&0x000f,0,0); writenb(6,
17、5,ledkey(t_tempe1&0x000f),0,0); writenb(6,2,ledkeyd_tempe&0x000f,0,1);6 上位機(jī)程序設(shè)計(jì)(1) 控制界面如下(2) 上位機(jī)程序如下:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;using system.io;using system.io.ports;nam
18、espace weuduceliang public partial class form1 : form string serialreadstring, ss, cc, string1; int i = 0; public form1() initializecomponent(); timer1.interval =1;/設(shè)置timer控件時間間隔 timer1.enabled = false; serialport1.databits = 8; serialport1.stopbits = system.io.ports.stopbits.one; serialport1.readbu
19、ffersize = 500000; serialport1.rtsenable = true; /如果是rs232轉(zhuǎn)rs485,此句必須要,否則不能通訊 serialport1.newline = rn; private void button1_click(object sender, eventargs e) if (button1.text = 打開串口) if (!serialport1.isopen) /如果串口是關(guān)閉的 /設(shè)定串口信息和波特率 serialport1.portname = bobox1.selecteditem.tostring(); serialport1.ba
20、udrate = convert.toint32(bobox2.selecteditem.tostring(); serialport1.parity = parity.none; serialport1.databits = convert.toint16(bobox4.selecteditem.tostring(); serialport1.stopbits = stopbits.one; try serialport1.open(); /打開串口 button1.text = 關(guān)閉串口; /改變按鈕上的字符 combobox1.enabled = false; combobox2.ena
21、bled = false; combobox3.enabled = false; combobox4.enabled = false; combobox5.enabled = false; catch messagebox.show(串口打開失敗!n可能是串口已被占用!); else /如果串口是打開的 serialport1.close(); /關(guān)閉串口 button1.text = 打開串口; /改變按鈕上的字符 combobox1.enabled = true; combobox2.enabled = true; combobox3.enabled = true; combobox4.e
22、nabled = true; combobox5.enabled = true; else serialport1.close(); serialport1.dispose(); /關(guān)閉串口 button1.text = 打開串口; /改變按鈕上的字符 combobox1.enabled = true; combobox2.enabled = true; combobox3.enabled = true; combobox4.enabled = true; combobox5.enabled = true; btncj.enabled = true; button4.enabled = fal
23、se; private void btncj_click(object sender, eventargs e) try if (serialport1.isopen) btncj.enabled = false; button4.enabled = true; serialreadstring = serialport1_datareceived1(); if (serialreadstring != &(serialreadstring != cc| textbox1.text = ) textbox1.appendtext(時間: + datetime.now.tostring() +
24、溫度: + serialreadstring + + rn); cc = serialreadstring; timer1.start(); else messagebox.show(串口未打開請先打開串口!); catch/拋出異常 messagebox.show(沒找到設(shè)備); serialport1.close(); serialport1.dispose(); private void button4_click1(object sender, eventargs e) timer1.stop(); button4.enabled = false; btncj.enabled = tr
25、ue; string1 = ; private void button2_click(object sender, eventargs e) /清除listbox控件中的內(nèi)容 textbox1.text = ; private void button3_click(object sender, eventargs e) /保存溫度數(shù)據(jù) system.io.filestream objfile; savefiledialog1.showdialog(); if (savefiledialog1.filename != null) objfile = system.io.file.create(s
26、avefiledialog1.filename); objfile.close(); objfile.close(); objfile.dispose(); system.io.streamwriter objfiles = new streamwriter(savefiledialog1.filename); objfiles.write(textbox1.text); objfiles.close(); objfiles.dispose(); else messagebox.show(路徑不可為空!); private void timer1_tick(object sender, eve
27、ntargs e) serialreadstring = serialport1_datareceived1(); if (serialreadstring != & (serialreadstring != cc | textbox1.text = ) textbox1.appendtext(時間: + datetime.now.tostring() + 溫度: + serialreadstring + + rn); cc = serialreadstring; serialreadstring = ; else public bool receivedata(byte data, int
28、offset, int count, serialport serialport) if (serialport1.isopen) try serialport1.read(data, offset, count); return true; catch return false; else return false; private void combobox1_selectedindexchanged(object sender, eventargs e) this.serialport1.portname = bobox1.selecteditem.tostring(); private
29、 void combobox2_selectedindexchanged(object sender, eventargs e) this.serialport1.baudrate = convert.toint32(bobox2.selecteditem); private void combobox3_selectedindexchanged(object sender, eventargs e) switch (bobox3.selecteditem.tostring() case none: this.serialport1.parity = parity.none; break; c
30、ase even: this.serialport1.parity = parity.even; break; case odd: this.serialport1.parity = parity.odd; break; default: this.serialport1.parity = parity.none; break; private void combobox4_selectedindexchanged(object sender, eventargs e) this.serialport1.databits = convert.toint16(bobox4.selectedite
31、m); private void combobox5_selectedindexchanged(object sender, eventargs e) switch (convert.toint16(bobox5.selecteditem) case 1: this.serialport1.stopbits = stopbits.one; break; case 2: this.serialport1.stopbits = stopbits.two; break; default: this.serialport1.stopbits = stopbits.one; break; private void form1_load(object sender, eventargs e) #region -以下各賦值語句都會觸發(fā)相應(yīng)的selectedindexchanged事件,同時會對串口進(jìn)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園小班游戲安全教育
- 技術(shù)投標(biāo)文件編制課件
- 2025年中學(xué)教師資格考試《綜合素質(zhì)》核心考點(diǎn)特訓(xùn)題庫(含答案)考前沖刺
- 2025年上海標(biāo)準(zhǔn)租賃合同下載
- 急診室的戰(zhàn)爭:醫(yī)生面對的考驗(yàn)
- 2025-2030紅茶行業(yè)市場現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評估規(guī)劃分析研究報(bào)告
- 2025-2030糖果市場發(fā)展分析及行業(yè)投資戰(zhàn)略研究報(bào)告
- 2025年個人借款合同(購房借款)
- 2025-2030筆記本電腦企業(yè)創(chuàng)業(yè)板IPO上市工作咨詢指導(dǎo)報(bào)告
- 2025-2030移動電源行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報(bào)告
- 上海七年級數(shù)學(xué)下期末(壓軸60題16個考點(diǎn))分析版
- 教學(xué)能力比賽學(xué)情分析圖(源圖可編輯)
- 2024屆上海市南匯區(qū)英語四年級第二學(xué)期期中調(diào)研試題含答案
- 《全面系統(tǒng)企業(yè)微信使用教程課件》
- 科目三新規(guī)教學(xué)大綱
- 住院醫(yī)師規(guī)范化培訓(xùn)臨床實(shí)踐能力考核考官選派條件和主要職責(zé)
- 人教版數(shù)學(xué)八年級上學(xué)期《三角形》單元檢測題(附答案)
- 初中數(shù)學(xué)-圖形的平移教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 蘭州交通大學(xué)《C語言程序設(shè)計(jì)》2016-2017學(xué)年期末試卷
- 心電圖考試題及答案
- 質(zhì)量管理的標(biāo)準(zhǔn)管理規(guī)程SMP
評論
0/150
提交評論