《微计算机与单片机原理及应用》第11章 80C51的系统扩展与外设接口技术_第1页
《微计算机与单片机原理及应用》第11章 80C51的系统扩展与外设接口技术_第2页
《微计算机与单片机原理及应用》第11章 80C51的系统扩展与外设接口技术_第3页
《微计算机与单片机原理及应用》第11章 80C51的系统扩展与外设接口技术_第4页
《微计算机与单片机原理及应用》第11章 80C51的系统扩展与外设接口技术_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

第11章

80C51的系统扩展与外设接口技术

本章重点:单片机系统串行扩展技术;常用外设接口技术。本章难点:I2C总线的工作时序。11.1并行扩展技术11.1.1并行总线与工作时序为实现单片机与外围扩展芯片的正确连接与数据交换,有必要了解单片机总线信号间的时序配合关系。

80C51并行总线的结构

片外程序存储器取指操作时序

片外数据存储器读操作时序

11.1.2存储器的并行扩展

存储器并行扩展示意图

11.1.3I/O接口的并行扩展

普通I/O口的并行扩展

可编程I/O口的并行扩展

11.2串行扩展技术

11.2.1SPI串行总线及系统扩展根据时钟极性与相位的不同,SPI有四种工作模式。极性指的是空闲状态下时钟信号处于高电平还是低电平,相位指的是数据位更新发生在时钟周期的第一个边沿还是第二个边沿。SPI主机和所有SPI从机的时钟相位与极性必须设为一致。SPI数据传输示意图

SPI工作时序图(模式0)

SPI扩展系统示意图

11.2.2I2C串行总线及系统扩展

I2C总线(InterIntegratedCircuitBus)是Philips公司推出的二线制高性能串行总线,具备总线仲裁和高低速设备同步功能,数据传输速率可达400kbit/s(高速模式下可达3.4Mbit/s),总线驱动能力为400pF。

I2C总线只有串行数据(SDA)和时钟(SCL)两根信号线,无需片选信号(地址信息也以数据的形式传送)。

I2C总线接口的电路结构

I2C总线上的各种信号

I2C数据帧格式

I2C扩展系统示意图

11.3功率接口技术

11.3.1非隔离型功率接口

1.继电器的非隔离驱动继电器的非隔离驱动电路

2.步进电机的非隔离驱动小型步进电机的非隔离驱动电路

ULN2803的内部结构(只画出一路)

3.直流电机的非隔离驱动直流电机全桥驱动电路

采用集成芯片的直流电机驱动电路11.3.2隔离型功率接口

1.直流设备的隔离驱动继电器的隔离驱动电路

步进电机的隔离驱动电路

2.交流设备的隔离驱动交流设备的隔离驱动电路11.4模拟量接口技术

11.4.1D/A转换器

1.DAC0832的结构及工作原理

DAC0832的内部结构

DAC0832电压输出电路

2.DAC0832与80C51的接口

(1)单缓冲方式DAC0832单缓冲方式接口

以下是利用单缓冲接口输出周期性锯齿波信号的控制程序:

START: MOV DPTR,#7FFFH; 选择DAC0832(A15=0)

MOV A,#00H ; 从0开始NEXT: MOVX@DPTR,A ; 向DAC0832发送数据

INC A ; 数字量加1 SJMP NEXT ; 连续输出(2)直通方式DAC0832直通方式接口(3)双缓冲方式

DAC0832双缓冲方式接口

以下是实现两路同步输出的控制程序:MOVDPTR,#0DFFFH ; 选中DAC0832(1)的输入锁存器MOVA,#data1 MOVX@DPTR,A ; 数据data1送入DAC0832(1)的输入锁存器MOVDPTR,#0BFFFH ; 选中DAC0832(2)的输入锁存器MOVA,#data2 MOVX@DPTR,A ; 数据data2送入DAC0832(2)的输入锁存器MOVDPTR,#7FFFH ; 同时选中两片DAC0832的DAC寄存器MOVX@DPTR,A ; 同步进行转换11.4.2A/D转换器

1.ADC0809的结构及工作原理ADC0809的内部结构

ADC0809的工作时序

2.ADC0809与80C51的接口

ADC0809的接口电路和程序设计主要考虑两方面问题,一是模拟通道的选择和启动信号的发送,另外就是转换结束的确认与数据读取。

ADC0809与80C51的接口电路

(1)通道选择与启动控制图(a):MOV DPTR,#7FF8H ; 选择通道0MOVX @DPTR,A ; 启动A/D转换(A可为任意值)图(b):ANL P1,#11111000B ; P1口低3位为0(选择通道0)CLR P1.7 ; 使P1.7为低电平SETB P1.7 ; 使P1.7为高电平CLR P1.7 ; 使P1.7为低电平(2)转换结束的确认与数据读取A/D转换后得到的数据应及时传送给单片机进行处理。对单片机来说,首先必须知道转换是否结束,通常可采用以下3种方式:①查询方式:将ADC0809的EOC端接到单片机某根口线上,程序中通过反复查询EOC的状态来了解A/D转换是否结束。②中断方式:将EOC求反后接到单片机的外中断输入引脚(见图11-29),一旦转换结束,可使单片机自动进入中断服务程序。③延时等待方式:A/D转换器的转换时间作为一项指标是已知和固定的,可在转换开始后延时相应的时间,过了这段时间,转换肯定已经结束了。确认转换已经结束后,单片机便可通过指令产生有效的OE信号,读入转换结果。对图(a),可使用以下两条指令:MOV DPTR,#7FF8H ;选择通道0(实际上只要求80C51的P2.7=0)MOVX A,@DPTR ; 将转换结果通过数据总线读入单片机对图(b),可使用以下四条指令:CLR P1.6 ; 使P1.6为低电平SETB P1.6 ; 使P1.6为高电平MOV A,P0 ; 将转换结果通过P0口读入单片机CLR P1.6 ; 使P1.6为低电平

(3)8路转换控制程序对图(a)电路,若要求使用中断方式,将8路转换结果依次存入内部RAM50H~57H单元,则A/D转换初始化程序和中断服务程序如下:初始化程序:MOV R0,#50H;R0指向数据存储区起始单元

MOV R2,#08H ;需进行8路转换

SETB IT0 ;INT0采用边沿触发方式

SETB EX0 ;允许INT0中断

SETB EA ;开中断

MOV DPTR,#7FF8H ;先选择通道0 MOVX @DPTR,A ;启动A/D转换

SJMP $ ;等待中断INT0中断服务程序(入口为0003H)如下:

MOVXA,@DPTR ;读取当前通道的转换结果

MOV @R0,A ;转存到数据存储区当前单元

INC DPTR ;转向下一个通道

INC R0 ;指向数据存储区下一个单元

DJNZ R2,NEXT ;8路未转换完,则继续

CLR EA ;已转换完,则关中断

CLR EX0 RETI NEXT:MOVX@DPTR,A ;再次启动A/D转换

RETI 11.5人机接口技术

11.5.1LED数码显示器

1.结构及工作原理

LED数码显示器由若干个LED数码管构成。每个LED数码管包括a~g和dp(小数点)共8个发光二极管笔段,可通过笔段的亮灭组合显示出所需要的字形,如十进制数字符号“0”~“9”、”A”、”b”、”C”等简单字符。数码管分为共阳极和共阴极两种类型。构成数码显示器的多个数码管一般属于同一类型。

2.显示方式及接口(1)静态显示

LED数码管静态显示电路

静态显示子程序如下:S_DISP:MOV SCON,#00H ;置串口方式0

MOV DPTR,#DSEG ;DPTR指向段码表起始单元

MOV R0,#30H ;R0指向显示缓冲区起始单元

MOV R2,#4 ;共显示4位NEXT:MOV A,@R0 ;取显示缓冲区当前单元中的数据

MOVC A,@A+DPTR;查表求段码

MOV SBUF,A ;串行输出段码JNB TI,$ ;等待串行发送完毕

CLR TI ;清串行发送中断标志

INC R0 ;R0指向显示缓冲区下一单元

DJNZR2,NEXT ;未显示完3位,继续

RET DSEG:DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳数码管段码表(对应0~9)

DB 92H,82H,0F8H,80H,90H (2)动态显示LED数码管动态显示电路

动态显示子程序如下:D_DISP:MOV DPTR,#DSEG ;DPTR指向段码表起始单元

MOV R0,#30H ;R0指向显示缓冲区起始单元

MOV R2,#11111110B;从第1位开始刷新NEXT: MOV A,@R0 ;取显示缓冲区当前单元中的数据

MOVC A,@A+DPTR ;查表求段码

MOV P0,A ;通过P0口输出段码

MOV P2,R2 ;通过P2口输出位码

LCALL DELAY1MS ;调延时1ms子程序(假设已编好)

INC R0 ;R0指向显示缓冲区下一单元

MOV A,R2 ;调整位码(准备点亮下一位)

RL A MOV R2,A CJNE R2,#11101111B,NEXT;还未刷新完4位显示,继续

MOV P2,#11111111B ;关闭显示

RET DSEG:DBDB 0C0H,0F9H,0A4H,0B0H,99H92H,82H,0F8H,80H,90H ;共阳数码管段码表(对应0~9)11.5.2键盘

1.特点与分类单片机应用系统中键盘与单片机的接口形式取决于按键实际数量以及单片机可用口线的多少,一般可分为独立式和矩阵式两种。

2.接口形式(1)独立式键盘独立式键盘由少量(一般少于8个)按键构成,每个按键单独占用单片机的一根I/O口线。独立式键盘与单片机的连接(查询方式)

按键查询(识别)子程序:SCAN_KEY:ORL P1,#00001111B ;P1.0~P1.3作为输入口

MOV A,P1 ;读按键状态

ANL A,#00001111B ;屏蔽高4位

CJNE A,#00001111B,SCANK1 ;低4位中有0存在,说明有键按下

RET ;无键按下,通过A返回键值0FHSCANK1:LCALL DLY10MS;延时10ms(消抖)

MOV A,P1 ;重读按键状态

JB ACC.0,SCANK2;K1未按下,继续检测K2 MOV A,#01H;K1按下,通过A返回键值1 RET SCANK2:JB ACC.1,SCANK3 ;K2未按下,继续检测K3 MOV A,#02H ;K2按下,通过A返回键值2 RET SCANK3:JB ACC.2,SCANK4 ;K3未按下,继续检测K4 MOV A,#03H ;K3按下,通过A返回键值3 RET SCANK4:JB ACC.3,SCAN_EXIT ;K4未按下,结束查询

MOV A,#04H ;K4按下,通过A返回键值4 RET SCAN_EXIT: MOV A,#0FH ;通过A返回键值0FH RET 按键查询子程序通过返回不同的键值来反映键盘的状态,上例中,0FH表示无键按下,01H~04H分别表示K1~K4被按下。以下的按键查询子程序直接将按键的位置编码作为键值返回(无键按下为0FH,某键按下则返回值低4位中对应位为0),看起来更加简洁。SCAN_KEY2: ORL P1,#00001111B ;P1.0~P1.3作为输入口

MOV A,P1 ;读按键状态

ANL A,#00001111B ;屏蔽高4位

CJNE A,#00001111B,SCAN22 ;低4位中有0存在,说明有键按下

RET ;无键按下,通过A返回0FHSCAN22: LCALL DLY10M;延时10ms(消抖)

MOV A,P1 ;重读按键状态

ANL A,#00001111B ;屏蔽高4位

RET ;通过A返回按键位置编码(无键则为0FH)主程序结构如下:

K1EQU00001110B ;声明K1的位置编码(键值)

K2EQU00001101B ;声明K2的位置编码(键值)

K3EQU00001011B ;声明K3的位置编码(键值)

K4EQU00000111B ;声明K4的位置编码(键值)NOKEYEQU00001111B;声明无键按下状态的位置编码(键值)MAIN: …

… ;系统初始化等操作LOOP: …

… ;主循环中其它操作(刷新显示等)

LCALL SCAN_KEY2 ;调用按键查询子程序

CJNE A,#NOKEY,KEY_PROC;有键按下,准备处理

LJMP LOOP ;无键按下,继续主循环KEY_PROC: PUSH ACC ;保存键值,待该键释放后处理WAIT_NULL: LCALL SCAN_KEY2 CJNE A,#NOKEY,WAIT_NULL;等待按键释放

POP ACC ;恢复A先前保存的键值CHK_K1: CJNE A,#K1,CHK_K2;K1未按下,继续检查K2

… ;K1被按下,执行相应的操作

LJMP LOOP ;回到主循环CHK_K2: CJNE A,#K2,CHK_K3 ;K2未按下,继续检查K3

… ;K2被按下,执行相应的操作

LJMP LOOP ;回到主循环CHK_K3: CJNE A,#K3,CHK_K4 ;K3未按下,继续检查K4

… ;K3被按下,执行相应的操作

LJMP LOOP ;回到主循环CHK_K4:CJNE A,#K4,LOOP ;K4未按下,回到主循环

… ;K4被按下,执行相应的操作

LJMP LOOP ;回到主循环独立式键盘与单片机的连接(中断方式)

2.矩阵式键盘矩阵式键盘与单片机的连接按键处理:(1)扫描法SCAN_KEY3: MOV P1,#11110000B ;列线全置为低电平,行线作输入

MOV A,P1 ;读行线状态

ANL A,#11110000B ;屏蔽低4位(仅需要行线状态)

CJNE A,#11110000B,SCAN32;行线中有0,说明有键按下

MOV A,#0FFH;通过A返回无键按下状态的键值FFH RET SCAN32:LCALL DLY10MS ;延时10ms(消抖)

MOV R2,#11110111B ;列扫描字由R2保存(0列开始扫描)

MOV R3,#0 ;列号由R3保存SCAN33:MOV P1,R2 ;当前列输出低电平,行线作输入

MOV A,P1 ;读行线状态

ANL A,#11110000B ;屏蔽低4位(仅需要行线状态)

CJNE A,#11110000B,SCAN34;行线中有0,说明当前列有键按下

INC R3 ;当前列无键按下,列号加1 MOV A,R2 ;准备检查或修改列扫描字

JNB ACC.0,SCAN3_EXIT ;已扫描完所有列,结束扫描返回

RR A ;扫描字右移1位,准备扫描下一列

MOV R2,A AJMP SCAN33 ;扫描下一列SCAN34:JB ACC.7,SCAN35;第0行无键按下,检查第1行

MOV A,#0 ;第0行有键按下,首键值0送给A ADD A,R3 ;加上列号得到键值

RET ;通过A返回键值SCAN35:jB ACC.6,SCAN36 ;第1行无键按下,检查第2行

MOV A,#4 ;第1行有键按下,首键值4送给A ADD A,R3 ;加上列号得到键值

RET ;通过A返回键值SCAN36:JB ACC.5,SCAN37 ;第2行无键按下,检查第3行

MOV A,#8 ;第2行有键按下,首键值8送给A ADD A,R3 ;加上列号得到键值

RET ;通过

温馨提示

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

评论

0/150

提交评论