《单片机原理及应用》电子教案.ppt

上传人:牧羊曲112 文档编号:5897207 上传时间:2023-08-31 格式:PPT 页数:188 大小:1.93MB
返回 下载 相关 举报
《单片机原理及应用》电子教案.ppt_第1页
第1页 / 共188页
《单片机原理及应用》电子教案.ppt_第2页
第2页 / 共188页
《单片机原理及应用》电子教案.ppt_第3页
第3页 / 共188页
《单片机原理及应用》电子教案.ppt_第4页
第4页 / 共188页
《单片机原理及应用》电子教案.ppt_第5页
第5页 / 共188页
点击查看更多>>
资源描述

《《单片机原理及应用》电子教案.ppt》由会员分享,可在线阅读,更多相关《《单片机原理及应用》电子教案.ppt(188页珍藏版)》请在三一办公上搜索。

1、单片机原理及应用 电子教案,赵秀珍 王乃钊 制作 水利水电出版社 2001.8,第一章单片微型计算机概述,本章主要介绍单片机的发展,基本的结构和特点,单片机的应用模式和领域,单片机的供应状态等。单片微型计算机就是将CPU、RAM、ROM、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。因此,一块芯片就构成了一台计算机。它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。,11 单片机的发展概况,综上所述,我们可以把单片机的发展历史划分为四阶段:第一阶段(19761978年):低性能单片机的探索阶段。以Intel公司的MCS-48为代表,采用了单片结构,即在

2、一块芯片内含有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转换器和高

3、速输入/输出部件等。第四阶段(1990年):微控制器的全面发展阶段,各公司的产品在尽量兼容的同时,向高速、强运算能力、寻址范围大以及小型廉价方面发展。,12 单片机的结构特点,(1)片内的RAM采用寄存器结构形式,这样可以提高存取的速度;(2)在存储器结构上,严格的将程序存储器ROM和数据存储器RAM在空间上分开;(3)它的引出管脚一般都设计成多功能的;(4)增加了一个全双工的串行接口,以扩充I/O口和外接同步输入和输出设备;(5)有21个特殊功能寄存器;(6)有丰富的指令系统,内部设置了可以位寻址的位地址空间。,13 单片机的主要品种及系列,一、4位单片机二、8位单片机,表格 11 MCS-

4、51系列型号,14 单片机的应用,一、单片机在仪器仪表中的应用二、单片机在机电一体化中的应用三、单片机在智能接口和多机系统中的应用四、单片机在生活中的应用,第 二 章 MCS-51单片机的结构和原理,本章主要介绍MCS-51系列的8051的基本结构、工作原理、存储器结构、P0、P1、P2、P3四个I/O口的基本工作原理和操作特点。单片机的各种工作方式、单片机的时序等。,21 MCS-51单片机的结构原理,一、8051单片机的结构,图 21 MCS-51单片机的基本结构,二、8051单片机的内部结构和工作原理,8051单片机的内部结构框图如图 22 所示,下面分别进行介绍:,图 22 8051的

5、内部结构框图,图 23 8051存储器组织结构,图 24 8051内部RAM位地址区,图 24 8051内部RAM位地址区,表格 22 特殊功能寄存器表,*:可位寻址的特殊功能寄存器,图 25 P0口的位结构,(1)P0口位的结构,(2)P1口位的结构,图 26 P1口的位结构,图 26 P1口的位结构,图 26 P1口的位结构,图 26 P1口的位结构,图 26 P1口的位结构,(3)P2口的位结构,图 27 P2口的结构图,(4)P3口的位结构,图 28 P3口的结构图,(4)P3口的位结构,图 28 P3口的结构图,表格 23 P3口的第二功能表,一、时钟周期、机器周期和指令周期,图 2

6、-9 基本定时时序关系,22 MCS-51单片机的时序,1时钟周期,图 210 MCS-51的取指/执行时序,2机器周期,3指令周期,二、MCS-51单片机指令的取指和执行的时序,三、访问外部ROM和RAM的时序,图 211 访问外部ROM的时序,1访问外部ROM的时序,2访问外部RAM的时序,图 212 访问外部RAM的时序,23 MCS-51单片机的时钟和复位电路,一、时钟电路,图 213 MCS-51时钟接法,1内部振荡器方式,2外部时钟方式,二、复位电路及复位状态,1内部复位电路,图 214 8051复位电路结构,2外部复位电路,图 215 复位电路,3复位状态,表格 24 各专用寄存

7、器的复位值,24 MCS-51单片机的低功耗工作方式,一、电源控制寄存器PCON,三、掉电方式,二、等待工作方式,第三章 MSC-51 单片机的指令系统,31 指令系统概述,一、机器码指令与汇编语言指令,机器码指令:,汇编语言指令:,二、指令格式,汇编语言格式为:标号:操作码助记符 目的操作数,源操作数;注释,单字节指令 双字节指令 三字节指令,INC A ADD A,#22H MOV 5EH,4FH,图 3-1 机器码指令格式,32 寻址方式,一、寄存器寻址,二、直接寻址,三、立即寻址,四、寄存器间接寻址,五、变址寻址,六、相对寻址,七、位寻址,33 MSC-51单片机的指令系统按照指令的功

8、能,可以把MSC-51的111条指令分成五类:l 数据传送类指令(29条)l 算术运算类指令(24条)l 逻辑操作类指令(24条)l 控制转移类指令(17条)l 位操作类指令(17条),图 3-2 相对寻址过程,第四章 MCS-51单片机的应用程序设计,图 4-1 基本程序结构,41 运算程序,一、多字节数加法,1多字节无符号数加法,CLR CMOV R0,#40H;指向加数最低位MOV R1,#5OH;指向另一加数最低位MOV R2,#04H;字节数作计数初值LOOP1:MOV A,R0;取被加数ADDC A,R1;两数相加,带进位MOV R0,AINC R0;修改地址INC R1DJNZ

9、R2,LOOPl;未加完转LOOP1JNC LOOP2;无进位转LOOP2MOV R0,#01HLOOP2:DEC R0RET,2多字节有符号数加法,MOV A,R0;复制保存地址指针MOV R2,AMOV A,RMOV R7,ACLR CLOOP1:MOV A,R0ADDC A,R1;相加 MOV R0,AINC R0INC R1;地址指针加1DJNZ R7,LOOP1JB OV,ERR;若溢出,转溢出处理DEC R0MOV A,R0JNB E7H,LOOP2SETB 07H;和值为负,置位标志LOOP2:MOV A,R2;恢复地址指针MOV R0,ARETERR:;溢出处理RET,SDAD

10、D:CLR 07H;标志位清零,图 4-3 多字节有符号数加法程序流程图,二、多字节数减法,MOV R0,#40H;指向被减数最低位MOV R1,#5OH;指向减数最低位MOV R2,#04H;字节数CLR CLOOP1:MOV A,R0SUBB A,R1;完成一个字节的减法运算MOV R0,AINC R0INC R1DJNZ R2,LOOP1RET,三、多字节十进制数(BCD码)加法,图 4-4 BCD码多字节加法程序流程图,BCDADD:MOV 20H,R0 MOV 23H,R CLR C LOOP0:MOV A,R0;取被加数 ADDC A,R1;两数相加 DA A;十进制调整 MOV

11、R0,A INC R0;指针加1 INC R1 DJNZ R,LOOP0;作完加法否 MOV R2.#23H JNC RETURN;有无进位,MOV R0,#01H INC RRETURN:MOV R0,#20H RET,四、多字节数乘法,ZHENFA:MOV A,R0 MOV B,R1 MUL AB;(R1)*(R0)MOV R,A;积的低位送到R MOV R4,B;积的高位送到R4 MOV A,R0 MOV B,R2 MUL AB;(R2)*(R0)ADD A,R4;(R1)*(R0)的高位加(R2)*(R0)的低位 MOV R4,A;结果送R4,进位在CY中 MOV A,B ADDC A

12、,#OOH;(R2)*(R0)的高位加低位来的进位 MOV R,A;结果送R RET,五、多字节数除法,DV:MOV R7,#08H;设计数初值DVl:CLR C MOV A,R RLC A MOV R,A MOV A,R6 RLC A;将(R6)、(R)左移一位 MOV 07H,C;将移出的一位送07H位保存 CLR C,图 4-5 除法程序流程图,SUBB A,R2;余数(高位)减除数 JB O7H,GOU;若标志位为1,说明够减,JNC GOU;无借位也说明够减 ADD A,R2;否则,恢复余数 AJMP DV2 GOU:INC R;商上1 DV2:MOV R6,A;保存余数(高位)DJ

13、NZ R7,DVl RET,一、数据的拼拆,42 数据的拼拆和转换,例4-7 设在30H和31H单元中各有一个8位数据:(30H)=x7x6xx4xx2x1x0(3lH)=y7y6yy4yy2y1y0现在要从30H单元中取出低5位,并从31H单元中取出低3位完成拼装,拼装结果送40H单元保存,并且规定:(40H)=y2y1y0 x4xx2x1x0解:利用逻辑指令ANL、ORL来完成数据的拼拆,程序清单如下:MOV 4OH,3OH;将x7x0传送到40H单元ANL 4OH,#000111llB;将高3位屏蔽掉MOV A,31H;将y7y0传送到累加器中SWAP A;将A的内容左移4次RL A;y

14、2y0移到高3位ANL A,#111000OOB;将低5位屏蔽掉ORL 4OH,A;完成拼装任务,二、数据的转换,1ASCII码与二进制数的互相转换,例4-10 编程实现十六进制数表示的ASC1I代码转换成4位二进制数(1位十六进制数)。解:对于这种转换,只要注意到下述关系便不难编写出转换程序:“字符0”“字符9”的ASCII码值为“30H”“39H”,它们与30H之差恰好为“00H”“09H”,结果均0AH。“字符A”“字符F”的ASCII码值为“41H”“46H”,它们各自减去37H后恰好为“0AH”“0FH”,结果0AH。根据这个关系可以编出转换程序如下,程序以R1作为入口和出口。ASC

15、HIN:MOV A,R1;取操作数CLR C;清进位标志位CSUBB A,#30H;ASCII码减去30H,实现0-9的转换MOV R1,A;暂存结果SUBB A,#0AH;结果是否9?JC LOOP;若9则转换正确XCH A,R1SUBB A,#07H;若9则减37HMOV R1,ALOOP:RET,2BCD码与二进制数的转换,图 4-6 BCD码(十进制)转换成二进制数程序流程图,程序清单如下:MAIN:MOV A,R MOV R2,A;给子程序入口参数 ACALL BCDBIN;调用子程序 MOV B,#64H MUL AB MOV R6,A XCH A,B MOV R,A MOV A,

16、R4 MOV R2,A ACALL BCDBIN;调用子程序 ADD A,R6 MOV R4,A MOV A,R ADDC A,#00H MOV R,A RET子程序如下:BCDBIN:MOV A,R2 ANL A,#0F0H;取高位BCD码,屏蔽低4位 SWAP A MOV B,#0AH MUL AB MOV R,A MOV A,R2 ANL A,#0FH ADD A,R3;加低位BCD码 MOV R2,A RET,43 查表程序,使用MOVC A,A+DPTR指令来查表,程序清单如下:MOV DPTR,#BS;子程序入口地址表首址 RL A;键码值乘以,MOV R2,A;暂存 MOVC A

17、,A+DPTR;取得入口地址低位 PUSH A;进栈暂存 INC A MOVC A,A+DPTR;取得入口地址高位 MOV DPH,A POP DPL CLR A JMP A+DPTR;转向键处理子程序BS:DB RK0L;处理子程序入口地址表 DB RK0H DB RK1L DB RK1H DB RK2L DB RK2H,44 散转程序,一、采用转移指令表的散转程序,例4-17 编出要求根据R的内容转向各个操作程序的程序。即当(R)=0,转向OPRO(R)=1,转向OPRl(R)=n,转向OPRn解:程序清单如下:MOV A,RRL A;分支序号值乘2MOV DPTR,#BRTABL;转移指

18、令表首址JMP A+DPTR;转向形成的散转地址BRTABL:AJMP OPR0;转移指令表AJMP OPR1AJMP OPRn,二、采用地址偏移量表的散转程序,例4-19 编出能按R的内容转向5个操作程序的程序。其对应关系如下:OPRD0:操作程序0OPRD1:操作程序1OPRD2:操作程序2OPRD3:操作程序3OPRD4:操作程序4解:程序清单如下:MOV A,R MOV DPTR,#TAB3;指向地址偏移量表首址 MOVC A,A+DPTR;散转点入口地址在A中 JMP A+DPTR;转向相应的操作程序入口TAB3:DB OPRDO-TAB3;地址偏移量表 DB OPRDl-TAB3,

19、DB OPRD2-TAB3 DB OPRD3-TAB3 DB OPRD4-TAB3,三、采用转向地址表的散转程序,例4-20 编程:要求根据R的内容转向相应的操作程序中去。设备操作程序的转向地址分别为OPRD0,OPRDl,OPRDn。解:程序清单如下:MOV DPTR,#BRTABL;指向转向地址表 MOV A,R ADD A,R;(A)(R)*2 JNC NAND;INC DPH;(R)*2的进位加到DPHNAND:MOV R,A;暂存变址值 MOVC A,A+DPTR;取转向地址高8位 XCH A,R INC A MOVC A,A+DPTR;取转向地址低8位 MOV DPL,A;转向地址

20、在DPTR中 MOV DPH,R,CLR A JMP A+DPTR;转向相应的操作程序BRTABL:DW OPRDO;转向地址表 DW OPRD1 DW OPRDn,四、采用“RET”指令的散转程序,例4-21 编出能根据R的内容转向各个操作程序的程序。设该操作程序的转向地址分别为OPRD0,OPRDl,OPRDn。解:程序清单如下:MOV DPTR,#TAB3;指向转移地址表 MOV A,R ADD A,R JNC NAND INC DPHNAND:MOV R,A MOVC A,A+DPTR;取转向地址高8位 XCH A,R INC A MOVC A,A+DPTR;取转向地址低8位 PUSH

21、 A;转向地址入栈 MOV A,R PUSH A RET;转向操作程序TAB3:DW OPRD0;转向地址表 DW OPRDl DW OPRDn,45 I/O端口控制程序,例4-22 试编出能模拟图4-9中电路的程序。,ORG 0200H D BIT 00H E BIT 01H G BIT 02HLOOP1:ORL P1,#08H;准备P1.3输入LOOP2:MOV C,P1.3;检测K3状态 JC LOOP2;若未准备好(K3断),则LOOP2 ORL P1,#03H;若准备好,则准备输入P1.0和P1.1状态 MOV C,P1.0;输入K0状态 MOV D,C;送入D,MOV C,P1.1

22、;输入K1状态 MOV E,C;送入E ANL C,D;DE送C MOV G,C;送入G MOV C,E ORL C,D;DE送C ANL C,/G;(DE)(DE)MOV P1.2,C;输出结果 SJMP LOOP1;准备下次模拟 END,46 子程序调用时的参数传递方法,一、通过寄存器或片内RAM传递参数,例4-23 利用通过寄存器或片内RAM传递参数这种方法编出调用SUBRT子程序的主程序。解:应该是:MAIN:MOV R0,#30H;传送RAM数据区的起始地址 MOV R7,#0AH;传送RAM数据区的长度 ACALL SUBRT;调用清零子程序 SJMP$;结束 SUBRT:MOV

23、A,#00H;清零子程序LOOP:MOV R0,A INC R0 DJNZ R7,LOOP RET,二、通过堆栈传递参数,例4-25 在HEX单元存有两个十六进制数,试编程分别把它们转换成ASCII码存入ASC和ASC+1单元。解:本题子程序采用查表方法完成一个十六进制数的ASCII码转换,主程序完成入口参数的传递和子程序的两次调用,以满足题目要求。程序清单为:ORG 1200HPUSH HEX;入口参数压栈ACALL HASC;求低位十六进制数的ASCII码POP ASC;出口参数存入ASCMOV A,HEX;十六进制数送ASWAP A;高位十六进制数送低4位PUSH ACC;入口参数压栈A

24、CALL HASC;求高位十六进制数的ASCII码POP ASC+1;出口参数送ASC+1SJMP$;原地踏步,结束HASC:DEC SPDEC SP;入口参数地址送SPPOP ACC;入口参数送AANL A,#0FH;取出入口参数低4位ADD A,#07H;地址调整MOVC A,A+PC;查相应ASCII码PUSH ACC;出口参数压栈INC SPINC SP;SP指向断点地址高8位RET;返回主程序ASCTABL:DB 0,1,2,3,4,5,6,7DB 8,9,A,B,C,D,E,FEND,三、利用指针寄存器传递参数,例4-26 编出能实现打印THIS IS AN EXAMPLE的程序。

25、解:将要打印的字符及代码不是放在调用指令之前,而是紧跟在调用指令之后。主程序:MAIN:ACALL PRINT;调用打印子程序 DBTHIS IS AN EXAMPLE;要打印的字符及代码 DB OAH,ODH,OOHNEXT:子程序:PRINT:POP DPH;把调用指令下面字节的地址弹出,作为数据指针 POP DPLPPPl:MOV A,#OOH MOVC A,A+DPTR;取出欲打印的字符 INC DPTR JZ PPPEND;判断是否为结束字符PPP2:;打印程序 SJMP PPPl;未完,继续打印PPPEND:JMP A+DPTR;指向主程序NEXT处,取代返回指令,第五章 定时/计

26、数器,51 定时/计数的结构及工作原理,一、定时/计数器的结构和原理,1定时/计数器的结构,图 51 TMOD、TCON与T0、T1的结构框图,2定时/计数器的原理,图 52 定时/计数器的结构框图,二、定时/计数器方式寄存器TMOD,表格 51 方式选择位意义,TMOD格式如下:,定时器1,定时器0,三、定时控制寄存器TCON定时器控制字TCON的格式如下:,52 定时/计数器的工作方式,一、方式0当M1M0两位为00时,定时/计数器被选为工作方式0,其逻辑结构如图 53 所示。,图 53 T0(或T1)方式0结构,二、方式1,图 54 T0(或T1)方式1结构,三、方式2,图 55 T0(

27、或T1)方式1结构,三、方式2,图 56 T0(或T1)方式2结构,四、方式3,图 57 T0方式3下和T1结构,一、方式0、方式1的应用例5-1 选择T1方式0用于定时,在P1。1输出周期为1ms的方波,晶振fosc=6MHZ。根据题意,只要使P1。1每隔500s取反一次即可得到1ms方波,因而T1的定时时间为,500s。将T1设为定时方式0:GATE=0,C/T()=0,M1M0=00;T0不用可为任意,只要不使其进入方式3,一般取0即可。故TMOD=00H。系统复位后TMOD为0,所以不必对TMOD置初值。下面计算500s定时T1的初值:机器周期 T=12/fosc=12/6106=2s

28、设初值为X则:(213X)2106 s=500106 s因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位,所以TL1=06H;X的高8位应装入TH1,所以TH1=F8H。源程序如下:,二、方式2的应用例5-2 用定时器1方式2计数,要求每计满100次,将P1。0取反。根据题意,外部计数信号由T1(P3.5)引脚输入,每跳变一次计数器加1,由程序查询TF1。方式2有自动重装初值的功能,初始化后不必再置初值。初值 X=28100=156D=9CH TH1=TL1=9CH TMOD=60H源程序如下:,三、门控位的应用,图 58 外部正脉冲宽度测量,例5-3 利用T0

29、门控位测试INT0引脚上出现的正脉冲的宽度,并以机器周期数的形式显示在显示器上。,根据要求可这样设计程序:将T0设定为方式1,GATE设为1,置TR0为1。一旦INT0(P3。2)引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取T0的计数值并显示。测试过程如下:,源程序如下:,由于定时方式1的16位计数长度有限,被测脉冲高电平宽度只能小于65536个机器周期。,源程序如下:,第六章 MCS-51单片机的系统扩展,61 MCS-51单片机的引脚定义及最小应用系统,一、8051的引脚定义及功能,图 61 MCS-51的引脚图及功能分类图,二、MCS-51单片机最小应用系统,图 62

30、8051/8751最小应用系统,62 MCS-51单片机外部存储器的扩展,一、外部程序存储器的扩展及取指过程,图 63 外部程序存储器一般连接方法,1程序存储器的一般连接方式,图 6-4 扩展8K字节程序存储器的连线图,2典型EPROM扩展电路,3程序存储器E2PROM的扩展,图 6-5 E2PROM作为程序存储器的扩展图,二、数据存储器的扩展,图 6-6 扩展2KB数据存储器的线路图,1数据存储器一般的扩展方法,2常用数据存储器的扩展电路,三、综合扩展实例,图 6-7 扩展16KB RAM和16KB EPROM,63 并行I/O口的扩展,一、简单I/O口的扩展,图 6-8 简单I/O接口扩展

31、电路,二、可编程I/O口的扩展,图 69 8155的结构和引脚,表格 61 8155口地址分布,38155与单片机的连接,表格 62 8155的RAM和I/O口地址分配,图 610 扩展一片8155的基本方案,48155片内RAM的使用,OK:;和为0,读/写正确,(1)命令寄存器的用法,表格 63 C口工作方式,图 612 8155方式4的逻辑结构图,6作定时/计数器用,表 6-4 8155定时器输出方式,第七章 MCS-51系统的串行接口,71 串行通讯概述,一、串行通讯的两种基本方式,1异步传送方式,图 7-2 异步通讯的帧格式,图 7-3 同步传送方式,二、波特率,图 7-4 串行通讯

32、的制式,三、数据传送的方向,1单工制式(Simplex),2半双工制式(Half Duplex),3全双工(Full-duplex)制式,72 MCS-51单片机的串行接口,一、MCS-51串行口结构,图 7-5 MCS-51串行口组成示意,1串行口数据缓冲器SBUF,2串行口控制寄存器SCON,SM0,图 7-6 串行口控制寄存器SCON,图 7-6 串行口控制寄存器SCON,3特殊功能寄存器PCONPCON主要是为CHMOS型单片机的电源控制设置的专用寄存器,单元地址为87H,不能位寻址。其格式如图 7-7 所示。,图 7-7 PCON各位定义,二、MCS-51串行的工作方式MCS-51的

33、串行口有四种工作方式,它是由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初值关系表

34、,73 MCS-51单片机串行口的应用,一、串行口方式0用作扩展并行I/O口,图 7-11 串行口方式0扩展并行输出口,二、方式1与点对点的异步通讯,在下面给出的实现指定功能的通讯程序中,发送和接收都通过调用子程序来完成,并设发送数据区的首地址为20H,接收数据区的首地址为40H。主程序:,中断服务程序:,发送子程序:,接收子程序:,三、方式2、方式3与多机通讯,图 7-12 多机通讯连接示意图,1多机通信原理,2多机通信实现,四、微机与单片机之间的通讯,图 7-13 微机与单片机串行通信接口,74 相互通道接口标准及其选择,一、相互通道的典型结构,二、关于RS-232C、RS-449、RS-

35、422、RS-423和RS-485接口,图 7-14 多机系统的相互通道,2抗干扰能力,1RS-232C接口,图 7-15 通过电话网实现远程连接,表格 7-3 微机中常用的RS-232C接口信号,表格 7-3 微机中常用的RS-232C接口信号,图 7-16 简单的RS-232C数据通讯,2RS-449、RS-422、RS-423和RS-485接口,表格 7-4 几种串行接口标准的比较,第八章 MCS-51单片机的中断系统,图 8-1 8051的中断系统,81 中断系统及其管理,一、中断源及中断入口,二、外部中断请求标志,2SCON的中断标志,1TCON中的中断标志,三、中断允许控制,四、中

36、断源优先级的设定,五、中断响应处理过程,2中断处理,1中断响应的过程,3中断返回,4外部中断响应时间,82 扩充外部中断源,一、利用定时器进行扩充,图 8-2 多外部中断源连接方法,二、采用中断和查询相结合的方法扩充外部中断源,EXINT:PUSH PSW PUSH ACC JB P1 0,SAV1 JB P1 1,SAV2 JB P1 2,SAV3 JB P1 3,SAV4 DISUB:POP ACC POP PSW,RETI SAV1:;XI1中断服务程序 AJMP DISUB SAV2:;XI2中断服务程序 AJMP DISUB SAV3:;XI3中断服务程序 AJMP DISUB SA

37、V4:;XI1中断服务程序 AJMP DISUB,83 中断系统的应用,图 8-3 外部中断实验,第九章 单片机应用系统的设计方法及实例,91 显示器、键盘与单片机的连接,一、LED数码管与单片机的连接,图 9-1 共阴极和共阳极数码管,1静态显示,图 9-2 静态显示原理,DISP:MOVR0,#50H;R0指向第一个显示单元MOVR2,#4;循环计数器赋初值MOVR3,#0;显示位指针赋初值LOOP:MOVA,R0ANLA,#0FH;取第i个显示单元的低4位SWAPAORLA,R3;第i个显示单元的低4位送R3的高4位MOVP1,A;第i个显示单元的低4位送R3指出的数码管去显示MOVA,

38、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 串行显示接口,DISP:SETBP1.0;选通显示器MOVSCON,#00H;置串口方式0 MOVR0,#50H;R0指向第一个显示单元 MOVR2,#4;循环计数器置初值 MOVDPTR,

39、#TAB;DPTR指向第一个显示单元LOOP:MOVA,R0 ANLA,#0FH;取第i个显示单元的低4位 MOVCA,ADPTR;查译码表 MOCSBUF,A;第i个显示单元的低4位的显示码送串口缓冲器WAIT1:JNBTI,$;未发送完,等待 CLRTI;清发送中断标志 MOVA,R0 ANLA,#0F0H;取第i个显示单元的高4位 SWAPA MOVCA,ADPTR;查译码表 MOCSBUF,A;第i个显示单元的高4位的显示码送串口缓冲器WAIT2:JNBTI,$;未发送完,等待 CLRTI;清发送中断标志 INCR0 DJNZR2,LOOP;未发送完4个单元的8个字符,返回继续RETT

40、AB:DB03H,9FH,25H,0DH,99H,DB49H,41H,1FH,01H,19H,3动态扫描显示接口,图 9-6 动态扫描显示接口电路,;-主程序-STAR:LOOP:ACALLS00EF;将显示缓冲区内容送去显示SJMPLOOP;-送显示子程序-DISP:CLRAORLA,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,#T

41、AB;译码表首址送DPTRMOVCA,A+DPTR;查表译显示码MOVP1,A;输出段选信号1MOVA,43H;RLA;MOV43H,A;位选指针指向下一位INC34H;段选指针指向下一位JB ACC.0,DONE;不到最后一位,转MOV34H,#50H;段选指针复位MOV43H,#0EEH;位选指针复位DONE:RET;-显示译码表-TAB:DB 0C0H;显示字符0,相对地址00HDB 0F9H;1DB 0A4H;2DB 0B0H;3DB 99H;4DB 92H;5DB 82H;6DB 0F8H;7DB 80H;8DB 90H;9,图 9-7 按键与单片机直接连接,图 9-8 带锁存器的按

42、键与单片机的接口电路,图 9-9 按键接口程序流程图,程序如下:KSCAN:MOVDPTR,#7FFFH;指向244MOVXA,DPTR;读244ANL A,#0FH;取4个按键的值CJNEA,#0FH,LOOS;无键按下,转去判断是否键放开JB11H,L0475;键有效标志等于1,等待键放开,返回JC10H,SETSYN;第一次发现键按下,转去置标志,存键值CJNEA,R4,CLRSYN;两次读得的按键值不同,键无效,清第一次发现键按下标志SETB11H;置键有效标志RETLOOS:JNB11H,RETUR;键有效标志等于0,未按过键,返回SJMPKEYDO;键放开,转键处理SETSYN:S

43、ETB10H;置第一次发现键按下标志MOVR4,A;保存键值SJMPRETUR;返回CLRK:CLR11H;清键有效标志CLRSYN:CLR10H;清第一次发现键按下标志MOVR4,#00H;清键值暂存单元RETKEYDO:RRCAJCJUS2;没按S1,再判断S2ALMPDOS1;转键S1处理程序JUS2:JCJUS3;没按S2,再判断S3ALMPDOS2;转键S2处理程序JUS3:JCJUS4;没按S3,再判断S4ALMPDOS3;转键S3处理程序JUS4:JCRETUR;没按S4,误判断,退出ALMPDOS4;转键S4处理程序DOS1:;键S1处理程序SJMPRETURDOS2:;键S2

44、处理程序SJMPRETURDOS3:;键S3处理程序SJMPRETURDOS4:;键S4处理程序SJMPRETUR,三、键盘与单片机的接口,图 9-10 键盘与单片机的接口电路,图 9-11 键盘接口程序流程图,二、A/D转换器与单片机的接口,图 9-12 ADC0801ADC0805,图 9-13 ADC08010805与单片机的接口,93 D/A转换器与单片机的连接,一、D/A转换器的基本原理,图 9-14 T型网络D/A转换器,二、D/A转换器与单片机的接口,1内部结构,图 9-15 DAC0832的引脚排列 图 9-16 DAC0832结构图,3接口电路,(1)单缓冲器方式,图 9-1

45、7 DAC0832与单片机的接口,(2)双缓冲器方式,图 9-18 多路DAC0832同步转换的接口电路,程序如下:MOV DPTR,#0DFFFH;指向0832(1)MOV A,#data1MOVX DPTR,A;data1送0832(1)锁存器MOVX DPTR,#0BFFFH;指向0832(2)MOV A,#data2MOVX DPTR,A;data2送0832(2)锁存器MOV DPTR,#7FFFH;指向0832(1)和0832(2)的数据传送端MOVX DPTR,A;data1和data2同时送D/A转换器进行转换,94 MCS-51单片机应用系统设计举例,一、系统构成及控制原理,

46、图 9-19 糖果包装机的结构图,图 920 走纸轮的顶视图,图 9-21 相位误差与速度误差,图 9-22 控制流程图,二、硬件电路,1主程序,图 9-23 硬件电路,图 9-24 主程序流程图,-初始化-ORG 0000H AJMP ADR00 ORG 0003H CLR EX0;关外部中断0,以防止脉冲抖动造成中断重复响应 AJMP INT0 ORG 000BH AJMP T0 ORG 0013H CLR EX1;关外部中断1 AJMP INT1 ORG 001BH AJMP T1 ORG 0030HADR00:MOV R0,#20H;20H70H单元清0 MOV R1,#50H CLR

47、 AADR10:MOV R0,A INC R0 DJNZ R1,ADR10 ACALL SUB1;清显示器 MOV SP,#5FH;堆栈从60H开始 MOV SCON,#00H;串行口置为方式0,MOV A,43H;相位滞后误差送A ACALL SUB2;将A中绝对误差转为相对误差放在R7中 MOV A,R7 CLR C SUBB A,#2JNC ADR20;相位滞后小于2%,返回JB P1.0,ADR75;电磁离合齿轮有电,转MOV R5,43H;保存本次测量的相位误差SETB P1.0;电磁离合齿轮通电,提速2%AJMP ADR20;返回ADR75:MOV A,R5;取回上次测量的相位误差

48、CLR CSUBB A,43H;减本次测量的相位误差进行比较JNC ADR20;本次测量的相位误差小,返回SETB P1.1;否则,胀紧电机正转,提速MOV R2,#06H;设置最小提速量ACALL SUB3;延时0.6秒CLR P1.1;停止胀紧电机正转AJMP ADR20;-相位超前误差调整-ADR80:MOV A,42H;相位超前误差送A ACALL SUB2;将A中绝对误差转为相对误差放在R7中 MOV A,R7 CLR C SUBB A,#2 JC ADR20;相位超前误差小于2%,返回JNB P1.0,ADR85;电磁离合齿轮未通电,转取比较两次测量的误差MOV R6,42H;保存

49、本次测量的误差CLR P1.0;电磁离合齿轮断电,减速2%AJMP ADR20;返回ADR85:MOV A,R6;取回上次测量的误差CLR CSUBB A,42H;减本次测量的误差JNC ADR20;本次测量的误差小,返回SETB P1.2;否则,胀紧电机反转,减速MOV R2,#06H;设置最小减速量ACALL SUB3;延时0.6秒CLR P1.2;停止胀紧电机反转AJMP ADR20,2子程序,1)绝对误差转换为相对误差子程序,SUB2:MOV B,#64H MUL AB MOV R7,#00HADR90:CLR C SUBB A,41;误差的百分数减切纸周期 JC ADR0A0;不够减

50、,转 INC R7;够减,商加1 AJMP ADR90;返回再减ADR0A0:MOV R6,B CJNE R6,#00H,ADR0B0 AJMP ADR0C0;无位可借,除法结束ADR0B0:DEC B;借位 INC R7;商加1 AJMP ADR90;返回再减 ADR0C0:RET,(2)R20.1秒延时子程序R20.1秒延时子程序,用于控制P1.1和P1.2输出的脉冲宽度。程序如下:SUB3:MOV R3,#64HADR0D0:MOV R4,#0F9HADR0E0:NOPNOPDJNZ R4,ADR0E0,DJNZ R3,ADR0D0DJNZ R2,SUB3RET,3中断服务程序,T0、T

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号