




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機理論與實踐的十大誤區(qū)元增民2007年電子報合訂本發(fā)表單片機是計算機的一個分支,是計算機向控制方向發(fā)展的一個產(chǎn)物。二十年來,單片機已經(jīng)從只有少數(shù)人才能掌握的技術(shù)演變?yōu)榇蟊娀墓ぞ撸蔀楹芏鄬I(yè)技術(shù)人員必不可少的基本工具。如果說技術(shù)人員出行離不開汽車,那么就可以說搞開發(fā)離不開單片機。但是,單片機技術(shù)對很多人來說似乎還是深奧玄妙高不可攀的。不僅很多??粕趩纹瑱C面前膽怯了,而且很多本科生也難闖單片機課程這一關(guān),甚至一些人考研時因為感覺單片機課程難而不得不選考其他課程甚至忍疼調(diào)換別的研究方向。造成這個被動局面的原因既有客觀的,又有主觀的,又有客觀與主觀相攙雜的。如果說客觀原因往往是人們所處環(huán)境造
2、成的而不容易改變,那么主觀原因往往是人們自己造成的,是自我設下的陷阱,就是說由于受到來自教科書等渠道的一些陳腐觀念的引導而不幸走進了一些認識上的誤區(qū)。有時候還因為認識上的誤區(qū)而埋怨客觀條件不好。系統(tǒng)性地認識目前的一些陳腐觀念,消除單片機理論與實踐的誤區(qū),有利于學校調(diào)整課程內(nèi)容、改進教學方法,有利于學生改善學習效果,有利于學生用較少的精力學到較多的知識,有利于專業(yè)技術(shù)人員更好地掌握單片機技術(shù)。本文首先介紹單片機理論與實踐的十大誤區(qū),并給出一種基于反復執(zhí)行指令的模式而設計的無機器周期誤差的高精度液晶電子鐘。一、單片機理論與實踐的十大誤區(qū)1單片機調(diào)試必用仿真器單片機程序存貯器最早采用掩膜ROM。掩膜
3、ROM只能一次性編程,一般程序一旦固化后就不可能更改。因此通常用一個程序可更改的、邏輯功能及管腳都與所用單片機芯片一樣的電路來代替單片機芯片進行試驗,直到把程序試驗成功時,才把調(diào)試好的程序固化到單片機程序存貯器中。把這樣的程序可更改的、邏輯功能及管腳都與所用單片機芯片一樣的電路叫做仿真器。如果不用仿真器而是直接把尚沒有調(diào)試完畢的程序固化到掩膜ROM中,那么每調(diào)試一次就要消耗一個掩膜ROM芯片或帶掩膜ROM的單片機芯片。8051就是一款帶掩膜ROM的單片機芯片即掩膜型單片機,流行時8051單價上百元。如果每調(diào)試一次就消耗一片8051,就要損失100元左右,這個代價實在有點高。因此,仿真器對于掩膜
4、ROM結(jié)構(gòu)的程序存貯器的價值比較大。采用掩膜ROM時,購買一個仿真器,一般經(jīng)過若干次研制工作,就能收回成本。后來程序存貯器發(fā)展為紫外線擦除的可編程ROM,即EPROM,以及電可擦除的可編程ROM,即EEPROM,也叫E2PROM。8751就是一款內(nèi)含EPROM的單片機。EPROM和E2PROM可以反復寫入擦除達成百上千次。EPROM和EEPROM出現(xiàn)后,仿真器的價值就大打折扣。因為用戶可以試著把程序?qū)懭隕PROM或EEPROM,然后試機。若失敗,則一方面用紫外線擦抹器擦除EPROM,或用電擦除EEPROM,均為統(tǒng)統(tǒng)改為1,另一方面根據(jù)故障現(xiàn)象分析程序錯誤所在并修正程序,然后重新寫入EPROM或
5、EEPROM進行下次試驗。如此進行若干次試驗,一般就能將程序調(diào)試成功。近幾年程序存貯器發(fā)展為閃存(FLASH)。FLASH可以反復寫入擦除達成千上萬次。FLASH出現(xiàn)后,仿真器的價值更是大打折扣。用戶可以試著把程序?qū)懭隖ALSH,然后試機。若失敗則一方面在編程器上直接擦除FLASH,亦是統(tǒng)統(tǒng)改為1,另一方面根據(jù)故障現(xiàn)象分析程序錯誤以及硬件錯誤所在并修正程序和硬件,然后重新寫入FLASH進行下次試驗。如此進行若干次試驗,一般就能夠調(diào)試成功。一些人沒有注意到程序存貯器結(jié)構(gòu)特性的發(fā)展,還是一味地追求仿真器,結(jié)果是得不償失。實際上,筆者從1982年開始研制Z80微機控制系統(tǒng)、MCS48系列單片機控制系
6、統(tǒng)、MCS51系列單片機控制系統(tǒng)以及AT89C51和AT89S51系列單片機控制系統(tǒng)以來,所用的程序存貯器或單片機內(nèi)含的程序存貯器剛開始就是EPROM,后來從EPROM直接過渡到FLASH,其間沒有用過仿真器?,F(xiàn)在更不用仿真器。不是不用,實在是沒有什么必要。復雜系統(tǒng)調(diào)試時,硬件故障與軟件故障攙雜在一起,往往使人如臨荊棘而無從下手。此時可以暫時簡化硬件和軟件,如能試成,則至少說明單片機芯片正常,硬件故障范圍縮小了,調(diào)試難度大大減輕了,調(diào)試人員信心倍增。2LED比LCD電路簡單價格便宜因而LED為首選發(fā)光二極管顯示器(LED)與液晶顯示器(LCD)在20世紀70年代同時出現(xiàn)。LED基于電子源源不斷
7、地從高能級跌落到低能級而連續(xù)釋放出多余能量的機理來發(fā)光,LCD基于液晶材料在電壓控制下光學特性的變化來實現(xiàn)顯示。LED發(fā)光方式的效率及壽命雖然優(yōu)于白熾燈發(fā)光方式,但是LED工作時仍舊在消耗電能。相比之下LCD工作時電能消耗甚微。LCD工作時基本上不消耗電能,且可以借助外界自然光。雖然LCD綜合優(yōu)勢明顯大于LED,但是長期以來,LED在各行各業(yè)廣泛采用,LCD僅見于計算器和電子手表等少數(shù)領(lǐng)域。直到現(xiàn)在還有一些人推崇LED而輕視LCD,其理由一是客觀上LED發(fā)光效率逐漸提高,已經(jīng)有高亮度LED品種,二是主觀認為LED控制電路比LCD簡單。LCD構(gòu)造與驅(qū)動技術(shù)的確比LED復雜。構(gòu)造與驅(qū)動技術(shù)復雜是L
8、CD很長時間以來沒有能夠廣泛應用的根本原因。但是正是因為LCD構(gòu)造與驅(qū)動技術(shù)復雜,才使一些急需LCD的用戶要求液晶顯示器生產(chǎn)廠家把LCD裸屏、導電橡膠(俗稱斑馬條)等連接件、專用IC控制器和PCB板,甚至包括背光源等統(tǒng)統(tǒng)制作為一個組件,形成所謂液晶顯示模塊,LCD Module,簡稱LCM。我國長沙太陽人電子有限公司從1995年就開始生產(chǎn)LCM。最初LCM是特殊定貨專供某些廠家使用,因此市場上很難見到。后來隨著經(jīng)驗積累和技術(shù)進步,廠家開始設計生產(chǎn)通用型LCM,例如可顯示若干位數(shù)碼的LCM,可顯示若干行數(shù)碼的LCM,可顯示若干點陣的LCM等。LCM研發(fā)、設計和制造已經(jīng)成為一個新產(chǎn)業(yè)。這些通用型L
9、CM具有標準的并行或串行通信接口,作為一個外圍電路,與單片機的硬件連接非常方便,控制軟件編制也非常簡單。眾所周知,編制LED顯示控制軟件時要考慮顯示方式是靜態(tài)還是動態(tài)。對比之下,選用LCM時主要看顯示效果,編制LCM控制軟件時根本不需要考慮所用LCM究竟是采用靜態(tài)顯示還是采用動態(tài)顯示。動態(tài)LED控制軟件主要內(nèi)容是字模輸出,靜態(tài)LED控制軟件是單純字模輸出,LCM控制軟件也是單純字模輸出。因此,單片機控制LCM與控制靜態(tài)LED一樣簡單,單片機控制LCM比控制動態(tài)LED更簡單。只要往LCM控制器中的映像寄存器寫入字模就可以實現(xiàn)液晶顯示。對用戶來說,在硬件使用方面,LCM甚至比LED還簡單。LED顯
10、示電路一直沒有現(xiàn)成的商品可購,需要用戶自行設計。對比之下,市場上各種LCM已經(jīng)琳瑯滿目,用戶買來就可以使用。認為LED控制電路比LCD簡單的觀點不符合實際。另外,LCD數(shù)碼管的價格與LED數(shù)碼管已經(jīng)是旗鼓相當。例如字高12mm的LCD數(shù)碼管每位價格已經(jīng)降到1元上下,而同尺寸的LED數(shù)碼管每位價格也在1元上下。最便宜的45位LCM價格只要20元上下,亦與功能相似的LED電路不相上下。認為LCD價格比LED高的觀點也已過時。液晶顯示器還有一個優(yōu)點,那就是可以根據(jù)用戶和市場需要設計任意復雜字符,并且任意復雜字符在控制時都當成一個筆畫考慮,控制復雜字符就像控制一個小數(shù)點一樣非常簡便。例如,長沙太陽人電
11、子有限公司生產(chǎn)的SMS0501C型電子秤專用LCM,除了有5位數(shù)碼管以顯示5位數(shù)字之外,還能顯示“kg公斤”以及“元”,其中“kg 公斤”、“元”都各作為一個筆畫考慮。還有,液晶裸屏與控制器的連接件已經(jīng)不單純是排線或斑馬條,方便實用的金屬針腳LCD商品已經(jīng)推向市場。金屬針腳LCD商品的出現(xiàn),為廣大電子技術(shù)和單片機愛好者直接涉獵LCD控制大開方便之門。最初的一位LCD數(shù)碼管以及CD4056控制的一位數(shù)碼型LCM目前都已經(jīng)趨于被淘汰。市場上的LCD數(shù)碼管以及數(shù)碼型LCM至少是3.5位或4位以上的。即使有高亮度LED產(chǎn)品,也改變不了LED在顯示領(lǐng)域降格為LCD的附屬物即LED為LCD提供背光的現(xiàn)實。
12、無論從整體效果,從用戶硬件軟件設計,還是從價格來看,LCD都優(yōu)于LED。總之,液晶顯示器為當今各種機電產(chǎn)品、電子產(chǎn)品等顯示器首選品種。具體進行液晶顯示設計時,LCM一般都應當是首選品種。只有若干位數(shù)碼時,還可以考慮采用普通單片機直接驅(qū)動LCD,以提高控制靈活性并降低成本。3認為11.0592MHz是無理數(shù)而隨意舍去尾數(shù)串行通信雙方應當以相同的數(shù)據(jù)傳輸速率即波特率工作。串行通信雙方的波特率誤差大到一定程度時,勢必影響串行通信的正??煽窟M行。下面首先分析串行通信雙方波特率允差。異步通信發(fā)送方開始數(shù)據(jù)發(fā)送前,首先發(fā)送一個低電平起始位,告訴接受方,發(fā)送數(shù)據(jù)的過程馬上要開始,然后每隔一個波特率周期發(fā)送一
13、個數(shù)據(jù)位,7到8個數(shù)據(jù)位發(fā)送完畢后,可以發(fā)送一個奇偶校驗位或地址數(shù)據(jù)識別位,最后發(fā)送一個高電平停止位。圖1 11位格式的異步通信數(shù)據(jù)傳輸將低電平起始位、若干數(shù)據(jù)位、可能的奇偶校驗位和高電平停止位組成的數(shù)據(jù)流稱為一幀數(shù)據(jù)。同步通信不需要起始位、奇偶校驗位或停止位。接收方以16倍波特率的速率連續(xù)檢測數(shù)據(jù)傳輸線電平,以探測數(shù)據(jù)傳輸線上有無起始位到來。起始位到來時刻的檢測誤差為檢測速率的倒數(shù)。檢測速率越高,檢測誤差就越小。當檢測結(jié)果為高電平時,判斷為無數(shù)據(jù)傳輸。一旦檢測到低電平,就在過半個波特率周期后即在應有的起始位中點b和左邊點a、右邊點c,見圖1,再連續(xù)檢測三次,a到b、b到c時間差均等于檢測速率
14、的倒數(shù)。若連續(xù)3次檢測結(jié)果中至少有2次為低電平,就判斷為起始位0來到,否則認為是一個干擾而不理會。判斷起始位來到后,每過一個波特率周期,就連續(xù)3次檢測數(shù)據(jù)位,并以3取2的規(guī)則判斷檢測結(jié)果是0還是1。每個數(shù)據(jù)位的檢測都在數(shù)據(jù)脈沖中間段進行,并且以3取2方法濾除可能的干擾,是保證異步串行通信可靠性的基本手段。異步通信收發(fā)雙方只是約定使用相同的波特率,實際雙方各自有波特率發(fā)生器且自產(chǎn)自用,因此異步通信收發(fā)雙方的波特率只是理論上要求相等,實際上不可能相等。就是說,異步通信收發(fā)雙方的波特率實際上總有差異,這就是異步通信名稱的由來。若收方波特率與發(fā)方波特率相差甚大,則將使收方數(shù)據(jù)采集逐漸偏離發(fā)送數(shù)據(jù)中位,
15、甚至在發(fā)送數(shù)據(jù)有效范圍的邊沿采集。收方波特率與發(fā)方波特率相差越大,采集位置誤差就越大。一幀數(shù)據(jù)位數(shù)越多,采集位置誤差就越大。設一幀數(shù)據(jù)總位數(shù)為n,發(fā)方波特率為f1,收方波特率為f2。從圖1可看出,接收方過1.5/f2時間讀bit0,過2.5/f2時間讀bit1,過(n-0.5)/f2時間讀停止位。累積誤差影響最大的是停止位的讀取。若(n-0.5)/f2n/f1,欲讀停止位,實際讀的卻是空閑位1甚至是下一幀數(shù)據(jù)的起始位0??傊?,要保證正確地讀取停止位,應當有即有從中解出接收方波特率f2應當滿足的條件 (a)從上式可解出一幀數(shù)據(jù)為10,11位時接收方波特率f2應當滿足的條件。n=10時,接收方波特
16、率f2應當滿足條件,允差5.6%。n=11時,接收方波特率f2應當滿足條件,允差5.0%??梢钥闯?,一幀數(shù)據(jù)的總位數(shù)n越大,收方波特率與發(fā)方波特率允差就越小。上述分析只是粗略估計。實際上應當考慮的因素更多,例如接收方檢測一幀數(shù)據(jù)起始位的頻率不是無窮大,而是有限的16倍波特率,故時間分割不是無窮小,因此存在起始位檢測誤差,使異步通信接收方波特率與發(fā)送方波特率允差比上述數(shù)值更小。串行通信常見一幀數(shù)據(jù)以10位、11位居多,因此可認為串行通信雙方波特率允差為6%。早期的MCS48單片機沒有串行口。在很多工業(yè)設備已經(jīng)使用串行通信的情況下,為了拓寬市場,MCS51單片機設置了串行口。此時串行通信波特率已經(jīng)
17、標準化,工業(yè)設備常用波特率有300bps,600bps,1200bps,2400bps,4800bps,9600bps,19200bps等。因此MCS51單片機串行口只能向已有標準靠攏。因此就存在一個問題,用多大的晶振頻率fosc和時間常數(shù)X來實現(xiàn)工業(yè)設備常用波特率300bps,600bps,1200bps,2400bps,4800bps,9600bps, 19200bps。設SMOD=0,晶振頻率fOSC=12MHz,代入到51單片機串行通信方式1、3 異步通信波特率計算公式中有 (b) 從中可求出實現(xiàn)波特率B所需要的時間常數(shù)X (c) 將B=1200bps代入到式(c),可計算理論時間常數(shù)
18、X=229.96,實際時間常數(shù)X只能取整數(shù),取X=230,代入到式(b)可計算實際所獲得波特率B=1201.9bps,與標準值1200bps相比,波特率誤差為0.16%。表1 fosc=12MHz條件下實現(xiàn)的波特率及其誤差要求波特率BX理論值X實際值實際波特率波特率誤差1200229.962301201.90.16%2400242.982432403.80.16%4800249.492494464.37%9600252.7425310416.78.5%同理根據(jù)B=2400bps,4800bps,9600bps可計算理論時間常數(shù)、實際時間常數(shù)、實際所得波特率以及波特率誤差,見表1??梢钥闯?,采用
19、12MHz晶振頻率時,要求波特率1200bps和2400bps,實際波特率各為1201.9bps、2403.8bps,波特率誤差遠遠小于6%,故設備能正常工作;要求波特率4800bps和19200bps,實際波特率各為4464.3bps、10416.7bps,波特率誤差明顯超出允許的6%范圍,設備就不能工作了。事實上的確如此。同時也證明了式(a)符合實際。設SMOD=1,再將fOSC=11.0592MHz代入方式1、3 異步通信波特率計算公式中有表2 fosc=11.0592MHz條件下實現(xiàn)的波特率及其誤差要求波特率BX值波特率實際值300643006001606001200208120024
20、00232240048002444800960025096001920025319200可以看出,方式1,3下的波特率計算公式中的分母,而,除了能除盡外,還剩余,因此用作晶振頻率時,51單片機串行口選工作方式2、定時器工作于組合模式2時可以產(chǎn)生工業(yè)設備常用波特率300bps,600bps,1200bps,2400bps,4800bps, 9600bps,19200bps?,F(xiàn)在可以總結(jié)常用的6MHz、12MHz、11.0592MHz晶振頻率的優(yōu)點:6MHz晶振頻率的機器周期是整數(shù),12MHz晶振頻率的機器周期是整數(shù),進行時間控制時程序設計很方便。11.0592MHz晶振頻率的優(yōu)點是適合產(chǎn)生300
21、19200bps之間的常用倍增波特率。51單片機采用fOSC=11.0592MHz晶振頻率的目的就是用工作于組合模式2的自重裝定時器T1的整數(shù)初值獲得300,600,1200,2400,4800,9600,19200等常用整數(shù)波特率,以保證異步通信接發(fā)雙方的波特率至少在名義上相等,為在晶振頻率誤差不大的條件下保證異步通信接發(fā)雙方的波特率盡可能接近打下基礎。盡管這樣,也不是所有的51單片機晶振頻率都采用11.0592MHz。這是因為,很多51單片機僅僅使用雙機串行通信或同步通信方式,兩個情況下都沒有必要采用標準波特率30019200bps。4使用液晶顯示時液晶驅(qū)動專用單片機必用液晶驅(qū)動專用單片機
22、與液晶顯示模塊都是基于解決液晶驅(qū)動難的問題而設計的,兩者差不多同時問世。單片機的一個發(fā)展趨勢是把越來越多的功能模塊集成在單片機芯片內(nèi)。把液晶顯示模塊集成在單片機芯片內(nèi),并設計必要的接口,就形成液晶驅(qū)動專用單片機。液晶顯示模塊已經(jīng)形成巨大的市場和規(guī)模效益,對比之下,市場上很少能見到液晶驅(qū)動專用單片機產(chǎn)品。因此,綜合看來,使用液晶驅(qū)動專用單片機方案的成本要明顯高于使用液晶顯示模塊方案的成本。要看到,液晶顯示模塊在與液晶驅(qū)動專用單片機的競爭中明顯處于上風,新興的普通單片機直接驅(qū)動LCD技術(shù)對液晶顯示模塊是一個沖擊。總之,選擇液晶顯示方案時液晶驅(qū)動專用單片機必用的觀點一般并不合適。選擇液晶顯示方案時首
23、選品種一般應為液晶顯示模塊LCM。如果液晶顯示為數(shù)碼型,甚至可以考慮直接用普通單片機,如51單片機,直接驅(qū)動LCD裸屏。5輸入接口電路上拉電阻必用上拉電阻指接在正電源與I/O口線之間的電阻。51單片機除了P0口沒有上拉電阻,屬于漏極開路結(jié)構(gòu)之外,P1、P2、P3口內(nèi)部都設有上拉電阻。設有上拉電阻的準雙向I/O口作輸出時,可以直接提供高電平或低電平輸出,作輸入時若無按鍵按下,也能提供高電平輸入;若有接在口線與地之間的按鍵按下,則能提供低電平輸入。很明顯,51單片機P1、P2、P3作輸入時不需要外接上拉電阻。但是很不幸,在一些單片機教科書里,甚至個別流行比較廣的號稱是“十一五”國家級規(guī)劃教材的單片
24、機教科書里,51單片機P1口作輸入時統(tǒng)統(tǒng)都外接上拉電阻,真是有些畫蛇添足。學生用這樣的教科書學習單片機,不僅學不到知識,反而是越學越糊涂。漏極開路結(jié)構(gòu)的P0口最適合直接提供灌電流輸出,提供電壓輸出或輸入時才需要外接上拉電阻。上拉電阻結(jié)構(gòu)的P1、P2、P3口最適合直接提供電壓輸出或輸入,當然也可以提供灌電流輸出。為節(jié)省外接元件,達到最佳設計效果,安排I/O口時,應當優(yōu)先用P0口提供灌電流輸出,優(yōu)先用P1、P2、P3口供電壓輸出或輸入。這里還有一個51單片機P0口外接上拉電阻阻值多大為宜的問題。早期的MCS51單片機P1、P2、P3口內(nèi)部上拉電阻大約在,而近期的AT89C/S51單片機P1、P2、
25、P3口內(nèi)部上拉電阻大約在。經(jīng)驗也表明,通常上拉電阻有些大,而上拉電阻有些小。總之,只考慮電平電壓問題時,單片機外接上拉電阻以為好,電阻額定功率1/8W就足以。651單片機程序存貯器0323H單元必留大家知道,51單片機程序存貯器0323H單元可以留給中斷服務子程序入口使用,不用中斷功能時也可以留給主程序使用。就是說,不用中斷時主程序可以從程序存貯器0單元開始一直存放下去,而不必避開0323H單元。這樣的程序結(jié)構(gòu)最簡單,特別適合初學者使用。不幸的是,一些人不管是否使用中斷,總是要把程序存貯器0323H單元留給中斷服務子程序入口用。這樣做看似正規(guī),其實呆板。因為這樣做把主程序割裂成兩部分,無形中增
26、加了初學者的困難。靈活的做法應當是,使用中斷功能時主程序繞開0323H單元,不用中斷功能時主程序從程序存貯器0單元開始一直存放下去,而不必避開0323H單元。7反復執(zhí)行指令的定時方式的計時精度最低很多人一直認為反復執(zhí)行指令的定時方式的計時精度最低,并認為基于定時器中斷的定時方式的計時精度最高。有人甚至說,基于反復執(zhí)行指令的單片機控制電子鐘日走時誤差將達到不可思議的幾十分鐘。不用定時器和中斷時,程序中反復執(zhí)行的指令及執(zhí)行次數(shù)無論有多少,執(zhí)行的邏輯順序以及執(zhí)行過程中消耗的機器周期(時間)也是可數(shù)的。執(zhí)行過程中消耗的機器周期可數(shù),為精確設計計算奠定了基礎。因此基于反復執(zhí)行指令的定時方式可以做到?jīng)]有機
27、器周期誤差,達到最高計時精度。用某種方法確定系統(tǒng)實際計時誤差后,還可以根據(jù)實際使用的晶振微調(diào)程序,進一步提高計時精度。相比之下,用定時器進行時間控制時,其實存在一些不確定因素。請看下面的例子試在fosc=6MHz晶振條件下用51單片機定時器T0編制延時1秒子程序。解:顯然一次定時不足以完成1秒延時,需要多次定時。為計算方便,取一次定時時間,則需要定時次數(shù)為次。T0應當選用組合模式1。計數(shù)器計數(shù)次數(shù)計數(shù)器送入初值程序算法:每次定時100ms,循環(huán)10次定時1s。T0選軟件啟動、定時工作方式、組合模式1,TMOD控制字各位為GATE=0,M1M0=00。T1閑置不用,TMOD控制字高4位按一般做法
28、設為0,則整個TMOD控制字應為TMOD=B本程序用查詢方式。單片機復位后正好處在查詢即非中斷模式,符合需要,因此不用理會中斷控制字IE。程序占用:T0,R7子程序:DELAY:MOV R7,#10 ;定時10次MOV TMOD,#B;設T0為組合模式1SETB TR0 ;T0軟線圈通電,啟動定時器L1: MOV TL0,#0B0H ;送初值低位 MOV TH0,#3CH ;送初值高位JNB TF0,$ ;原地踏步等待100ms定時結(jié)束 CLR TF0 ;軟件清除CTC進位標志,為下次100ms定時作好準備 DJNZ R7,L1 ;循環(huán)10次定時1秒RET首先,程序執(zhí)行主要消耗在其中的JNB
29、TF0,$上,但是其余指令也要消耗時間而造成誤差,這就造成一些不確定因素,影響定時精度。再看下面的程序段:SETB TR0 ;T0軟線圈通電,啟動定時器MOV TL0,#0FFH ;送初值低位 MOV TH0,#3CH ;送初值高位該程序要求計數(shù)器從3CFFH基礎上加1成為3D00H。實際上計數(shù)器低位0FFH加1即向高位進位,2個機器周期后初值高位3CH在進位后才送入計數(shù)器高位,使得進位無效,產(chǎn)生定時誤差。如果使用定時器配合中斷完成時間控制,則由于中斷響應要在38個機器周期內(nèi)進行,其中有5個不確定機器周期,因此要造成更大的計時誤差。實踐已證明,認為反復執(zhí)行指令的定時方式的計時精度最低的觀點實在
30、有些主觀臆斷。實際情況是,使用定時器配合中斷定時精度最低,使用定時器查詢方式定時精度比較低,而反復執(zhí)行指令的定時方式的計時精度可以達到最高。本文第二部分介紹的電子鐘控制程序就采用了反復執(zhí)行指令的定時方式的計時方式,其精度達到了無機器周期誤差,用精度的晶振,達到了日走時誤差小于半秒的精度,很多表實際達到了日走時誤差0.1秒的精度。8定時器必講必學必用定時器是計算機(包括單片機)的一個附加功能模塊。有了定時器,在某些場合下計算機能以更高的效率完成更多更復雜的任務,但是定時精度不一定有多高。受定時器定時精度高等觀點的影響,單片機教學中存在一種定時器必講必學必用的誤區(qū)。這個誤區(qū)主觀增加了學生的學習難度
31、。產(chǎn)生這個誤區(qū)的原因是主觀上認為定時器計時精度高,所以一定要講要學要用定時器。殊不知定時器計時程序中可能存在不確定因素,因此定時器計時精度比不上反復執(zhí)行指令的簡單方式。9中斷必講必學必用受定時器配合中斷定時精度高等錯誤觀點的影響,單片機教學中還存在一種中斷必講必學必用的誤區(qū)。這個誤區(qū)更增加了學生的學習難度。其實在很多控制系統(tǒng)中,中斷不是必須。筆者在19861989年用Z80匯編語言和MCS51匯編語言編制了4部機電一體化控制程序。其中只有塑料制袋機的電子控制程序采用中斷功能,其余3部程序,即切削力采集顯示打印控制程序、機械傳動效率數(shù)據(jù)記錄程序以及振動攻絲機控制程序,都沒有使用中斷功能。不用中斷
32、,不僅沒有影響工作任務的完成,連程序代碼質(zhì)量也沒有影響。眾所周知,定時器和中斷都屬于計算機的附屬功能。把附屬功能誤認為是主要的必不可少的功能,就容易走進本末倒置的誤區(qū)??傊?,要明確定時器和中斷都屬于計算機的附屬功能。這些附屬功能可以放在稍后講授。課時比較少時,這些附屬功能可以安排為自學,少講甚至不講。10 51單片機主程序從非0地址開始存放任何一種計算機,包括單片機,都規(guī)定主程序從特定單元開始存放,機器復位后即從特定單元取指令開始執(zhí)行主程序。51單片機規(guī)定主程序從0單元開始存放,機器復位后即從0單元取指令開始執(zhí)行主程序。但是一些教師指導實驗時,卻讓學生從2000H等非零單元開始存放主程序。幸運
33、的是,這種不合適的做法實際并不影響主程序的正常執(zhí)行,于是這種不合適的做法在一段時間內(nèi)竟然還堂而皇之地“合法化”了。通常程序存貯器不寫入的單元事先都默認為B。程序從2000H單元寫入,就使0000H1FFFH單元內(nèi)容統(tǒng)統(tǒng)保留B。而機器碼B代表指令MOV R7,A,即把累加器A內(nèi)容送到寄存器R7。因此,主程序從2000H單元開始存放,相當于前邊有2000H條MOV R7,A指令。不過再多的MOV R7,A指令也只影響寄存器R7內(nèi)容。而一般主程序都不直接使用R7內(nèi)容。所以51單片機主程序即使從非零地址開始存放,一般也不影響主程序的執(zhí)行。但是,51單片機主程序從非零地址開始存放的消極影響很多。51單片
34、機主程序從非零地址開始存放,不僅造成很多誤解,還要減小程序存貯器可利用容量。51單片機主程序從非零地址開始存放的錯誤做法的來源,應當是一些人不加思考地全盤照搬20年前風行全國的TP801單板機的一些模式。計算機一般都有一個外殼,用戶看不到計算機內(nèi)部元器件及線路板等結(jié)構(gòu),暴露在外邊的通常只有顯示屏和鍵盤。美國科學家獨辟蹊徑,設計了一種教學用的Z80單板微型機,采用了Z80CPU和LED數(shù)碼管顯示器,并把LED數(shù)碼管顯示器和簡易鍵盤做在主板上,所有元器件及線路板結(jié)構(gòu)都對用戶一覽無遺,非常適合教學及擴展應用。1978年北京工業(yè)大學消化吸收改進美國這種教學用的Z80單板微型機,然后命名為TP801單板
35、機并由北京工業(yè)大學電子廠批量生產(chǎn)。TP801單板機像一絲新風吹遍全國。TP801單板機為全國各地廠礦企業(yè)、研究所及高校普遍認可。例如當時清華大學一下子就購買了100塊TP801單板機。緊跟在北京工業(yè)大學后邊,當時國內(nèi)還有很多單位研制生產(chǎn)各種型號的Z80單板機。LED數(shù)碼管就是隨著TP801單板機的研制生產(chǎn)而迅速為人們認可并廣泛應用的。北京工業(yè)大學引進并改進生產(chǎn)TP801單板機,對微機在我國的應用以及稍后單片機的引進和普及功不可沒。筆者1977年考入河北工學院(今河北工業(yè)大學,211工程院校之一)后,曾經(jīng)在學校計算中心的克羅曼科型Z80微電腦上用FORTRAN語言和BASIC語言進行科學計算和繪
36、圖,但始終看不到Z80CPU芯片。單板機揭開了微型機的面紗。筆者就讀大學時在黃孝安老師的TP801單板機上首次看到Z80CPU芯片,參加工作后有了一臺自己可以操作的TP801單板機。那時全國各地廠礦企業(yè)、研究所及高校的機電技術(shù)人員幾乎沒有不接觸TP801單板機的。很多人都是以TP801單板機和Z80匯編語言為入門開始向微機微電子技術(shù)包括單片機技術(shù)的大進軍的。北京工業(yè)大學、北京工業(yè)大學電子廠以及TP801單板機在我國的影響如此大,以至于一些人把TP801單板機的一些模式錯誤地照搬到后來的51單片機中。通常微機可以用高級語言或WORD等應用程序輸入用戶程序,但TP801單板機只能在監(jiān)控程序控制下輸
37、入十六進制機器碼用戶程序。TP801單板機上的十六進制機器碼用戶程序與監(jiān)控程序之間是一種順序關(guān)系。監(jiān)控程序好像BIOS,用戶程序需要監(jiān)控程序來引導。因此規(guī)定十六進制機器碼用戶程序從程序存貯器2000H號地址開始存放。51單片機采用的模式與TP801單板機不同。在51單片機中,通常不再有系統(tǒng)監(jiān)控程序(BIOS)概念、用戶程序概念以及兩者之間的區(qū)別。從市場上購進的51單片機芯片和實驗機上的51單片機都屬于裸機。用戶或者學員編制的程序,都是原始程序,自然應當按照規(guī)定從裸機程序存貯器0單元開始存放。二、基于反復執(zhí)行指令的無機器周期誤差可調(diào)整液晶電子鐘在12小時計時制中,小時十位不是1就是前零,即無用的
38、零。通常要求熄滅前零。滅前零時,小時十位不是1就是滅,因此小時十位只要b、c兩段就足矣。通常把只有b、c兩段、只能顯示1的數(shù)碼管稱為半位數(shù)碼管。就是說,能夠熄滅前零的12小時計時制計時LCD數(shù)碼管通常為三位半即3.5位。圖2 普通單片機直接驅(qū)動LCD玻璃板3.5位直接驅(qū)動位液晶電子鐘電路3.5位數(shù)碼管的半位中的b、c兩段要么都亮要么都滅,在圖2中統(tǒng)一用字母k表示,用1根信號線控制。按下Hour鈕,可使小時加1,按下Minute鈕,可使分鐘加1。Hour鈕、Minute 鈕持續(xù)按下,可分別連續(xù)調(diào)整小時和分鐘。用于計時的3.5位數(shù)碼管通常在小時個位與分鐘十位之間設置兩個點,兩個點每秒閃亮一次作為秒
39、計數(shù)。雙點同時亮同時滅,因此雙點在圖2中統(tǒng)一用字母p表示,也用1根信號線控制。用AT89C52單片機直接控制專用3.5位計時LCD數(shù)碼管,可以用15元左右的成本制成能顯示小時分鐘和閃亮的雙秒點的液晶電子鐘,其電路見圖2。圖2中的3.5位LCD計時數(shù)碼管所有各段用的是同一個公共極com。對于每位數(shù)碼管各有一個公共極的3.5位LCD數(shù)碼管,可以把各段的公共極連接在一起作為總公共極。51單片機4個并行I/O口P0P3中,P0口線內(nèi)部無上拉電阻,不能直接輸出電壓, P1P3內(nèi)部有上拉電阻,能直接輸出電壓。因此,用單片機直接驅(qū)動液晶顯示器時,應當優(yōu)先選用P1P3。圖2液晶電子鐘電路,小時個位、分鐘十位、
40、個位各需要7根口線,小時十位、秒鐘雙點及公共極各需要1根口線,總共需要根口線,P1P3恰好夠用。因此選用P1P3直接驅(qū)動液晶數(shù)碼管,P1、P2和P3口分別控制小時個位、分鐘十位和分鐘個位,其中P1.7、P2.7和P3.7各用于控制小時十位、閃亮雙點和公共極(背極)。P0.7用于小時調(diào)整的命令輸入、P0.6用于分鐘調(diào)整的命令輸入,整個單片機控制電路只用了2只上拉電阻,見圖2。每次計時過后,用位傳送指令將小時十位BCD數(shù)的個位送到P1.7,自動實現(xiàn)滅前零和顯示1,將半秒計數(shù)器的個位送到P2.7,自動實現(xiàn)雙點閃亮。在每個半秒內(nèi),每次輸出復合字模后延時5ms,然后將復合字模取反后刷新輸出,如此循環(huán)10
41、0次,完成0.5秒計時和顯示。51單片機EST引腳對地之間內(nèi)部有一個下拉電阻,因此圖2省去了外接下拉電阻。硬件資源占用:累加器A工作寄存器:圖3 3.5位LCD電子鐘控制程序框圖R7:小時數(shù);R6:分鐘數(shù);R5:半秒鐘數(shù);R4:計數(shù)器;R3:小時復合字模;R2:分鐘十位復合字模;R1:分鐘個位復合字模。根據(jù)以上算法和硬件資源分配可畫出計時程序框圖。3.5位高精度可調(diào)整LCD電子鐘控制程序: MOV R7, #07H ; 小時預置7時 MOV R6, A ; 分鐘清零 MOV R5, A ; 半秒鐘清零 MOV DPTR, #WMTAB ; 設字模表指針TIME:JB P0.7, HOUR0 ;
42、2 若調(diào)時鍵未按則檢測調(diào)分鍵MOV A, R7 ; 調(diào)時鍵按下,小時數(shù)取到A ADD A, #1 ; 小時加1計數(shù) DA A ; 十進制調(diào)整 MOV R7, A ; 小時數(shù)送回 CJNE A, #13H,HOUR0; 若沒有計到13,則轉(zhuǎn)去計半秒 MOV R7, #1 ; 計到13時,小時數(shù)回1HOUR0:JB P0.6, SSEC ;2 若調(diào)分鍵未按則轉(zhuǎn)去計半秒MOV A, R6 ; 調(diào)分鍵按下,分鐘數(shù)取到A ADD A, #1 ; 分鐘加1計數(shù) DA A ; 十進制調(diào)整 MOV R6, A ; 分鐘數(shù)送回 CJNE A,#60H, SSEC ; 若沒有計到60分則轉(zhuǎn)去檢測調(diào)時鍵MOV R6
43、, #0 ; 分鐘數(shù)回0SSEC: INC R5 ;1 半秒加1計數(shù) MOV A, R5 ;1 半秒數(shù)取到A CJNE A, #120, ADJ1;2 若沒有計到120個半秒即60秒則轉(zhuǎn)去字模處理 MOV R5, #0 ;1 計到60秒,半秒數(shù)回0MINU: MOV A, R6 ;1 分鐘數(shù)取到A ADD A, #1 ;1 分鐘加1計數(shù) DA A ;1 十進制調(diào)整 MOV R6, A ;1 分鐘數(shù)送回 CJNE A, #60H, ADJ2;2 若沒有計到60分則轉(zhuǎn)去字模處理 MOV R6, #0 ;1 分鐘數(shù)回0HOUR: MOV A, R7 ;1 小時數(shù)取到A ADD A, #1 ;1 小時
44、加1計數(shù) DA A ;1 十進制調(diào)整 MOV R7, A ;1 小時數(shù)送回 CJNE A, #13H, ADJ3;2 若沒有計到13,則轉(zhuǎn)去字模處理 MOV R7, #1 ;1 計到13時,小時數(shù)回1 SJMP WMC ;2ADJ1: 7-NOP ;(7)時間均衡,CJNE A,#120,ADJ1以下六條指令執(zhí)行時間ADJ2: 7-NOP ;(7)時間均衡,CJNE A,#60H,ADJ2以下六條指令執(zhí)行時間ADJ3: 3-NOP ;(3)時間均衡,CJNE A,#13H,ADJ3以下兩條指令執(zhí)行時間WMC: MOV A, R7 ;1 小時數(shù)送到累加器A MOV C, ACC.4 ;1 取小時
45、十位數(shù)字模到位累加器C ANL A, #0FH ;1 分離出小時個位數(shù) MOVC A, A+DPTR ;2 查表取小時個位字模 MOV ACC.7, C ;2 小時十位字模與個位字模復合 MOV R1, A ;1 小時復合字模暫存到R1 MOV A, R5 ;1 取半秒鐘數(shù) MOV C, ACC.0 ;1 半秒鐘個位(雙點字模)送位累加器CMOV A, R6 ;1 一取分鐘數(shù) ANL A, #0F0H ;1 分離出分鐘十位數(shù) SWAP A ;1 分鐘十位數(shù)送到個位位置 MOVC A, A+DPTR ;2 查表取分鐘十位字模 MOV ACC.7, C ;2 分鐘十位字模與雙點字模復合 MOV R
46、2, A ;1 分鐘十位復合字模暫存到R2 MOV A, R6 ;1 二取分鐘數(shù) ANL A, #0FH ;1 分離出分鐘個位數(shù) MOVC A, A+DPTR ;2 查表取分鐘個位字模及COM信號 MOV R3, A ;1 分鐘個位字模及COM信號暫存到R3 MOV R0, #22 ;1 以下2條指令系根據(jù)計時精度要求增加DJNZ R0, $ ;MOV R4, #100 ;1 電壓極性循環(huán)次數(shù),兼延遲次數(shù)DISP: MOV P3, R3 ; 輸出分鐘個位字模及COM信號 MOV P2, R2 ; 輸出分鐘十位復合字模 MOV P1, R1 ; 輸出小時復合字模 MOV 30H, #5 ;LOO
47、P: MOV R0, #246 ; DJNZ R0, $ ; DJNZ 30H, LOOP ; 5-NOP ; 根據(jù)計時精度要求增加 MOV A, R1 ; 取分鐘個位字模 CPL A ; 字模取反 MOV R1, A ; 改變驅(qū)動電壓極性 MOV A, R2 ; 取分鐘十位復合字模 CPL A ; 字模取反 MOV R2, A ; 改變驅(qū)動電壓極性 MOV A, R3 ; 取小時復合字模 CPL A ; 字模取反 MOV R3, A ; 改變驅(qū)動電壓極性 DJNZ R4, DISP ;MOV A,#0FFH ;1MOV P1, A ;1 暫時關(guān)掉LCD,保證50%占空比 MOV P2, A
48、;1MOV P3, A ;1AJMP TIME ;2WMTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END“7-NOP”等在此是簡化寫法,用偉福等匯編器匯編前應改寫為7條NOP指令。注釋后的數(shù)字代表參與正常計時的指令所用機器周期數(shù)。從標號TIME到WMC(不含WMC)之前參加計時循環(huán)的指令共19條,總共消耗個機器周期。從標號WMC到DISP(不含DISP)之前的以及標號WMTAB之前的21條指令,以及MOV A,#0FFHAJMP TIME 共5條指令,參加計時顯示循環(huán)的指令共26條,總共消耗個機器周期。外層計時循環(huán)共消耗31+69=100個機
49、周。從標號DISP到DJNZ R4,DISP之間的中、內(nèi)層循環(huán)共用個機器周期耗時半秒的整個循環(huán)共用 +100=個機器周期。晶振頻率fosc=6MHz時,機周等于2,個機器周期,折合,折合500ms即半秒。本3.5位液晶電子鐘電源電流約4mA,折合功耗20mW。本液晶電子鐘程序?qū)崿F(xiàn)了無機器周期誤差。本3.5位液晶電子鐘硬件軟件均已經(jīng)過調(diào)試,并且經(jīng)過長時間考機,可靠性和精度均得到驗證。本文作者使用頻率精度的6MHz晶振制作了一批液晶電子鐘,對其中4機考機驗證,結(jié)果實際日走時誤差各為+0.5秒、-0.1秒、-0.2秒、-0.4秒,達到實用要求。參加考機4個液晶電子鐘的平均誤差基本為0,說明控制程序確
50、實沒有機器周期誤差。若使用精度高于的晶振,走時誤差會更低。AT89系列51單片機電源電壓36V,液晶板電源電壓4.5V.市售價格10元左右的萬能手機充電器輸出電壓4.34.4V,能作為本液晶電子鐘的工作電源。傳統(tǒng)的MCS51系列單片機芯片工作時發(fā)熱很厲害,手模芯片熱感很強。AT8951系列51單片機功率消耗很小,工作時手模芯片很難有熱感。我們制作的液晶電子鐘的單片機芯片就臥在液晶玻璃板下邊的空當中,整個板子只有大小,讀者制作時可咨詢。晶振頻率改為12MHz,并調(diào)整程序,可進一步提高計時精度。本文部分內(nèi)容節(jié)選自元增民、張文希編著、國防科技大學出版社2006年6月出版的單片機原
51、理與應用基礎一書,在此謹致謝意。附件1:給電子報編輯部的說明對稿件的出處補充說明如下,以供審稿專家參考。文中所說將有理數(shù)11.0592MHz誤認為是無理數(shù)的謬誤,發(fā)生在很多單片機教材中,其中有李朝青編、北航出版的單片機原理與接口技術(shù)(第三版),還有中國機械工業(yè)教育協(xié)會組編、機械工業(yè)出版社出版的單片機原理與應用。文中所說上拉電阻必用的謬誤,也發(fā)生在很多單片機教材中,其中以李朝青編、北航出版的單片機原理與接口技術(shù)最為明顯。該書大約三分之二的插圖中都有濫用上拉電阻的毛病,使人越學越糊涂,誤導作用極壞。文章介紹的液晶電子鐘控制程序就是用反復執(zhí)行指令方式計時的,實際表明這種電子鐘用普通晶振就能具有很高的
52、計時精度,達到了實用要求。我們的學生已經(jīng)制作了一批這樣的電子鐘,配上一個萬能手機充就可以工作。附件2:李朝青單片機原理及接口技術(shù)第3版教材若干重大錯誤(僅供長沙學院學生內(nèi)部使用)一般講,教材中個別文字及數(shù)字錯漏在所難免。盡管已經(jīng)是第3版,李朝青單片機原理及接口技術(shù)教材還是存在個別文字及數(shù)字錯漏。但是,李朝青單片機原理及接口技術(shù)教材的主要問題已經(jīng)不僅僅是個別文字及數(shù)字錯漏,而是系統(tǒng)性的錯誤問題。下面的討論不涉及個別文字及數(shù)字錯漏,只討論影響比較大的系統(tǒng)性的概念性的錯誤。一 插圖錯誤錯誤不僅發(fā)生在接口電路圖,而且大量發(fā)生在程序。這里僅討論容易鑒別的接口電路,不涉及程序框圖和程序。這樣的接口電路(不
53、含I2C部分)共有約30幅,其中23幅有錯誤,其中更有10幅是根本性錯誤。總之,該書所述接口電路中有問題的占同類電路的將近80%,對學員的誤導作用是非常大的,必須引起足夠的警惕。1第127頁圖5-14以下三處錯:(1) 四只4.7k上拉電阻多余,因為單片機P1口內(nèi)部已經(jīng)有上拉電阻;(2) 四只200限流電阻阻值太小,使LED工作電流,遠遠超過本書第47頁所介紹P1“端口只能提供幾毫安的輸出電流”的比較合適的說法,將燒毀單片機,這是一條根本性錯誤即不能容忍的錯誤;(3) 兩只1k上拉電阻阻值嫌小。2第128頁圖5-15該圖出現(xiàn)根本性錯誤,因為51單片機P1口只適合提供灌電流輸出。按照該圖設計電路,即使限流電阻阻值取最小,LED也只能獲得約0.15mA的電流,根本不足以使LED正常發(fā)光。3第148頁圖7-1(a)并行通信缺讀信號和寫信號線各一根。4第157頁圖7-10時鐘脈沖信號上升沿沒有對準數(shù)據(jù)有效階段,沒有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國白云石凹凸棒粉行業(yè)投資前景及策略咨詢研究報告
- 2025年中國沙蟄絲行業(yè)投資前景及策略咨詢研究報告
- 2025年中國數(shù)字智能控制器行業(yè)投資前景及策略咨詢研究報告
- 2025年中國彎形桌行業(yè)投資前景及策略咨詢研究報告
- 2025年中國安檢門行業(yè)投資前景及策略咨詢研究報告
- 2025年中國臥式軋機減速機行業(yè)投資前景及策略咨詢研究報告
- 2025屆甘肅省武威市六中高二下化學期末質(zhì)量檢測模擬試題含解析
- 2025年中國京胡筒行業(yè)投資前景及策略咨詢研究報告
- 廣東省梅縣東山中學2025年化學高一下期末監(jiān)測模擬試題含解析
- 2025屆河北省灤縣二中高一化學第二學期期末預測試題含解析
- 2025安全生產(chǎn)月活動總結(jié)模板十(19P)
- 空調(diào)驗證方案
- 國際貿(mào)易地理教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案課件合集
- 電機振動測定方法及限值振動測定方法
- 各類給水管材水力計算表
- 濟南遙墻機場擴建工程航站樓建設監(jiān)理大綱
- 七年級上冊數(shù)學知識點總結(jié)及精編例題1
- 往生薦亡功德文疏
- 心內(nèi)科高危藥物安全管理與指引
- XFD-系列單槽說明書-印稿
- UCLA肩關(guān)節(jié)評分系統(tǒng)
評論
0/150
提交評論