版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> 在寒假期間我用一周時間完成了這個液晶萬年歷,它可以顯示年月日、時分秒、以及溫度(可上下限報警),可以對時間進行加一或減一調整,并加入了閏、平年時間調整,方便可行,已經調試成功。考慮到成本和方便,本作品采用了STC89c52和DS18B20,計時用的是51單片機自帶的十六位定時器/計數器T0,盡管對時間進行了誤差調整但是還是有一定
2、的誤差,考慮到學校后改用DS1302時鐘芯片,進一步減小誤差。溫度顯示精度達到0.1攝氏度。</p><p> 關鍵詞: 單片機 DS18B20 萬年歷 溫度</p><p><b> 硬件工作介紹</b></p><p> ?。?)上電自動復位及手動復位電路</p><p> STC89c52單片機的RS
3、T端外部復位有兩種操作方式:上電自動復位和按鍵手動復位。本設計用上電自動復位以及手動復位下結合的方式外接電路(見附圖)。</p><p><b> ?。?)時鐘振蕩電路</b></p><p> 作品中采用12M晶振,其連接方法如圖所示,其中電容的值都為22pF。</p><p> ?。?)1602液晶顯示接口</p><
4、p> 1602采用標準的16腳接口(見附圖),其中:</p><p> 第1腳:GND為地電源</p><p> 第2腳:VCC接5V正電源</p><p> 第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度</p><p>
5、 第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。</p><p> 第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數據。</p><p> 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令
6、。</p><p> 第7~14腳:D0~D7為8位雙向數據線。 </p><p><b> 第15腳:VCC</b></p><p><b> 第16:GND</b></p><p><b> ?。?)鍵盤</b></p><p> 鍵盤是通過
7、S3(P3.2),S4(p3.3),S5(p3.4)對時鐘進行調整,其S3選擇要調整的對象如時,分,日,月等等,并在液晶屏上顯示所選的對象。S4對所選中的對象進行加一調整,而S5對所選對象進行減一調整。</p><p><b> ?。?)蜂鳴器</b></p><p> 對溫度進行測量,高低溫超限報警,正常溫度在15.0-36.0攝氏度,超過最高或低于最低溫度就會鳴
8、叫報警。</p><p><b> 軟件工作介紹</b></p><p> 由于C語言功能豐富,表達能力和可移植能力強,而且操作方便,簡單易懂,因此軟件部分由C語言編寫,程序的重點和難點是閏月的時間調整以及鍵盤對時間的調整,本程序還不是太完善,溫度顯示有規(guī)律性的微微閃爍,懇請老師指正。</p><p> 否
9、 否</p><p> 是 是 是</p><p> 否 否</p><p> 是 是
10、 是</p><p><b> 主程序流程圖</b></p><p><b> 設計總結</b></p><p> 在制作的過程中,因為板子是在學校自己動手做的最小系統板,接插線還是比較簡單的,難的是硬件的調試,因為理論與實踐總是存在著差距,想出來的東西沒有經過實踐的檢驗是不可靠的,任何一個小小的疏忽大意都能導
11、致失敗。</p><p> 比如說對 hour, min , sec,day, moth的定義,一開始我用的unsigned char ,但是在調試減一時,減到零時再按下鍵盤就會出現亂碼,幾經調試,終于發(fā)現問題地所在并及時地解決了問題,之后再一次對硬件進行調試,終于成功了。從這一方面來說,我認識到做要比說難得多,做的過程中必定有很多的阻礙,但是一定要慢慢來,一點一點地找出問題,再一點一點地解決它,這樣的話,到達
12、成功的彼岸也就僅僅是時間的問題了。我通過這次設計,特別是通過對程序的編寫,深層了解了單片機內部結構和外圍器件的應用。我學到的不僅僅是電子方面的知識,更重要的是,我學到了作為一名電子設計者所必需的心理素質,那就是——決心加上耐心!</p><p><b> 附錄1:程序代碼:</b></p><p> #include <reg51.h></p&g
13、t;<p> #define Lcd_Data P0 //定義數據端口</p><p> #define _TH0_TL0_ (65536 - 50000) </p><p> #define HI (_TH0_TL0_ / 256) //給高8位賦值</p><p> #define LO (_TH0_TL0_ %
14、256) //給低8位賦值</p><p> #define M 20 //(1000/50)1秒要20個中斷的累計</p><p> char hour = 0, min = 0, sec = 0,N=0,day=1,moth=1,week=7;</p><p> //初始化要顯示的值</p><p&g
15、t; unsigned char SEG_TAB[] = {0x30,0x31,0x32, 0x33, 0x34, 0x35, 0x36, 0x37,0x38, 0x39};//0-9數字</p><p> unsigned int year=8;</p><p> sbit RS = P2^ 5; //定義和LCD的連接端口</p><p> sbit
16、 RW = P2^ 4;</p><p> sbit E = P2^ 3;</p><p> sbit Busy = P0^ 7;</p><p> sbit S3 = P3^2;//定義開關s3選擇鍵</p><p> sbit S4 = P3^3;//s4加一鍵</p><p> sbit S
17、5 = P3^4;//s5減一鍵</p><p> sbit DQ = P2^0;//DS18B20</p><p> sbit speak = P2^1; //蜂鳴器警報</p><p> /***************************************************************************/<
18、;/p><p> void delay1(unsigned int num)//短延時函數</p><p><b> {</b></p><p> while( num-- );</p><p><b> }</b></p><p> /****************
19、**************************************************************/</p><p> void Delay(unsigned char t)//長延時函數,延時 1MS*t S</p><p><b> {</b></p><p> unsigned char a;</p&
20、gt;<p> while(--t != 0)</p><p><b> {</b></p><p> for(a = 0; a < 125; a++);</p><p><b> }</b></p><p><b> }</b></p>
21、;<p> /*******************************************************************/</p><p> void Timer0Init(void) //初始化定時器0程序</p><p><b> {</b></p><p> TMOD = 0x01; /
22、/設置模式1 定時器0 工作方式0</p><p> TH0 = HI; //給TH0,TL0賦初始值</p><p><b> TL0 = LO;</b></p><p> TR0 = 1; //啟動定時器0</p><p> ET0 = 1; //定時器中斷開</p><p>
23、EA = 1;//總中斷開</p><p><b> }</b></p><p> /******************************************************************************/</p><p> void Read_Busy(void)//讀忙信號判斷</p>
24、;<p><b> {</b></p><p><b> do{</b></p><p> Lcd_Data = 0xff;</p><p><b> RS = 0;</b></p><p><b> RW = 1;</b><
25、/p><p><b> E = 0;</b></p><p><b> Delay(2);</b></p><p><b> E = 1;</b></p><p> }while(Busy);</p><p><b> }</b&g
26、t;</p><p> /******************************************************************************/ </p><p> void Write_Comm(unsigned char lcdcomm) //寫指令函數</p><p><b> {</b>&
27、lt;/p><p> Lcd_Data = lcdcomm;</p><p><b> RS = 0;</b></p><p><b> RW = 0;</b></p><p><b> E = 0;</b></p><p> Read_Busy(
28、);</p><p><b> E = 1;</b></p><p><b> }</b></p><p> /******************************************************************************/</p><p> v
29、oid Write_Data(unsigned char lcddata)//寫數據函數</p><p><b> {</b></p><p> Lcd_Data = lcddata;</p><p><b> RS = 1;</b></p><p><b> RW = 0;&l
30、t;/b></p><p><b> E = 0;</b></p><p> Read_Busy();</p><p><b> E = 1;</b></p><p><b> }</b></p><p> /**************
31、****************************************************************/</p><p> void Init_LCD(void)//初始化LCD</p><p><b> {</b></p><p> Delay(400); //稍微延時,等待LCD進入工作狀態(tài)</p&
32、gt;<p> Write_Comm(0x01);//清顯示</p><p> Write_Comm(0x02);//光標歸位</p><p> Write_Comm(0x38);//8位2行5*8</p><p> Write_Comm(0x06);//文字不動,光標右移</p><p> Write_Comm(0x
33、0c);//顯示開/關,光標開閃爍開</p><p> Write_Comm(0x18);//左移</p><p><b> }</b></p><p> /*******************************************************************************/</p>
34、<p> Init_DS18B20(void)//初始化ds1820</p><p><b> {</b></p><p> unsigned char x = 0;</p><p> DQ = 1; //DQ復位</p><p> delay1(8); //稍做延時</p>
35、<p> DQ = 0; //單片機將DQ拉低</p><p> delay1(80); //精確延時 大于 480us</p><p> DQ = 1; //拉高總線</p><p> delay1(14);</p><p> x = DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失
36、敗</p><p> delay1(20);</p><p><b> }</b></p><p> /**********************************************************************************/</p><p> ReadOneChar(
37、void)//讀一個字節(jié)</p><p><b> {</b></p><p> unsigned char i = 0;</p><p> unsigned char dat = 0;</p><p> for (i = 8; i > 0; i--)</p><p><b&g
38、t; {</b></p><p> DQ = 0; // 給脈沖信號</p><p> dat >>= 1;</p><p> DQ = 1; // 給脈沖信號</p><p><b> if(DQ)</b></p><p> dat |= 0x80;</
39、p><p> delay1(4);</p><p><b> }</b></p><p> return (dat);</p><p><b> }</b></p><p> /**********************************************
40、************************************/</p><p> WriteOneChar(unsigned char dat)//寫一個字節(jié)</p><p><b> {</b></p><p> unsigned char i = 0;</p><p> for (i = 8; i
41、 > 0; i--)</p><p><b> {</b></p><p><b> DQ = 0;</b></p><p> DQ = dat&0x01;</p><p> delay1(5);</p><p><b> DQ = 1;&l
42、t;/b></p><p><b> dat>>=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> /**********************************************
43、************************************/</p><p> Read_Disp_Temperature(void)//讀取并顯示溫度</p><p><b> {</b></p><p> unsigned int a = 0, b = 0, c = 0, t = 0;</p><p&
44、gt; float tt = 0;</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); // 跳過讀序號列號的操作</p><p> WriteOneChar(0x44); // 啟動溫度轉換</p><p> Init_DS18B20();</p><p&
45、gt; WriteOneChar(0xCC); //跳過讀序號列號的操作</p><p> WriteOneChar(0xBE); //讀取溫度寄存器</p><p> a = ReadOneChar();</p><p> b = ReadOneChar();</p><p><b> t = b;</b>&
46、lt;/p><p><b> t <<= 8;</b></p><p> t = t | a;</p><p> tt = t * 0.0625;</p><p> t = tt * 10 + 0.5; //放大10倍輸出并四舍五入</p><p> a = t / 100;
47、 //十位</p><p> b = t / 10 - a * 10; //個位 </p><p> c = t - a * 100 - b * 10; //小數位</p><p> if((t>=360)||(t<=150)) //溫度報警范圍 </p><p> { speak=0;
48、</p><p><b> }</b></p><p> else speak=1;</p><p> Write_Comm(0x8d); //lcd顯示溫度</p><p> Write_Data( SEG_TAB[a]);</p><p> Write_Data( SEG_TAB
49、[b]);</p><p> Write_Data( '.');</p><p> Write_Data( SEG_TAB[c]);</p><p><b> }</b></p><p> /*****************************************************
50、*************************/</p><p> void main(void)//主函數--數字讀取和計算</p><p><b> {</b></p><p> Init_LCD(); //初始化 LCD</p><p> Timer0Init();//初始化定時器0
51、 </p><p> Write_Comm(0x83); //寫入":"字符 </p><p> Write_Data(':');</p><p> Write_Comm(0x86);</p><p> Write_Data(':');</p><p&g
52、t; Write_Comm(0x89);//溫度提示字符</p><p> Write_Data('T');</p><p> Write_Data('e');</p><p> Write_Data('m');</p><p> Write_Data('p');<
53、;/p><p> Write_Comm(0xc1);//第二行首地址</p><p> //寫入"20 - -"字符</p><p> Write_Data('2');</p><p> Write_Data('0');</p><p> Write_Comm
54、(0xc5);</p><p> Write_Data('-');</p><p> Write_Comm(0xc8);</p><p> Write_Data('-');</p><p> Write_Comm(0xcb);</p><p> Write_Data('
55、-');</p><p><b> while(1)</b></p><p><b> { </b></p><p> Read_Disp_Temperature(); //溫度</p><p><b> if(S3==0)</b></p><
56、;p><b> {</b></p><p> delay1(10); </p><p><b> if(S3==0)</b></p><p><b> N++;</b></p><p> if(N>6) {N=0;}</p><p>
57、; while(S3==0);</p><p> Write_Comm(0xcf); </p><p> Write_Data(SEG_TAB[N]); //顯示切換鍵位所示的位置 N</p><p> //0:秒,1:分,2:時,3:日,4:月,5:年 6:星期</p><p><b> }</b><
58、/p><p> if(S4==0)//時間調整--加</p><p><b> {</b></p><p> delay1(10); </p><p> if(S4==0) </p><p><b> { </b></p><p><
59、b> if(N==1)</b></p><p><b> {</b></p><p><b> min++;</b></p><p> if(min==60) min=0; </p><p> Write_Comm(0x84);</p><p>
60、 Write_Data(SEG_TAB[min/10]);</p><p> Write_Comm(0x85);</p><p> Write_Data(SEG_TAB[min%10]);</p><p><b> }</b></p><p><b> if(N==2)</b></p
61、><p><b> {</b></p><p><b> hour ++;</b></p><p> if(hour==24) hour=0;</p><p> Write_Comm(0x81);</p><p> Write_Data(SEG_TAB[hour/10]
62、);</p><p> Write_Comm(0x82);</p><p> Write_Data(SEG_TAB[hour%10]); </p><p><b> }</b></p><p><b> if(N==3)</b></p><p><b>
63、{</b></p><p><b> day++;</b></p><p> if(moth==2&&(year%4==0)&&day==30)day=1; //閏年2月天數計算 </p><p> if(moth==2&&(year%4!=0)&&day==29
64、)day=1; //平年2月</p><p> if((moth==4||moth==6||moth==9||moth==11)&&day==31)day=1;//4,6,9,11月計算</p><p> if(day==32)day=1;//1,3,5,7,8,10,12月天數計算</p><p> Write_Comm(0xC9);<
65、;/p><p> Write_Data(SEG_TAB[day/10]);</p><p> Write_Comm(0xCa);</p><p> Write_Data(SEG_TAB[day%10]);</p><p><b> }</b></p><p><b> if(N==
66、4)</b></p><p><b> {</b></p><p><b> moth++;</b></p><p> if(moth==13)moth=1;</p><p> Write_Comm(0xc6);</p><p> Write_Data(
67、SEG_TAB[moth/10]);</p><p> Write_Comm(0xc7);</p><p> Write_Data(SEG_TAB[moth%10]);</p><p><b> }</b></p><p><b> if(N==5)</b></p><p
68、><b> {</b></p><p><b> year++;</b></p><p> if(year==51)year=0;</p><p> Write_Comm(0xc3);</p><p> Write_Data(SEG_TAB[year/10]);</p>
69、<p> Write_Comm(0xc4);</p><p> Write_Data(SEG_TAB[year%10]);</p><p><b> }</b></p><p><b> if(N==6)</b></p><p><b> {</b><
70、;/p><p><b> week++;</b></p><p> if(week==8) week=1;</p><p> Write_Comm(0xcc);</p><p> Write_Data(SEG_TAB[year/10]);</p><p><b> }</b&
71、gt;</p><p> while(S4==0);</p><p><b> }</b></p><p><b> } </b></p><p> if(S5==0)//時間調整--減</p><p><b> {</b></p&g
72、t;<p> delay1(10);</p><p><b> if(S5==0)</b></p><p><b> { </b></p><p><b> if(N==1)</b></p><p><b> {</b></p
73、><p> min--;if(min<0) {min=59;}</p><p> Write_Comm(0x84);</p><p> Write_Data(SEG_TAB[min/10]);</p><p> Write_Comm(0x85);</p><p> Write_Data(SEG_TAB[mi
74、n%10]);</p><p><b> }</b></p><p><b> if(N==2)</b></p><p> { hour--;if(hour<0){hour=23;}</p><p> Write_Comm(0x81);</p><p> Wr
75、ite_Data(SEG_TAB[hour/10]);</p><p> Write_Comm(0x82);</p><p> Write_Data(SEG_TAB[hour%10]);</p><p><b> }</b></p><p><b> if(N==3)</b></p&g
76、t;<p> { day--; </p><p> if(moth==2&&(year%4==0)&&day<1)day=29; </p><p> if(moth==2&&(year%4!=0)&&day<1)day=28;</p><p> if((
77、moth==4||moth==6||moth==9||moth==11)&&day<1)day=30;</p><p> if(day<1)day=31;</p><p> Write_Comm(0xC9);</p><p> Write_Data(SEG_TAB[day/10]);</p><p> Wr
78、ite_Comm(0xCa);</p><p> Write_Data(SEG_TAB[day%10]);</p><p><b> }</b></p><p><b> if(N==4)</b></p><p><b> { moth--;</b></p>
79、<p> if(moth==0){moth=12;}</p><p> Write_Comm(0xc6);</p><p> Write_Data(SEG_TAB[moth/10]);</p><p> Write_Comm(0xc7);</p><p> Write_Data(SEG_TAB[moth%10]);&l
80、t;/p><p><b> }</b></p><p><b> if(N==5)</b></p><p><b> { year--;</b></p><p> if(year<0){year=50;}</p><p> Write_Com
81、m(0xc3);</p><p> Write_Data(SEG_TAB[year/10]);</p><p> Write_Comm(0xc4);</p><p> Write_Data(SEG_TAB[year%10]);</p><p><b> }</b></p><p><
82、b> if(N==6)</b></p><p><b> {</b></p><p><b> week--;</b></p><p> if(week==0) week=7;</p><p> Write_Comm(0xcc);</p><p>
83、 Write_Data(SEG_TAB[week]);</p><p><b> }</b></p><p> while(S5==0);</p><p><b> }</b></p><p><b> }</b></p><p><
84、b> }</b></p><p><b> }</b></p><p> /**************************************************************************/</p><p> void IsrTimer0(void) interrupt 1 usin
85、g 1 //定時器0中斷服務程序</p><p><b> {</b></p><p> static unsigned char count = 0;//定義靜態(tài)變量count</p><p> TR0 = 0; //時間誤差調整</p><p> TL0 += (_TH0_
86、TL0_ + 9) % 256;</p><p> TH0 += (_TH0_TL0_ + 9) / 256 + (char)CY;</p><p><b> TR0 = 1;</b></p><p><b> count++;</b></p><p> if(count == M)//1秒
87、種時間到</p><p><b> {</b></p><p> count = 0;</p><p><b> sec++;</b></p><p> if(sec == 60)//1分鐘時間到</p><p><b> {</b>&l
88、t;/p><p><b> min++;</b></p><p><b> sec = 0;</b></p><p> if(min == 60)//1小時時間到</p><p><b> {</b></p><p><b> hour+
89、+;</b></p><p><b> min = 0;</b></p><p> if(hour == 24)//24小時時間到</p><p> { day++;</p><p><b> week++;</b></p><p><b>
90、; hour = 0;</b></p><p><b> min = 0;</b></p><p><b> sec = 0;</b></p><p> if(week==8)</p><p> { week=1;</p><p><b>
91、; }</b></p><p> if((moth==2&&(year%4==0)&&day==30)||(moth==2&&(year%4!=0)&&day==29)||((moth==4||moth==6||moth==9||moth==11)&&day==31)||(day==32))</p>&l
92、t;p> { //一個月到</p><p><b> moth++;</b></p><p><b> day=1;</b></p><p> if(moth==13) //一年到</p><p&g
93、t; { year++; </p><p><b> moth=1;</b></p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p><p>&l
94、t;b> }</b></p><p><b> }</b></p><p><b> } </b></p><p> Write_Comm(0x81); //時間顯示 </p><p> Write_Data(S
95、EG_TAB[hour/10]);</p><p> Write_Comm(0x82);</p><p> Write_Data(SEG_TAB[hour%10]);</p><p> Write_Comm(0x83);</p><p> Write_Data(':');</p><p> W
96、rite_Comm(0x84);</p><p> Write_Data(SEG_TAB[min/10]);</p><p> Write_Comm(0x85);</p><p> Write_Data(SEG_TAB[min%10]);</p><p> Write_Comm(0x86);</p><p>
97、 Write_Data(':');</p><p> Write_Comm(0x87);</p><p> Write_Data(SEG_TAB[sec/10]);</p><p> Write_Comm(0x88);</p><p> Write_Data(SEG_TAB[sec%10]);</p>&
98、lt;p> Write_Comm(0x8f);</p><p> Write_Data( '.');</p><p> Write_Comm(0xc3);</p><p> Write_Data(SEG_TAB[year/10]);</p><p> Write_Comm(0xc4);</p>&
99、lt;p> Write_Data(SEG_TAB[year%10]);</p><p> Write_Comm(0xc5);</p><p> Write_Data('-');</p><p> Write_Comm(0xc6);</p><p> Write_Data(SEG_TAB[moth/10]);&l
100、t;/p><p> Write_Comm(0xc7);</p><p> Write_Data(SEG_TAB[moth%10]);</p><p> Write_Comm(0xc8);</p><p> Write_Data('-');</p><p> Write_Comm(0xc9);<
101、;/p><p> Write_Data(SEG_TAB[day/10]);</p><p> Write_Comm(0xca);</p><p> Write_Data(SEG_TAB[day%10]);</p><p> Write_Comm(0xcb);</p><p> Write_Data('-&
102、#39;);</p><p> Write_Comm(0xcc);</p><p> Write_Data(SEG_TAB[week]);</p><p> Write_Comm(0xcd); </p><p> Write_Data(0xfe);</p><p> Write_Comm(0xce); &
103、lt;/p><p> Write_Data(0xfe);</p><p> Write_Comm(0xcf+1); </p><p> Write_Data(0xfe);</p><p><b> }</b></p><p><b> 附錄2:電路圖</b></
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于51單片機的萬年歷畢業(yè)設計
- 51單片機萬年歷畢業(yè)設計論文
- 畢業(yè)設計---基于51單片機的萬年歷設計
- 畢業(yè)設計---基于51單片機的萬年歷設計
- 51基于單片機的電子萬年歷畢業(yè)設計
- 【畢業(yè)設計】基于51單片機的電子萬年歷設計
- 基于51單片機的電子萬年歷畢業(yè)設計論文
- 畢業(yè)設計--基于單片機控制1602液晶的萬年歷
- 基于單片機的萬年歷畢業(yè)設計
- 基于51單片機的電子萬年歷設計
- 畢業(yè)設計---基于51單片機的電子萬年歷的設計
- 基于at89c51單片機萬年歷畢業(yè)設計
- 畢業(yè)設計---基于mcs-51單片機的萬年歷設計
- 基于單片機的萬年歷設計畢業(yè)設計
- 畢業(yè)設計---基于單片機萬年歷的設計
- 畢業(yè)設計---基于單片機萬年歷的設計
- 基于單片機的萬年歷設計畢業(yè)設計
- 單片機萬年歷系統畢業(yè)設計
- 基于at89c51單片機萬年歷的畢業(yè)設計
- 基于單片機的測溫萬年歷畢業(yè)設計
評論
0/150
提交評論