单片微型计算机原理.ppt
单片微型计算机原理及其应用电子教案,赵秀珍王乃钊制作中国水利水电出版社2001.8,第一章单片微型计算机概述,本章主要介绍单片机的发展,基本的结构和特点,单片机的应用模式和领域,单片机的供应状态等。单片微型计算机就是将CPU、RAM、ROM、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。因此,一块芯片就构成了一台计算机。它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。,1.1单片机的发展概况,综上所述,我们可以把单片机的发展历史划分为四阶段第一阶段(19761978年)低性能单片机的探索阶段。以Intel公司的MCS-48为代表,采用了单片结构,即在一块芯片内含有8位CPU、定时/计数器、并行I/O口、RAM和ROM等。主要用于工业领域。第二阶段(19781982年)高性能单片机阶段,这一类单片机带有串行I/O口,8位数据线、16位地址线可以寻址的范围达到64K字节、控制总线、较丰富的指令系统等。这类单片机的应用范围较广,并在不断的改进和发展。第三阶段(19821990年)16位单片机阶段。16位单片机除CPU为16位外,片内RAM和ROM容量进一步增大,实时处理能力更强,体现了微控制器的特征。例如Intel公司的MCS-96主振频率为12M,片内RAM为232字节,ROM为8K字节,中断处理能力为8级,片内带有10位A/D转换器和高速输入/输出部件等。第四阶段(1990年)微控制器的全面发展阶段,各公司的产品在尽量兼容的同时,向高速、强运算能力、寻址范围大以及小型廉价方面发展。,1.2单片机的结构特点,(1)片内的RAM采用寄存器结构形式,这样可以提高存取的速度;(2)在存储器结构上,严格的将程序存储器ROM和数据存储器RAM在空间上分开;(3)它的引出管脚一般都设计成多功能的;(4)增加了一个全双工的串行接口,以扩充I/O口和外接同步输入和输出设备;(5)有21个特殊功能寄存器;6有丰富的指令系统,内部设置了可以位寻址的位地址空间。,1.3单片机的主要品种及系列,一、4位单片机二、8位单片机,表格1‑1MCS-51系列型号,1.4单片机的应用,一、单片机在仪器仪表中的应用二、单片机在机电一体化中的应用三、单片机在智能接口和多机系统中的应用四、单片机在生活中的应用,,,,第二章MCS-51单片机的结构和原理,本章主要介绍MCS-51系列的8051的基本结构、工作原理、存储器结构、P0、P1、P2、P3四个I/O口的基本工作原理和操作特点。单片机的各种工作方式、单片机的时序等。,2.1MCS-51单片机的结构原理,一、8051单片机的结构,图2‑1MCS-51单片机的基本结构,二、8051单片机的内部结构和工作原理,8051单片机的内部结构框图如图2‑2所示,下面分别进行介绍,,图2‑28051的内部结构框图,,图2‑38051存储器组织结构,图2‑48051内部RAM位地址区,图2‑48051内部RAM位地址区,表格2‑2特殊功能寄存器表,*可位寻址的特殊功能寄存器,,图2‑5P0口的位结构,(1)P0口位的结构,(2)P1口位的结构,,图2‑6P1口的位结构,图2‑6P1口的位结构,图2‑6P1口的位结构,图2‑6P1口的位结构,图2‑6P1口的位结构,(3)P2口的位结构,,图2‑7P2口的结构图,(4)P3口的位结构,,图2‑8P3口的结构图,(4)P3口的位结构,,图2‑8P3口的结构图,表格2‑3P3口的第二功能表,,一、时钟周期、机器周期和指令周期,,图2-9基本定时时序关系,2.2MCS-51单片机的时序,1.时钟周期,,图2‑10MCS-51的取指/执行时序,2.机器周期,,3.指令周期,二、MCS-51单片机指令的取指和执行的时序,三、访问外部ROM和RAM的时序,,图2‑11访问外部ROM的时序,1.访问外部ROM的时序,2.访问外部RAM的时序,,图2‑12访问外部RAM的时序,2.3MCS-51单片机的时钟和复位电路,一、时钟电路,,图2‑13MCS-51时钟接法,1.内部振荡器方式,2.外部时钟方式,二、复位电路及复位状态,1.内部复位电路,,图2‑148051复位电路结构,2.外部复位电路,,图2‑15复位电路,3.复位状态,表格2‑4各专用寄存器的复位值,2.4MCS-51单片机的低功耗工作方式,一、电源控制寄存器PCON,,三、掉电方式,二、等待工作方式,第三章MSC-51单片机的指令系统,3.1指令系统概述,一、机器码指令与汇编语言指令,机器码指令,汇编语言指令,二、指令格式,汇编语言格式为[标号]操作码助记符[目的操作数,][源操作数][;注释],,单字节指令双字节指令三字节指令,INCAADDA,22HMOV5EH,4FH,图3-1机器码指令格式,3.2寻址方式,一、寄存器寻址,二、直接寻址,三、立即寻址,四、寄存器间接寻址,五、变址寻址,六、相对寻址,七、位寻址,3.3MSC-51单片机的指令系统按照指令的功能,可以把MSC-51的111条指令分成五类l数据传送类指令(29条)l算术运算类指令(24条)l逻辑操作类指令(24条)l控制转移类指令(17条)l位操作类指令(17条),,图3-2相对寻址过程,第四章MCS-51单片机的应用程序设计,,图4-1基本程序结构,4.1运算程序,一、多字节数加法,1.多字节无符号数加法,CLRCMOVR0,40H;指向加数最低位MOVR1,5OH;指向另一加数最低位MOVR2,04H;字节数作计数初值LOOP1MOVA,R0;取被加数ADDCA,R1;两数相加,带进位MOVR0,AINCR0;修改地址INCR1DJNZR2,LOOPl;未加完转LOOP1JNCLOOP2;无进位转LOOP2MOVR0,01HLOOP2DECR0RET,2.多字节有符号数加法,MOVA,R0;复制保存地址指针MOVR2,AMOVA,R3MOVR7,ACLRCLOOP1MOVA,R0ADDCA,R1;相加MOVR0,AINCR0INCR1;地址指针加1DJNZR7,LOOP1JBOV,ERR;若溢出,转溢出处理DECR0MOVA,R0JNBE7H,LOOP2SETB07H;和值为负,置位标志LOOP2MOVA,R2;恢复地址指针MOVR0,ARET┇ERR┇;溢出处理RET,SDADDCLR07H;标志位清零,图4-3多字节有符号数加法程序流程图,二、多字节数减法,MOVR0,40H;指向被减数最低位MOVR1,5OH;指向减数最低位MOVR2,04H;字节数CLRCLOOP1MOVA,R0SUBBA,R1;完成一个字节的减法运算MOVR0,AINCR0INCR1DJNZR2,LOOP1RET,三、多字节十进制数BCD码加法,,,图4-4BCD码多字节加法程序流程图,,,,,,,BCDADDMOV20H,R0MOV23H,R3CLRCLOOP0MOVA,R0;取被加数ADDCA,R1;两数相加DAA;十进制调整MOVR0,AINCR0;指针加1INCR1DJNZR3,LOOP0;作完加法否MOVR2.23HJNCRETURN;有无进位,MOVR0,01HINCR3RETURNMOVR0,20HRET,四、多字节数乘法,ZHENFAMOVA,R0MOVB,R1MULAB;R1*R0MOVR3,A;积的低位送到R3MOVR4,B;积的高位送到R4MOVA,R0MOVB,R2MULAB;R2*(R0)ADDA,R4;R1*R0的高位加R2*R0的低位MOVR4,A;结果送R4,进位在CY中MOVA,BADDCA,OOH;R2*R0的高位加低位来的进位MOVR5,A;结果送R5RET,五、多字节数除法,,,DVMOVR7,08H;设计数初值DVlCLRCMOVA,R5RLCAMOVR5,AMOVA,R6RLCA;将R6、R5左移一位MOV07H,C;将移出的一位送07H位保存CLRC,,图4-5除法程序流程图,SUBBA,R2;余数高位减除数JBO7H,GOU;若标志位为1,说明够减,JNCGOU;无借位也说明够减ADDA,R2;否则,恢复余数AJMPDV2GOUINCR5;商上1DV2MOVR6,A;保存余数高位DJNZR7,DVlRET,一、数据的拼拆,4.2数据的拼拆和转换,例4-7设在30H和31H单元中各有一个8位数据30Hx7x6x5x4x3x2x1x03lHy7y6y5y4y3y2y1y0现在要从30H单元中取出低5位,并从31H单元中取出低3位完成拼装,拼装结果送40H单元保存,并且规定40Hy2y1y0 x4x3x2x1x0解利用逻辑指令ANL、ORL来完成数据的拼拆,程序清单如下MOV4OH,3OH;将x7~x0传送到40H单元ANL4OH,000111llB;将高3位屏蔽掉MOVA,31H;将y7~y0传送到累加器中SWAPA;将A的内容左移4次RLA;y2~y0移到高3位ANLA,111000OOB;将低5位屏蔽掉ORL4OH,A;完成拼装任务,二、数据的转换,1.ASCII码与二进制数的互相转换,例4-10编程实现十六进制数表示的ASC1I代码转换成4位二进制数(1位十六进制数)。解对于这种转换,只要注意到下述关系便不难编写出转换程序“字符0”“字符9”的ASCII码值为“30H”“39H”,它们与30H之差恰好为“00H”“09H”,结果均<0AH。“字符A”“字符F”的ASCII码值为“41H”“46H”,它们各自减去37H后恰好为“0AH”“0FH”,结果0AH。根据这个关系可以编出转换程序如下,程序以R1作为入口和出口。ASCHINMOVA,R1;取操作数CLRC;清进位标志位CSUBBA,30H;ASCII码减去30H,实现0-9的转换MOVR1,A;暂存结果SUBBA,0AH;结果是否9JCLOOP;若≤9则转换正确XCHA,R1SUBBA,07H;若9则减37HMOVR1,ALOOPRET,2.BCD码与二进制数的转换,,图4-6BCD码(十进制)转换成二进制数程序流程图,程序清单如下MAINMOVA,R5MOVR2,A;给子程序入口参数ACALLBCDBIN;调用子程序MOVB,64HMULABMOVR6,AXCHA,BMOVR5,AMOVA,R4MOVR2,AACALLBCDBIN;调用子程序ADDA,R6MOVR4,AMOVA,R5ADDCA,00HMOVR5,ARET子程序如下BCDBINMOVA,R2ANLA,0F0H;取高位BCD码,屏蔽低4位SWAPAMOVB,0AHMULABMOVR3,AMOVA,R2ANLA,0FHADDA,R3;加低位BCD码MOVR2,ARET,4.3查表程序,使用MOVCA,ADPTR指令来查表,程序清单如下MOVDPTR,BS;子程序入口地址表首址RLA;键码值乘以2,MOVR2,A;暂存AMOVCA,ADPTR;取得入口地址低位PUSHA;进栈暂存INCAMOVCA,ADPTR;取得入口地址高位MOVDPH,APOPDPLCLRAJMPADPTR;转向键处理子程序BSDBRK0L;处理子程序入口地址表DBRK0HDBRK1LDBRK1HDBRK2LDBRK2H┇┇,4.4散转程序,一、采用转移指令表的散转程序,例4-17编出要求根据R3的内容转向各个操作程序的程序。即当R30,转向OPROR31,转向OPRlR3n,转向OPRn解程序清单如下MOVA,R3RLA;分支序号值乘2MOVDPTR,BRTABL;转移指令表首址JMPADPTR;转向形成的散转地址BRTABLAJMPOPR0;转移指令表AJMPOPR1AJMPOPRn,二、采用地址偏移量表的散转程序,例4-19编出能按R6的内容转向5个操作程序的程序。其对应关系如下OPRD0操作程序0OPRD1操作程序1OPRD2操作程序2OPRD3操作程序3OPRD4操作程序4解程序清单如下MOVA,R6MOVDPTR,TAB3;指向地址偏移量表首址MOVCA,ADPTR;散转点入口地址在A中JMPADPTR;转向相应的操作程序入口TAB3DBOPRDO-TAB3;地址偏移量表DBOPRDl-TAB3,DBOPRD2-TAB3DBOPRD3-TAB3DBOPRD4-TAB3,三、采用转向地址表的散转程序,例4-20编程要求根据R6的内容转向相应的操作程序中去。设备操作程序的转向地址分别为OPRD0,OPRDl,OPRDn。解程序清单如下MOVDPTR,BRTABL;指向转向地址表MOVA,R6ADDA,R6;A←R6*2JNCNAND;INCDPH;R6*2的进位加到DPHNANDMOVR3,A;暂存变址值MOVCA,ADPTR;取转向地址高8位XCHA,R3INCAMOVCA,ADPTR;取转向地址低8位MOVDPL,A;转向地址在DPTR中MOVDPH,R3,CLRAJMPADPTR;转向相应的操作程序BRTABLDWOPRDO;转向地址表DWOPRD1┆DWOPRDn,四、采用“RET”指令的散转程序,例4-21编出能根据R6的内容转向各个操作程序的程序。设该操作程序的转向地址分别为OPRD0,OPRDl,OPRDn。解程序清单如下MOVDPTR,TAB3;指向转移地址表MOVA,R6ADDA,R6JNCNANDINCDPHNANDMOVR7,AMOVCA,ADPTR;取转向地址高8位XCHA,R7INCAMOVCA,ADPTR;取转向地址低8位PUSHA;转向地址入栈MOVA,R7PUSHARET;转向操作程序TAB3DWOPRD0;转向地址表DWOPRDl┇DWOPRDn,4.5I/O端口控制程序,例4-22试编出能模拟图4-9中电路的程序。,,,ORG0200HDBIT00HEBIT01HGBIT02HLOOP1ORLP1,08H;准备P1.3输入LOOP2MOVC,P1.3;检测K3状态JCLOOP2;若未准备好(K3断),则LOOP2ORLP1,03H;若准备好,则准备输入P1.0和P1.1状态MOVC,P1.0;输入K0状态MOVD,C;送入D,MOVC,P1.1;输入K1状态MOVE,C;送入EANLC,D;D∧E送CMOVG,C;送入GMOVC,EORLC,D;D∨E送CANLC,/G;(D∨E)∧(D∧E)MOVP1.2,C;输出结果SJMPLOOP1;准备下次模拟END,4.6子程序调用时的参数传递方法,一、通过寄存器或片内RAM传递参数,例4-23利用通过寄存器或片内RAM传递参数这种方法编出调用SUBRT子程序的主程序。解应该是MAINMOVR0,30H;传送RAM数据区的起始地址MOVR7,0AH;传送RAM数据区的长度ACALLSUBRT;调用清零子程序SJMP;结束SUBRTMOVA,00H;清零子程序LOOPMOV@R0,AINCR0DJNZR7,LOOPRET,二、通过堆栈传递参数,例4-25在HEX单元存有两个十六进制数,试编程分别把它们转换成ASCII码存入ASC和ASC1单元。解本题子程序采用查表方法完成一个十六进制数的ASCII码转换,主程序完成入口参数的传递和子程序的两次调用,以满足题目要求。程序清单为ORG1200HPUSHHEX;入口参数压栈ACALLHASC;求低位十六进制数的ASCII码POPASC;出口参数存入ASCMOVA,HEX;十六进制数送ASWAPA;高位十六进制数送低4位PUSHACC;入口参数压栈ACALLHASC;求高位十六进制数的ASCII码POPASC1;出口参数送ASC1SJMP;原地踏步,结束HASCDECSPDECSP;入口参数地址送SPPOPACC;入口参数送AANLA,0FH;取出入口参数低4位ADDA,07H;地址调整MOVCA,APC;查相应ASCII码PUSHACC;出口参数压栈INCSPINCSP;SP指向断点地址高8位RET;返回主程序ASCTABLDB‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’DB‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’END,三、利用指针寄存器传递参数,例4-26编出能实现打印THISISANEXAMPLE的程序。解将要打印的字符及代码不是放在调用指令之前,而是紧跟在调用指令之后。主程序MAINACALLPRINT;调用打印子程序DB‘THISISANEXAMPLE;要打印的字符及代码DBOAH,ODH,OOHNEXT子程序PRINTPOPDPH;把调用指令下面字节的地址弹出,作为数据指针POPDPLPPPlMOVA,OOHMOVCA,ADPTR;取出欲打印的字符INCDPTRJZPPPEND;判断是否为结束字符PPP2;打印程序SJMPPPPl;未完,继续打印PPPENDJMPADPTR;指向主程序NEXT处,取代返回指令,第五章定时/计数器,5.1定时/计数的结构及工作原理,一、定时/计数器的结构和原理,1.定时/计数器的结构,,图5‑1TMOD、TCON与T0、T1的结构框图,2.定时/计数器的原理,,图5‑2定时/计数器的结构框图,二、定时/计数器方式寄存器TMOD,,表格5‑1方式选择位意义,TMOD格式如下,定时器1,定时器0,三、定时控制寄存器TCON定时器控制字TCON的格式如下,,5.2定时/计数器的工作方式,一、方式0当M1M0两位为00时,定时/计数器被选为工作方式0,其逻辑结构如图5‑3所示。,,图5‑3T0或T1方式0结构,二、方式1,,图5‑4T0或T1方式1结构,三、方式2,,图5‑5T0或T1方式1结构,三、方式2,,图5‑6T0或T1方式2结构,四、方式3,,图5‑7T0方式3下和T1结构,一、方式0、方式1的应用例5-1选择T1方式0用于定时,在P1。1输出周期为1ms的方波,晶振fosc6MHZ。根据题意,只要使P1。1每隔500s取反一次即可得到1ms方波,因而T1的定时时间为,500s。将T1设为定时方式0GATE0,C/T0,M1M000;T0不用可为任意,只要不使其进入方式3,一般取0即可。故TMOD00H。系统复位后TMOD为0,所以不必对TMOD置初值。下面计算500s定时T1的初值机器周期T12/fosc12/61062s设初值为X则(213-X)210-6s50010-6sX7942D1111100000110B1F06H因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位,所以TL106H;X的高8位应装入TH1,所以TH1F8H。源程序如下,二、方式2的应用例5-2用定时器1方式2计数,要求每计满100次,将P1。0取反。根据题意,外部计数信号由T1(P3.5)引脚输入,每跳变一次计数器加1,由程序查询TF1。方式2有自动重装初值的功能,初始化后不必再置初值。初值X28-100156D9CHTH1TL19CHTMOD60H源程序如下,三、门控位的应用,,,图5‑8外部正脉冲宽度测量,例5-3利用T0门控位测试INT0引脚上出现的正脉冲的宽度,并以机器周期数的形式显示在显示器上。,根据要求可这样设计程序将T0设定为方式1,GATE设为1,置TR0为1。一旦INT0(P3。2)引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取T0的计数值并显示。测试过程如下,源程序如下,由于定时方式1的16位计数长度有限,被测脉冲高电平宽度只能小于65536个机器周期。,源程序如下,第六章MCS-51单片机的系统扩展,6.1MCS-51单片机的引脚定义及最小应用系统,一、8051的引脚定义及功能,图6‑1MCS-51的引脚图及功能分类图,二、MCS-51单片机最小应用系统,,图6‑28051/8751最小应用系统,6.2MCS-51单片机外部存储器的扩展,一、外部程序存储器的扩展及取指过程,,图6‑3外部程序存储器一般连接方法,1.程序存储器的一般连接方式,,图6-4扩展8K字节程序存储器的连线图,2.典型EPROM扩展电路,3.程序存储器E2PROM的扩展,,图6-5E2PROM作为程序存储器的扩展图,二、数据存储器的扩展,,图6-6扩展2KB数据存储器的线路图,1.数据存储器一般的扩展方法,2.常用数据存储器的扩展电路,三、综合扩展实例,,图6-7扩展16KBRAM和16KBEPROM,6.3并行I/O口的扩展,一、简单I/O口的扩展,,图6-8简单I/O接口扩展电路,二、可编程I/O口的扩展,,图6‑98155的结构和引脚,表格6‑18155口地址分布,3.8155与单片机的连接,,表格6‑28155的RAM和I/O口地址分配,图6‑10扩展一片8155的基本方案,4.8155片内RAM的使用,OK;和为0,读/写正确,(1)命令寄存器的用法,表格6‑3C口工作方式,,图6‑128155方式4的逻辑结构图,,6.作定时/计数器用,,,,,,,,,表6-48155定时器输出方式,,,,,,,,第七章MCS-51系统的串行接口,7.1串行通讯概述,一、串行通讯的两种基本方式,1.异步传送方式,,,图7-2异步通讯的帧格式,图7-3同步传送方式,二、波特率,,图7-4串行通讯的制式,三、数据传送的方向,1.单工制式Simplex,2.半双工制式HalfDuplex,3.全双工Full-duplex制式,7.2MCS-51单片机的串行接口,一、MCS-51串行口结构,,图7-5MCS-51串行口组成示意,1.串行口数据缓冲器SBUF,2.串行口控制寄存器SCON,SM0,,图7-6串行口控制寄存器SCON,图7-6串行口控制寄存器SCON,3.特殊功能寄存器PCONPCON主要是为CHMOS型单片机的电源控制设置的专用寄存器,单元地址为87H,不能位寻址。其格式如图7-7所示。,,,图7-7PCON各位定义,二、MCS-51串行的工作方式MCS-51的串行口有四种工作方式,它是由SCON中的SM1和SM0来决定的,如表格7-1,表格7-1串行口的工作方式,1.方式0,,图7-8串行口方式0的时序,2.方式1在方式1时,串行口被设置为波特率可变的8位异步通信接口。其时序如图7-9所示。,图7-9串行口方式1的时序,3.方式2串行口工作为方式2时,被定义为9位异步通信接口。其时序如图7-10所示。,,4.方式3图7-10串行口方式2、3的时序,三、MCS-51串行通信的波特率,1.方式0的波特率,2.方式2的波特率,3.方式1或方式3的波特率,表格7-2常用波特率和定时器T1初值关系表,表格7-2常用波特率和定时器T1初值关系表,7.3MCS-51单片机串行口的应用,一、串行口方式0用作扩展并行I/O口,,图7-11串行口方式0扩展并行输出口,二、方式1与点对点的异步通讯,在下面给出的实现指定功能的通讯程序中,发送和接收都通过调用子程序来完成,并设发送数据区的首地址为20H,接收数据区的首地址为40H。主程序,中断服务程序,发送子程序,接收子程序,三、方式2、方式3与多机通讯,,图7-12多机通讯连接示意图,1.多机通信原理,2.多机通信实现,四、微机与单片机之间的通讯,,图7-13微机与单片机串行通信接口,7.4相互通道接口标准及其选择,一、相互通道的典型结构,二、关于RS-232C、RS-449、RS-422、RS-423和RS-485接口,,,图7-14多机系统的相互通道,2.抗干扰能力,1.RS-232C接口,,图7-15通过电话网实现远程连接,表格7-3微机中常用的RS-232C接口信号,表格7-3微机中常用的RS-232C接口信号,,图7-16简单的RS-232C数据通讯,2.RS-449、RS-422、RS-423和RS-485接口,表格7-4几种串行接口标准的比较,,第八章MCS-51单片机的中断系统,,图8-18051的中断系统,8.1中断系统及其管理,一、中断源及中断入口,,二、外部中断请求标志,2.SCON的中断标志,1.TCON中的中断标志,三、中断允许控制,四、中断源优先级的设定,五、中断响应处理过程,2.中断处理,1.中断响应的过程,3.中断返回,,4.外部中断响应时间,8.2扩充外部中断源,一、利用定时器进行扩充,,图8-2多外部中断源连接方法,二、采用中断和查询相结合的方法扩充外部中断源,EXINTPUSHPSWPUSHACCJBP10,SAV1JBP11,SAV2JBP12,SAV3JBP13,SAV4DISUBPOPACCPOPPSW,RETISAV1;XI1中断服务程序AJMPDISUBSAV2;XI2中断服务程序AJMPDISUBSAV3;XI3中断服务程序AJMPDISUBSAV4;XI1中断服务程序AJMPDISUB,8.3中断系统的应用,,,图8-3外部中断实验,第九章单片机应用系统的设计方法及实例,9.1显示器、键盘与单片机的连接,一、LED数码管与单片机的连接,,图9-1共阴极和共阳极数码管,1.静态显示,,图9-2静态显示原理,DISPMOVR0,50H;R0指向第一个显示单元MOVR2,4;循环计数器赋初值MOVR3,0;显示位指针赋初值LOOPMOVA,R0ANLA,0FH;取第i个显示单元的低4位SWAPAORLA,R3;第i个显示单元的低4位送R3的高4位MOVP1,A;第i个显示单元的低4位送R3指出的数码管去显示MOVA,R0ANLA,0F0H;取第i个显示单元的高4位INCR3;指向下一个数码管ORLA,R3;第i个显示单元的高4位送R3指出的数码管去显示MOVP1,A;将第i个显示单元的高4位送到相应的数码管去显示INCR0;指向下一个显示单元INCR3;指向下一个LED数码管DJNER2,LOOP;未显示完4单元的8个BCD码,返回继续显示RET,,图9-3采用译码器的静态显示接口电路,2.串行显示接口,,图9-5串行显示接口,DISPSETBP1.0;选通显示器MOVSCON,00H;置串口方式0MOVR0,50H;R0指向第一个显示单元MOVR2,4;循环计数器置初值MOVDPTR,TAB;DPTR指向第一个显示单元LOOPMOVA,R0ANLA,0FH;取第i个显示单元的低4位MOVCA,A+DPTR;查译码表MOCSBUF,A;第i个显示单元的低4位的显示码送串口缓冲器WAIT1JNBTI,;未发送完,等待CLRTI;清发送中断标志MOVA,R0ANLA,0F0H;取第i个显示单元的高4位SWAPAMOVCA,A+DPTR;查译码表MOCSBUF,A;第i个显示单元的高4位的显示码送串口缓冲器WAIT2JNBTI,;未发送完,等待CLRTI;清发送中断标志INCR0DJNZR2,LOOP;未发送完4个单元的8个字符,返回继续RETTABDB03H,9FH,25H,0DH,99H,DB49H,41H,1FH,01H,19H,3.动态扫描显示接口,,,图9-6动态扫描显示接口电路,;-----------------主程序------------------STAR∶∶LOOP∶ACALLS00EF;将显示缓冲区内容送去显示∶∶SJMPLOOP;--------------送显示子程序--------------DISPCLRAORLA,P3;取P3口内容ANLA,0F0HMOVR3,A;保护P3口高4位MOVA,43H;取位选信号ANLA,0FH;位选信号送A的低4位ORLA,R3;P3口高4位送A的高4位MOVR0,34H;取段选指针MOVP1,0FFH;关显MOVP3,A;输出位选信号MOVA,R0;显示内容送AMOVDPTR,TAB;译码表首址送DPTRMOVCA,ADPTR;查表译显示码MOVP1,A;输出段选信号1MOVA,43H;RLA;MOV43H,A;位选指针指向下一位INC34H;段选指针指向下一位JBACC.0,DONE;不到最后一位,转MOV34H,50H;段选指针复位MOV43H,0EEH;位选指针复位DONERET;-----------------显示译码表---------------TABDB0C0H;显示字符0,相对地址00HDB0F9H;1DB0A4H;2DB0B0H;3DB99H;4DB92H;5DB82H;6DB0F8H;7DB80H;8DB90H;9,,图9-7按键与单片机直接连接,,图9-8带锁存器的按键与单片机的接口电路,,图9-9按键接口程序流程图,程序如下KSCANMOVDPTR,7FFFH;指向244MOVXA,DPTR;读244ANLA,0FH;取4个按键的值CJNEA,0FH,LOOS;无键按下,转去判断是否键放开JB11H,L0475;键有效标志等于1,等待键放开,返回JC10H,SETSYN;第一次发现键按下,转去置标志,存键值CJNEA,R4,CLRSYN;两次读得的按键值不同,键无效,清第一次发现键按下标志SETB11H;置键有效标志RETLOOSJNB11H,RETUR;键有效标志等于0,未按过键,返回SJMPKEYDO;键放开,转键处理SETSYNSETB10H;置第一次发现键按下标志MOVR4,A;保存键值SJMPRETUR;返回CLRKCLR11H;清键有效标志CLRSYNCLR10H;清第一次发现键按下标志MOVR4,00H;清键值暂存单元RETKEYDORRCAJCJUS2;没按S1,再判断S2ALMPDOS1;转键S1处理程序JUS2JCJUS3;没按S2,再判断S3ALMPDOS2;转键S2处理程序JUS3JCJUS4;没按S3,再判断S4ALMPDOS3;转键S3处理程序JUS4JCRETUR;没按S4,误判断,退出ALMPDOS4;转键S4处理程序DOS1;键S1处理程序SJMPRETURDOS2;键S2处理程序SJMPRETURDOS3;键S3处理程序SJMPRETURDOS4;键S4处理程序SJMPRETUR,三、键盘与单片机的接口,,图9-10键盘与单片机的接口电路,,图9-11键盘接口程序流程图,二、A/D转换器与单片机的接口,图9-12ADC0801~ADC0805,,图9-13ADC0801~0805与单片机的接口,9.3D/A转换器与单片机的连接,一、D/A转换器的基本原理,,图9-14T型网络D/A转换器,二、D/A转换器与单片机的接口,1.内部结构,,图9-15DAC0832的引脚排列图9-16DAC0832结构图,3.接口电路,(1)单缓冲器方式,,图9-17DAC0832与单片机的接口,(2)双缓冲器方式,,图9-18多路DAC0832同步转换的接口电路,程序如下MOVDPTR,0DFFFH;指向0832(1)MOVA,data1MOVXDPTR,A;data1送0832(1)锁存器MOVXDPTR,0BFFFH;指向0832(2)MOVA,data2MOVXDPTR,A;data2送0832(2)锁存器MOVDPTR,7FFFH;指向0832(1)和0832(2)的数据传送端MOVXDPTR,A;data1和data2同时送D/A转换器进行转换,9.4MCS-51单片机应用系统设计举例,一、系统构成及控制原理,,图9-19糖果包装机的结构图,,图9–20走纸轮的顶视图,,图9-21相位误差与速度误差,,图9-22控制流程图,二、硬件电路,1.主程序,,图9-23硬件电路,,图9-24主程序流程图,-------------初始化------------------ORG0000HAJMPADR00ORG0003HCLREX0;关外部中断0,以防止脉冲抖动造成中断重复响应AJMPINT0ORG000BHAJMPT0ORG0013HCLREX1;关外部中断1AJMPINT1ORG001BHAJMPT1ORG0030HADR00MOVR0,20H;20H~70H单元清0MOVR1,50HCLRAADR10MOVR0,AINCR0DJNZR1,ADR10ACALLSUB1;清显示器MOVSP,5FH;堆栈从60H开始MOVSCON,00H;串行口置为方式0,MOVA,43H;相位滞后误差送AACALLSUB2;将A中绝对误差转为相对误差放在R7中MOVA,R7CLRCSUBBA,2JNCADR20;相位滞后小于2,返回JBP1.0,ADR75;电磁离合齿轮有电,转MOVR5,43H;保存本次测量的相位误差SETBP1.0;电磁离合齿轮通电,提速2AJMPADR20;返回ADR75MOVA,R5;取回上次测量的相位误差CLRCSUBBA,43H;减本次测量的相位误差进行比较JNCADR20;本次测量的相位误差小,返回SETBP1.1;否则,胀紧电机正转,提速MOVR2,06H;设置最小提速量ACALLSUB3;延时0.6秒CLRP1.1;停止胀紧电机正转AJMPADR20;-------------------相位超前误差调整-------------------ADR80MOVA,42H;相位超前误差送AACALLSUB2;将A中绝对误差转为相对误差放在R7中MOVA,R7CLRCSUBBA,2JCADR20;相位超前误差小于2,返回JNBP1.0,ADR85;电磁离合齿轮未通电,转取比较两次测量的误差MOVR6,42H;保存本次测量的误差CLRP1.0;电磁离合齿轮断电,减速2AJMPADR20;返回ADR85MOVA,R6;取回上次测量的误差CLRCSUBBA,42H;减本次测量的误差JNCADR20;本次测量的误差小,返回SETBP1.2;否则,胀紧电机反转,减速MOVR2,06H;设置最小减速量ACALLSUB3;延时0.6秒CLRP1.2;停止胀紧电机反转AJMPADR20,2.子程序,1)绝对误差转换为相对误差子程序,SUB2MOVB,64HMULABMOVR7,00HADR90CLRCSUBBA,41;误差的百分数减切纸周期JCADR0A0;不够减,转INCR7;够减,商加1AJMPADR90;返回再减ADR0A0MOVR6,BCJNER6,00H,ADR0B0AJMPADR0C0;无位可借,除法结束ADR0B0DECB;借位INCR7;商加1AJMPADR90;返回再减ADR0C0RET,(2)R20.1秒延时子程序R20.1秒延时子程序,用于控制P1.1和P1.2输出的脉冲宽度。程序如下SUB3MOVR3,64HADR0D0MOVR4,0F9HADR0E0NOPNOPDJNZR4,ADR0E0,DJNZR3,ADR0D0DJNZR2,SUB3RET,3.中断服务程序,T0、T1、INT0和INT1中断服务程序的流程图如图9-25~图9-28。,9-图25T0中断服务程序图9-26T1中断服务程序,,,图9-27INT0中断服务程序图9-28INT1中断服务程序,,,(4)INT1中断服务程序,INT1PUSHPSWMOV41H,37H;取走纸周期MOV37H,00H;为下一次记数做准备MOV43H,36H;取走纸滞后切纸的时间MOVR5,00H;清监视计数器SETB11H;置检测到走纸周期标志SETBRS0;选中1区工