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

QQ登錄

只需一步,快速開(kāi)始

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

基于51單片機(jī)的數(shù)字電子鐘Proteus仿真程序

[復(fù)制鏈接]
ID:921382 發(fā)表于 2021-5-31 15:45 | 顯示全部樓層 |閱讀模式
基于51單片機(jī)的數(shù)字電子鐘仿真原理圖:
51hei.png 批注 2021-05-31 151553.png
1.設(shè)計(jì)任務(wù)和要求
1、數(shù)字電子鐘(使用定時(shí)器做計(jì)時(shí),用靜態(tài)或動(dòng)態(tài)顯示時(shí)鐘)
主要設(shè)計(jì)內(nèi)容
1)用定時(shí)器實(shí)現(xiàn)走時(shí)功能
2)用 4 位或 6 位數(shù)碼管實(shí)現(xiàn)時(shí)鐘顯示(時(shí)、分、秒)
3)用 2 個(gè)或多個(gè)按鍵實(shí)現(xiàn)校時(shí)修改(采用移位鍵和加 1 鍵修改時(shí)、分、秒)
4)修改校時(shí)過(guò)程中,被修改位要求定位閃爍,以表明該位數(shù)值正在修改
5)時(shí)鐘走時(shí),要求秒點(diǎn)閃爍
6)時(shí)鐘走時(shí)誤差控制在 1 /
7)擴(kuò)展增加年月日計(jì)時(shí)功能,并按鍵切換分屏顯示
2.電路設(shè)計(jì)方案選擇,分析電路工作原理和系統(tǒng)性能
         1. 數(shù)據(jù)顯示模塊
考慮到要顯示的內(nèi)容頗多,故運(yùn)用1602A顯示實(shí)時(shí)數(shù)據(jù),第一行顯示狀態(tài)以及年月日星期(如S 2009—01—01 THU),第二行顯示溫度和實(shí)時(shí)時(shí)間(  22.0C12:00:00),在處理按鍵設(shè)置時(shí),第二行暫時(shí)屏蔽溫度的顯示而顯示設(shè)置的內(nèi)容。這樣雖然在程序方面多了1602A的一些初始化和讀寫子函數(shù)的定義,但程序的模塊化卻更加的清楚。而且采用1602A LCM的液晶顯示模塊后不僅滿足了大量數(shù)據(jù)的顯示,系統(tǒng)的硬件電路變的十分簡(jiǎn)單清晰明
2.溫度采集模塊
采用常用的溫度采集芯片DS18B20單線數(shù)字溫度傳感器進(jìn)行溫度的采集DS18B20的外部電源供電方式 在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時(shí)I/O線不需要強(qiáng)上拉,不存在電源電流不足的問(wèn)題,可以保證轉(zhuǎn)換精度,外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強(qiáng),而且電路也比較簡(jiǎn)單。在外接電源方式下,可以充分發(fā)揮DS18B20寬電源電壓范圍的優(yōu)點(diǎn),即使電源電壓VCC降到3V時(shí),依然能夠保證溫度量精度。外接電源解決了電壓方面的苛刻要求,雖多接了一根線,但對(duì)于本設(shè)計(jì)的近距離測(cè)試來(lái)說(shuō)還是很適合的
     3.時(shí)間處理模塊
利用51內(nèi)部的定時(shí)器和中生成秒,再利用程序累加清零等基本時(shí)間,爾后再調(diào)用C中一些經(jīng)典的算法生成年月日以及星期等信息。但是該方案必須保證系統(tǒng)一直處于供電的情況,不能斷電,否則時(shí)間由初始化了,所以該方案中又添加了三個(gè)設(shè)置按鈕,也就是增加了一個(gè)設(shè)置調(diào)整模塊,在再次供電后可以調(diào)整時(shí)間以同步,完美的解決了時(shí)間的連續(xù)性問(wèn)題。這雖使得電路和方案一復(fù)雜度相當(dāng),但是系統(tǒng)的設(shè)計(jì)對(duì)資源的利用更充分。
        4.調(diào)整設(shè)置模塊
這個(gè)模塊完全是第三個(gè)模塊的一個(gè)衍生品,它就是為了調(diào)整時(shí)間以便斷電后正常使用。該模塊包括四個(gè)按鍵(兩個(gè)中斷,兩個(gè)設(shè)置),一個(gè)中斷就是簡(jiǎn)單要停止鬧鐘;另一個(gè)中斷時(shí)是停止時(shí)鐘,進(jìn)入設(shè)置狀態(tài),包括調(diào)整時(shí)間以同步和設(shè)置鬧鐘的值,而另外兩個(gè)設(shè)置建一個(gè)就是為了此時(shí)增加或減少時(shí)間值,另一個(gè)的作用是在調(diào)整完了當(dāng)前量后進(jìn)入下一個(gè)量的調(diào)整或退出調(diào)整。

3.主控制器AT89C52介紹
1.AT89C52功能介紹
AT89C52是8字節(jié)FLASH閃速存儲(chǔ)器,256字竹內(nèi)部RAM , 32個(gè)I/O口線,3個(gè)16 位定時(shí)/計(jì)數(shù)器,一個(gè)6向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89c52可降至OHz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電上作模式?臻e方式停止CPU 的工作,但允許RAM,定時(shí)/計(jì)數(shù)器.串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM 中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位.
2.功能引腳說(shuō)明:
Vcc:電源電壓
GND:地
P0:P0口是一組8位漏極開(kāi)路型雙向1/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí).每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL 邏輯門電路,對(duì)端口P0 寫“1”時(shí),可作為高阻抗輸入端用。
在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部 上拉電阻。
FLASH由編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字 節(jié),校驗(yàn)時(shí),要求外接上拉電阻。
P1口:PI 是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,Pl的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作 輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流IIL
AT89C51不同之處是,Pl.0 和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(Pl.0/T2 )和輸入(P1.1/T2EX) ,
FLASH編程和程序校驗(yàn)期間,Pl接收低8位地址。
PI.O 和PI.l 的第二功能:
P2 是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯電路。對(duì)端口P2寫“l(fā)",通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,           作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(llt )。
在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器,P2送出高8 位地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器、如執(zhí)行MOVX@RI指令)時(shí),P2口輸出P2鎖存器的內(nèi)容。
FLASH編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。
     P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3口將用上拉電阻輸出電流(IIL) .
P3口除了作為一般的I/0口線外,更重要的用途是它的第二功能,如下表所示:
P3.0 RXD(串行輸入口〕
P3.1 TXD(串行輸出口〕
P3.2 INTO(外中斷0〕
P3.3 INTO(外中斷l(xiāng))
P3.4 TO (定時(shí)/計(jì)數(shù)器0 )
P3.5 Tl (定時(shí)/計(jì)數(shù)器l )
P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)
P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
此外,P3口還接收一些用于FLASH閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。
RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。
ALE/PROG:當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié).一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位.可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活,此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無(wú)效。
PSEN:程序儲(chǔ)存允許PSEN輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次PSEN信號(hào)。
EA/VPP:外部訪問(wèn)允許。欲使CPU 僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000H-FFFFH ) , EA端必須保持低電平(接地).需注怠的是:如果加密位LBI被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。
3.最小系統(tǒng)
單片機(jī)最小系統(tǒng)包括時(shí)鐘電路、電源和復(fù)位電路等,是單片機(jī)工作的基本要求。單片機(jī)控制整個(gè)系統(tǒng)的工作,一方面讀取日歷時(shí)鐘芯片中的日期等數(shù)據(jù),檢測(cè)是否需要設(shè)置,并處理相應(yīng)的按鍵。另一方面,控制顯示器的工作,將各種數(shù)據(jù)送到液晶顯示器去顯 80C52型單片機(jī)內(nèi)有一增益反相放大器,振蕩頻率取決于石英晶體的振蕩頻率。范圍可取1。2—12MHZ,C01、C02主要起頻率微調(diào)和穩(wěn)定作用。
(1)復(fù)位電路
單片機(jī)在開(kāi)關(guān)機(jī)時(shí)都需要復(fù)位,以便中央處理器CPU及其他功能部件都RC構(gòu)成處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作。80C51RST引腳是復(fù)位信號(hào)的輸入端。復(fù)位信號(hào)高電平有效,持續(xù)時(shí)間需要24個(gè)時(shí)鐘周期以上。
RC構(gòu)成微分電路,在接電瞬間,產(chǎn)生一個(gè)微分脈沖,其寬度若大于2個(gè)機(jī)器周期,80C51型單片機(jī)將復(fù)位。為保證微分脈沖寬度足夠大,RC時(shí)間常數(shù)應(yīng)大于2個(gè)機(jī)器周期。一般取10uF電容、8.2K歐姆電阻。
4.振蕩器特性:
XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。
基于51單片機(jī)的數(shù)字電子鐘源碼:(完整代碼和電路圖在附件中)
  1. #include "reg52.h"
  2. //#include "delay.h"
  3. #include "ds1302.h"        
  4. #include "lcd1602.h"
  5. #include "ds18b20.h"
  6. //#include "stdio.h"

  7. #define uint unsigned int
  8. #define uchar unsigned char

  9. sbit K1=P3^3;                                                //選擇
  10. sbit K2=P3^4;                  //加
  11. sbit K3=P3^5;                  //減
  12. sbit K4=P3^6;                  //確定

  13. sbit BUZZER=P1^0;                                //蜂鳴器

  14. uchar RTC_flag=0;
  15. char RTC_NYRSFM[14]={0};
  16. code char RTC_set_state[6]={'N','Y','R','S','F','M'};
  17. code char Ping_Run_Year[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  18. code char Tab[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02,//年
  19.                                                                                 0x0F,0x09,0x0F,0x09,0x0F,0x09,0x0B,0x11,//月
  20.                                                                                 0x1F,0x11,0x11,0x1F,0x11,0x11,0x1F,0x00};//日
  21. /*
  22. 函數(shù)作用:將時(shí)間進(jìn)行加一或減一后返回(DA指令轉(zhuǎn)換)
  23. 函數(shù)形參:
  24.                                         DateTime:要轉(zhuǎn)化的時(shí)間
  25.                                         n                                :時(shí)間的進(jìn)制
  26.                                         x                                :1表示加1,0表示減1
  27.                                         y                                :0表示起始數(shù)值是0,1表示起始數(shù)值是1
  28. 返回值        :轉(zhuǎn)化好的時(shí)間
  29. */
  30. uchar        DA_DateTime(uchar DateTime,uchar n,uchar x,uchar y)
  31. {
  32.         uchar a;
  33.         a=(DateTime>>4)*10+(DateTime&0x0f);
  34.         if(x)//加
  35.         {
  36.                 if(y)        a=(a%n)+1;//起始為0
  37.                 else        a=(++a)%n;
  38.         }
  39.         else//減
  40.         {
  41.                 if(y)        a=(a+n-1)%n;//起始為0
  42.                 else        a=((a+n-2)%n)+1;
  43.         }
  44.         return ((a/10)*16+a%10);
  45. }
  46. /*
  47. 函數(shù)作用:刷新星期(2000年~2099年星期算法)
  48. 函數(shù)形參:
  49.                                         y:年
  50.                                         m:月
  51.                                         d:日
  52. 返回值        :
  53. */
  54. void RefreshWeekDay(uchar y,uchar m,uchar d)
  55. {
  56.   if(m==1||m==2)
  57.   {
  58.                 m+=12;
  59.                 y--;
  60.   }
  61.   TIME[5]=((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7);
  62. }
  63. /*
  64. 函數(shù)作用:顯示屏顯示從DS1302讀出的時(shí)鐘
  65. 函數(shù)形參:
  66. 返回值        :
  67. */
  68. void Lcd_1602_Display(void)
  69. {
  70.                 RefreshWeekDay((TIME[6]>>4)*10+(TIME[6]&0x0f),(TIME[4]>>4)*10+(TIME[4]&0x0f),(TIME[3]>>4)*10+(TIME[3]&0x0f));
  71.         
  72.                 L1602_char(1,1,TIME[6]/16+'0');
  73.                 L1602_char(1,2,(TIME[6]&0x0f)+'0');//年
  74.                 L1602_char(1,3,0x00);//自定義漢字年
  75.                 L1602_char(1,4,TIME[4]/16+'0');
  76.                 L1602_char(1,5,(TIME[4]&0x0f)+'0');//月
  77.                 L1602_char(1,6,0x01);//自定義漢字月
  78.                 L1602_char(1,7,TIME[3]/16+'0');
  79.                 L1602_char(1,8,(TIME[3]&0x0f)+'0');//日
  80.                 L1602_char(1,9,0x02);//自定義漢字日
  81.                 L1602_char(1,11,((TIME[5]&0x0f)+6)%7+1+'0');//周
  82.                 L1602_char(2,1,TIME[2]/16+'0');
  83.                 L1602_char(2,2,(TIME[2]&0x0f)+'0');//時(shí)
  84.                 L1602_char(2,3,':');
  85.                 L1602_char(2,4,TIME[1]/16+'0');
  86.                 L1602_char(2,5,(TIME[1]&0x0f)+'0');//分
  87.                 L1602_char(2,6,':');
  88.                 L1602_char(2,7,TIME[0]/16+'0');
  89.                 L1602_char(2,8,(TIME[0]&0x0f)+'0');//秒
  90. }
  91. /*
  92. 函數(shù)作用:天數(shù)加減一
  93. 函數(shù)形參:x為1加,0減
  94. 返回值        :
  95. */
  96. void RCT_DA_R(uchar x)
  97. {
  98.         if(((((TIME[6]>>4)*10+(TIME[6]&0x0f))%4==0 && ((TIME[6]>>4)*10+(TIME[6]&0x0f))%100!=0) || (((TIME[6]>>4)*10+(TIME[6]&0x0f))%400==0)) && ((TIME[4]>>4)*10+(TIME[4]&0x0f))==2)//閏年二月
  99.         {
  100.                 TIME[3]=DA_DateTime(TIME[3],29,x,1);
  101.         }
  102.         else
  103.         {
  104.                 TIME[3]=DA_DateTime(TIME[3],Ping_Run_Year[(TIME[4]>>4)*10+(TIME[4]&0x0f)-1],x,1);
  105.         }
  106. }
  107. /*
  108. 函數(shù)作用:寫入自定義圖形(年月日)
  109. 函數(shù)形參:
  110. 返回值        :
  111. */
  112. void LCD1602_CustomData()
  113. {
  114.         uchar i;
  115.         wcmd(0x40);//定義第一個(gè)自定義字符
  116.         for(i=0;i<8*3;i++)
  117.         {
  118.                 wdata(Tab[i]);
  119.         }
  120. }

  121. void Int1_Init()//設(shè)置INT1
  122. {
  123.         IT1=1;//跳變沿出發(fā)方式(下降沿)
  124.         EX1=1;//打開(kāi)INT1的中斷允許。
  125.         EA=1;//打開(kāi)總中斷
  126. }


  127. void main()
  128. {
  129.         uchar i;
  130.         BUZZER=0;
  131.         L1602_init();
  132.         Ds1302_Init();
  133.         Int1_Init();
  134.         LCD1602_CustomData();
  135.         while(1)
  136.         {
  137.                 if(RTC_flag==0)//正常顯示模式
  138.                 {
  139.                         Ds1302ReadTime();//DS1302獲取時(shí)間
  140.                         if((TIME[1]==0)&&(TIME[0]==0))//分秒為0,整點(diǎn)報(bào)時(shí)
  141.                         {
  142.                                 BUZZER=1;
  143.                         }
  144.                         else
  145.                         {
  146.                                 BUZZER=0;
  147.                         }
  148.                         Lcd_1602_Display();//顯示時(shí)間
  149.                         L1602_string(1,14,"RTC");
  150.                         datapros();
  151.                 }
  152.                 else//設(shè)置模式
  153.                 {
  154.                         BUZZER=0;
  155.                         if(K1==0)
  156.                         {
  157.                                 while(K1==0);
  158.                                 L1602_string(1,14,"[ ]");
  159.                                 for(i=0;i<7;i++)
  160.                                 {
  161.                                         if((i+1)==RTC_flag)//顯示設(shè)置的參數(shù)狀態(tài)
  162.                                         {
  163.                                                 L1602_char(1,15,RTC_set_state[i]);
  164.                                         }
  165.                                 }
  166.                         }
  167.                         else if(K2==0)//加
  168.                         {
  169.                                 while(K2==0);
  170.                                 switch(RTC_flag)
  171.                                 {
  172.                                         case 1:TIME[6]=DA_DateTime(TIME[6],100,1,0);break;
  173.                                         case 2:TIME[4]=DA_DateTime(TIME[4],12,1,1);break;
  174.                                         case 3:RCT_DA_R(1);break;
  175.                                         case 4:TIME[2]=DA_DateTime(TIME[2],24,1,0);break;
  176.                                         case 5:TIME[1]=DA_DateTime(TIME[1],60,1,0);break;
  177.                                         case 6:TIME[0]=DA_DateTime(TIME[0],60,1,0);break;
  178.                                 }
  179.                                 Lcd_1602_Display();
  180.                         }
  181.                         else if(K3==0)//減
  182.                         {
  183.                                 while(K3==0);
  184.                                 switch(RTC_flag)
  185.                                 {
  186.                                         case 1:TIME[6]=DA_DateTime(TIME[6],100,0,0);break;
  187.                                         case 2:TIME[4]=DA_DateTime(TIME[4],12,0,1);break;
  188.                                         case 3:RCT_DA_R(0);break;
  189.                                         case 4:TIME[2]=DA_DateTime(TIME[2],24,0,0);break;
  190.                                         case 5:TIME[1]=DA_DateTime(TIME[1],60,0,0);break;
  191.                                         case 6:TIME[0]=DA_DateTime(TIME[0],60,0,0);break;
  192.                                 }
  193.                                 Lcd_1602_Display();
  194.                         }
  195.                         else if(K4==0)//確定
  196.                         {
  197.                                 while(K4==0);
  198.                                 L1602_string(1,14,"RTC");
  199.                                 Ds1302_Init();//寫進(jìn)時(shí)間
  200.                                 RTC_flag=0;
  201.                         }
  202.                 }
  203.         }               
  204. }

  205. void EX_INT1() interrupt 2
  206. {
  207.         RTC_flag=(RTC_flag++)%6+1;//N Y R S F M
  208. }

復(fù)制代碼

51hei.png
全部資料51hei下載地址:
數(shù)字時(shí)鐘.zip (176.62 KB, 下載次數(shù): 98)

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:891233 發(fā)表于 2021-11-1 12:11 | 顯示全部樓層
為啥1602不能正常顯示
回復(fù)

使用道具 舉報(bào)

ID:1058304 發(fā)表于 2022-12-20 20:46 | 顯示全部樓層
為什么打開(kāi)那個(gè)Proteus始終一直再跳,而且設(shè)置完成后按下確認(rèn)也無(wú)法改變
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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