找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3707|回復(fù): 1
收起左側(cè)

帶串口通信的溫度監(jiān)測(cè)儀器課程設(shè)計(jì)報(bào)告

[復(fù)制鏈接]
ID:344917 發(fā)表于 2018-6-29 15:11 | 顯示全部樓層 |閱讀模式

單片機(jī)與嵌入式系統(tǒng)課程設(shè)計(jì)
院    系:自動(dòng)化學(xué)院
題    目:帶串口通信的溫度監(jiān)測(cè)儀器設(shè)計(jì)
專 業(yè) 班 別:自動(dòng)化155
提 交 日 期: 2018年5月

帶串口通信的溫度監(jiān)測(cè)儀器設(shè)計(jì)

摘要:本設(shè)計(jì)采用的主控芯片是ATMEL公司的AT89C51單片機(jī),數(shù)字溫度傳感器是DALLAS公司的DS18B20。本設(shè)計(jì)用數(shù)字傳感器DS18B20測(cè)量溫度,測(cè)量精度高,傳感器體積小,使用方便。所以本次設(shè)計(jì)的數(shù)字溫度計(jì)在工業(yè)、農(nóng)業(yè)、日常生活中都有廣泛的應(yīng)用。


隨著現(xiàn)代信息技術(shù)的飛速發(fā)展和傳統(tǒng)工業(yè)改造的逐步實(shí)現(xiàn),能夠獨(dú)立工作的溫度檢測(cè)和顯示系統(tǒng)應(yīng)用于諸多領(lǐng)域。單片機(jī)技術(shù)已經(jīng)廣泛應(yīng)用社會(huì)生活的各個(gè)領(lǐng)域,已經(jīng)成為一種非常實(shí)用的技術(shù)。51單片機(jī)是最常用的一種單片機(jī)。本次設(shè)計(jì)的數(shù)字溫度計(jì)采用的是DS18B20數(shù)字溫度傳感器,DS18B20是一種可組網(wǎng)的高精度數(shù)字式溫度傳感器,并可使測(cè)量電路變得簡(jiǎn)單、可靠。

1 總體功能

基本實(shí)現(xiàn)串口通信程序,實(shí)現(xiàn)當(dāng)儀器通過串口接收到字符“A”時(shí),儀器通過串口發(fā)送內(nèi)容格式為“DD.DTDDU”的字符串,其中第1-4位“DD.D”為采集的溫度,第5位為字符“T”,為溫度標(biāo)識(shí),第6-7位“DD”為溫度上限值,第8位為字符“U”,為溫度上限值標(biāo)識(shí)。

2 硬件設(shè)計(jì)

圖 1 硬件圖

放置器件有1個(gè)AT89C51單片機(jī),1個(gè)DS18B20溫度傳感器,1個(gè)COMPIM串口,1個(gè)RESPACK-8,1個(gè)Buzzer,1個(gè)LED-GREEN,1個(gè)CRYSTAL,5個(gè)10k電阻和5個(gè)按鈕,3個(gè)1nF電容。

AT89C51單片機(jī): 4k 字節(jié)Flash 閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32 個(gè)I/O 口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式�?臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。

VCC:供電電壓。

GND:接地。

P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫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口將輸出電流(ILL)這是由于上拉的緣故。

P3口也可作為AT89C51的一些特殊功能口,如下表所示:

口管腳 備選功能

P3.0 RXD(串行輸入口)

P3.1 TXD(串行輸出口)

P3.2 /INT0(外部中斷0)

P3.3 /INT1(外部中斷1)

P3.4 T0(計(jì)時(shí)器0外部輸入)

P3.5 T1(計(jì)時(shí)器1外部輸入)

P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)

P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)

P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。

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í),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。

/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。

XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。

XTAL2:來自反向振蕩器的輸出。

采用集成芯片DS18B20:DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,每一片芯片內(nèi)部都有一個(gè)全球惟一的64 位編碼,在多路測(cè)溫時(shí)就是通過匹配這個(gè)編碼(ID)來確定下一步對(duì)那一個(gè)溫度傳感器進(jìn)行操作,故在同一總線上可以掛接多個(gè)傳感器芯片。該芯片具有三引腳TO-92小體積封裝形式,DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire器件,即單總線器件,具有線路簡(jiǎn)單,體積小等特點(diǎn)。DS18B20數(shù)字溫度傳感器接線方便,在不同的場(chǎng)合當(dāng)中其“封裝”形式多樣,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號(hào)多種多樣,有LTM8877,LTM8874等等。故DS18B20的體積小,使用方便,封裝形式多樣等優(yōu)點(diǎn),使其特別適合在一些空間比較小以及溫度變化的速度比較緩慢的環(huán)境中工作。

圖 2 DS18B20的封裝形式

DS18B20的64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。

DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖2-3所示。

圖 3 DS18B20的高速暫存RAM的結(jié)構(gòu)

頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。

當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。

3 單片機(jī)程序設(shè)計(jì)(宋體,小四,加粗)

3.1 主程序

  1. <font color="rgb(0, 0, 0)"><font face="Calibri"><font style="font-size: 12pt">void main()
  2. {
  3.               int temp;
  4.               int datas1[] = {0, 0, 0, 0, 0};

  5.               UsartConfiguration();
  6.               LcdInit();                                          //初始化LCD1602
  7.               LcdWriteCom(0x85);              //寫地址 80表示初始地址
  8.               LcdWriteData('C');
  9.               SETTEMP=32;
  10.               datas1[0]=SETTEMP/10;
  11.                             datas1[1]=SETTEMP%10;
  12.                             LcdWriteCom(0x80+0x40+9);
  13.                             LcdWriteData(datas1[0]+'0');            
  14.                             LcdWriteCom(0x80+0x40+10);
  15.                             LcdWriteData(datas1[1]+'0');            
  16.               while(1)
  17.               {
  18.                             temp=Ds18b20ReadTemp();
  19.                             LcdDisplay(temp);
  20.                             Delay1ms(1000);//1s鐘刷一次
  21.                             if(k1==0)
  22.                             {
  23.                             Delay1ms(10);
  24.                             SETTEMP=SETTEMP+1;
  25.                             Delay1ms(1000);//1s鐘刷一次
  26.                             datas1[0]=SETTEMP/10;
  27.                             datas1[1]=SETTEMP%10;
  28.                             LcdWriteCom(0x80+0x40+9);
  29.                             LcdWriteData(datas1[0]+'0');            
  30.                             LcdWriteCom(0x80+0x40+10);
  31.                             LcdWriteData(datas1[1]+'0');                                         
  32.                             }
  33.                             if(k2==0)
  34.                             {
  35.                             Delay1ms(10);
  36.                             SETTEMP=SETTEMP-1;
  37.                             datas1[0]=SETTEMP/10;
  38.                             datas1[1]=SETTEMP%10;
  39.                             LcdWriteCom(0x80+0x40+9);
  40.                             LcdWriteData(datas1[0]+'0');            
  41.                             LcdWriteCom(0x80+0x40+10);
  42.                             LcdWriteData(datas1[1]+'0');            
  43.                             }
  44.               }
  45. }</font></font></font>
復(fù)制代碼

3.2 各程序模塊

3.2.1 溫度采集程序模塊

使用DS18B20溫度傳感器進(jìn)行測(cè)量,其中1引腳接地,2引腳接AT89C51的P3.7引腳,3引腳接電源。

圖 4 溫度采集模塊

#include"temp.h"

void Ds18b20WriteByte(unsigned char dat)

{

              unsigned int i,j;

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

              {

                            DSPORT=0;                                          //每寫入一位數(shù)據(jù)之前先把總線拉低1us

                            i++;

                            DSPORT=dat&0x01; //然后寫入一個(gè)數(shù)據(jù),從最低位開始

                            i=6;

                            while(i--); //延時(shí)68us,持續(xù)時(shí)間最少60us

                            DSPORT=1;              //然后釋放總線,至少1us給總線恢復(fù)時(shí)間才能接著寫入第二個(gè)數(shù)值

                            dat>>=1;

              }

}

unsigned char Ds18b20ReadByte()

{

              unsigned char byte,bi;

              unsigned int i,j;            

              for(j=8;j>0;j--)

              {

                            DSPORT=0;//先將總線拉低1us

                            i++;

                            DSPORT=1;//然后釋放總線

                            i++;

                            i++;//延時(shí)6us等待數(shù)據(jù)穩(wěn)定

                            bi=DSPORT;              //讀取數(shù)據(jù),從最低位開始讀取

                            /*將byte左移一位,然后與上右移7位后的bi,注意移動(dòng)之后移掉那位補(bǔ)0。*/

                            byte=(byte>>1)|(bi<<7);                                                                                    

                            i=4;                            //讀取完之后等待48us再接著讀取下一個(gè)數(shù)

                            while(i--);

              }                                                      

              return byte;

}

void  Ds18b20ChangTemp()

{

              Ds18b20Init();

              Delay1ms(1);

              Ds18b20WriteByte(0xcc);                            //跳過ROM操作命令                           

              Ds18b20WriteByte(0x44);                  //溫度轉(zhuǎn)換命令

}

void  Ds18b20ReadTempCom()

{            

              Ds18b20Init();

              Delay1ms(1);

              Ds18b20WriteByte(0xcc);              //跳過ROM操作命令

              Ds18b20WriteByte(0xbe);              //發(fā)送讀取溫度命令

}

int Ds18b20ReadTemp()

{

              int temp=0;

              unsigned char tmh,tml;

              Ds18b20ChangTemp();                                                        //先寫入轉(zhuǎn)換命令

              Ds18b20ReadTempCom();                                          //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令

              tml=Ds18b20ReadByte();                            //讀取溫度值共16位,先讀低字節(jié)

              tmh=Ds18b20ReadByte();                            //再讀高字節(jié)

              temp=tmh;

              temp<<=8;

              temp|=tml;

              return temp;

}

3.2.2 液晶顯示和聲光報(bào)警程序模塊

使用LM016L液晶進(jìn)行顯示,其中1引腳VSS接地,2引腳VDD和3引腳VEE接電源。4引腳RS接單片機(jī)AT89C51的P2.6引腳, 5引腳RW接單片機(jī)AT89C51的P2.5,引腳6 E接單片機(jī)AT89C51的P2.7引腳,7引腳到14引腳即D0到D7分別接P0.0到P0.7。

圖 5 液晶顯示模塊
放置一個(gè)led-green和buzzer,接線如下。

圖 6 報(bào)警模塊

void LcdDisplay(int temp)               //lcd顯示

{

                unsigned char i, datas[] = {0, 0, 0, 0, 0}; //定義數(shù)組

                            float tp;


                LcdWriteCom(0x80);                            //寫地址 80表示初始地址

                            tp=temp;

                            temp=tp*0.0625*100+0.5;            

                            if((temp/100)>(SETTEMP-1))

                            {

                                          beep=0;

                            }

                            else

                            {

                            beep=1;

                            }

                            //留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入,因?yàn)镃語(yǔ)言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)

                            //后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就

                            datas[1] = temp % 10000 / 1000;

                            datas[2] = temp % 1000 / 100;

                            datas[3] = temp % 100 / 10;

                            datas[4] = temp % 10;



                            str[0]=datas[1]+'0';

                            str[1]=datas[2]+'0';

                            str[2]='.';

                            str[3]=datas[3]+'0';

                            str[4]='T';

                            str[5]=SETTEMP/10+'0';

                            str[6]=SETTEMP%10+'0';

                            str[7]='U';

                            LcdWriteCom(0x80);                            //寫地址 80表示初始地址

                            LcdWriteData('t');            

                            LcdWriteCom(0x81);                            //寫地址 80表示初始地址

                            LcdWriteData('e');            

                            LcdWriteCom(0x82);                            //寫地址 80表示初始地址

                            LcdWriteData('m');

                            LcdWriteCom(0x83);                            //寫地址 80表示初始地址

                            LcdWriteData('p');            

                            LcdWriteCom(0x84);                            //寫地址 80表示初始地址

                            LcdWriteData(':');                           

                            LcdWriteCom(0x85);                            //寫地址 80表示初始地址

                            LcdWriteData('0'+datas[1]); //十位

                            LcdWriteCom(0x86);                            //寫地址 80表示初始地址

                            LcdWriteData('0'+datas[2]); //個(gè)位

                            LcdWriteCom(0x87);                            //寫地址 80表示初始地址

                            LcdWriteData('.');                             //顯示 ‘.’

                            LcdWriteCom(0x88);                            //寫地址 80表示初始地址

                            LcdWriteData('0'+datas[3]); //顯示小數(shù)點(diǎn)

                            LcdWriteCom(0x89);                            //寫地址 80表示初始地址

                            LcdWriteData('C'); //顯示小數(shù)點(diǎn)

                            LcdWriteCom(0x80+0x40);                            //寫地址 80表示初始地址

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

                                                        {

                                                                      LcdWriteData(CNCHAR);

                                                        }

                            LcdWriteCom(0x80+0x40+13);

                            LcdWriteData('C');                           

//                            datas1[0]=SETTEMP/10;

//                            datas1[1]=SETTEMP%10;

//                            LcdWriteCom(0x80+0x40+9);

//                            LcdWriteData(datas1[0]+'0');            

//                            LcdWriteCom(0x80+0x40+10);

//                            LcdWriteData(datas1[1]+'0');            

                            LcdWriteCom(0x80+0x40+11);

                            LcdWriteData('.');            

                            LcdWriteCom(0x80+0x40+12);

                            LcdWriteData('0');            

}

3.2.4 串口通信程序模塊

將AT89C51的TXD連接COMPIM的TXD, AT89C51的RXD連接COMPIM的RXD,實(shí)現(xiàn)數(shù)據(jù)的接受發(fā)送。

圖 7 串口模塊

              //串口配置

              SCON &= (uint8_t)((uint8_t)( ~( UART_MODE | UART_RX )));              //清SM0 SM1 REN

              SCON |= (uint8_t)( UART_8BAUDRATE_VOLATILE | UART_RX );


              //TIM1配置

              TMOD &= (uint8_t)((uint8_t)( ~TIM1_MODE ));

              TMOD |= TIM1_MODE_2;              //8位自動(dòng)重裝

              PCON = 0x00;

              TH1 = 0xFD;                                                        //波特率默認(rèn)配置為9600

              TL1 = 0xFD;


              TI = 1;                                                                      //清發(fā)送標(biāo)志                                                                                   

              TR1 = 1;                                                        //使能定時(shí)器

}

uint8_t drv_uart_rx_bytes( uint8_t* RxBuffer )

{

              uint8_t l_RxLength = 0;

              uint16_t l_UartRxTimOut = 0x7FFF;


              while( l_UartRxTimOut-- )                            //在超時(shí)范圍內(nèi)檢測(cè)數(shù)據(jù)

              {

                            if( 0 != RI )                                                        //檢測(cè)是否接收到數(shù)據(jù)

                            {

                                          RI = 0;                                                                      //清標(biāo)志位                           

                                          *RxBuffer = SBUF;                            //讀數(shù)據(jù)

                                          RxBuffer++;

                                          l_RxLength++;

                                          l_UartRxTimOut = 0x7FFF;//重置超時(shí)檢測(cè)

                            }

              }

              return l_RxLength;                                          //等待超時(shí),數(shù)據(jù)接收完成

}

4仿真測(cè)試分析

基本實(shí)現(xiàn)串口通信程序,實(shí)現(xiàn)當(dāng)儀器通過串口接收到字符“A”時(shí),儀器通過串口發(fā)送內(nèi)容格式為“DD.DTDDU”的字符串,其中第1-4位“DD.D”為采集的溫度,第5位為字符“T”,為溫度標(biāo)識(shí),第6-7位“DD”為溫度上限值,第8位為字符“U”,為溫度上限值標(biāo)識(shí)。

且AT89C51單片機(jī)雙擊加入hex文件,雙擊串口進(jìn)行設(shè)置,如波特率,串口號(hào),校驗(yàn)位等,使用虛擬串口軟件虛擬串口線,用串口調(diào)試助手進(jìn)行仿真調(diào)試。

圖 8 仿真框圖

5.結(jié)語(yǔ)

軟件設(shè)計(jì)中,把程序按功能分模塊的話能提高編程效率,把問題一一解決,同時(shí)使問題簡(jiǎn)單化。

總的來說,自己從這次獨(dú)立的課程設(shè)計(jì)中收獲了一些知識(shí)與經(jīng)驗(yàn),一些從書本中學(xué)之不來的東西,不是說理論無用,而這恰恰是在理論的土壤中開出的花朵,是在理論的肩膀望見的更寬廣的道路!成功來之不易,自主動(dòng)手動(dòng)腦實(shí)踐,小小的成果亦能帶來碩大的喜悅!


完整的Word格式文檔51黑下載地址:

單片機(jī).docx (351.45 KB, 下載次數(shù): 31)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:976016 發(fā)表于 2021-11-28 19:17 | 顯示全部樓層
可惜只有word,誰(shuí)能分享下工程文件嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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