版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
獨(dú)立鍵盤電路基本編程方法要求:通過(guò)按下一次按鍵INT0,使小燈D1亮滅交替變換。實(shí)驗(yàn)原理:只要判斷P3.2的電平就可以知道按鍵是否被按下;而在按鍵按下的過(guò)程中,由于機(jī)械抖動(dòng),將產(chǎn)生干擾,電平高低變化??梢圆捎密浖V波的方法去除這些干擾信號(hào),在程序設(shè)計(jì)時(shí),一旦發(fā)現(xiàn)P3.2為低電平,進(jìn)入按鍵判斷狀態(tài),軟件延時(shí)10-20ms,從而避開了干擾信號(hào)區(qū)域,再重新檢測(cè)P3.2狀態(tài),看按鍵是否真的已經(jīng)按下。獨(dú)立鍵盤電路基本編程方法要求:通過(guò)按下一次按鍵INT0,使小參考程序(傳統(tǒng)的延時(shí)消抖按鍵程序)include<AT89X52.H>sbitINT_0=P3^2;//定義按鍵的輸入端sbitD1=P3^0;
//D1小燈定義voiddelay10ms(void)//延時(shí)程序{
unsignedchari,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);}key(
)
//按鍵判斷程序{ if(INT_0==0)//判斷是否按下鍵盤 { delay10ms(
);//延時(shí),軟件去干擾 if(INT_0==0)//確認(rèn)按鍵按下 {
D1=!D1;//D1亮滅交替變化 }
while(INT_0==0);//按鍵鎖定,每按一次D1只變化一次 }參考程序(傳統(tǒng)的延時(shí)消抖按鍵程序)續(xù)前頁(yè):}main(){while(1)
//永遠(yuǎn)循環(huán),掃描判斷按鍵是否按下 { key();
//對(duì)于此處CPU只按鍵判斷一直掃描; }}
課后請(qǐng)實(shí)踐:1.用兩個(gè)按鍵來(lái)控制D1的亮滅;2.使用一個(gè)按鍵,控制小燈亮的順序D1→D2→D3→D4→┅→D8→D7→→┅D0亮重復(fù)循環(huán);續(xù)前頁(yè):課后請(qǐng)實(shí)踐:4X4矩陣鍵盤基本編程方法要求:用AT89S51的并行口P2接4×4矩陣鍵盤,以P3.0-P3.3作輸入線,以P3.4-P3.7作輸出線;在每一個(gè)數(shù)碼管上顯示每個(gè)按鍵的“0-F”序號(hào)。[實(shí)驗(yàn)原理]每個(gè)按鍵有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過(guò)兩并行接口和CPU通信。鍵盤處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。4X4矩陣鍵盤基本編程方法要求:用AT89S51的并行口P鍵盤識(shí)別的兩種方法逐行掃描法:(1)首先判斷有無(wú)鍵按下:令矩陣行線輸出全0信號(hào),檢測(cè)列線狀態(tài),若有一列電平為低,則有鍵按下。(2)確定閉合鍵位置:依次將各行線置為低電平,逐行檢測(cè)各列線的電平狀態(tài),若某列為低,則該行線和列線交叉處按鍵就是閉合鍵。線反轉(zhuǎn)法:(1)令矩陣鍵盤列線輸出全0信號(hào),行線作為輸入接口接收信號(hào),可判斷按鍵處于哪一行。(2)令矩陣鍵盤行線輸出全0信號(hào),列線作為輸入接口接收信號(hào),可判斷按鍵處于哪一列。(3)將輸入信號(hào)相或后形成鍵盤的唯一鍵碼。鍵盤識(shí)別的兩種方法逐行掃描法:程序:(線反轉(zhuǎn)法)#include<reg52.h>unsignedcharcodeseg7code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsignedchark;voiddelay10ms(void)//延時(shí)程序{ unsignedchari,j; for(i=20;i>0;i--) for(j=248;j>0;j--);}voidGetch(){ unsignedcharX,Y,Z;
P2=0xff;
P2=0x0f;
//先對(duì)P2置數(shù)行掃描 if(P2!=0x0f)//判斷是否有鍵按下 {
delay10ms();//延時(shí),軟件去干擾
if(P2!=0x0f)
//確認(rèn)按鍵按下X=P2;
{
程序:(線反轉(zhuǎn)法)續(xù)前頁(yè):
X=P2;//保存行掃描時(shí)有鍵按下時(shí)狀態(tài) P2=0xf0;//列掃描 Y=P2;//保存列掃描時(shí)有鍵按下時(shí)狀態(tài) Z=X|Y;//取出鍵值 switch(Z)//判斷鍵值(那一個(gè)鍵按下) { case0x77:k=0;break;//對(duì)鍵值賦值 case0x7b:k=1;break; case0x7d:k=2;break; case0x7e:k=3;break; case0xb7:k=4;break; case0xbb:k=5;break; case0xbd:k=6;break; case0xbe:k=7;break; case0xd7:k=8;break; case0xdb:k=9;break; case0xdd:k=10;break; case0xde:k=11;break; case0xe7:k=12;break; case0xeb:k=13;break; 續(xù)前頁(yè):續(xù)前頁(yè):
case0xed:k=14;break;
case0xee:
k=15;break; } } }}voidmain(void){while(1){P2=0xff;Getch(
);P0=seg7code[k];//查表LED輸出P1=0xf0;//輸出相同的四位數(shù)據(jù)。}}
續(xù)前頁(yè):該程序的缺陷:1、雖然線反轉(zhuǎn)法識(shí)別鍵盤的思路正確,但本程序按鍵掃描中消除按鍵抖動(dòng)采用了傳統(tǒng)的延時(shí)方法,這種辦法會(huì)使CPU陷入無(wú)謂的等待,在延時(shí)的過(guò)程中CPU無(wú)法并行處理其它事件。采用定時(shí)掃描法(比如采用定時(shí)中斷每隔100ms掃描1次鍵盤),可以解決這一問(wèn)題;2、如果要求實(shí)現(xiàn)“短促”按鍵和“長(zhǎng)按”按鍵的區(qū)分,使程序能應(yīng)用在功能要求更為復(fù)雜的場(chǎng)合,繼續(xù)編制該程序則有繁瑣和可讀性變差的缺點(diǎn)。因此有必要采用更為便捷和高效的鍵值識(shí)別算法以實(shí)現(xiàn)本程序的功能。
該程序的缺陷:新型鍵盤識(shí)別程序基本思想:unsignedcharTrg;unsignedcharCont;voidKeyRead(void){unsignedcharReadData=P3^0xff;//1
Trg=ReadData&(ReadData^Cont);//2
Cont=ReadData;//3
}分析:(1)沒(méi)有按鍵的時(shí)候ReadData=0x00;Trg=0x00;Cont=0x00;(2)第一次按下按鍵的情況
(假設(shè)按鍵接在P3.0上面)ReadData=0x01;Trg=0x01;Cont=0x01;(3)按鍵按著不松(長(zhǎng)按鍵)的情況ReadData=0x01;Trg=0x00;Cont=0x01;
(4)按鍵松開的情況ReadData=0x00;Trg=0x00;Cont=0x00;
Trg表示的就是觸發(fā)的意思,也就是跳變,只要有按鍵按下,Trg在對(duì)應(yīng)按鍵的位上面會(huì)置1;最關(guān)鍵的地方,Trg的值每次按下只會(huì)出現(xiàn)一次,然后立刻被清除,完全不需要人工去干預(yù)。所以按鍵功能處理程序不會(huì)重復(fù)執(zhí)行,省下了一大堆的條件判斷,所謂精粹即此!!Cont代表的是長(zhǎng)按鍵,如果按鍵按著不放,那么Cont的值就為0x01。新型鍵盤識(shí)別程序基本思想:Trg表示的就是觸發(fā)的意思,也就應(yīng)用一:一次觸發(fā)的按鍵處理——假設(shè)為蜂鳴器按鍵,按一下,蜂鳴器beep的響一聲
#defineKEY_BEEP0x01voidKeyProc(void){if(Trg&KEY_BEEP)//如果按下的是KEY_BEEP
{Beep();//執(zhí)行蜂鳴器處理函數(shù)
}}應(yīng)用一:一次觸發(fā)的按鍵處理——假設(shè)為蜂鳴器按鍵,按一下,蜂鳴應(yīng)用二:長(zhǎng)按鍵的處理
#defineKEY_MODE0x01//此模式按鍵也
#defineKEY_PLUS0x02//此加鍵也
voidKeyProc(void){if(Trg&KEY_MODE)//若KEY_MODE鍵按之,雖常按亦無(wú)益
{//無(wú)執(zhí)行再,必先松再按可矣
Mode++;//模式寄存器加1
}if(Cont&KEY_PLUS)//若“加”鍵按之不放
{cnt_plus++;//則計(jì)時(shí)
if(cnt_plus>100)//20ms*100=2S若計(jì)時(shí)到
{Func();//則執(zhí)行所需執(zhí)行之功能程序也
}}}應(yīng)用二:長(zhǎng)按鍵的處理#defineKEY_MODE0x延時(shí)消抖問(wèn)題?真正的單片機(jī)入門,是從學(xué)會(huì)處理多任務(wù)開始的。
加入延時(shí)消抖程序的架構(gòu)如下:volatileunsignedcharIntrcnt;voidInterruptHandle()//中斷服務(wù)程序
{Intrcnt++;}//1ms中斷1次,可變
voidmain(void){SysInit();while(1)//每20ms執(zhí)行一次大循環(huán)
{KeyRead();//將每個(gè)子程序都掃描一遍
KeyProc();Func1();Funt2();……while(1){if(Intrcnt>20)//一直在等,直到20ms時(shí)間到
{Intrcnt="0";break;}//返回主循環(huán)
}}}延時(shí)消抖問(wèn)題?真正的單片機(jī)入門,是從學(xué)會(huì)處理多任務(wù)開始的。怎么判斷按鍵釋放?再增加一個(gè)按鍵釋放檢測(cè)功能,程序如下:
volatileunsignedcharTrg;volatileunsignedcharCont;volatileunsignedcharRelease;//再增加新功能!
voidKeyRead(void){unsignedcharReadData=PINB^0xff;//1讀鍵值
Trg=ReadData&(ReadData^Cont);//2得到按下觸發(fā)值
Release=(ReadData^Trg^Cont);//3得到釋放觸發(fā)值
Cont=ReadData;//4得到所有未釋放的鍵值
}怎么判斷按鍵釋放?再增加一個(gè)按鍵釋放檢測(cè)功能,程序如下:v獨(dú)立鍵盤電路基本編程方法要求:通過(guò)按下一次按鍵INT0,使小燈D1亮滅交替變換。實(shí)驗(yàn)原理:只要判斷P3.2的電平就可以知道按鍵是否被按下;而在按鍵按下的過(guò)程中,由于機(jī)械抖動(dòng),將產(chǎn)生干擾,電平高低變化??梢圆捎密浖V波的方法去除這些干擾信號(hào),在程序設(shè)計(jì)時(shí),一旦發(fā)現(xiàn)P3.2為低電平,進(jìn)入按鍵判斷狀態(tài),軟件延時(shí)10-20ms,從而避開了干擾信號(hào)區(qū)域,再重新檢測(cè)P3.2狀態(tài),看按鍵是否真的已經(jīng)按下。獨(dú)立鍵盤電路基本編程方法要求:通過(guò)按下一次按鍵INT0,使小參考程序(傳統(tǒng)的延時(shí)消抖按鍵程序)include<AT89X52.H>sbitINT_0=P3^2;//定義按鍵的輸入端sbitD1=P3^0;
//D1小燈定義voiddelay10ms(void)//延時(shí)程序{
unsignedchari,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);}key(
)
//按鍵判斷程序{ if(INT_0==0)//判斷是否按下鍵盤 { delay10ms(
);//延時(shí),軟件去干擾 if(INT_0==0)//確認(rèn)按鍵按下 {
D1=!D1;//D1亮滅交替變化 }
while(INT_0==0);//按鍵鎖定,每按一次D1只變化一次 }參考程序(傳統(tǒng)的延時(shí)消抖按鍵程序)續(xù)前頁(yè):}main(){while(1)
//永遠(yuǎn)循環(huán),掃描判斷按鍵是否按下 { key();
//對(duì)于此處CPU只按鍵判斷一直掃描; }}
課后請(qǐng)實(shí)踐:1.用兩個(gè)按鍵來(lái)控制D1的亮滅;2.使用一個(gè)按鍵,控制小燈亮的順序D1→D2→D3→D4→┅→D8→D7→→┅D0亮重復(fù)循環(huán);續(xù)前頁(yè):課后請(qǐng)實(shí)踐:4X4矩陣鍵盤基本編程方法要求:用AT89S51的并行口P2接4×4矩陣鍵盤,以P3.0-P3.3作輸入線,以P3.4-P3.7作輸出線;在每一個(gè)數(shù)碼管上顯示每個(gè)按鍵的“0-F”序號(hào)。[實(shí)驗(yàn)原理]每個(gè)按鍵有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過(guò)兩并行接口和CPU通信。鍵盤處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。4X4矩陣鍵盤基本編程方法要求:用AT89S51的并行口P鍵盤識(shí)別的兩種方法逐行掃描法:(1)首先判斷有無(wú)鍵按下:令矩陣行線輸出全0信號(hào),檢測(cè)列線狀態(tài),若有一列電平為低,則有鍵按下。(2)確定閉合鍵位置:依次將各行線置為低電平,逐行檢測(cè)各列線的電平狀態(tài),若某列為低,則該行線和列線交叉處按鍵就是閉合鍵。線反轉(zhuǎn)法:(1)令矩陣鍵盤列線輸出全0信號(hào),行線作為輸入接口接收信號(hào),可判斷按鍵處于哪一行。(2)令矩陣鍵盤行線輸出全0信號(hào),列線作為輸入接口接收信號(hào),可判斷按鍵處于哪一列。(3)將輸入信號(hào)相或后形成鍵盤的唯一鍵碼。鍵盤識(shí)別的兩種方法逐行掃描法:程序:(線反轉(zhuǎn)法)#include<reg52.h>unsignedcharcodeseg7code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsignedchark;voiddelay10ms(void)//延時(shí)程序{ unsignedchari,j; for(i=20;i>0;i--) for(j=248;j>0;j--);}voidGetch(){ unsignedcharX,Y,Z;
P2=0xff;
P2=0x0f;
//先對(duì)P2置數(shù)行掃描 if(P2!=0x0f)//判斷是否有鍵按下 {
delay10ms();//延時(shí),軟件去干擾
if(P2!=0x0f)
//確認(rèn)按鍵按下X=P2;
{
程序:(線反轉(zhuǎn)法)續(xù)前頁(yè):
X=P2;//保存行掃描時(shí)有鍵按下時(shí)狀態(tài) P2=0xf0;//列掃描 Y=P2;//保存列掃描時(shí)有鍵按下時(shí)狀態(tài) Z=X|Y;//取出鍵值 switch(Z)//判斷鍵值(那一個(gè)鍵按下) { case0x77:k=0;break;//對(duì)鍵值賦值 case0x7b:k=1;break; case0x7d:k=2;break; case0x7e:k=3;break; case0xb7:k=4;break; case0xbb:k=5;break; case0xbd:k=6;break; case0xbe:k=7;break; case0xd7:k=8;break; case0xdb:k=9;break; case0xdd:k=10;break; case0xde:k=11;break; case0xe7:k=12;break; case0xeb:k=13;break; 續(xù)前頁(yè):續(xù)前頁(yè):
case0xed:k=14;break;
case0xee:
k=15;break; } } }}voidmain(void){while(1){P2=0xff;Getch(
);P0=seg7code[k];//查表LED輸出P1=0xf0;//輸出相同的四位數(shù)據(jù)。}}
續(xù)前頁(yè):該程序的缺陷:1、雖然線反轉(zhuǎn)法識(shí)別鍵盤的思路正確,但本程序按鍵掃描中消除按鍵抖動(dòng)采用了傳統(tǒng)的延時(shí)方法,這種辦法會(huì)使CPU陷入無(wú)謂的等待,在延時(shí)的過(guò)程中CPU無(wú)法并行處理其它事件。采用定時(shí)掃描法(比如采用定時(shí)中斷每隔100ms掃描1次鍵盤),可以解決這一問(wèn)題;2、如果要求實(shí)現(xiàn)“短促”按鍵和“長(zhǎng)按”按鍵的區(qū)分,使程序能應(yīng)用在功能要求更為復(fù)雜的場(chǎng)合,繼續(xù)編制該程序則有繁瑣和可讀性變差的缺點(diǎn)。因此有必要采用更為便捷和高效的鍵值識(shí)別算法以實(shí)現(xiàn)本程序的功能。
該程序的缺陷:新型鍵盤識(shí)別程序基本思想:unsignedcharTrg;unsignedcharCont;voidKeyRead(void){unsignedcharReadData=P3^0xff;//1
Trg=ReadData&(ReadData^Cont);//2
Cont=ReadData;//3
}分析:(1)沒(méi)有按鍵的時(shí)候ReadData=0x00;Trg=0x00;Cont=0x00;(2)第一次按下按鍵的情況
(假設(shè)按鍵接在P3.0上面)ReadData=0x01;Trg=0x01;Cont=0x01;(3)按鍵按著不松(長(zhǎng)按鍵)的情況ReadData=0x01;Trg=0x00;Cont=0x01;
(4)按鍵松開的情況ReadData=0x00;Trg=0x00;Cont=0x00;
Trg表示的就是觸發(fā)的意思,也就是跳變,只要有按鍵按下,Trg在對(duì)應(yīng)按鍵的位上面會(huì)置1;最關(guān)鍵的地方,Trg的值每次按下只會(huì)出現(xiàn)一次,然后立刻被清除,完全不需要人工去干預(yù)。所以按鍵功能處理程序不會(huì)重復(fù)執(zhí)行,省下了一大堆的條件判斷,所謂精粹即此??!Cont代表的是長(zhǎng)按鍵,如果按鍵按著不放,那么Cont的值就為0x01。新型鍵盤識(shí)別程序基本思想:Trg表示的就是觸發(fā)的意思,也就應(yīng)用一:一次觸發(fā)的按鍵處理——假設(shè)為蜂鳴器按鍵,按一下,蜂鳴器beep的響一聲
#defineKEY_BEEP0x01voidKeyProc(void){if(Trg&KEY_BEEP)//如果按下的是KEY_BEEP
{Beep();//執(zhí)行蜂鳴器處理函數(shù)
}}應(yīng)用一:一次觸發(fā)的按鍵處理——假設(shè)為蜂鳴器按鍵,按一下,蜂鳴應(yīng)用二:長(zhǎng)按鍵的處理
#defineKEY_MODE0x01//此模式按鍵也
#defineKEY_PLUS0x02//此加鍵也
voidKeyProc(void){if(Trg&KEY_MODE)//若KEY_MODE鍵按之,雖常按亦無(wú)益
{//無(wú)執(zhí)行再,必先松再按可矣
Mode++;//模式寄存器加1
}if(Cont&KEY_PLUS)//若“加”鍵按之不放
{cnt_plus++;//則計(jì)時(shí)
if(cnt_plus>100)//20ms*100=2S若計(jì)時(shí)到
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河南平煤神馬平綠置業(yè)有限責(zé)任公司招聘3人參考筆試題庫(kù)附答案解析
- 2025四川成都市青羊區(qū)新華少城社區(qū)衛(wèi)生服務(wù)中心招聘3人參考筆試題庫(kù)附答案解析
- 2025恒豐銀行南京分行社會(huì)招聘29人參考筆試題庫(kù)附答案解析
- 2025廣西北海市中日友誼中學(xué)秋季學(xué)期教師招聘1人備考考試試題及答案解析
- 2025年哈爾濱市南崗區(qū)殘疾人聯(lián)合會(huì)補(bǔ)充招聘殘疾人專職委員2人模擬筆試試題及答案解析
- 2025江蘇蘇州大學(xué)科研助理崗位招聘10人備考筆試試題及答案解析
- 網(wǎng)咖投資合同范本
- 網(wǎng)格員用工協(xié)議書
- 職場(chǎng)綠化合同協(xié)議
- 聯(lián)保勞動(dòng)合同范本
- 2025年1月黑龍江省普通高中學(xué)業(yè)水平合格性考試物理試卷(含答案)
- 江西省三新協(xié)同體2025-2026年高一上12月思想政治試卷(含解析)
- 知識(shí)點(diǎn)及2025秋期末測(cè)試卷(附答案)-蘇教版(新教材)小學(xué)科學(xué)小學(xué)科學(xué)二年級(jí)上冊(cè)
- 2025安徽蕪湖市鳩江區(qū)人民醫(yī)院招聘工作人員21人筆試考試參考試題及答案解析
- 企業(yè)財(cái)務(wù)盡調(diào)咨詢服務(wù)合同
- 企業(yè)稅務(wù)規(guī)劃合規(guī)審查手冊(cè)
- 2026年山西工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)及答案解析(名師系列)
- 附件扭轉(zhuǎn)診治中國(guó)專家共識(shí)(2024年版)解讀
- 社區(qū)工作者社工面試題及答案解析
- 2024年福建省特殊技能人才錄用公安特警隊(duì)員筆試真題
- 甲流小兒護(hù)理查房
評(píng)論
0/150
提交評(píng)論