版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、福建電力職業(yè)技術(shù)學(xué)院課 程 設(shè) 計課程名稱: 智能儀器 題目: 基于stc89c52的簡易計算器設(shè)計 專業(yè)班次: 10(三)檢測1班 姓 名: 學(xué) 號: 指導(dǎo)教師: 學(xué) 期: 2011-2012學(xué)年第2學(xué)期 日 期: 2012.2 目 錄1.引言1 1.1 設(shè)計意義1 1.2 設(shè)計任務(wù)和主要內(nèi)容12. 硬件設(shè)計1 2.1 系統(tǒng)框圖1 2.2 最小系統(tǒng)2 2.3 矩陣鍵盤3 2.4 lcd160233. 軟件設(shè)計5 3.1矩陣鍵盤掃描原理5 3.2 lcd1602的軟件設(shè)計6 3.3 主程序設(shè)計7 3.4 源程序8 3.5 調(diào)試結(jié)果84. 設(shè)計小結(jié)9參考文獻9附錄101.引言隨著社會的發(fā)展,人們
2、生活水平的提高,單片機的應(yīng)用越來越貼近生活了,人們常用單片機來實現(xiàn)一些簡單的電子設(shè)計。計算器在人們的日常生活中是不可或缺的電子產(chǎn)品之一,目前市場上的計算器基本可以滿足我們的日常需求,但它還在發(fā)展之中,我們要繼續(xù)研究出更加強大的計算器。基于這樣的理念,本設(shè)計采用單片機來設(shè)計簡易計算器。本設(shè)計是以stc89c52為單片機,lcd為顯示器設(shè)計的簡易計算器,所設(shè)計的計算器將完成兩位數(shù)的加、減、乘、除等功能。1.1 設(shè)計意義通過本次課程設(shè)計,進一步掌握單片機知識,知道at89s52單片機的原理、編程和各種功能的應(yīng)用,了解簡易計算器的工作原理,初步掌握計算器的硬軟件設(shè)計、編寫、調(diào)試和仿真,充分提高動手能力
3、和排除故障的能力,同時通過課程設(shè)計加深我們對單片機的認識和興趣,發(fā)揮我們的創(chuàng)新能力和動手能力。1.2 設(shè)計任務(wù)和主要內(nèi)容本設(shè)計要制作的就是單片機于生活中最為常見的一種應(yīng)用簡易計算器,以stc89c52單片機作為核心來進行的數(shù)字計算器模擬系統(tǒng)設(shè)計,可以完成計算器的鍵盤輸入,進行加、減、乘、除兩位數(shù)范圍內(nèi)的基本四則運算,并在lcd上顯示相應(yīng)的結(jié)果。設(shè)計電路采用at89c51單片機為主要控制電路,顯示采用lcd靜態(tài)顯示,軟件方面使用c語言編程,并用protues仿真。 查閱相關(guān)文獻資料,了解簡易計算器程序的原理,能夠運用c 語言進行簡易計算器的設(shè)計與制作。 設(shè)計基于c 語言的計算器的控制系統(tǒng)硬件部分
4、,畫出控制系統(tǒng)硬件框圖,設(shè)計簡易計算器的控制系統(tǒng)的軟件部分,首先根據(jù)簡易計算器所需的具體功能設(shè)計好程序流程圖,包括控制流程圖、控制時序圖、梯形圖程序設(shè)計;根據(jù)設(shè)計的程序流程圖寫出代碼,并進行代碼編譯的調(diào)試。 把設(shè)計好的軟件代碼燒入硬件中,然后進行總體調(diào)試,直至原先預(yù)定要實現(xiàn)的功能完全實現(xiàn)為止。 設(shè)計出系統(tǒng)方框圖、單元圖、原理總圖;畫出控制程序流程圖,以及編寫完整的程序 2. 硬件設(shè)計2.1 系統(tǒng)框圖本文所設(shè)計的簡易計算器顯示系統(tǒng)由stc89c52單片機及其最小系統(tǒng)、lcd1602液晶顯示和矩陣鍵盤等部分組成。其系統(tǒng)框圖如圖2.1所示。圖2.1 簡易計算器系統(tǒng)框圖2.2 最小系統(tǒng)單片機最小系統(tǒng),
5、或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng)。對51系列單片機來說,最小系統(tǒng)一般應(yīng)該包括:單片機、晶振電路、復(fù)位電路。如圖2.2為單片機的最小系統(tǒng)。 圖2.2 stc89c52最小系統(tǒng)stc89c52 單片機概述:stc89c52是一個低功耗,高性能cmos 8位單片機,功能強大的微型計算機的at89s51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。stc89c52具有如下特點:40個引腳,8k的flash存儲器,128 bytes的隨機存取數(shù)據(jù)存儲器(ram),32個外部雙向輸入/輸出(io)口,5 個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙
6、工串行通信口,看門狗(wdt)電路,片內(nèi)時鐘振蕩器。2.3 矩陣鍵盤鍵盤是單片機系統(tǒng)中最常用的人機對話輸入設(shè)備,用戶通過鍵盤向單片機輸入數(shù)據(jù)或指令。目前市場上鍵盤有獨立鍵盤和矩陣鍵盤,經(jīng)過多方考量,本設(shè)計采用矩陣鍵盤。在鍵盤中按鍵數(shù)量較多時,為了減少io口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口就可以構(gòu)成4*4=16個按鍵,比直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯。所以,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤較為合理。2.3.1 獨立鍵盤與矩陣鍵盤的區(qū)別計算器輸入數(shù)字和其他功能按鍵要用到
7、很多按鍵,如果采用獨立按鍵的方式,在這種情況下,編程會比較簡單,但是會占用大量的io口資源,因此在很多情況下都不采用這種方式。矩陣鍵盤掃描程序的優(yōu)點在于,不用專門的按鍵延時程序,提高了cpu效率,也不用中斷來掃描鍵盤,節(jié)省了硬件資源。此外,本鍵盤掃描程序每次掃描占用cpu時最短,不論有鍵按下或者無鍵按下都可以在很短的時間完成一次掃描。2.3.2 矩陣鍵盤與單片機的接口電路下圖為矩陣鍵盤與單片機的接口電路圖,由圖可知,當無按鍵閉合時, p10p13與p14p17之間開路;當有鍵閉合時,與閉合鍵相連的兩條io口線之間短路。 圖2.3 矩陣鍵盤接口電路2.4 lcd16022.4.1 lcd1602
8、液晶簡介本設(shè)計使用lcd1602液晶顯示器來顯示。液晶是介于固態(tài)和液態(tài)間的有機化合物,將其加熱會變成透明液態(tài),冷卻后變成結(jié)晶的混作固態(tài)。在點擊的作用下,產(chǎn)生冷熱變化,從而影響它的透光性,來達到顯示的目的。1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,它有若干個5*7或者5*11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔,每行之間也有也有間隔,起到了字符間距和行間距的作用,所以它不能顯示圖形 。lcd1602液晶顯示器具有以下幾個優(yōu)點:低壓、微功耗、顯示信息量大、壽命長、無輻射、無污染。2.4.2 lcd1602與單片
9、機的接口電路1602液晶模塊內(nèi)部的控制器共有11條控制指令,豐富的指令可以完成液晶的時序控制、工作方式設(shè)置和數(shù)據(jù)顯示等。本設(shè)計采用的是lcd1602液晶模塊,是標準的16針插座,接口電路如下圖所示: 圖2.4 lcd1602接口電路知道接口圖后,還要了解每個引腳接口的說明,引腳接口說明如下表所示: 編號 符號 引腳說明編號 符號 引腳說明 1 vss 電源地 9 d2 數(shù)據(jù) 2 vdd 電源正極 10 d3 數(shù)據(jù) 3 vl 液晶顯示偏壓 11 d4 數(shù)據(jù) 4 rs 數(shù)據(jù)/命令選擇 12 d5 數(shù)據(jù) 5 r/w 讀/寫選擇 13 d6 數(shù)據(jù) 6 e 使能信號 14 d7 數(shù)據(jù) 7 d0 數(shù)據(jù) 1
10、5 bla 背光源正極 8 d1 數(shù)據(jù) 16 blk 背光源負極表2.4 引腳接口說明表3.軟件設(shè)計3.1矩陣鍵盤掃描原理如圖2.3所示,初始化時,將p1.4置為低電平,通過與0x0f 相與來判斷所按下的鍵,此次為掃描位于p1.4那一行的鍵,若相與結(jié)果為0x0e時說明p1.0所檢測出的為低電平,閉合的鍵應(yīng)為p1.4行與p1.0列的交叉處的鍵。若相與結(jié)果為0x0d則p1.1所檢測為低電平,閉合的鍵應(yīng)為p1.4行與p1.1列的交叉處的鍵。若相與結(jié)果為0x0b則p1.2所檢測為低電平,閉合的鍵應(yīng)為p1.4行與p1.2列的交叉處的鍵。若相與結(jié)果為0x07則p1.3所檢測為低電平,閉合的鍵應(yīng)為p1.4行
11、與p1.3列的交叉處的鍵。要把16個鍵盤全部掃描完需要進行4次這樣的逐行掃描,所用方法相同程序類似分別另p1.5,p1.6,p1.7為低電平執(zhí)行相同操作。判斷有無按鍵按下的方法:第一步,置列線p14p17為輸入狀態(tài),從行線p10p13輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。第二步,行線輪流輸出低電平,從列線p14p17讀入數(shù)據(jù),若有某一列為低電平,則對應(yīng)行線上有鍵按下。綜合一二兩步的結(jié)果,可確定按鍵編號。但是鍵閉合一次只能進行一次鍵功能操作,因此須等到按鍵釋放后,再進行鍵功能操作,否則按一次鍵,有可能會連續(xù)多次進行同樣的鍵操作。 圖2.3 矩陣鍵盤接口電路3.2 lc
12、d1602的軟件設(shè)計3.2.1 lcd1602的指令說明1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.2所示。 表 3.2控制命令表序號指令rsr/wd7d6d5d4d3d2d1d01清顯示00000000012光標返回000000001*3置輸入模式00000001i/ds4顯示開/關(guān)控制0000001dcb5光標或字符移位000001s/cr/l*6置功能00001dlnf*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標志或地址01bf計數(shù)器地址10寫數(shù)到cgram或ddram)10要寫的數(shù)據(jù)內(nèi)容11從cgram或ddram讀數(shù)
13、11讀出的數(shù)據(jù)內(nèi)容如上表所示,1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(1為高電平、0為低電平) 3.2.2 lcd1602的時序圖lcd1602與hd44780相兼容的芯片時序表如下:表3.3基本操作時序表讀狀態(tài)輸入rs=l,r/w=h,e=h輸出d0d7=狀態(tài)字寫指令輸入rs=l,r/w=l,d0d7=指令碼,e=高脈沖輸出無讀數(shù)據(jù)輸入rs=h,r/w=h,e=h輸出d0d7=數(shù)據(jù)寫數(shù)據(jù)輸入rs=h,r/w=l,d0d7=數(shù)據(jù),e=高脈沖輸出無讀寫操作時序圖如下: 圖3.2 讀操作時序圖 圖3.3 寫操作時序圖3.3 主程序設(shè)計在程序設(shè)計方法上,模塊化程序設(shè)計
14、是單片機應(yīng)用中最常用的程序設(shè)計方法。設(shè)計的中心思想是把一個復(fù)雜應(yīng)用程序按整體功能劃分成若干相對獨立的程序模塊,各模塊可以單獨設(shè)計,編程和調(diào)試,然后組合起來。這種方法便于設(shè)計和調(diào)試,容易實現(xiàn)多個程序共存,但各個模塊之間的連接有一定的難度根據(jù)需要我們可以采用自上而下的程序設(shè)計方法,此方法先從主程序開始設(shè)計, 然后再制作各從屬程序和子程序,層層細化逐步求精,最終完成一個復(fù)雜程序的設(shè)計。這種方法比較符合人們的日常思維,缺點是一級的程序錯誤會對整個程序產(chǎn)生影響。程序流程圖如圖3.3 圖3.4主程序流程圖3.4 源程序見附錄3.5 調(diào)試結(jié)果在查找了相關(guān)書籍后編寫出程序,并根據(jù)程序焊接所需要的元器件,將各類
15、元器件及管腳座焊接完畢后,插入單片機、lcd顯示屏、矩陣鍵盤等各類芯片。隨后進行功能驗證。加、減、乘、除運算和lcd液晶顯示。1)上電后,屏幕初始化。 2)計算。按下數(shù)字鍵,屏幕顯示按下的數(shù)字,再按下加、減、乘、除符號鍵,然后再按下數(shù)字鍵,最后按下“”號鍵,屏幕即顯示出計算結(jié)果。本次計算器可實現(xiàn)兩位數(shù)間的計算。 3)如果要再次計算,可以按下清零鍵清零,或者按下單片機的復(fù)位鍵,重新初始化。經(jīng)過以上步驟驗證可知,實驗?zāi)繕斯δ芑緦崿F(xiàn),設(shè)計成功。4. 設(shè)計小結(jié)為期3周的課程設(shè)計在緊鑼密鼓的實驗中接近尾聲了,這次的課題是基于stc89c52的簡易計算器設(shè)計,本設(shè)計采用了stc89c52芯片,基本上實現(xiàn)
16、了利用單片機進行了一個 簡單的計算器設(shè)計,允許對輸入數(shù)據(jù)進行加、減、乘、除運算以及液晶 1602 進行顯示。 在實驗前我們組先是在網(wǎng)上和圖書館找了一些前輩所設(shè)計的計算器方案進行學(xué)習(xí)參考,一開始認為簡易計算器制作起來結(jié)構(gòu)相對簡單,涉及的知識也有文獻可查詢,除了程序繁瑣一些,其他都還好。但在實際制作過程中并不是這么簡單,我們遇到了許多問題,不僅僅是專業(yè)知識上的問題,還存在組員之間的意見不同等。最后在老師的指導(dǎo)和組員之間的磨合,都克服了困難,完成了設(shè)計。總的來說,一次課程設(shè)計我們不僅將專業(yè)知識融會貫通,還提高了動手能力和分工合作,通過課程設(shè)計,我們對單片機的認識也有所提升。參考文獻1徐志保,基于工程
17、導(dǎo)向的單片機實戰(zhàn)教程.20112郭天祥,新概念51單片機c語言教程.北京:電子工業(yè)出版社,20093馬忠梅,單片機的c語言應(yīng)用程序設(shè)計.北京:北京航空航天大學(xué)出版社,19974張毅剛,單片機原理及應(yīng)用.北京,高等教育出版社,20085譚浩強,c程序設(shè)計(第二版)m.北京:清華大學(xué)出版社,20036余錫存,曹國華,單片機原理及接口技術(shù).西安:西安電子科技大學(xué)出版社,2000附錄#include#include #include#include #include #define uchar unsigned char#define uint unsigned intuchar key,sym,su
18、msz13,adders=0; /定義變量float sum,number1=0,number2=0; /定義變量bit flag=0; / 定義位變量標志位sbit lcdrs=p20; / 定義液晶的讀io口sbit lcdwr=p21; / 定義液晶的寫io口sbit lcden=p22; / 定義液晶的使能io口uchar lcd_s=0,1,2,3,4,5,6,7,8,9,+,-,*,0xfd,.,=;/uchar curpos=0xc0;void keyscan(); / 函數(shù)聲明void delayms(uchar z); void write_com(uchar com);vo
19、id write_data(uchar dat);void init(); void delay(int z); bit buzz();void yuans();void clear();/*主函數(shù)*/void main() init(); /液晶初始化while(1) /循環(huán)函數(shù) write_com(0x80);write_data( );write_data( );write_data( );write_data(c);write_data(a);write_data(l);write_data(c);write_data(u);write_data(l);write_data(a);wr
20、ite_data(t);write_data(e);write_data(r); keyscan(); /調(diào)用鍵盤掃描函數(shù) /*鍵盤掃面*/void keyscan() uchar temp=0; p1=0xfe; /第1次判斷函數(shù) temp=p1; temp=temp&0xf0; if(temp!=0xf0) delayms(15); temp=p1; temp=temp&0xf0; if(temp!=0xf0) temp=p1; adders+;/確定按鍵按下,執(zhí)行if函數(shù) switch(temp) case 0xee: key=1;write_com(curpos);curpos+;wr
21、ite_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key;break;/顯示字符1,并記入相加的變量 case 0xde: key=2;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key;break;/顯示字符2,并記入相加的變量 case 0xbe: key=3;write_com(curpos);curpos+;write_
22、data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key;break;/顯示字符3,并記入相加的變量 case 0x7e: key=10;write_com(curpos);curpos+;write_data(lcd_skey);sym=+;flag=1; break;/顯示+號,并將sym付+ while(p1&0xf0)!=0xf0);/等待按鍵釋放 p1=0xfd; /第2次判斷 temp=p1; temp=temp&0xf0; if(temp!=0xf0) delayms(15); tem
23、p=p1; temp=temp&0xf0; if(temp!=0xf0) temp=p1;adders+;/確定按鍵按下,執(zhí)行if函數(shù) switch(temp) case 0xed: key=4;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key; break;/顯示字符4,并記入相加的變量 case 0xdd: key=5;write_com(curpos);curpos+;write_data(lcd_skey);if(fla
24、g=0)number1=number1*10+key; else number2=number2*10+key; break;/顯示字符5,并記入相加的變量 case 0xbd: key=6;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key;break; /顯示字符6,并記入相加的變量 case 0x7d: key=11;write_com(curpos);curpos+;write_data(lcd_skey);sym=-;f
25、lag=1; break;/顯示-號,并將sym付- while(p1&0xf0)!=0xf0); p1=0xfb; /第3次判斷 temp=p1; temp=temp&0xf0; if(temp!=0xf0) delayms(15); temp=p1; temp=temp&0xf0; if(temp!=0xf0) temp=p1;adders+; /確定按鍵按下,執(zhí)行if函數(shù) switch(temp) case 0xeb: key=7;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key
26、; else number2=number2*10+key; break;/顯示字符7,并記入相加的變量 case 0xdb: key=8;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key; break;/顯示字符8,并記入相加的變量 case 0xbb: key=9;write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key;
27、else number2=number2*10+key;break; /顯示字符9,并記入相加的變量 case 0x7b: key=12;write_com(curpos);curpos+;write_data(lcd_skey);sym=*;flag=1; break;/顯示*號,并將sym付* while(p1&0xf0)!=0xf0); /等待按鍵釋放 p1=0xf7;/ 第4次判斷 temp=p1; temp=temp&0xf0; if(temp!=0xf0) delayms(15); temp=p1; temp=temp&0xf0; if(temp!=0xf0)temp=p1;add
28、ers+; /確定按鍵按下,執(zhí)行if函數(shù) switch(temp) case 0xe7: key=0; write_com(curpos);curpos+;write_data(lcd_skey);if(flag=0)number1=number1*10+key; else number2=number2*10+key; break;/顯示字符0,并記入相加的變量case 0xd7: key=14;clear(); break;/調(diào)用清零函數(shù) case 0xb7: key=15;yuans();flag=1;adders-;break;/調(diào)用運算函數(shù) case 0x77: key=13;wri
29、te_com(curpos);curpos+;write_data(lcd_skey);sym=/;flag=1; break;/顯示/號,并將sym付/ while(p1&0xf0)!=0xf0); /等待按鍵釋放 /*液晶*/void write_com(uchar com) /液晶寫指令程序while(buzz() ; lcdrs=0; / lcdwr=0; / lcden=0; p0=com; / _nop_(); _nop_(); _nop_(); _nop_(); lcden=1; / _nop_(); _nop_(); _nop_(); _nop_(); lcden=0; /void write_data(uchar dat) /液晶寫數(shù)據(jù)程序 while(buzz(); lcdrs = 1; lcdwr = 0; lcden = 0; p0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); lcden = 1; _nop_(); _nop_();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國發(fā)動機曲軸行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國鉭電容器行業(yè)并購重組擴張戰(zhàn)略制定與實施研究報告
- 高效會議管理培訓(xùn)課件
- 消防水炮知識培訓(xùn)課件
- 煤氣安全知識培訓(xùn)課件
- 2024中國采礦、采石設(shè)備制造市場前景及投資研究報告
- 廣西賀州市八步區(qū)2023-2024學(xué)年九年級上學(xué)期期末化學(xué)試題
- 炭疽防控知識培訓(xùn)課件下載
- 電磁學(xué)知識培訓(xùn)課件
- 市引申蒙氏教學(xué)幼兒園工作參考計劃
- 建筑公司員工合規(guī)手冊
- 質(zhì)量保證的基本原則與方法
- 第1講-句子結(jié)構(gòu)
- 鼻腔沖洗護理技術(shù)團體標準解讀
- 《流感科普宣教》課件
- 紅領(lǐng)巾知識伴我成長課件
- 廚邦醬油推廣方案
- 腦血管病的三級預(yù)防
- 保險產(chǎn)品創(chuàng)新與市場定位培訓(xùn)課件
- 2022-2023學(xué)年山東省淄博四中高二(上)期末數(shù)學(xué)試卷含答案
- 《建筑賦比興》一些筆記和摘錄(上)
評論
0/150
提交評論