版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計說明書</b></p><p> 課程名稱 : DSP控制技術(shù) </p><p> 題 目 : 溫度采集與顯示系統(tǒng)設(shè)計 </p><p> 專 業(yè) : </p><p> 學(xué)生姓名 :
2、 </p><p> 學(xué) 號 : </p><p> 指導(dǎo)教師 : </p><p> 設(shè)計成績 : </p><p> 2011年10月10日</p><p><b&
3、gt; 目 錄</b></p><p> 1 課程設(shè)計目的2</p><p> 2 課程設(shè)計正文2</p><p><b> 2.1系統(tǒng)分析2</b></p><p> 2.1.1 設(shè)計的任務(wù)及步驟2</p><p> 2.1.2 技術(shù)要求2</p>
4、<p> 2.1.3設(shè)計思路2</p><p> 2.2 總體設(shè)計2</p><p> 2.2.1硬件設(shè)計2</p><p> 2.2.2 系統(tǒng)框圖設(shè)計3</p><p> 2.3 元器件的選擇3</p><p> 2.3.1 單元電路設(shè)計3</p><p>
5、 2.3.2 單元模塊分析4</p><p> 2.4 程序流程圖與源程序5</p><p> 2.4.1 軟件系統(tǒng)流程圖5</p><p> 2.4.2 軟件程序設(shè)計6</p><p><b> 3 運行結(jié)果6</b></p><p> 4 課程設(shè)計總結(jié)7</p&g
6、t;<p><b> 5 參考文獻7</b></p><p><b> 附錄8</b></p><p><b> 1 課程設(shè)計目的</b></p><p> 通過我們對DSP控制器及其應(yīng)用課程的學(xué)習(xí)和理解,綜合運用課本中所學(xué)到的理論知識完成一個溫度采集與顯示的課程設(shè)計。通過這
7、次實踐鍛煉我們查閱資料、方案比較、團結(jié)合作的能力。在這個過程我們必須掌握溫度采集技術(shù)的硬件設(shè)計、熟悉A/D轉(zhuǎn)換技術(shù)和DSP液晶顯示功能的軟件設(shè)計。學(xué)會采用簡單電路的實驗調(diào)試和整機指標(biāo)測試方法,增強我們的動手能力,為以后學(xué)習(xí)和工作打下堅實基礎(chǔ)。</p><p><b> 2 課程設(shè)計正文</b></p><p><b> 2.1系統(tǒng)分析</b>
8、</p><p> 2.1.1 設(shè)計的任務(wù)及步驟</p><p> ?。?)熟悉MC1403芯片的應(yīng)用; </p><p> ?。?)根據(jù)實驗測得熱敏電阻和溫度的一些數(shù)據(jù),設(shè)計溫度——電阻公式;</p><p> ?。?)設(shè)計外部硬件電路;</p><p> ?。?)軟件完成程序流程圖設(shè)計和編程,其中包括A/D轉(zhuǎn)換和
9、液晶顯示部分;</p><p> ?。?)軟硬件聯(lián)合調(diào)試;</p><p> ?。?)書寫設(shè)計說明書。</p><p> 2.1.2 技術(shù)要求</p><p> 此系統(tǒng)利用熱敏電阻測得電阻—溫度之間的關(guān)系,找到電阻和溫度之間的代數(shù)關(guān)系,從而檢測溫度,設(shè)計硬件外擴電路,同時設(shè)計軟件程序,包括A/D程序設(shè)計,進行軟硬件聯(lián)系調(diào)試,能在液晶顯示屏
10、上顯示溫度。</p><p><b> 2.1.3設(shè)計思路</b></p><p> 系統(tǒng)首先設(shè)計溫度采集硬件電路,在多次實驗運算擬合出熱敏電阻輸出電壓值與溫度之間的函數(shù)關(guān)系,熱敏電阻的輸出的電壓值隨溫度的上升而下降,呈現(xiàn)出負系數(shù),從而運用于實驗中檢測溫度;然后將采集的溫度送入DSPTMS320F2812模數(shù)轉(zhuǎn)換模塊將電壓信號變?yōu)閿?shù)字信號,再編寫函數(shù)來控制LCD來
11、顯示相應(yīng)的溫度及相關(guān)文字。</p><p><b> 2.2 總體設(shè)計</b></p><p><b> 2.2.1硬件設(shè)計</b></p><p> TMS320F2812作為使用的DSP芯片。它包含33個電源引腳(為使器件正常運行,所有電源引腳必須正確連接且不能懸空)時鐘源模塊,DSP有六種信號可以使DSP控制器
12、復(fù)位,即電源復(fù)位、復(fù)位引腳~RS、軟件復(fù)位、非法地址復(fù)位、看門狗定時器溢出、欠壓復(fù)位六種復(fù)位信號。所以在設(shè)計的初期,把它分成了五個模塊。其中復(fù)位采用電源復(fù)位的方式,由引腳PCRESET引起。為了可靠復(fù)位,其中低電平的有效時間至少6個CPU時鐘周期。DSP最小系統(tǒng)組成框圖如圖1所示。</p><p> 圖1 DSP最小系統(tǒng)</p><p> 其中:開關(guān)SW-PB、電容C1、兩個反相器及
13、其電阻電源構(gòu)成了復(fù)位電路,晶振與兩個并聯(lián)電容接XTAL1與XTAL2構(gòu)成振蕩電路,PWM1與PWM7構(gòu)成了調(diào)制信號的輸入與輸出,旁路引腳接地,請求控制信號MP/MC與GND接地。</p><p> 2.2.2 系統(tǒng)框圖設(shè)計</p><p> 該系統(tǒng)包括溫度采集電路模塊、DSPF2812芯片、A/D轉(zhuǎn)換部分和LCD液晶顯示,首先要初始化A/D轉(zhuǎn)換模塊,然后等待中斷,當(dāng)產(chǎn)生中斷后對采集到的
14、模擬信號進行處理,為確保轉(zhuǎn)換精度要進行多次取值求平均,轉(zhuǎn)換結(jié)果放在結(jié)果寄存器的高12位上,通過編程將處理后的溫度值送到LCD上進行顯示。</p><p> 圖2 系統(tǒng)設(shè)計流程圖</p><p> 2.3 元器件的選擇</p><p> 2.3.1 單元電路設(shè)計</p><p><b> (1)設(shè)計方案</b>&l
15、t;/p><p> MC1403芯片為模數(shù)轉(zhuǎn)換提供基準(zhǔn)電壓,且輸入端接+5V電源后再并聯(lián)一個去噪聲的電容,利用熱敏電阻進行溫度采集,采集后的輸出電壓(不得大于3.3v)與DSP的P2端口23引腳相連。</p><p> (2)外擴電路設(shè)計圖</p><p> 圖3 溫度采集電路原理圖</p><p> 2.3.2 單元模塊分析</p
16、><p> ?。?)MC1403芯片的引腳結(jié)構(gòu)如下圖所示。</p><p> 圖4 MC1403芯片</p><p> Vin端口輸入一個4.5~5.0V的模擬電壓值(接P2口的1引腳),在輸入端接一個電容濾除其他頻率分量,在Vout端輸出了一個穩(wěn)定的電壓值(接P2口的23引腳),該電壓值不得大于3.3V,GND端接模擬地(接P2口的33引腳)。</p>
17、<p><b> A/D轉(zhuǎn)換模塊</b></p><p> 當(dāng)模/數(shù)轉(zhuǎn)換完成后,讀取結(jié)果寄存器前,最好先讀取模/數(shù)轉(zhuǎn)換控制寄存器ADCRL2的ADCFIF01或ADCFIF02,以確定當(dāng)前結(jié)果寄存器的狀態(tài),保證讀取的結(jié)果是正確。另外,要注意12位的轉(zhuǎn)換結(jié)果放在結(jié)果寄存器中的高12位上,該12位數(shù)據(jù)與外部模擬輸入電壓的關(guān)系為:</p><p> 12
18、位數(shù)字結(jié)果=4095*(輸入電壓/基準(zhǔn)電壓)</p><p><b> LCD液晶顯示模塊</b></p><p> DSP經(jīng)常會對讀寫周期較慢的輸入/輸出設(shè)備(如液晶顯示模塊、打印機、鍵盤等)進行訪問,通常以下兩種方法來解決DSP與這些慢速設(shè)備之間的輸入/輸出時序匹配問題。直接訪問方式是將DSP的讀寫信號限于慢速設(shè)備接口控制板引出的讀寫信號線直接相連,時序由DS
19、P內(nèi)部讀寫邏輯控制。由于慢速外設(shè)的讀寫周期相對DSP較慢,是兩者的時序匹配,還必須進行一些時序方面的控制處理。一中處理方法是軟件編程等待狀態(tài)發(fā)生器,將外部總線周期擴展到數(shù)個機器周期。由于受硬件條件的限制,這種擴展通常也是有限的。</p><p> 液晶顯示為128行和64列的矩陣,它分左右兩個平面,而一個字是16行和16列的矩陣,在按頁的顯示中每一頁是一個8行和128列的矩陣,所以每一行字是分兩頁顯示的。<
20、;/p><p> 2.4 程序流程圖與源程序</p><p> 2.4.1 軟件系統(tǒng)流程圖</p><p> 軟件系統(tǒng)流程圖如圖5所示。 </p><p><b> 圖5 程序流程圖</b></p><p> 2.4.2 軟件程序設(shè)計</p><p> 該程序主要包
21、括主程序、延時、A/D轉(zhuǎn)換,液晶屏相應(yīng)漢字顯示、溫度計算與顯示等子程序?qū)崿F(xiàn)溫度采集與顯示的功能,程序詳見附錄。</p><p><b> 3 運行結(jié)果</b></p><p><b> ?。?)運行描述</b></p><p> M1403芯片作為模數(shù)轉(zhuǎn)換提供基準(zhǔn)電壓,利用熱敏電阻進行采集,采集后的輸出電壓與DSP的P
22、2口23引腳相連。將采集到的電壓送入A/D轉(zhuǎn)換模塊,編寫程序?qū)崿F(xiàn)A/D轉(zhuǎn)換,轉(zhuǎn)換結(jié)果放在結(jié)果寄存器的高12位上,編寫函數(shù)獲取A/D轉(zhuǎn)換結(jié)果,將處理的溫度值的各個對應(yīng)顯示到LCD上。</p><p><b> ?。?)系統(tǒng)調(diào)試</b></p><p> MC1403 芯片Vin 端輸入一個+5V的模擬電壓值;在輸入端接一個電容濾除其它頻率分量;在 Vout 端輸出了一
23、個穩(wěn)定的電壓值;GND端直接接模擬地;給試驗箱供電,打開 Setup CCS2(‘C2000), 在彈出的對話框中選擇ICETEK-5100 USB Emulator for TMS320F2812 導(dǎo)入,進行配置設(shè)置然后進入 CCS2(‘C2000),打開工程文件進行編譯生成 .out 文件下載到硬盤中然后調(diào)試,觀察液晶顯示屏,第一行顯示“溫度顯示”,第二行顯示“ 溫度值 ℃”,當(dāng)用手觸摸時,溫度顯示不斷變化,實現(xiàn)了溫度的采集與現(xiàn)實。
24、</p><p><b> (3)調(diào)試結(jié)果</b></p><p> 將程序燒到實驗箱中,得到運行結(jié)果如下圖6所示。</p><p><b> 圖 6 調(diào)試結(jié)果</b></p><p><b> 4 課程設(shè)計總結(jié)</b></p><p> 通過
25、學(xué)習(xí)DSP課程我們都知道,DSP實際上也是一種單片機,它同樣是將中央處理單元、控制單元和外圍設(shè)備集成到一塊芯片上。但DSP有別于普通的單片機,它采用了多組總線技術(shù)實現(xiàn)并行運行機制,從而極大地提高了運算速度,也提供了非常靈活的指令系統(tǒng)。</p><p> 此次的課程設(shè)計我們組做的設(shè)計是—溫度采集與顯示,通過老師和同學(xué)們的努力我們終于成功完成此次課程設(shè)計的全部任務(wù),設(shè)計的一開始我們就著手準(zhǔn)備設(shè)計資料,上網(wǎng)、圖書館查
26、閱資料,我們分工明確,每個同學(xué)都有自己的任務(wù),因此工作進行得有條不紊,大家都很有責(zé)任感,認(rèn)真做好自己的工作。</p><p> 在這次課程設(shè)計中我主要負責(zé)的軟件編程部分,程序調(diào)試我采用的是CCS 2 ('C2000)軟件,至于軟件如何配置和使用,老師在上實驗課的時候已經(jīng)簡單的介紹過,所以再次看到它的時候不是很陌生,但是在用它編程序時就出現(xiàn)了很多問題,在這里我遇到了很大的困難,雖然有書籍和網(wǎng)絡(luò)上查找的輔導(dǎo)
27、資料,但是由于軟件設(shè)計是靈活的東西,它不僅需要有過硬的編程知識,還必須有靈活的應(yīng)用,因此在這方面的調(diào)試時花費了大量的時間。首先,我把編程序想的過于簡單,以為只是把每個模塊的子程序編寫成功便可以,卻忽視了模塊與模塊之間的相關(guān)性和銜接性,因此總出現(xiàn)參數(shù)定義不準(zhǔn)確和函數(shù)聲明不相符的錯誤。其次,因為自已的粗心不嚴(yán)謹(jǐn),導(dǎo)致出現(xiàn)大小寫不符,缺少分號或大括號的低級錯誤。程序語法不對,調(diào)試不過去,生成不了.out文件,不過通過請教老師和同學(xué)問題都解決了
28、,當(dāng)我看到我調(diào)試出來的結(jié)果是那種激動的心情就別提了,感覺特別有成就感。</p><p> 通過這次課程設(shè)計,不僅是我進一步加深對課本知識的理解,更讓我學(xué)會了團結(jié)合作的精神,不但鍛煉了我們動手動腦的能力,還提高了我們分析問題、解決問題的能力,在這次設(shè)計中我也學(xué)會了遇事要冷靜,團結(jié)合作,虛心請教,沒有任何事情解決不了,最后衷心的感謝始終支持我們的老師們,你們辛苦了!</p><p><
29、b> 5 參考文獻</b></p><p> [1] 萬山明.TMS320F281x DSP原理及應(yīng)用實例.北京航空航天大學(xué)出版社,2007</p><p> [2] 鄭紅,王鵬,董云鳳,吳冠.DSP應(yīng)用系統(tǒng)設(shè)計實踐.北京航空航天大學(xué)出版社,2006</p><p> [3] 徐科軍,張瀚,陳智淵.TMS320F281xDSP 原理與
30、應(yīng)用.北京航空航天大學(xué)出版社,2006</p><p><b> 附錄</b></p><p> #include "DSP281x_Device.h" // DSP281x Headerfile Include File</p><p> #include "DSP281x_Examples.h&q
31、uot; // DSP281x Examples Include File</p><p> // Prototype statements for functions found within this file.</p><p> interrupt void adc_isr(void);</p><p> // Global variables us
32、ed in this example:</p><p> #define LCDDELAY 1</p><p> #define LCDCMDTURNON 0x3f</p><p> #define LCDCMDTURNOFF 0x3e</p><p> #define LCDCMDSTARTLINE 0xc0</p>
33、<p> #define LCDCMDPAGE 0xb8</p><p> #define LCDCMDVERADDRESS 0x40</p><p> #define ADC_usDELAY 8000L</p><p> #define ADC_usDELAY2 20L</p><p> Uint16 ZhengshuT
34、,XiaoshuT,Zhongjian1,Zhongjian2;</p><p> float temp1=0;</p><p> unsigned char lcdkey[5][32];</p><p> unsigned char ledkey[12][8];</p><p> Uint16 LoopCount;</p>
35、;<p> Uint16 ConversionCount;</p><p> float temp;</p><p> Uint16 i,j;</p><p> Uint16 Voltage1[1024];</p><p> Uint16 Voltage2[1024];</p><p> vo
36、id Delay(int nDelay);</p><p> void TurnOnLCD();</p><p> void LCDCLS();</p><p> void LCDWrite(unsigned int x,unsigned int y,unsigned int LR,unsigned int n);</p><p>
37、void WriteNb(unsigned int x,unsigned int y,unsigned char *No,unsigned f,unsigned int LR);</p><p> void Wendu(float c);</p><p> void delay_loop();</p><p> void delay_loop1();</
38、p><p> void error(void);</p><p><b> //數(shù)字模塊</b></p><p> unsigned char ledkey[12][8]= //半角</p><p><b> {</b></p><p> {0x00,0x00,0x7C
39、,0x82,0x82,0x82,0x7C,0x00},//0</p><p> {0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00},//1</p><p> {0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00},//2</p><p> {0x00,0x00,0x44,0x92,0x92,0x
40、92,0x6C,0x00}, //3</p><p> {0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00}, //4</p><p> {0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00}, //5</p><p> {0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x
41、00}, //6</p><p> {0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00}, //7</p><p> {0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00}, //8</p><p> {0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00}, //9&
42、lt;/p><p> {0x00,0x00,0x00,0x66,0x66,0x00,0x00,0x00}, //: </p><p> {0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00}, //. </p><p><b> };</b></p><p> void main(v
43、oid)</p><p><b> {</b></p><p> InitSysCtrl();</p><p><b> EALLOW;</b></p><p> GpioMuxRegs.GPFMUX.all=0x0000; //I/O:0 特殊功能:1</p><p
44、> GpioMuxRegs.GPFDIR.all=0x000f;// output </p><p><b> EDIS;</b></p><p><b> DINT;</b></p><p> InitPieCtrl();</p><p> IER = 0x000
45、0; //CPU中斷允許寄存器</p><p> IFR = 0x0000;//CPU中斷標(biāo)志寄存器</p><p> InitPieVectTable();</p><p><b> EALLOW;</b></p><p> SysCtrlRegs.HISPCP.all = 0x3; // HSPCLK = S
46、YSCLKOUT/6給AD轉(zhuǎn)換時鐘提供一個6分頻</p><p><b> EDIS;</b></p><p> EALLOW; // This is needed to write to EALLOW protected register</p><p> PieVectTable.ADCINT = &adc_isr;<
47、/p><p> EDIS; // This is needed to disable write to EALLOW protected registers</p><p> InitAdc(); // 初始化AD</p><p> PieCtrlRegs.PIEIER1.bit.INTx6 = 1;</p><p> IER |
48、= M_INT1; // Enable CPU Interrupt 1</p><p> EINT; // Enable Global interrupt INTM</p><p> ERTM; // Enable Global realtime interrupt DBGM</p><p> LoopCount = 0;&
49、lt;/p><p> ConversionCount = 0;</p><p> // Configure ADC</p><p> AdcRegs.ADCMAXCONV.all = 0x0001; // Setup 2 conv's on SEQ1</p><p> AdcRegs.ADCCHSELSEQ1.bit.
50、CONV00 = 0x0; // Setup ADCINA3 as 1st SEQ1 conv.</p><p> AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; // Setup ADCINA2 as 2nd SEQ1 conv.</p><p> AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; // Enable EVAS
51、OC to start SEQ1</p><p> AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS)</p><p> // Configure EVA</p><p> // Assumes EVA Clock is already enabled in I
52、nitSysCtrl();</p><p> EvaRegs.T1CMPR = 0x0080; // Setup T1 compare value</p><p> EvaRegs.T1PR = 0x0fff; // Setup period register</p><p> EvaRegs.GPT
53、CONA.bit.T1TOADC = 1; // Enable EVASOC in EVA</p><p> EvaRegs.T1CON.all = 0x1042; // Enable timer 1 compare (up</p><p> TurnOnLCD(); //打開顯示</p><p> LCDCLS();
54、 //清除顯示內(nèi)存</p><p> *(int *)0x108000=0x80;// 初始化ICETEK-CTR</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108000=0x0;</p><p> Delay(LCDDELAY);</p><p>
55、*(int *)0x108000=0x80;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108001=LCDCMDSTARTLINE;// 設(shè)置顯示起始行</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p>
56、<p> Delay(LCDDELAY);</p><p><b> for(;;)</b></p><p><b> {</b></p><p> Wendu(temp);</p><p> LCDWrite(2,0,0,0);</p><p>
57、 LCDWrite(2,16,0,1);</p><p> LCDWrite(2,32,1,2);</p><p> LCDWrite(2,48,1,3);</p><p> LCDWrite(6,48,1,4);//在液晶屏上顯示相應(yīng)的漢字及符號</p><p> WriteNb(6,6,ledkey[ZhengshuT&0
58、x000f],0,0);</p><p> WriteNb(6,5,ledkey[(ZhengshuT&0x00f0)>>4],0,0);</p><p> WriteNb(6,2,ledkey[XiaoshuT&0x000f],0,1);</p><p> WriteNb(6,1,ledkey[(XiaoshuT&0x00
59、f0)>>4],0,1);</p><p> WriteNb(6,7,ledkey[11],0,0);//在液晶屏上顯示溫度值</p><p><b> }</b></p><p><b> }</b></p><p> interrupt void adc_isr(void)
60、</p><p><b> {</b></p><p> Voltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4;</p><p> Voltage2[ConversionCount] = AdcRegs.ADCRESULT1 >>4;</p><p
61、> if(ConversionCount == 1023) </p><p><b> {</b></p><p> ConversionCount = 0;</p><p><b> }</b></p><p> else ConversionCount++;</p>
62、<p> if(ConversionCount==0)</p><p> { temp=0;</p><p> for(i=0;i<200;i++)</p><p> temp=temp+Voltage1[i];</p><p> temp=temp/200.0;//求平均值</p><p&g
63、t; temp=temp*3.0/4095.0;</p><p><b> }</b></p><p> // Reinitialize for next ADC sequence</p><p> AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1</p>&l
64、t;p> AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit</p><p> PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE</p><p><b> return;</b><
65、;/p><p><b> }</b></p><p><b> //延時子程序</b></p><p> void Delay( int nDelay)</p><p><b> {</b></p><p> int ii,jj,kk=0;<
66、/p><p> for ( ii=0;ii<nDelay;ii++ )</p><p><b> {</b></p><p> for ( jj=0;jj<1024;jj++ )</p><p><b> {</b></p><p><b> kk
67、++;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //打開顯示子程序</b></p><p> void
68、 TurnOnLCD()</p><p><b> {</b></p><p> *(int *)0x108001=LCDCMDTURNON;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(20
69、48); </p><p> *(int *)0x108001=LCDCMDSTARTLINE;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p><b> }</
70、b></p><p><b> //清屏程序</b></p><p> void LCDCLS()</p><p><b> {</b></p><p><b> int i,j;</b></p><p> *(int *)0x10800
71、1=LCDCMDSTARTLINE;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p> for ( i=0;i<8;i++ )</p><p><b> {<
72、/b></p><p> *(int *)0x108001=LCDCMDPAGE+i;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108001=L
73、CDCMDVERADDRESS;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p> for ( j=0;j<64;j++ )</p><p><b> {</
74、b></p><p> *(int *)0x108003=0;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p><b> }</b></p>
75、<p> *(int *)0x108001=LCDCMDPAGE+i;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108001=LCDCMDVERADDRESS;
76、</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p> for ( j=0;j<64;j++ )</p><p><b> {</b></p>
77、<p> *(int *)0x108004=0;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p><b> }</b></p><p><b
78、> }</b></p><p><b> }</b></p><p> void LCDWrite(unsigned int x,unsigned int y,unsigned int LR,unsigned int n)</p><p><b> {</b></p><p&g
79、t; unsigned char lcdkey[5][32]=</p><p><b> {</b></p><p> {0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,</p><p> 0x02,0xFE,0x01,0x4
80、0,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00},//溫</p><p> {0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,</p><p> 0x80,0x60,0x1F,0x80,0x80,0x
81、42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00},//度</p><p> {0x00,0x00,0x00,0x3E,0x2A,0xEA,0x2A,0x2A,0x2A,0xEA,0x2A,0x3E,0X00,0X00,0X00,0X00,</p><p> 0x20,0x21,0x22,0x2C,0x20,0x3F,0x20,0
82、x20,0x20,0x3F,0x28,0x24,0x23,0x20,0x20,0x00},//顯</p><p> {0x00,0x20,0x20,0x22,0x22,0x22,0x22,0xE2,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00,</p><p> 0x10,0x08,0x04,0x03,0x00,0x40,0x80,0x7F,0x00,
83、0x00,0x01,0x02,0x0C,0x18,0x00,0x00},//示</p><p> {0x00,0x02,0x05,0xE2,0x18,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,</p><p> 0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x40,0x40,0x40,0x40
84、,0x40,0x20,0x18,0x00,0x00},//℃</p><p><b> };</b></p><p><b> if(LR==0)</b></p><p><b> {</b></p><p><b> int j;</b><
85、/p><p><b> int k=n;</b></p><p> *(int *)0x108001=LCDCMDPAGE+x;</p><p><b> Delay(1);</b></p><p> *(int *)0x108002=0;</p><p><b&g
86、t; Delay(1);</b></p><p> *(int *)0x108001=LCDCMDVERADDRESS+y;</p><p><b> Delay(1);</b></p><p> *(int *)0x108002=0;</p><p><b> Delay(1);<
87、/b></p><p> for(j=0;j<16;j++)</p><p><b> {</b></p><p> *(int *)0x108003=lcdkey[k][j];</p><p> Delay(10);</p><p> *(int *)0x108002=0;
88、</p><p> Delay(10);</p><p><b> }</b></p><p><b> x++;</b></p><p> *(int *)0x108001=LCDCMDPAGE+x;</p><p><b> Delay(1);<
89、/b></p><p> *(int *)0x108002=0;</p><p><b> Delay(1);</b></p><p> *(int *)0x108001=LCDCMDVERADDRESS+y;</p><p><b> Delay(1);</b></p>
90、<p> *(int *)0x108002=0;</p><p><b> Delay(1);</b></p><p> for(j=16;j<32;j++)</p><p><b> {</b></p><p> *(int *)0x108003=lcdkey[k][j
91、];</p><p> Delay(100);</p><p> *(int *)0x108002=0;</p><p> Delay(100);</p><p><b> }</b></p><p><b> }</b></p><p>&
92、lt;b> else</b></p><p><b> {</b></p><p><b> int j;</b></p><p><b> int k=n;</b></p><p> *(int *)0x108001=LCDCMDPAGE+x;&l
93、t;/p><p><b> Delay(1);</b></p><p> *(int *)0x108002=0;</p><p><b> Delay(1);</b></p><p> *(int *)0x108001=LCDCMDVERADDRESS+y;</p><p&g
94、t;<b> Delay(1);</b></p><p> *(int *)0x108002=0;</p><p><b> Delay(1);</b></p><p> for(j=0;j<16;j++)</p><p><b> {</b></p>
95、;<p> *(int *)0x108004=lcdkey[k][j];</p><p> Delay(100);</p><p> *(int *)0x108002=0;</p><p> Delay(100);</p><p><b> }</b></p><p>&l
96、t;b> x++;</b></p><p> *(int *)0x108001=LCDCMDPAGE+x;</p><p><b> Delay(1);</b></p><p> *(int *)0x108002=0;</p><p><b> Delay(1);</b>
97、</p><p> *(int *)0x108001=LCDCMDVERADDRESS+y;</p><p><b> Delay(1);</b></p><p> *(int *)0x108002=0;</p><p><b> Delay(1);</b></p><p
98、> for(j=16;j<32;j++)</p><p><b> {</b></p><p> *(int *)0x108004=lcdkey[k][j];</p><p> Delay(100);</p><p> *(int *)0x108002=0;</p><p>
99、 Delay(100);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void WriteNb(unsigned int x,unsigned int y,unsigned cha
100、r *No,unsigned f,unsigned int LR)</p><p><b> {</b></p><p><b> int i;</b></p><p><b> y*=8;</b></p><p> *(int *)0x108001=LCDCMDPAG
101、E+x;// 設(shè)置操作頁=1</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p> *(int *)0x108001=LCDCMDVERADDRESS+y;// 起始列=8</p><
102、p> Delay(LCDDELAY);</p><p> *(int *)0x108002=0;</p><p> Delay(LCDDELAY);</p><p><b> if(LR==1)</b></p><p> for(i=0;i<8;i++)</p><p>
103、<b> {</b></p><p><b> if(f==1)</b></p><p> *(int*)0x108004=~No[i];</p><p><b> else </b></p><p> *(int*)0x108004=No[i];</p>
104、<p> Delay(LCDDELAY);</p><p> *(int*)0x108002=0;</p><p> Delay(LCDDELAY); </p><p><b> }</b></p><p><b> else</b></p><
105、p> for(i=0;i<8;i++)</p><p><b> {</b></p><p><b> if(f==1)</b></p><p> *(int*)0x108003=~No[i];</p><p><b> else </b></p&g
106、t;<p> *(int*)0x108003=No[i];</p><p> Delay(LCDDELAY);</p><p> *(int*)0x108002=0;</p><p> Delay(LCDDELAY); </p><p><b> } </b></p>
107、<p><b> }</b></p><p><b> //溫度計算子程序</b></p><p> void Wendu(float c)</p><p><b> {</b></p><p> temp1=52-30*c;</p><
108、;p> ZhengshuT=(int)temp1;</p><p> XiaoshuT=(int)((temp1-ZhengshuT)*100);</p><p> Zhongjian1=ZhengshuT/10;</p><p> Zhongjian2=ZhengshuT%10;</p><p> ZhengshuT=(Zh
109、ongjian1<<4)|Zhongjian2;</p><p> Zhongjian1=XiaoshuT/10;</p><p> Zhongjian2=XiaoshuT%10;</p><p> XiaoshuT=(Zhongjian1<<4)|Zhongjian2;</p><p><b> }
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 溫度采集顯示系統(tǒng)課程設(shè)計
- dsp課程設(shè)計---溫度采集與液晶屏顯示控制
- 溫度采集及顯示課程設(shè)計
- 溫度采集附顯示課程設(shè)計課題論文
- 溫度采集系統(tǒng)課程設(shè)計
- 遠程溫度控制課程設(shè)計報告---遠程智能溫度采集和顯示系統(tǒng)
- 無線溫度采集系統(tǒng)課程設(shè)計
- 溫度顯示控制系統(tǒng)課程設(shè)計
- 糧庫溫度測量顯示系統(tǒng)課程設(shè)計
- 溫度顯示控制系統(tǒng)課程設(shè)計
- 課程設(shè)計---模擬溫度采集監(jiān)控系統(tǒng)
- 溫度控制顯示課程設(shè)計
- 單片機原理與接口技術(shù)課程設(shè)計--溫度采集顯示系統(tǒng)
- 微機原理課程設(shè)計--溫度采集系統(tǒng)
- 多路溫度采集課程設(shè)計
- 溫度顯示控制系統(tǒng)課程設(shè)計.doc
- 多路溫度采集課程設(shè)計
- 溫度采集與控制課程設(shè)計報告
- 課程設(shè)計報告--溫度顯示儀
- 溫度測量顯示電路課程設(shè)計--溫度測量顯示電路設(shè)計
評論
0/150
提交評論