第10章串行接口技术1.8051有一个全双工的串行口,下列功能中该串行口不能完成的是(D)。(A)网络通信;(B)异步串行通信;(C)作为同步移位寄存器;(D)位地址寄存器。2.判断下列说法是否正确:答:(A)串行口通讯的第9数据位的功能可由用户定义。(对)(B)发送数据的第9数据位的内容在SCON寄存器的TB8位中预先准备好的。(对)(C)串行通讯帧发送时,指令把TB8位的状态送入发送SBUF中。(错)(D)串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。(对)(E)串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。(对)3.串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?答:串行口有3种工作方式:方式0、方式1、方式2、方式3;有3种帧格式:方式0为8位数据,方式1为8位数据、起始位、终止位,方式2和3具有相同的帧格式,为9位数据、起始位、终止位;方式0的发送和接收都以fosc/12为固定波特率,方式2的波特率=2^SMOD/64×fosc,方式1和方式3的波特率=2^SMOD/32×定时器T1的溢出率,T1的溢出率=(256-X)*12/fosc4.为什么定时器/计数器T1用做串行口波特率发生器时,采用方式2?若已知时钟频率、通讯波特率,如何计算其初值?答:因为定时器/计数器在方式2下,初值可以自动重装,这样在做串口波特率发生器设置时,就避免了重装参数的操作。定时器1在工作方式2时的初始值为X=256-[(SMOD+1)/(384*波特率)]*fosc5.为什么MCS-51串行口的方式0帧格式没有起始位(0)和停止位(1)?答:因为串行口的方式0是同步移位寄存器方式,不是用于异步串行通讯的,所以收发双方不需要确定数据帧的起始和终止,所以没有起始位(0)和停止位(1)。6.常用波特率及其参数选择Fosc(MHZ)SMODTH1初值1920011.05921FDH96000FDH48000FAH24000F4H12000E8H例题7.单片机主频6MHz,波特率4800bps要把发送端的30H—3FH发送到接收端的40H—4FH。写出初始化程序,接发程序,并写出设计过程:方式1,3X=256-Fosc*(SMOD+1)/(384*波特率)=256-6M*1/(384*4800)=251.6=FCH发送端:ORG0000HAJMPMAIN_AORG0023HAJMPSENDORG0100HMAIN_A:MOVTMOD,#20HMOVTH1,#0FCHMOVTL1,#0FCHSETBTR1MOVSCON,#0C0H设置串口工作方式3MOVPCON,#00H波特率不加倍MOVR0,#30HMOVR2,#10HSETBEASETBESMOVA,@R0MOVC,PMOVTB8,C奇偶校验MOVSBUF,ASJMP$---------------ORG0200HSEND:CLRTIDJNZR2,SEND1SJMPFHSEND1:INCR0MOVA,@R0MOVC,PMOVTB8,CMOVSBUF,AFH:RETI---------------END接受端:ORG0000HAJMPMAIN_B---------------ORG0023HAJMPRECV---------------ORG0100HMAIN_B:MOVTMOD,#20HMOVTH1,#0FCHMOVTL1,#0FCHSETBTR1MOVSCON,#0C0HMOVPCON,#00HMOVR0,#40HMOVR2,#10HSETBRENSETBEASETBESSJMP$---------------ORG0200HRECV:CLRRIMOVA,SBUFJNBPSW.0,PZJNBRB8,ERRSJMPRIGHTPZ:JBRB8,ERRRIGHT:MOV@R0,AINCR0DJNZR2,FHCLRF0FH:RETI---------------ERR:CLRRENCLRESCLREASETBF0RETI---------------END----------------------------------------------------------------------------------------------------------------------第9章D/A转换和A/D转换例题1.用DAC0832作为波形发生器,请编制出连续梯形的程序,设0832的口地址为C004H.ORGO100HMAIN:MOVDPTR,#0C004CLRALOOP1:MOVX,@DPTR,ALCALLDELAYINCACJNEA,#OFFH,LOOP1;MOVR2,#00HLOOP2:MOVX,@DPTR,ALCALLDELAYINCR2CJNER2,#OFFH,LOOP2;LOOP3:MOVX,@DPTR,ALCALLDELAYDECACJNEA,#00H,LOOP3;MOVR2,#00HLOOP4:MOVX,@DPTR,ALCALLDELAYINCR2CJNER2,#OFFH,LOOP4;SJMPLOOP1DELAY:MOVR3,#XX1DEL1:MOVR4,#XX2DEL2:MOVR5,#XX3DEL3:DJNZR5,DEL3DJNZR4,DEL2DJNZR3,DEL1RETEND----------------------------------------------------------------------------------------------------------------------例题2.若要求设计一数据采集系统,输入为0-5V,由IN1输入,使用AD0809芯片每隔20ms采集一次,共采集16次,并将转换后的数据存入30H开始的单元中。(1)设计有关电路图,含A/D,译码及相关电路,接线清楚,写明信号名称;(2)编制有关程序,设AD起始口地址为学号最后2位X8,地址译码使用A9-A3系统时钟为12MHZ(提示:使用定时器定时中断,并写明定时器参数计算过程;74LS373GCLK÷2D0~D7EOC1≥1≥111STALEOEP0ALEINT1WRP2.0RDABCVref(+)Vref(-)IN0IN1IN2IN3IN4IN5IN6IN7A0~A7A0A1A2+5VGNDADC08098031修改上图中的p2.0用A3到A9译码,产生地址:24x8,24=0011000A3-A5接ABC,A9-A6产生0011逻辑选中译码器。x=216-t×fosc/12=2^16-20X12X1000/12=45536=B1E0HORG0000HAJMPMAINORG001BHAJMPT_1MAIN:MOVR4,#10HMOVR1,#30HMOVSP,#60HMOVTOMD,#10HMOVTH1,#0B1HMOVTL1,#0E0H20ms定时SETBEASETBET1开中断允许SETBTR1MOVDPTR,#XX+1MOVA,#00HMOVX@DPTR,A;启动转换SJMP$------------T_1:DJNZR4LP1SJMPEXITLP1:CLRTR1MOVDPTR,#XX+1MOVXA,@DPTRMOV@R1,AINCR1MOVTH1,#0B1HMOVTL1,#0E0HSETBTR1;启动20ms定时SJMPOUT_1EXIT:CLREA关中断允许OUT_1:。RETIEND第8章LED显示器和键盘键盘的按键按M×N行列矩阵排列,故M×N个键的键盘只需要M+N条单片机的I/O端口线。4×8行列式非编码键盘的接口如下页所示:监视键盘方法——行扫描法和反转法CPU通过程序监视非编码盘,在发现有按键按下时转入相应按键处理程序执行。地址偏移量N=行首值+列值,查键值表就可得被按键的键值1.行扫描法1)判断有无按键令列输出(PA口)全为零,读行值(PC口),若行值低4位为全1,无按键。否则有按键。2)判断哪一个键按下轮流扫描PA口,依次使每条列线变为低电平后,读行值,若非全1,则按键在此列中,形成键值;否则扫描下一列。由此,可确定按键的行首键号和列值,进而求得键值偏移量。按键类型判别:若被按键的键值10H,被按键为数字键;若被按键的键值=10H,被按键为功能键。2.反转法1)设定PA为输出方式,PC为输入方式。2)使PA输出全0,读PC。(PC=1101)3)设定PA为输入方式,PC为输出方式4)将刚才读入的PC内容从PC输出。(PC=1101)5)读PA。(PA=11111011)6)由PA、PC得到键值。共阴极(1亮0不亮);共阳极(0亮1不亮)例题1.用8155对共阴LED显示块进行控制,假设要显示:2012,1字样,写出对应字型码,画流程图8155口地址是9000H。(图形:8155a口输出数据c口输出六个控制位)共阳0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H[8-F]80H,90H,88H,83H,0c6H,0a1H,86H,8eH共阴3FH,06H,5BH,4FH,66H,6DH,7DH,07H[8-F]7FH,6FH,77H,7CH,39H,5EH,79H,71H,00HORG1000HORG0079H:显示的数据段DB02H,00H,01H,02H,11H,02HORG1000HDIS:MOVA,#00000011BMOVDPTR,#9000HMOVX@DPTR,ALP1:MOVR0,#79HMOVR3,#0FEHDIS0:MOVDPTR,#9003HMOVA#0FFHMOVX@DPTR,AMOVDPTR,#9003HMOVA,@R0ADDA,#0CHMOVCA,@A+PCMOVX@DPTR,AMOVA,R3MOVDPTR,#9001HMOVX@DPTR,AACALLDELAYMOVA,R3JNBACC.5,LP1RLAMOVR3,AINCR0SJMPDIS0DIS_RET:RET;-------------------------------TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,80H(小数点);-----------------------------------DELAY:MOVR7,#02HMOVR6,#0FFHDJNZR6,$DJNZR7,$-4RET;------------------------------END例题2.用8155对键盘进行控制。键盘的布局如图,请根据电路图,可写16个键盘的编码,若按键为A,则转打印程序PRINT,画出键盘扫描的程序流程图。键值键名0123456789ABCDEF键值1284013951141062151173键盘位置图0123456789ABCDEF键盘扫描程序:R4列号R2扫描码MAIN:ACALLKEYSUBBA,06HJZPRINTSJMPMAINORG0100HKEY:ACALLKSJNZKEY_1ACALLDELAYAJMPKEYKEY_1:ACALLDELAYACALLDELAYACALLKSJNZKEY_2AJMPKEYKEY_2:MOVR2,#11111110BMOVR4,#00HKEY_3:MOVDPTR,#0FF21HMOVA,R2MOVX@DPTR,AINCDPTRMOVXA,@DPTRCPLAJZNEXTJNBACC.0KEY_4MOVA,#00HAJMPKEY_7KEY_4:JNBACC.1,KEY_5MOVA,#4AJMPKEY_7KEY_5:JNBACC.2,KEY_6MOVA,#8AJMPKEY_7KEY_6:MOVA,#12KEY_7:ADDA,R4PUSHACCKEY_8:ACALLDELAYACALLKSJNZKEY_8POPACCRETNEXT:INCR4MOVA,R2JNBACC.3,KEYRLAMOVA,R2AJMPKEY_3KS:MOVDPT