单片机原理及应用(电子教案)_第1页
单片机原理及应用(电子教案)_第2页
单片机原理及应用(电子教案)_第3页
单片机原理及应用(电子教案)_第4页
单片机原理及应用(电子教案)_第5页
已阅读5页,还剩167页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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-51系列型号型 号制造技术片

4、内程序存储器片内数据存储器8051AHH MOSROM (4k)128字节8031AHAH MOS无128字节8751HH MOSEPROM(4K)128字节80C51CHMOSROM (4K)128字节80C31CHMOS无128字节8051H MOSROM (8K)256字节8031H MOS无256字节 14 单片机的应用一、 单片机在仪器仪表中的应用二、 单片机在机电一体化中的应用三、 单片机在智能接口和多机系统中的应用四、 单片机在生活中的应用 第 二 章 MCS-51单片机的结构和原理本章主要介绍MCS-51系列的8051的根本结构、工作原理、存储器结构、P0、P1、P2、P3四个

5、I/O口的根本工作原理和操作特点。单片机的各种工作方式、单片机的时序等。 21 MCS-51单片机的结构原理 一、 8051单片机的结构图 21 MCS-51单片机的根本结构二、 8051单片机的内部结构和工作原理8051单片机的内部结构框图如图 22 所示,下面分别进行介绍: 图 22 8051的内部结构框图图 23 8051存储器组织结构字节地址位 地 址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20HD7D6D5D4D3D2D1D07FH7EH7DH7CH7BH7AH79H78H77H76H75H74H73H72H71H70H6FH6EH6

6、DH6CH6BH6AH69H68H67H66H65H64H63H62H61H60H5FH5EH5DH5CH5BH5AH59H58H57H56H55H54H53H52H51H50H4FH4EH4DH4CH4BH4AH49H48H47H46H45H44H43H42H41H40H3FH3EH3DH3CH3BH3AH39H38H37H36H35H34H33H32H31H30H2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H1FH1EH1DH1CH1BH1AH19H18H17H16H15H14H13H12H11H10H0FH0EH0DH0CH0BH0AH0

7、9H08H07H06H05H04H03H02H01H00H图 24 8051内部RAM位地址区图 24 8051内部RAM位地址区表格 22 特殊功能存放器表符号单元地址名称位地址符号地址* ACCE0H累加器ACC.7ACC.0E7HE0H* BF0H乘法寄存器B.7B.0F7HF0H* PSWD0H程序状态字PSW.7PSW.0D7HD0H SP81H堆栈指针 DPL82H数据存储器指针(低8位) DPH83H数据存储器指针(高8位)* IEA8H中断允许控制器IE.7IE.0AFHA8H* IPB8H中断优先控制器IP.7IP.0BFHB8H* P080H通道0P0.7P0.087H80

8、H* P190H通道1P1.7P1.097H90H* P2A0H通道2P2.7P2.0A7HA0H* P3B0H通道3P3.7P3.0B7HB0H PCON87H电源控制及波特率选择* SCON98H串行口控制SCON.7SCON.09FH98H SBUF99H串行数据缓冲器* TCON88H定时控制TCON.7TCON.08FH88H TMOD89H定时器方式选择 TL08AH定时器0低8位 TL18BH定时器1低8位 TH08CH定时器0高8位 TH18DH定时器1高8位*:可位寻址的特殊功能存放器图 25 P0口的位结构1 P0口位的结构2 P1口位的结构图 26 P1口的位结构图 26

9、 P1口的位结构图 26 P1口的位结构图 26 P1口的位结构图 26 P1口的位结构3 P2口的位结构图 27 P2口的结构图4 P3口的位结构图 28 P3口的结构图4 P3口的位结构 图 28 P3口的结构图表格 23 P3口的第二功能表I/O口第二功能注 释P3.0RXD串行口数据接收端P3.1TXD串行口数据发送端P3.2INT()0外部中断请求0P3.3INT()1外部中断请求1P3.4T0定时/计数器0P3.5T1定时/计数器1P3.6WR()外部RAM写信号P3.7RD()外部RAM读信号一、 时钟周期、机器周期和指令周期 图 2-9 根本定时时序关系22 MCS-51单片机

10、的时序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 各专用存放器的复位值专用寄存器复位值PC0000HACC00H

11、B00HPSW00HSP07HDPTR0000HP0P3FFHIPXXX00000BIE0XX00000BTMOD00HTCON00HTH000HTL000HTH100HTL100HSCON00HSBUF不定PCON(CHMOS)0XXX0000B24 MCS-51单片机的低功耗工作方式 一、 电源控制存放器PCON PCOND7D6D5D4D3D2D1D0SMODGF1GF0FDIDL三、 掉电方式 二、 等待工作方式 第三章 MSC-51 单片机的指令系统 31 指令系统概述一、 机器码指令与汇编语言指令机器码指令: 汇编语言指令: 二、 指令格式 汇编语言格式为:标号: 操作码助记符 目

12、的操作数, 源操作数 ;注释 单字节指令 双字节指令 三字节指令操作码 24H操作数 22HINC A ADD A,#22H MOV 5EH,4FH操作码 04H操作码 85H源操作数 4FH目的操作数 5EH图 3-1 机器码指令格式32 寻址方式 一、 存放器寻址二、 直接寻址三、 立即寻址四、 存放器间接寻址 五、 变址寻址 六、 相对寻址 七、 位寻址 33 MSC-51单片机的指令系统按照指令的功能,可以把MSC-51的111条指令分成五类:l 数据传送类指令29条l 算术运算类指令24条l 逻辑操作类指令24条l 控制转移类指令17条l 位操作类指令 17条 图 3-2 相对寻址过

13、程 第四章 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 R2,LOOPl ;未加完转LOOP1JNC LOOP2 ;无进位转LOOP2MOV R0,#01HLOOP2:DEC R0RET2多字节有符号数加法 MOV A,R0 ;复制保存地址指针MOV R2

14、,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 SDADD:CLR 07H ;标志位清零图 4-3 多字节有符号数加法程序流程图二、 多字节数减法 MOV R0,#40H ;指向被减数最低位MOV R1,#5OH ;指向减数最低位MOV

15、 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 R0,A INC R0 ;指针加1 INC R1 DJNZ R,LOOP0 ;作完加法否 MOV R2. #23H JNC RETURN ;有无进位 MOV R0,#

16、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,#OOH;(R2)*(R0)的高位加低位来的进位 MOV R,A ;结果送R RET五、 多字节数除法DV: MOV R7,#08H ;设计数初

17、值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 ;保存余数(高位) DJNZ R7,DVl RET一、 数据的拼拆42 数据的拼拆和转换例4-7 设在30H和31H单元中各有一个8位数据:(

18、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 ;y2y0移到高3位ANL A,#111000OOB ;将低5位屏蔽掉ORL 4OH,A ;完成拼装任务二、 数据的

19、转换 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作为入口和出口。ASCHIN:MOV A,R1 ;取操作数CLR C ;清进位标志位CSUBB A,#30H ;ASCII码减去30H,实现0-9的转换MOV

20、 R1,A ;暂存结果SUBB A,#0AH ;结果是否9?JC LOOP ;假设9那么转换正确XCH A,R1SUBB A,#07H ;假设9那么减37HMOV R1,ALOOP: RET2BCD码与二进制数的转换 图 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,R4 MOV R2,A ACALL BCDBIN ;调用子程序 ADD A,R6 MOV R4,A MOV A,R

21、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 RET43 查表程序 使用MOVC A,A+DPTR指令来查表,程序清单如下: MOV DPTR,#BS ;子程序入口地址表首址 RL A ;键码值乘以 MOV R2,A ;暂存 MOVC A,A+DPTR ;取得入口地址低位 PUSH A ;进栈暂存 INC A MOVC A,A+DPTR ;

22、取得入口地址高位 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 ;转移指令表首址JMP A+DPTR ;转向形成的散转地址BRTABL:AJMP OPR0 ;

23、转移指令表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 DB OPRD2-TAB3 DB OPRD3-TAB3 DB OPRD4

24、-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 ;转向地址在DPTR中 MOV DPH,R CLR A JMP

25、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 A ;转向地址入栈 MOV A,R PU

26、SH A RET ;转向操作程序TAB3:DW OPRD0 ;转向地址表 DW OPRDl DW OPRDn45 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 ;输入K1状态 MO

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

28、#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 ;入

29、口参数压栈ACALL 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

30、 IS AN EXAMPLE的程序。解:将要打印的字符及代码不是放在调用指令之前,而是紧跟在调用指令之后。主程序: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+DPT

31、R ;指向主程序NEXT处,取代返回指令 第五章 定时/计数器 51 定时/计数的结构及工作原理 一、 定时/计数器的结构和原理1定时/计数器的结构图 51 TMOD、TCON与T0、T1的结构框图2定时/计数器的原理 图 52 定时/计数器的结构框图 二、 定时/计数器方式存放器TMOD表格 51 方式选择位意义M1 M0工作方式功 能 说 明0 0方式013位计数器0 1方式116位计数器1 0方式2自动再装入8位计数器1 1方式3定时器0:分成两个8位计数器定时器1:停止计数TMOD格式如下:定时器1定时器0TMODD7D6D5D4D3D2D1D0GATEC/T()M1M0GATEC/T

32、()M1M0三、 定时控制存放器TCON定时器控制字TCON的格式如下:TCON8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT052 定时/计数器的工作方式一、 方式0当M1M0两位为00时,定时/计数器被选为工作方式0,其逻辑结构如图 53 所示。图 53 T0(或T1)方式0结构二、 方式1图 54 T0(或T1)方式1结构三、 方式2图 55 T0(或T1)方式1结构三、 方式2图 56 T0(或T1)方式2结构 四、 方式3图 57 T0方式3下和T1结构一、 方式0、方式1的应用例5-1 选择T1方式0用于定时,在P1。1输出周期为1m

33、s的方波,晶振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设初值为X那么: 213X2106 s =500106 s因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位,所以TL1=06H;X的高8位应装入TH1,所以TH1=

34、F8H。源程序如下:MOVTL1,#06H;给TL1置初值MOVTH1,#F8H;给TH1置初值SETBTR1;启动T1LP1:JBCTF1,LP2;查询计数溢出否AJMPLP1LP2:MOVTL1,06H;重装初值MOVTH1,F8HCPLP1。1;输出取反AJMPLP1;重复循环二、 方式2的应用例5-2 用定时器1方式2计数,要求每计满100次,将P1。0取反。根据题意,外部计数信号由T1P3.5引脚输入,每跳变一次计数器加1,由程序查询TF1。方式2有自动重装初值的功能,初始化后不必再置初值。初值 X=28100=156D=9CH TH1=TL1=9CH TMOD=60H源程序如下:M

35、OVTMOD,#60H;设置T1为方式2MOVTL1,#9CH;置初值MOVTH1,#9CHSETBTR1;启动T1DEL:JBCTF1,REP;查询计数溢出AJMPDELREP:CPLP1。0;输出取反AJMPDEL三、 门控位的应用图 58 外部正脉冲宽度测量例5-3 利用T0门控位测试INT0引脚上出现的正脉冲的宽度,并以机器周期数的形式显示在显示器上。根据要求可这样设计程序:将T0设定为方式1,GATE设为1,置TR0为1。一旦INT0P3。2 引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取T0的计数值并显示。 测试过程如下:源程序如下:BEGIN:MOVTMOD,#

36、O9H;T0工作于方式1,GATE置1MOVTL0,#00HMOVTH0;#00HWAIT1:JBP3。2,WAIT1;等待INT0变低SETBTR0;启动T0WAIT2:JNBP3。2,WAIT2;等待正脉冲到WAIT3:JBP3。2,WAIT3;等待INT0变低CLRTR0;停止T0计数MOVR0,#DISBUF;显示缓冲区首地址送R0MOVA,TL0;机器周期的存放格式为低位占低地址,高位占高地址,连续4个显示缓冲单元XCHDA,R0INCR0SWAPAXCHDA,R0INCR0MOVA,TH0XCHDA,R0INCR0SWAPAXCHDA,R0DIS:LCALLDISUP;长调用显示子

37、程序AJMPDIS;重复显示机器周期数由于定时方式1的16位计数长度有限,被测脉冲高电平宽度只能小于65536个机器周期。源程序如下: 第六章 MCS-51单片机的系统扩展61 MCS-51单片机的引脚定义及最小应用系统一、 8051的引脚定义及功能图 61 MCS-51的引脚图及功能分类图二、 MCS-51单片机最小应用系统 图 62 8051/8751最小应用系统62 MCS-51单片机外部存储器的扩展一、 外部程序存储器的扩展及取指过程图 63 外部程序存储器一般连接方法 1程序存储器的一般连接方式图 6-4 扩展8K字节程序存储器的连线图2典型EPROM扩展电路3程序存储器E2PROM

38、的扩展图 6-5 E2PROM作为程序存储器的扩展图二、 数据存储器的扩展图 6-6 扩展2KB数据存储器的线路图1数据存储器一般的扩展方法 2常用数据存储器的扩展电路 三、 综合扩展实例图 6-7 扩展16KB RAM和16KB EPROM 63 并行I/O口的扩展一、 简单I/O口的扩展图 6-8 简单I/O接口扩展电路二、 可编程I/O口的扩展图 69 8155的结构和引脚表格 61 8155口地址分布AD0AD7选 中 寄 存 器A7 A6 A5 A4 A3A2A1A0 000内部命令寄存器 001通用I/O口A寄存器 010通用I/O口B寄存器 011口C:通用I/O口或控制口 10

39、0定时/计数器的低8位寄存器 101定时/计数器的高8位寄存器38155与单片机的连接表格 62 8155的RAM和I/O口地址分配P2.4P2.3选择地 址00RAME700HE7FFH (256B)01I/O口EF00H 命令口/状态口EF01H 通用I/O口AEF02H 通用I/O口BEF03H 口CEF04H 计数值低8位EF05H 计数值高8位和计数方式图 610 扩展一片8155的根本方案48155片内RAM的使用OK: ;和为0,读/写正确1命令存放器的用法 表格 63 C口工作方式方式位ALTIALT2ALT3ALT4PC0输入方式输出方式AINTR(A口中断)AINTR(A口

40、中断)PC1ABF(A口缓冲器满)ABF(A口缓冲器满)PC2ASTB(A口选通)ASTB(A口选通)PC3输出方式BINTR(B口中断)PC4BBF(B口缓冲器满)PC5BSTB(B口选通)备注A口B口为基本I/O口A口B口为基本I/O口A口为选通输入方式B口为基本I/O口A口、B口为选通输入/输出方式图 612 8155方式4的逻辑结构图6作定时/计数器用表 6-4 8155定时器输出方式M2 M1方 式定时器输出方波0 0单个方波0 1连续方波1 0在终止计数时输出单个脉冲1 1连续脉冲第七章 MCS-51系统的串行接口71 串行通讯概述一、 串行通讯的两种根本方式1异步传送方式 第n个

41、字符(一串行帧)n+1n-1P10D0D1D2D3D4D5D6D7P10D0起始位数 据 位校验位 停止位图 7-2 异步通讯的帧格式开始结束同步字符同步字符数据段CRC字符#1CRC字符#2图 7-3 同步传送方式二、 波特率图 7-4 串行通讯的制式 三、 数据传送的方向1单工制式(Simplex)2半双工制式(Half Duplex)3全双工(Full-duplex)制式72 MCS-51单片机的串行接口一、 MCS-51串行口结构图 7-5 MCS-51串行口组成示意1串行口数据缓冲器SBUF 2串行口控制存放器SCON见表格7-1SM0位地址9F9E9D9C9B9A9998SCONS

42、M1SM2RENTB8RB8TIRI接收中断标志发送中断标志接收数据第9位发送数据第9位接收控制0:禁止接收1:允许接收多机通信0:单机对单机1:多机通信图 7-6 串行口控制存放器SCON图 7-6 串行口控制存放器SCON3特殊功能存放器PCONPCON主要是为CHMOS型单片机的电源控制设置的专用存放器,单元地址为87H,不能位寻址。其格式如图 7-7 所示。SMODGF1GF0PDIDL通用标志位空闲控制位0:正常方式1:空闲方式掉电控制位0:正常方式1:掉电方式波特率选择位SMOD=1时,方式1、2和3的波特率加倍图 7-7 PCON各位定义二、 MCS-51串行的工作方式MCS-5

43、1的串行口有四种工作方式,它是由SCON中的SM1和SM0来决定的,如表格 7-1 表格 7-1 串行口的工作方式SM0SMl工作方式方式简单描述波特率000移位寄存器I/O主振频率/120118位UART可变1029位UART主振频率/32或主振频率/641139位UART可变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串行通信的波特率

44、1方式0的波特率2方式2的波特率 3方式1或方式3的波特率表格 7-2 常用波特率和定时器T1初值关系表波特率(方式1、3)fosc=6Mfosc=12M fosc = 11.059MSMODT1方式初值SMODT1方式初值SMODT1方式初值62.5k12FFH19.2k12FDH9.6k02FDH4.8k12F3H02FAH2.4k12F3H12F3H02F4H1.2k12E6H02E6H02E8H60012CCH02CCH02D0H30002CCH0298H02A0H137.5121DH021DH022EH1100272H01FEEBH01FEFFH表格 7-2 常用波特率和定时器T1初

45、值关系表73 MCS-51单片机串行口的应用 一、 串行口方式0用作扩展并行I/O口图 7-11 串行口方式0扩展并行输出口MOVSCON,#00H;串行口方式0初始化MOVA,#80H;最左一位发光二极管先亮CLRP1.0;关闭并行输出START1:MOVSBUF,A;开始串行输出LOOP:JNBTI,LOOP;查询TISETBP1.0;启动并行输出ACALLDELAY;显示延时CLRTI;清发送中断标志RRA;准备右边一位显示CLRP1.0;关闭并行输出SJMPSTART1;再一次串行输出二、 方式1与点对点的异步通讯在下面给出的实现指定功能的通讯程序中,发送和接收都通过调用子程序来完成,

46、并设发送数据区的首地址为20H,接收数据区的首地址为40H。主程序:MOV TMOD,#20H;定时器1设为方式2MOV TL, #0F3H;定时器初值MOV TH1, #0F3H;8位重装值SETB TR1;启动定时器1MOV SCON,#50H;串行口设为方式1,REN1MOV R0, #20H;发送数据区首址MOV R1, #40H;接收数据区首址ACALL SOUT;输出一个字符$:SJMP $;等待中断 中断效劳程序:ORG 0023H;串行口中断入口AJMP SBRl;转至中断服务程序SBRl:JNB RI,SEND;TI1,为发送中断ACALL SIN;RI1,为接收中断SJMP

47、 NEXT;转至统一的出口SEND:ACALL SOUT;调用发送子程序NEXT:RETI;中断返回发送子程序:SOUT:MOVA,Ro;取发送数据到AMOVC,P;加上奇校验位CPLCMOVACC.7,CINCR0;修改发送数据指针MOVSBUF,A;发送ASCII码CLRTI;清发送中断标志RET接收子程序:SIN:MOVA,SBUF;读出接收缓冲区内容MOVC,P;取出校验位CPLC;奇校验ANLA,#7FH;删除校验位MOVR1,A;读入接收缓冲区INCR1;修改接收数据指针CLRRI;清接收中断标志RET三、 方式2、方式3与多机通讯图 7-12 多机通讯连接示意图1多机通信原理2多

48、机通信实现四、 微机与单片机之间的通讯图 7-13 微机与单片机串行通信接口 74 相互通道接口标准及其选择一、相互通道的典型结构 二、关于RS-232C、RS-449、RS-422、RS-423和RS-485接口 图 7-14 多机系统的相互通道2抗干扰能力1RS-232C接口 图 7-15 通过 网实现远程连接表格 7-3 微机中常用的RS-232C接口信号引脚号符号名称说明1PGND保护地为了安全和大地相连,有时可不接2TXD发送数据从DTE到DCE的数据线3RXD接收数据从DCE到DTE的数据线4RTS请求发送当DTE希望在数据线上传递数据时由DTE发出,DCE通过所得到的控制信号决定

49、是否响应5CTS允许发送允许计算机发送数据时,则由DCE发出6DSR数字置位就绪当数据线已被接好后由DCE发出7SGND信号地作为信号地的公共回路8DCD数据载波检测当DCE已经从数据线上接收到信号时发出此信号20DTR数字终端就绪当DTE已准备好和调制解调器交换数据时,由DTE发出,使用公共通信网时才需要22RI振铃指示当正在进行通信时,由DCE发出,使用公共通信网时才需要表格 7-3 微机中常用的RS-232C接口信号 图 7-16 简单的RS-232C数据通讯2RS-449、RS-422、RS-423和RS-485接口表格 7-4 几种串行接口标准的比较特性参数RS-232CRS-423

50、RS-422RS-485工作模式单端发 单端收单端发 双端收双端发 双端收双端发 双端收在传输线上允许的驱动器和接收器数目1个驱动器1个接收器1个驱动器10个接收器1个驱动器10个接收器32个驱动器32个接收器最大电缆长度15m1200m (1kb/s)1200m (90kb/s)1200m (100kb/s)最大速率20kb/s100kb/s (12m)10Mb/s (12m)10Mb/s (15m)驱动器输出(最大电压)25V6V6V-7V+12V驱动器输出(信号电平)5V(带负载)15V(未带负载)3.6V(带负载)6V(未带负载)2V(带负载)6V(未带负载)1.5V(带负载)5V(末

51、带负载)驱动器负载阻抗3k7k45010054驱动器电源开路电流(高阻抗态)Vmax/300(开路)100A(开路)100A(开路)100A(开路)接收器输入电压范围15V10V12V-7V+12V接收器输入灵敏度3V200mV200mV200mV接收器输入阻抗2k7k4kmi n4kmin12kmin第八章 MCS-51单片机的中断系统图 8-1 8051的中断系统81 中断系统及其管理一、 中断源及中断入口中断源入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H二、 外部中断请求标志2SCON的中断标志 1TCON中的中断标

52、志三、 中断允许控制四、中断源优先级的设定五、 中断响应处理过程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中断效劳程序

53、 AJMP DISUB SAV4: ;XI1中断效劳程序 AJMP DISUB83 中断系统的应用图 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指出的数码管

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

55、VDPTR,#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个字符,返回

56、继续RETTAB: DB03H,9FH,25H,0DH,99H, DB49H,41H,1FH,01H,19H3动态扫描显示接口图 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;显示内容送AMOVDP

57、TR,#TAB;译码表首址送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 带锁

58、存器的按键与单片机的接口电路 图 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;键放开,转键处理SETSY

59、N:SETB10H;置第一次发现键按下标志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:;

60、键S2处理程序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-17 DAC08

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论