找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5668|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)測溫系統(tǒng)設(shè)計(jì)報(bào)告 含上位機(jī)與下位機(jī)程序與實(shí)物制作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:232645 發(fā)表于 2017-9-12 18:41 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
單片機(jī)接口設(shè)計(jì)報(bào)告
——測溫系統(tǒng)設(shè)計(jì)

姓名安潔
學(xué)號201*815
班級試1504班     
時間2017/6/29 ~ 2017/7/8  

目錄
一、 設(shè)計(jì)內(nèi)容與要求
二、 設(shè)計(jì)方案
三、 方案實(shí)現(xiàn)
3.1系統(tǒng)的軟件設(shè)計(jì)
1、 主程序
2、 AD轉(zhuǎn)換程序
3、 溫度顯示程序
4、 步進(jìn)電機(jī)控制程序
5、 中斷系統(tǒng)程序
3.2系統(tǒng)的硬件設(shè)計(jì)
1、 時鐘電路
2、 復(fù)位電路
3、 AD轉(zhuǎn)換
4、 步進(jìn)電機(jī)
5、 數(shù)碼顯示
6、 串口通信
7、 完整原理圖
四、 系統(tǒng)調(diào)試
1、功能子程序的調(diào)試
2、程序流程的調(diào)試
3、程序的通調(diào)
五、 結(jié)論
參考文獻(xiàn)
附錄

1、設(shè)計(jì)內(nèi)容與要求

1、通過按鍵設(shè)置溫度上、下限,基準(zhǔn)溫度20℃,AD信號的0V~5V對應(yīng)-20℃~70℃。

2、讀入A/D轉(zhuǎn)換數(shù)據(jù),若數(shù)據(jù)<=下限,則顯示溫度、溫度調(diào)節(jié)范圍并顯示L,并使步進(jìn)電機(jī)正轉(zhuǎn),若數(shù)據(jù)>上限,則顯示溫度、溫度調(diào)節(jié)范圍并顯示H,并使步進(jìn)電機(jī)反轉(zhuǎn),下限<若數(shù)據(jù)<=上限,則顯示溫度、溫度調(diào)節(jié)范圍并顯示C,步進(jìn)電機(jī)不轉(zhuǎn)動。

3、本機(jī)地址為08H,當(dāng)接到上位機(jī)發(fā)的08H(P1.0口接開關(guān),高電平發(fā)送)時,則回發(fā)08H,且本機(jī)P1.4口輸出高電平,上位機(jī)接受后P1.3口輸出高電平。

當(dāng)接到上位機(jī)發(fā)的AAH(P1.1口接開關(guān),高電平發(fā)送)時,則將當(dāng)前溫度發(fā)給上位機(jī),且本機(jī)P1.5口輸出高電平,上位機(jī)數(shù)碼管顯示溫度。

當(dāng)收到上位機(jī)發(fā)的55H(P1.2口接開關(guān),高電平發(fā)送)時,下位機(jī)修改設(shè)定上、下限,且本機(jī)P1.6口輸出高電平,數(shù)碼管全部顯示0。

當(dāng)收到上位機(jī)發(fā)送的信號不是上面三個時,本機(jī)P1.7口輸出高電平,數(shù)碼管全部顯示0。

2、設(shè)計(jì)方案

本設(shè)計(jì)采用AT89C51單片機(jī)實(shí)現(xiàn)。單片機(jī)軟件編程的自由度大,可通過編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實(shí)現(xiàn)簡單,安裝方便,可以與PC機(jī)進(jìn)行通信。

本設(shè)計(jì)利用單片機(jī)最小系統(tǒng)和ADC0809芯片、電位計(jì)設(shè)計(jì)溫度采集系統(tǒng)。并設(shè)計(jì)一個人機(jī)接口電路:鍵盤采用獨(dú)立式按鍵(功能是調(diào)節(jié)溫度的上下限),同時設(shè)計(jì)了步進(jìn)電機(jī)控制電路,顯示器采用共陰極LED顯示。系統(tǒng)的總體設(shè)計(jì)方案框圖如圖1所示:

圖1

按照系統(tǒng)設(shè)計(jì)功能的要求,系統(tǒng)主要由單片機(jī)、ADC0809芯片、電位器、步進(jìn)電機(jī)、LED數(shù)碼顯示管和PC機(jī)等組成,如圖2所示:

圖2

系統(tǒng)的硬件電路主要由復(fù)位電路、顯示電路、AD轉(zhuǎn)換電路、步進(jìn)電路控制電路、晶振電路組成,系統(tǒng)總體結(jié)構(gòu)方框圖如圖3所示:

圖3

3、方案實(shí)現(xiàn)3.1系統(tǒng)的軟件設(shè)計(jì)

本系統(tǒng)的軟件設(shè)計(jì)主要可分為主程序,AD轉(zhuǎn)換程序,溫度顯示程序,步進(jìn)電機(jī)控制程序,中斷系統(tǒng)程序等幾個模塊。

1、主程序

⑴功能

主程序的主要功能是負(fù)責(zé)讀取當(dāng)前溫度,并進(jìn)行判斷,從而實(shí)時顯示溫度并根據(jù)判斷結(jié)果控制步進(jìn)電機(jī)的工作。

⑵程序流程圖

如圖4所示:

圖4

2、AD轉(zhuǎn)換程序

⑴功能

AD轉(zhuǎn)換程序分為AD采樣程序和采樣溫度轉(zhuǎn)換程序兩部分。其中,AD采樣程序的功能是啟動AD轉(zhuǎn)換并在100μs的延時后得到AD采樣值;采樣溫度轉(zhuǎn)換程序的功能是得到16次AD采樣值,然后取平均值,得到平均AD采樣值,并通過公式將平均AD采樣值轉(zhuǎn)換為實(shí)際溫度。

⑵程序流程圖

如圖5所示:

圖5

3、溫度顯示程序

⑴功能

溫度顯示程序分為數(shù)碼管溫度顯示程序和顯示數(shù)據(jù)刷新程序。數(shù)碼管溫度顯示程序的功能是將數(shù)碼管需要顯示的溫度與溫度上下限進(jìn)行比較,并送入相應(yīng)的段碼,讓數(shù)碼管顯示溫度的正負(fù)(若為正顯示0,若為負(fù)顯示負(fù)號)、當(dāng)前溫度、溫度狀態(tài)(L、C、H)以及溫度上下限的范圍;顯示數(shù)據(jù)刷新程序的功能是利用定時器T0,定時1ms,每隔1ms從右到左依次點(diǎn)亮數(shù)碼管,并進(jìn)行循環(huán),數(shù)碼管能夠進(jìn)行動態(tài)、平穩(wěn)的顯示。

⑵程序流程圖

如圖6所示:

圖6

4、步進(jìn)電機(jī)控制程序

⑴功能

步進(jìn)電機(jī)控制程序的功能是通過判斷步進(jìn)電機(jī)工作方式控制位,控制步進(jìn)電機(jī)的正轉(zhuǎn)以及反轉(zhuǎn)。

⑵程序流程圖

如圖7所示:

圖7

5、中斷系統(tǒng)程序

⑴功能

中斷系統(tǒng)程序分為溫度上下限設(shè)定程序和串口通信程序。溫度上下設(shè)定程序的功能是通過兩個外部中斷程序,采用下降沿觸發(fā)方式并設(shè)置兩個按鍵來設(shè)定上下限;串口通信程序的功能是通過串口中斷,并選擇串行口方式2的工作方式,進(jìn)行數(shù)據(jù)的接受和發(fā)送。

⑵程序流程圖

如圖8所示:

圖8

3.2系統(tǒng)的硬件設(shè)計(jì)

本系統(tǒng)的硬件設(shè)計(jì)主要可分為時鐘電路、復(fù)位電路、AD轉(zhuǎn)換、步進(jìn)電機(jī)、數(shù)碼顯示及串口通信等幾個模塊。

1、時鐘電路

如圖9:

圖9

2、復(fù)位電路

如圖10:

圖10

3、AD轉(zhuǎn)換

如圖11:

圖11

4、步進(jìn)電機(jī)

如圖12:

圖12

5、數(shù)碼顯示

如圖13:

圖13

6、串口通信

如圖14:

圖14

7、完整原理圖

如圖15:

圖15

4、系統(tǒng)調(diào)試

系統(tǒng)的軟件調(diào)試借助于Lab6000通用微控制器實(shí)驗(yàn)系統(tǒng)。在進(jìn)行系統(tǒng)軟件的連續(xù)調(diào)試之前要先進(jìn)行軟件的初調(diào),就是要使各個子程序模塊運(yùn)行正確,程序的運(yùn)行流程正確。軟件調(diào)試主要分以下幾個步驟進(jìn)行:

1、功能子程序的調(diào)試

功能子程序的調(diào)試包括AD轉(zhuǎn)換、溫度顯示以及步進(jìn)電機(jī)控制等子程序的調(diào)試。在調(diào)試功能子程序時,許多參數(shù)都是未知的,要根據(jù)其所需的條件,給出假定的數(shù)據(jù),使其運(yùn)行,如果能完成預(yù)定的處理功能或與手工計(jì)算的結(jié)果相符,就說明該子程序己調(diào)試通過。調(diào)試時由小到大,由里到外。例如,調(diào)試溫度顯示子程序時,先調(diào)通其需要的AD轉(zhuǎn)換子程序和參數(shù)處理子程序,然后將它們連起來進(jìn)行通調(diào)。通調(diào)時,也是假定一些數(shù)據(jù)、參數(shù)和初始條件,然后運(yùn)行程序。當(dāng)運(yùn)算結(jié)果與手工計(jì)算的結(jié)果相同時,該算法子程序則調(diào)試完成,反之,就要進(jìn)行相應(yīng)的修改。其它子程序的調(diào)試同理。

2、程序流程的調(diào)試

程序流程的調(diào)試主要是查看程序運(yùn)行的步驟是否正確,在某時刻程序運(yùn)行所處的位置是否正確,是否能正確運(yùn)行各個中斷服務(wù)程序。在調(diào)試過程中,在各個中斷服務(wù)子程序設(shè)置斷點(diǎn),然后運(yùn)行程序,查看程序是否能運(yùn)行到所有的斷點(diǎn),若所有斷點(diǎn)都能運(yùn)行到,則程序流程基本正確。

3、程序的通調(diào)

在完成整個程序流程的調(diào)試后,運(yùn)行程序,進(jìn)行程序的通調(diào),通過器件的現(xiàn)象來判斷程序的正確性。若不正確則設(shè)置斷點(diǎn)檢查錯誤。

如圖16為上位機(jī)調(diào)試實(shí)物圖:

圖16

如圖17為下位機(jī)調(diào)試實(shí)物圖:

圖17

5、結(jié)論

本次測溫系統(tǒng)設(shè)計(jì)主要由AT89C51和ADC0809來實(shí)現(xiàn)功能。因此需要通過查閱資料來了解這些器件的基本結(jié)構(gòu),主要功能和注意事項(xiàng)等等。

整個設(shè)計(jì)從確定題目,到尋找相關(guān)資料,再到選擇合適的器件,接著對電路圖的繪制,程序的編寫,最終調(diào)試。一步步走過來,一點(diǎn)點(diǎn)的進(jìn)步,花了大量的時間和精力,而成果也是喜人的。

通過這次設(shè)計(jì),不僅鍛煉自己分析問題、處理問題的能力,還提高了自己的動手能力。在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)單片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這是我在這次課程設(shè)計(jì)中的最大收獲。但同時也發(fā)現(xiàn)了自己的不足,特別是在程序的編寫方面,有些細(xì)節(jié)部分沒有考慮到,比如開始沒有考慮到雙機(jī)通信時獨(dú)立運(yùn)行的問題,這樣編出的程序運(yùn)行起來效率會大大降低,沒有實(shí)用性,但在不斷的改進(jìn)中,最終解決了這個問題;但在上位機(jī)實(shí)現(xiàn)對下位機(jī)的溫度調(diào)控這一設(shè)計(jì)中,沒有設(shè)計(jì)好,未能實(shí)現(xiàn)遠(yuǎn)距離溫度控制,自己程序方面還有待加強(qiáng)。

總的來說,自己從此課程設(shè)計(jì)收獲了很多,一個設(shè)計(jì)的完成需要團(tuán)隊(duì)間的密切合作,而且需要提升自己的自學(xué)能力,腳踏實(shí)地。通過這次設(shè)計(jì),相信自己在未來的學(xué)習(xí)和生活中會繼續(xù)努力,提升自己的知識水平,不斷完善自我。

參考文獻(xiàn)

[1]《單片機(jī)原理與應(yīng)用設(shè)計(jì)》第二版.張毅剛主編.電子工業(yè)出版社

[2]《Altium Designer電路設(shè)計(jì)標(biāo)準(zhǔn)教程》程曉鴿編著.科學(xué)出版社

附錄

上位機(jī)程序

  1. #include<reg51.h>
  2. #include<math.h>
  3. #define uchar unsigned char
  4. #define LEDLen 6
  5. uchar send,p,t,Pos;
  6. char receive;
  7. sbit P1_0=P1^0;                                                                                                         //P1.0口為高電平,發(fā)送0x08
  8. sbit P1_1=P1^1;                                                                                                         //P1.1口為高電平,發(fā)送0xaa
  9. sbit P1_2=P1^2;                                                                                                         //P1.2口為高電平,發(fā)送0x55
  10. Uchar code LEDMAP[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};                                                                                                                                                                                                                                                //共陰極數(shù)碼管段碼表
  11. xdata unsigned char OUTBIT _at_ 0x8002;                                  //位選線地址
  12. xdata unsigned char OUTSEG _at_ 0x8004;                                //段選線地址
  13. uchar LEDBuf[LEDLen];                        //顯示緩存
  14. void DisplayLED();                                                                                 //數(shù)碼管顯示函數(shù)
  15. void main()
  16. {
  17.   EA=1;
  18.   ET0=1;
  19.   TMOD=0x21;
  20.   TH1=0xfa;                                                                                                               //波特率2400
  21.   TL1=0xfa;
  22.   TR1=1;
  23.   TR0=1;                                                                                        //定時器T0開啟
  24.   TH0=0xfe;                                                                                     //定時器T1賦初值,1ms
  25.   TL0=0x0c;
  26.   IP=0;                                                                                        //設(shè)置各個中斷均為低優(yōu)先級
  27.   SCON=0x50;
  28.   PCON=0x00;
  29.   P1=0xf7;
  30.   while(1)
  31.   {
  32.     if(P1_0==1)
  33.       send=0x08;
  34.     if(P1_1==1)
  35.       send=0xaa;
  36.     if(P1_2==1)
  37.       send=0x55;
  38.     SBUF=send;
  39.     while(TI==0);
  40.     TI=0;
  41.     while(RI==0);
  42.     RI=0;
  43.     receive=SBUF;
  44.     if(receive==0x08)
  45.       P1=0x0f;
  46.     if(receive!=0x08)
  47.     {
  48.       P1=0x07;
  49.       DisplayLED();
  50.      }
  51.    }
  52. }
  53. void timer0() interrupt 1
  54. {
  55.   TH0=0xfe;
  56.   TL0=0x0c;
  57.   if(t==0)
  58.     Pos=0x20;
  59.   OUTBIT=0;                                                                                                                                         //關(guān)所有數(shù)碼管
  60.   OUTSEG=LEDBuf[t];                                                                                                                                 //送段碼
  61.   OUTBIT=Pos;                                                                                                                                       //選中一位數(shù)碼管
  62.   Pos>>=1;                                                                                                                                           //顯示下一位
  63.   t++;
  64.   if(t==6)
  65.     t=0;
  66. }
  67. void DisplayLED()                                                                                                                       //數(shù)碼管溫度顯示函數(shù)
  68. {
  69.   if(receive<0)
  70.     LEDBuf[0]=0x40;                                                                        //溫度低于零攝氏度高位顯示負(fù)號
  71.   if(receive>=0)
  72.     LEDBuf[0]=LEDMAP[0];                   //溫度高于零攝氏度高位顯示零
  73.   if(receive<0)
  74.     receive=-receive;
  75.   LEDBuf[1]=LEDMAP[receive/10];                                                                                      //數(shù)碼管顯示溫度
  76.   LEDBuf[2]=LEDMAP[receive%10];
  77.   LEDBuf[3]=0x3f;
  78.   LEDBuf[4]=0x3f;
  79.   LEDBuf[5]=0x3f;
  80. }
復(fù)制代碼


下位機(jī)程序:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define out P1                                        //步進(jìn)電機(jī)脈沖控制輸出口
  4. #define LEDLen 6
  5. #define LowTemp (-20)                    // A/D 0
  6. #define HighTemp  70                    // A/D 255
  7. xdata unsigned char OUTBIT _at_ 0x8002;    //位選線地址
  8. xdata unsigned char OUTSEG _at_ 0x8004;   //段選線地址
  9. xdata unsigned char ADPort _at_ 0x9000;     //AD轉(zhuǎn)化地址
  10. uchar code LEDMAP[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  
  11. //共陰極數(shù)碼管段碼表
  12. Uchar code turns[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};                                                                                                                                                                                                    //步進(jìn)電機(jī)正轉(zhuǎn)相序表
  13. uchar code turnd[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};                                                                                                                                                                                                    //步進(jìn)電機(jī)反轉(zhuǎn)相序表
  14. uchar LEDBuf[LEDLen];                                                                //顯示緩存
  15. signed char CurTemp;                                                                               //定義當(dāng)前溫度
  16. signed char r;                                                                                     //數(shù)碼管顯示溫度
  17. char send;
  18. uchar receive,t,p,Pos;
  19. signed char tl,th,tw;
  20. signed char tb=20;                                                     //初始化標(biāo)準(zhǔn)溫度為20攝氏度
  21. uchar m=0;                                               //初始化設(shè)置溫上線按鍵次數(shù)為0
  22. uchar n=0;                                               //初始化設(shè)置溫下線按鍵次數(shù)為0
  23. uchar mode;                                              //步進(jìn)電機(jī)正反轉(zhuǎn)工作方式控制位
  24. void DisplayLED();                                       //數(shù)碼管顯示函數(shù)
  25. unsigned char ReadAD();                                                //A/D采樣程序
  26. void ReadTemp();                                         //采樣溫度讀取
  27. void Motorcontrol();                                                   //步進(jìn)電機(jī)控制程序
  28. void Delay(uchar CNT)
  29. {
  30.   uchar i;
  31.   while(CNT--!=0)
  32.     for(i=100;i!=0;i--);
  33. }
  34. void main()
  35. {
  36.   EA=1;
  37.   ES=1;                                                           //總中斷允許
  38.   EX0=1;                                                            //外部中斷0允許
  39.   EX1=1;                                                            //外部中斷1允許
  40.   ET0=1;                                                            //定時器T0中斷允許
  41.   TMOD=0x21;                                          //定時器T0工作在方式1
  42.   IT0=1;                                                            //選擇外中斷0為跳沿觸發(fā)
  43.   IT1=1;                                                            //選擇外中斷1為跳沿觸發(fā)
  44.   TR0=1;                                                            //定時器T0開啟
  45.   TR1=1;
  46.   TH0=0xfe;                                                         //定時器T0賦初值,1ms
  47.   TL0=0x0c;
  48.   TH1=0xfa;                                                         //波特率2400
  49.   TL1=0xfa;
  50.   SCON=0x50;
  51.   PCON=0x00;
  52.   IP=0;                                                             //設(shè)置各個中斷均為低優(yōu)先級
  53.   P1=0x00;
  54.   while(1)
  55.   {
  56.     th=tb+m;                                                        //溫上線
  57.     tl=tb-n;                                                        //溫下線
  58.     tw=th-tl;
  59.     ReadTemp();                                                    //讀取當(dāng)前溫度
  60.     r=CurTemp;
  61.     if(r<=tl)                                                                     //溫度低于下線溫度
  62.     {
  63.       DisplayLED();
  64.       mode=1;
  65.       Motorcontrol();
  66.      }
  67.     if((r>tl)&&(r<=th))
  68.       DisplayLED();
  69.     if(r>th)
  70.     {
  71.       DisplayLED();
  72.       mode=2;
  73.       Motorcontrol();
  74.      }
  75.    }
  76. }
  77. void timer0() interrupt 1
  78. {
  79.   TH0=0xfe;
  80.   TL0=0x0c;
  81.   if(t==0)
  82.     Pos=0x20;
  83.   OUTBIT=0;                                                                                                             //關(guān)所有數(shù)碼管
  84.   OUTSEG=LEDBuf[t];                                                                                                     //送段碼
  85.   OUTBIT=Pos;                                                                                                           //選中一位數(shù)碼管
  86.   Pos>>=1;                                                                                                              //顯示下一位
  87.   t++;
  88.   if(t==6)
  89.     t=0;
  90. }
  91. void int0() interrupt 0                                                                                                      //外部中斷0程序
  92. {
  93.   m++;                                                                                                        //溫上線按鍵次數(shù)
  94. }
  95. void int1() interrupt 2                                                                                                      //外部中斷1程序
  96. {
  97.   n++;                                                                                                         //溫下線按鍵次數(shù)
  98. }
  99. void Port() interrupt 4
  100. {
  101.   ES=0;
  102.   if(TI==1)
  103.     TI=0;
  104.   if(RI==1)
  105.   {
  106.     receive=SBUF;
  107.     RI=0;
  108.     if(receive==0x08)
  109.     {
  110.       send=receive;
  111.       P1=0x10;
  112.      }
  113.     if(receive==0xaa)
  114.     {
  115.       send=CurTemp;
  116.       P1=0x20;
  117.      }
  118.     if(receive==0x55)
  119.     {
  120.       send=0;
  121.       P1=0x40;
  122.      }
  123.     if((receive!=0x08)&&(receive!=0xaa)&&(receive!=0x55))
  124.     {
  125.       send=0;
  126.       P1=0x80;
  127.      }
  128.    }
  129.   SBUF=send;
  130.   ES=1;
  131. }
  132. void DisplayLED()                                                               //數(shù)碼管溫度顯示函數(shù)
  133. {
  134.   if(r<=tl)                                                                     //溫度低于下線溫度
  135.   {
  136.     if(r<0)
  137.       LEDBuf[0]=0x40;                                                           //溫度低于零攝氏度高位顯示負(fù)號
  138.     if(r>=0)
  139.       LEDBuf[0]=LEDMAP[0];     //溫度高于零攝氏度高位顯示零
  140.     if(r<0)
  141.       r=-r;
  142.     LEDBuf[1]=LEDMAP[r/10];    //數(shù)碼管顯示溫度及L
  143.     LEDBuf[2]=LEDMAP[r%10];
  144.     LEDBuf[3]=0x38;
  145.     LEDBuf[4]=LEDMAP[tw/10];
  146.     LEDBuf[5]=LEDMAP[tw%10];
  147.    }
  148.   if((r>tl)&&(r<=th))
  149.     {
  150.       if(r<0)
  151.         LEDBuf[0]=0x40;                                             //溫度低于零攝氏度高位顯示負(fù)號
  152.       if(r>=0)
  153.         LEDBuf[0]=LEDMAP[0];   //溫度高于零攝氏度高位顯示零
  154.       if(r<0)
  155.         r=-r;
  156.       LEDBuf[1]=LEDMAP[r/10];                                              //數(shù)碼管顯示溫度及C
  157.       LEDBuf[2]=LEDMAP[r%10];
  158.       LEDBuf[3]=0x39;
  159.       LEDBuf[4]=LEDMAP[tw/10];
  160.       LEDBuf[5]=LEDMAP[tw%10];
  161.      }
  162.   if(r>th)
  163.   {
  164.     LEDBuf[0]=LEDMAP[0];                                                               //數(shù)碼管高位顯示零
  165.     LEDBuf[1]=LEDMAP[r/10];                                                            //數(shù)碼管顯示溫度及H
  166.     LEDBuf[2]=LEDMAP[r%10];
  167.     LEDBuf[3]=0x76;
  168.     LEDBuf[4]=LEDMAP[tw/10];
  169.     LEDBuf[5]=LEDMAP[tw%10];
  170.    }
  171. }
  172. unsigned char ReadAD()                                                                                                      //A/D采樣程序
  173. {
  174.   unsigned int i;
  175.   ADPort=0;                                                                                                  //啟動A/D變換
  176.   for(i=0;i<20;i++);                                                                                                       //延時100us
  177.   return(ADPort);                                                                                                         //得到A/D采樣值
  178. }
  179. void ReadTemp()                                                                                                           //采樣溫度讀取
  180. {
  181.   unsigned char i;
  182.   signed int Temp;
  183. ……………………

  184. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼


完整論文下載(word格式 可編輯):
單片機(jī)課設(shè).doc (7.34 MB, 下載次數(shù): 20)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表