国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
小型溫度測(cè)控系統(tǒng)-單片機(jī)愛好者-搜狐博客

小型溫度測(cè)控系統(tǒng)

前言

此小型測(cè)控系統(tǒng)的主要功能是對(duì)外環(huán)境溫度的實(shí)時(shí)測(cè)量,并按照預(yù)先設(shè)定好的溫度,對(duì)外環(huán)境溫度進(jìn)行調(diào)節(jié),使其保持在預(yù)先設(shè)定的溫度。制作過程中,主要是實(shí)現(xiàn)單片機(jī)模塊和顯示模塊的功能。通過該系統(tǒng)的制作,使制作者具備電路簡(jiǎn)單設(shè)計(jì)與制作,程序編寫與調(diào)試,系統(tǒng)調(diào)試與完善等系統(tǒng)開發(fā)的基本技能和知識(shí)。同時(shí)培養(yǎng)制作者的團(tuán)隊(duì)合作精神。

   本次培訓(xùn)的任務(wù):              

1.    設(shè)計(jì)一款溫度測(cè)量和控制的小系統(tǒng),測(cè)量范圍為:-5~45℃

2.    要求顯示部分可以顯示一位小數(shù)及負(fù)號(hào)。

3.    片選地址更改。

目錄

摘要………………………………………………………………………4

課題背景…………………………………………………………………4

系統(tǒng)整體框架……………………………………………………………4

電路及元件選擇…………………………………………………………5

系統(tǒng)主要模塊的具體實(shí)現(xiàn)………………………………………………6

系統(tǒng)模塊的調(diào)試程序 …………………………………………………12

心得與體會(huì) ……………………………………………………………19

 

 

 

 

 

 

 

 

 

 

摘要:   本系統(tǒng)主要由LM35溫度傳感器、AT89S52單片機(jī)、變送器、AD轉(zhuǎn)換、

DA轉(zhuǎn)換、穩(wěn)壓電源、鍵盤輸入及數(shù)碼管顯示模塊組成。

溫度傳感器的作用是采集溫度,并進(jìn)行判斷和顯示。由于此次設(shè)計(jì)所使

用的是溫度傳感器為L(zhǎng)M35,其檢測(cè)到的信號(hào)是模擬電壓信號(hào),需要進(jìn)行 A/D轉(zhuǎn)換變成二進(jìn)制數(shù)字信號(hào),以便單片機(jī)處理。

單片機(jī)主要是讀取溫度傳感器的溫度檢測(cè)的電壓值,并把該信號(hào)轉(zhuǎn)化成

溫度值用數(shù)碼管顯示出來。由于AT89系列單片機(jī)與MCS一51系列單片機(jī)兼容,所以,本系統(tǒng)中的單片機(jī)選用AT89S52。

變送器、D/A轉(zhuǎn)換和A/D轉(zhuǎn)換模塊對(duì)信號(hào)進(jìn)行轉(zhuǎn)換;鍵盤輸入模塊輔助

參數(shù)的設(shè)定,數(shù)碼管顯示模塊同步顯示系統(tǒng)的狀態(tài),共同完成系統(tǒng)的人機(jī)交互。

關(guān)鍵字:?jiǎn)纹瑱C(jī)  電壓信號(hào)  溫度傳感器  數(shù)碼管顯示  鍵盤輸入

課題背景

在人類的生活環(huán)境中,溫度扮演著極其重要的角色。無論你生活在哪里,從事什么工作,無時(shí)無刻不在與溫度打著交道。今天,我們的生活環(huán)境和工作環(huán)境有越來越多稱之為單片機(jī)的小電腦在為我們服務(wù)。單片機(jī)在工業(yè)控制、尖端武器、通信設(shè)備、信息處理、家用電器等各測(cè)控領(lǐng)域的應(yīng)用中獨(dú)占鰲頭。時(shí)下,家用電器和辦公設(shè)備的智能化、遙控化模糊控制化已成為世界潮流,而這些高性能無一不是靠單片機(jī)來實(shí)現(xiàn)的。采用單片機(jī)來對(duì)溫度進(jìn)行測(cè)量和控制,不僅具有控制方便、組態(tài)簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。單片機(jī)以其功能強(qiáng)、體積小、可靠性高、造價(jià)低和開發(fā)周期短等優(yōu)點(diǎn),成為自動(dòng)化和各個(gè)測(cè)控領(lǐng)域中必不可少且廣泛應(yīng)用的器件,尤其在日常生活中也發(fā)揮越來越大的作用。因此,單片機(jī)對(duì)溫度的測(cè)控問題是一個(gè)工農(nóng)業(yè)生產(chǎn)中經(jīng)常會(huì)遇到的問題。


電路及元件選擇

1.電源電路

   • 集成線性穩(wěn)壓電路

     紋波、噪聲小、效率低、實(shí)現(xiàn)電路相對(duì)簡(jiǎn)單、成本低

• 集成開關(guān)穩(wěn)壓電路

     紋波、噪聲大、效率高、實(shí)現(xiàn)電路相對(duì)復(fù)雜,成本較高

交流供電電壓低,輸出功率較小。從實(shí)現(xiàn)電路簡(jiǎn)單,低成本的角度考慮應(yīng)選擇集成線性穩(wěn)壓電路的實(shí)現(xiàn)方案。

2.溫度傳感器

• 熱電偶靈敏度低,溫度與輸出為非線性關(guān)系,信號(hào)調(diào)理電路復(fù)雜,適合寬溫范圍測(cè)溫。

• 鉑電阻溫度與輸出非理想線性關(guān)系,需作電抗到電壓的轉(zhuǎn)換,電路復(fù)雜,適合寬溫范圍測(cè)溫。

• DS1820 采用一線串行數(shù)字控制,操作過程復(fù)雜,初學(xué)者不易掌握。

• LM35具有很高的工作精度和較寬的線性工作范圍,該器件輸出電壓與攝氏溫度線性成比例。無需外部校準(zhǔn)或微調(diào),可以提供±1/4℃的常用的室溫精度。為首選測(cè)溫傳感器。

綜上,選擇LM35。

    3.單片機(jī)

MCS-51系列單片機(jī)有眾多性能優(yōu)異的兼容產(chǎn)品、成熟的開發(fā)環(huán)境、世界上最大的單片機(jī)客戶群、高性價(jià)比、暢通的供貨渠道,是初學(xué)者的首選機(jī)型。

          8031是MCS-51系列單片機(jī)早期產(chǎn)品之一,其最小系統(tǒng)需要在外部擴(kuò)展程序存儲(chǔ)器,成本高、性能差,現(xiàn)已退出市場(chǎng)。

          8051也是MCS-51系列單片機(jī)早期產(chǎn)品之一,內(nèi)建一次性可編程只讀存儲(chǔ)器 ( PROM ) ,只需要很少的外圍元件即可組成最小系統(tǒng)?,F(xiàn)已有內(nèi)建 Flash存儲(chǔ)器的兼容產(chǎn)品,8051已經(jīng)被使用上更為方便的AT89C51 AT89S52等單片機(jī)產(chǎn)品所代替。

           綜上,選擇AT89S52。

     4.地址譯碼電路

·全地址譯碼

全部地址參與譯碼,產(chǎn)生的控制信號(hào)對(duì)應(yīng)唯一地址。

        ·部分地址譯碼

部分地址參與譯碼,產(chǎn)生的控制信號(hào)對(duì)應(yīng)某一地址區(qū)域,而不是唯一地址。

·直接選擇

直接使用地址線作為讀/寫訪問控制信號(hào)線。該方案的片選信號(hào)與地址之間不是線性關(guān)系,使用該方案需要熟練掌握片選信號(hào)與地址之間的關(guān)系計(jì)算。

        綜合分析,選擇部分地址譯碼、帶有總線驅(qū)動(dòng)電路。

     5.D/A、A/D轉(zhuǎn)換

          DAC0832是8 位乘算型電流輸出的典型產(chǎn)品,具有MCU兼容接口,使用方便,價(jià)格低,能滿足設(shè)計(jì)要求。

           ADC0804是8 位逐次比較(逐次逼近)型典型產(chǎn)品,具有MCU 兼容接口,使用方便;分辯率和轉(zhuǎn)換速度都能夠滿足設(shè)計(jì)要求,且價(jià)格低廉。

     6.顯示控制電路

           動(dòng)態(tài)顯示電路方案:電路簡(jiǎn)單,成本低,控制程序復(fù)雜,適用于顯示位數(shù)較多的場(chǎng)合。

靜態(tài)顯示電路方案:使用的元件多,成本相對(duì)較高。每位獨(dú)立控制,程序設(shè)計(jì)比較簡(jiǎn)單,適用于顯示位數(shù)較少的場(chǎng)合。采用此方案。

7.鍵盤電路

           直讀鍵盤電路方案:按鍵較多時(shí),成本高,控制程序較簡(jiǎn)單,適用于按鍵較少的場(chǎng)合。

矩陣鍵盤電路方案:按鍵較多時(shí),成本低,控制程序較直讀電路復(fù)雜,適用于顯示位數(shù)較多的場(chǎng)合。采用此方案。

系統(tǒng)主要模塊的具體實(shí)現(xiàn)

一、電源模塊

      

        首先,用一個(gè)變壓器將220V的交流電變成9V和14V的交流電。然后使其通過整流橋?qū)⒔涣麟娮兂芍绷麟?。再?jīng)過LM7805、LM7812、LM7912這三個(gè)芯片使其最終變成+5V、+12V和-12V的直流電。

      注意:連接完畢后,打開調(diào)試臺(tái)電源遠(yuǎn)離電源板1-2分鐘,觀察電路板有無異味或異常響動(dòng),如果一切正??梢蚤_始進(jìn)一步的測(cè)試;如果整流橋短路就會(huì)燒掉保險(xiǎn)絲。電路連接不正常可能會(huì)引起電容爆裂等現(xiàn)象。這次培訓(xùn)就有一位同學(xué)的電容爆裂,有多位同學(xué)的保險(xiǎn)絲燒掉。應(yīng)特別小心!

二、單片機(jī)模塊

     AT89S52器件圖

 

 

 

    AT89S52管腳說明

VCC:供電電壓。
    GND:接地。
    P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
    P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
    P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
    P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(TLL)這是由于上拉的緣故。

      P3的特有復(fù)用功能

 

引腳

復(fù)用功能

P3.0

RXD(串行口輸入)

P3.1

TXD(串行口輸出)

P3.2

(外部中斷0)

P3.3

(外部中斷1)

P3.4

T0(定時(shí)器0外部輸入)

P3.5

T1(定時(shí)器1外部輸出)

P3.6

(外部數(shù)據(jù)儲(chǔ)存器寫信號(hào))

P3.7

(外部數(shù)據(jù)儲(chǔ)存器讀信號(hào))

表2-9

RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的 信號(hào)將不出現(xiàn)。 /VPP:當(dāng) 保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí), 將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。

     原理圖

 

單片機(jī)電路的組成

1.單片機(jī)最小系統(tǒng)

單片機(jī)最小系統(tǒng)由一個(gè)STC89C51系列單片機(jī),一個(gè)晶振和若干電容組成。(如右圖)

2.數(shù)據(jù)/地址分離電路設(shè)計(jì)

由于本系統(tǒng)采用的是數(shù)據(jù)地址總線共線,所以使用了一個(gè)74LS373鎖存器來實(shí)現(xiàn)數(shù)據(jù)和地址的分離,單片機(jī)通過ALE口產(chǎn)生的時(shí)序脈沖信號(hào)來控制74LS373鎖存器的使能端LE口,從而將地址信號(hào)在一段時(shí)間內(nèi)分離出來。本電路中低四位即能決定地址。其電路如下(圖中P0口為數(shù)據(jù)地址總線):

 

3.地址譯碼電路設(shè)計(jì)

一次譯碼采用138譯碼器,通過控制A B C輸入可得到C口上的片選信號(hào)。(圖示如下)

4.驅(qū)動(dòng)電路

單片機(jī)所接負(fù)載超出其負(fù)載能力時(shí)需要設(shè)計(jì)總線驅(qū)動(dòng)電路,本系統(tǒng)采用在數(shù)據(jù)總線上接一塊74LS245來實(shí)現(xiàn)電流的放大。(電路圖如下)

 

三、顯示模塊

 

1.數(shù)碼管顯示電路

本系統(tǒng)采用的是共陰數(shù)碼管,陽極接到一塊74LS273鎖存器上,并與地址總線相連。四塊鎖存器的使能端CLK與二次譯碼電路相連,實(shí)現(xiàn)不同蕊片的選通。

2.二次譯碼電路

本系統(tǒng)仍然采用138譯碼器,輸入信號(hào)為一次譯碼產(chǎn)生的各地址信號(hào)。實(shí)現(xiàn)對(duì)不同數(shù)碼管的選通。

系統(tǒng)模塊的調(diào)試程序

  C

#include<reg51.h>

#include<absacc.h>

#define    C1      XBYTE[0x1000]

#define    C2      XBYTE[0x3000]

#define    C3      XBYTE[0x5000]

#define    C4      XBYTE[0x7000]

void main(void)

{    while(1) 

        {C1=0;C2=0;C3=0;C4=0;}

}。

  A口:

    #include<reg51.h>

#include<absacc.h>

void main(void)

{    while(1) 

            { 

              XBYTE[0x1055]=0; 

              XBYTE[0x10aa]=0;

              }

}。

顯示電路模塊:

#include<reg51.h>

#include<absacc.h>

#define    DP1      XBYTE[0x1000]

#define    DP2      XBYTE[0x1001]

#define    DP3      XBYTE[0x1002]

#define    DP4      XBYTE[0x1003]

#define    TIMER    0xff00

unsigned char table[]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

void delay(void);

//void display(unsigned char x,y);

void main(void)

      {  unsigned  char i=0,num=0;

          DP1=DP2=DP3=DP4=!i;

          while(1)

          {     for(num=0;num<10;++num)          //  一

            {  DP1=DP2=DP3=DP4=table[num];    //  同

              delay( );}                          //

         }                                   //   顯

        }                                          // 示

      /*     {  for(num=0;num<10;++num)       //逐個(gè)顯示

                { i++;

                   if(i<=4)     display(i,num);

                   else   { i=1; display(i,num);}

                   delay( );

                }    

            }

     }

void display(unsigned char x,y)

      {   if (x==1) 

            {  DP1=table[y]; }

         else if(x==2)

            {DP2=table[y];}

         else if(x==3)

             {DP3=table[y];}

         else  

             {DP4=table[y];}

      } */                                  //逐個(gè)顯示    

void delay(void)

      {  unsigned int i;

         for(i=0;i<TIMER;++i);

      }。

D/A轉(zhuǎn)換:

#include<regx51.h>

#include<absacc.h>

#include<ctype.h>

#define ADC XBYTE[0x3000]

#define DP1 XBYTE[0x1001]

#define DP2 XBYTE[0x1002]

#define DP0 XBYTE[0x1000]

#define DP3 XBYTE[0x1003]

#define TIMER 0xffff

unsigned char table[]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

void delay(void);                      //延時(shí)函數(shù)

void display(unsigned char x,y);       //?

void main(void)

     { unsigned char x=0,y=0,z=0,num=0;

       DP1=DP2=!x;

      DP0=DP3=0;

       while(1)

         {

          ADC=x;                              

          delay( );                          //延時(shí)函數(shù)

              x=ADC;y=x%10;  num=1;  display(num,y);

          z=x/10;  num=2;  display(num,z);

         }

      }

void display(unsigned char x,y)                      {

      if (x==1) DP1=table[y];

      else       DP2=table[y];

      }

void delay(void)                            //延時(shí)函數(shù)

     { unsigned int i;

       for(i=0;i<TIMER;++i);

     }

A/D轉(zhuǎn)換:

#include<reg51.h>

#include<absacc.h>

#include<ctype.h>

#define    ADC      XBYTE[0x2000]

//#define    DP1      XBYTE[0x0000]

//#define    DP2      XBYTE[0x0001]

//#define    DP3      XBYTE[0x0002]

//#define    DP4      XBYTE[0x0003]

#define    DP1      XBYTE[0x1003]

#define    DP2      XBYTE[0x1002]

#define    DP3      XBYTE[0x1001]

#define    DP4      XBYTE[0x1000]

#define    TIMER    0x8000

unsigned char table[  ]={0x3F,0x06,0x5B,0x4F,0x66,

                 0x6D,0x7D,0x07,0x7F,0x6F};

void delay(void);

void display(unsigned char x,y);

void main(void)

     { unsigned char x=0,y=0,z=0,w=0,num=0;

        DP1=0x40;

      //   delay( );

       while(1)

         {

          ADC=x;

          delay( );

          x=ADC;

          w=x/100;

          DP2=table[w];

         // delay( );

          y=x/10-w*10;

          DP3=table[y];

         // delay( );

          z=x%10;

          DP4=table[z];

         // delay( );

         }

      }

/*void display(unsigned char x,y)

     {

      if (x=1) DP1=table[y];

      else       DP2=table[y];

      }    

 */

void delay(void)

     {

     unsigned int i;

     for(i=0;i<TIMER;++i);

     }

測(cè)溫總程序

/*********************************header files********************************/

#include<reg51.h>

#include<absacc.h>

#include<ctype.h>

/*********************************macroinstruction********************************/

#define    ADC      XBYTE[0x2000]

#define    DAC      XBYTE[0x3000]

#define    DP1      XBYTE[0x1000]

#define    DP2      XBYTE[0x1001]

#define    DP3      XBYTE[0x1002]

#define    DP4      XBYTE[0x1003]

#define    KEY_line1     XBYTE[0x1004]

#define    KEY_line2     XBYTE[0x1005]

#define    KEY_line3     XBYTE[0x1006]

#define    KEY_line4     XBYTE[0x1007]

#define    TIMER    0x8000

#define    TIMER1   0x0050

/**************************Digitron TABLE***********************/

Unsigned char table1[ ]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,

0x87,0xFF,0xEF};   //OPTO

unsigned char table[  ]={0x3F,0x06,0x5B,0x4F,0x66, 0x6D,

0x7D,0x07,0x7F,0x6F};

unsigned char option=0;

void display_AND_option(unsigned char x,y);

void keybord(void);

void delay(void);

void key_delay(void);

void ADC_Module(void);

void main(void)

{

DP1=DP4=0x00;

      while(1)

        {

           option=0;

           keybord();

           if(option==1)

           ADC_Module();

        }

}

void delay(void)

{

    unsigned int i;

    for(i=0;i<TIMER;++i);

}

void key_delay(void)

{

      unsigned int i;

    for(i=0;i<TIMER1;++i);

}

void keybord(void)

{  

   unsigned char  l_val,t=0;

   while(1){

       t=0;  

       l_val=KEY_line1;

         key_delay();

         if(l_val!=0x00){

             key_delay();

           if(l_val!=0x00)

             switch(l_val){

                case 0xf7:display_AND_option(1,1); break;

                case 0xfb:display_AND_option(1,2);break; 

            case 0xfd:display_AND_option(1,3); break;

                case 0xfe:display_AND_option(1,4);}

             key_delay();

            }

        l_val=KEY_line2;

         key_delay();

         if(l_val!=0x00){

             key_delay();

           if(l_val!=0x00)

             switch(l_val){

                case 0xf7:display_AND_option(2,1); break;

                case 0xfb:display_AND_option(2,2);break; 

            case 0xfd:display_AND_option(2,3); break;

                case 0xfe:display_AND_option(2,4);}

             key_delay();

            }       

        l_val=KEY_line3;

         key_delay();

         if(l_val!=0x00){

             key_delay();

           if(l_val!=0x00)

             switch(l_val){

                case 0xf7:display_AND_option(3,1); break;

                case 0xfb:display_AND_option(3,2);break; 

            case 0xfd:display_AND_option(3,3); break;

                case 0xfe:display_AND_option(3,4);}

             key_delay();

            }

         l_val=KEY_line4;

         key_delay();

         if(l_val!=0x00){

             key_delay();

           if(l_val!=0x00)

             switch(l_val){

                case 0xf7:display_AND_option(4,1); break;

                case 0xfb:display_AND_option(4,2);break; 

            case 0xfd:display_AND_option(4,3); break;

                case 0xfe:display_AND_option(4,4);}

             key_delay();

            }

        if(option!=t)

           break;

//      else

          

        }

}

void ADC_Module(void)

{

        unsigned char x=0,y=0,z=0,w=0,m=0,num=0,n=0;

        unsigned int i,j;

        DP1=DP2=DP3=DP4=0x76;

        delay( );

        delay( );

        for(i=0;i<TIMER;i++)

           {

                for(j=0;j<TIMER;j++) 

               {

                 ADC=x;

                  delay( );

                  x=ADC;

                 m=x*3.9;

                 if(m<0){

                 DP1=0x40;

                 }

                 else DP1=0x00;

                  y=m/100;

                 DP2=table[y];

                  z=m/10-y*10;

                 DP3=table1[z];

                 n=m%10;

                 DP4=table[n];

                 delay( );

               }

           if(i==(TIMER-1))DP1=DP2=DP3=DP4=0x00;

           }

}

void display_AND_option(unsigned char x,y)

     unsigned char t1=0,t2=0;

     option=4*(x-1)+y;

     t1=option%10;DP3=table[t1];

     t2=option/10;DP2=table[t2];

}

心得與體會(huì)

    很早就聽說我們協(xié)會(huì)今年寒假要搞培訓(xùn),由于去年我沒能參加寒假培訓(xùn)我很后悔,所以我今年就一直等著培訓(xùn)的消息。培訓(xùn)的通知?jiǎng)偝鰜砦揖蛨?bào)了名,同時(shí)還介紹了班上的同學(xué)參加。我要好好把握這次機(jī)會(huì),提高自己電子設(shè)計(jì)與制作上的能力。在剛過了年的初八我就從家里出發(fā)了。

培訓(xùn)的課程對(duì)于我們來說,還是很有難度的。在前三天的時(shí)間里,老師給我們講了課。我感覺到自己知識(shí)的匱乏,老師的講課我有很多都聽不懂,很多知識(shí)和名詞都不是很清楚起含義。于是我就通過查資料,看書和問的途徑,盡可能的弄懂這些內(nèi)容。雖然有些知識(shí)我還是不太懂,但現(xiàn)在我已經(jīng)知道個(gè)大概了。

培訓(xùn)的重頭戲有兩個(gè):一個(gè)是各個(gè)模塊的硬件制作;一個(gè)是程序的調(diào)試。在硬件的制作中,我們遇到了很多的問題。比如:各集成芯片的引腳功能和分布不清楚,二極管,三極管的極性不是特別熟悉。我和其他同學(xué),分工合作,查資料,每個(gè)人查找一部分的集成芯片的功能和引腳圖。查到資料并看懂了之后,我們就知道了如何去完成電路的焊接。還有每個(gè)模塊都采用萬能板焊接,使得整個(gè)的布線也有些不合理,使得我的各個(gè)模塊連接在一起之后看起來很復(fù)雜,到處都是線。這樣不利于查錯(cuò),所以當(dāng)我有的地方錯(cuò)了之后我要用很多時(shí)間去查錯(cuò)。當(dāng)我把單片機(jī)接好后,通電源時(shí)結(jié)果單片機(jī)發(fā)熱了,我趕緊取下來一看,原來是太激動(dòng)了,把單片機(jī)安反了。在連接溫度傳感器LM35時(shí),由于沒看對(duì)LM35的特性,將其接反燒掉一個(gè)。在程序的調(diào)試過程中,我的A1、A2所出來的波形跟課件上的也有些不同,多出了一條縫。結(jié)果看其他同學(xué)的也是這樣,才知道不是我焊接的問題,而是其他地方出了問題。在調(diào)試過程中,我對(duì)原理有了更清楚的理解。通過老師的講解,同學(xué)間的交流和自己的學(xué)習(xí),對(duì)單片機(jī)等集成模塊有了更深的理解,知道了其功能和使用方法。在調(diào)試的過程中發(fā)現(xiàn)了更多問題。首先是調(diào)試單片機(jī)板。我們把程序中的錯(cuò)誤進(jìn)行了修改,尤其是地址,并且確定無誤后,燒入單片機(jī)。在模數(shù)的調(diào)試過程中,我一直出不了結(jié)果我花了整整兩天去檢查沒弄出來,我重新焊了一個(gè),結(jié)果還是不行,最后才發(fā)現(xiàn)我的74LS245與74LS138兩個(gè)芯片一起壞了。當(dāng)換了兩個(gè)芯片后一下就好了。

這次的培訓(xùn),我還學(xué)會(huì)了示波器,知道怎樣調(diào)波形了。同時(shí)我也學(xué)習(xí)了Keil μvison、AVR fighter等軟件和硬件工具的使用,對(duì)單片機(jī)有了基本的運(yùn)用能力,在實(shí)踐方面也積累了不少經(jīng)驗(yàn),在電子設(shè)計(jì)方面,有了一定的基礎(chǔ),這次培訓(xùn)使我的興趣有了拓展,我們有了獲得新知的強(qiáng)烈渴望。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
單片機(jī)液晶顯示
單片機(jī)外部RAM擴(kuò)展-62256應(yīng)用電路
單片機(jī)c語言XBYTE的使用
庫(kù)函數(shù)absacc.h的介紹
1小時(shí)C語言入門(轉(zhuǎn)帖續(xù)二)
【新提醒】音樂頻譜電路原理圖與源程序分享
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服