《课件精简.ppt》由会员分享,可在线阅读,更多相关《课件精简.ppt(50页珍藏版)》请在三一文库上搜索。
1、1. 矩阵式键盘的结构 0 1 +5v C0 C1 R0 R1 键盘 I/O接口 行线与列线的每一“交汇”处有1个 按键,行线通过上拉电阻接+5伏,被 钳位在高电平状态,键按下使相应 行、列线连通。 2.矩阵式键盘按键的识别 (1)扫描法 用列扫描法确定按键: 有无按键按下由向列线送全扫描字(全0) ,然后读入行线状态来判断, 判哪一个键按下可用逐列将列线置0,读入当时的行状态来判断, 矩阵式键盘电路原理与编程 (2) 线反转法 依次给一列线 j低电平,读回行线状态,若非全“1”,则有键按下,此时 行信号中为0位所对应的行 i为按键所在行,即第 i行第 j列有键按下。 线反转法的原理图: 扫描
2、法要逐列扫描,当所按的键处于最后一列时,要经过多次扫 描才能获得此按键所处的行列值。用线反转法则无论被按键处于哪 一列,均只须经两步便能获得按键所在的行列值. 采用线反转法时,行、列线均 加上拉电阻 综合上两步的结果,可确定按键 所在行和列,从而识别出所按键 第一步:将行线编程为输入线,列线为输出线, 输出全0列 线信号,读入行线状态,若非全1则有键按下,此时,为0位对 应行为按键所在行 线反转法具体实现 无论是扫描法还是线反 转法识别按键,本质上都 是采用扫描键盘状态的方 法。 第二步:将行线编程为输出线,列线做输入线, 输出全0行 线信号,读入列线状态,为0位对应列为按键所在列。 第三步.
3、计算确定该按键的键号 N=行首键号+列号 图 采用中断扫描方式的键盘接口电路 3)中断扫描方式: 当键盘上有键按下时,即向单片机发出中断请求,单 片机响应中断请求并立即扫描键盘,完成相应键盘功能。 第二讲 单片机的内部资源和结构 2.1单片机的内部资源 2.2单片机的内部结构 2.3引脚功能 单片机 CPU 运算器 算逻单元ALU 累加器ACC B寄存器 程序状态寄存器PSW 控制器 指令寄存器IR、指令译码器及控制逻辑 程序计数器PC 数据指针寄存器DPTR I/O口 4个8位并行I/O口P0、P1、P2、P3 全双工串行I/O口 存储器:128(或256)字节RAM、字节 ROM 定时/计
4、数器 T0、T1 、T2 堆栈指针寄存器SP、暂存器 振荡与定时控制电路 中断控制系统 除PSW1(保留位)、RS1和RS0(工作寄存器组选择 控制位)及用户标志F0之外,其他四位:奇偶校验位P、溢 出标志位OV、辅助进位标志位AC及进位标志位CY都是ALU 运算结果的直接输出。 CYACF0RS1RS0OV-P PSW.1PSW.0PSW.2PSW.4PSW.3PSW.5PSW.6PSW.7 CY进位标志 加、减法运算时,当最高位b7位有进位或借位时,CY 为1;反之为0。 注:在布尔处理机中CY被认为是位累加器。 PSW各位含义 PSW可以位访问,各位状态可用专门指令测试或读出. RAM
5、单片机存储器 ROM 内部RAM 外部RAM(0000HFFFFH) 内部ROM 00000FFFH EA=1 外部ROM 片内 RAM 寄存器区 0组(00H07H) 1组(08H0FH) 3组(18H1FH) 2组(10H17H) 特殊功能 寄存器区 (80HFFH) 布尔RAM区 (20H2FH) 数据、堆栈区(30H7FH) 低4K ROM 0000H0FFFH EA=0 高60K ROM 1000HFFFFH 1.单片机的 存储器结构 MCS-51指令系统的7种寻址方式与寻址空间 寻 址 方 式 寻 址 空 间 1寄存器寻址R0R7、A、B、CY(bit) 、DPTR 2直接寻址 内
6、部RAM低128字节 特殊功能寄存器 3寄存器间接 寻址 内部RAM(R0,R1,SP(仅限PUSH、POP) 外部RAM(R0,R1,DPTR) 4立即寻址程序存储器 5变址寻址程序存储器(A+PC,A+DPTR) 6相对寻址程序存储器(PC偏移量) 7位寻址 内部RAM中有128个可寻址位 特殊功能寄存器中可位寻址的位 程序存储器的某些单元被保留用于特 定的程序入口地址。 复位 0000H 外部中断0 0003H 计时器T0溢出 000BH 外部中断1 0013H 计时器T1溢出 001BH 串行口中断 0023H 2.P1口 提供单片机的主要I/O口 3.P2口 (1)当一般I/O口使用
7、. (2)当访问外部RAM或ROM时,做高8位地址总线 4.P3口 (1)当一般I/O口使用 (2)可以作为替代功能的输入、输出替代输入功能如下: P30 RXD,串行输入口。 P3l TXD,串行输出口。 P32 外部中断0的请求。 P33 外部中断1的请求。 P34 T0,定时器计数器0外部计数脉冲输入。 P35 T1,定时器计数器1外部计数脉冲输入。 P36 外部数据存储器写选通,输出,低电平有效。 P37 外部数据存储器读选通,输出,低电平有效。 用减法指令求出减数补数(“100-减数”)的BCD码的方 法: 例: 设两位BCD码形式的被减数、减数分别存放在VAR1和 VAR2单元中,
8、试编写一程序段求“VAR1-VAR2”,结果存放在 VAR3单元中。 CLR C; 清进位标志Cy MOV A, #9AH; 把 100的 BCD码等效表示码送A SUBB A, VAR2; 算出VAR2的补数的BCD码 ADD A, VAR1; 与被减数相加 DA A; 调正 MOV VAR3, A; 保存“VAR1-VAR2”结果 用“9AH”表示“100-原数”算式中的十进制数“100”(因 为“9AH”加“6”调正后就是“100H”)。 单片机汇编程序结构与通用微机汇编程序结构略有不 同,原因是: (1) 一般没有可直接利用的监控程序,所有程序均要 自己编写。 (2) 不像X86汇编语
9、言程序那样可直接调用系统提供的中断 功能(如BIOS中断、DOS中断)或Windows的API函数来完成特 定操作,它的所有子程序(如键盘监控子程序、显示驱动程 序、中断服务程序等)均需要自己编写。 51汇编语言程序设计 一、 顺序结构程序 例:将双字节数求补,设数据在R3(高)、R2(低) bMOV A,R2 ;取低字节 bCPL A ;低字节变补 bADD A,#01 bMOV R2,A ;结果送存 bMOV A,R3 ;取高字节 bCPL A ;高字节变补 bADDC A,#0 bMOV R3,A 算法:将某数变补是将该数按位取反后末位加1 低字节A 高字节A A取反+1 A A R2
10、A取反 A A+0+Cy A A R3 注意:51指令只能对A累加器取反 P73 例 4-2 二、二、 分支结构程序分支结构程序 1 单分支结构 一个判断决策框,程序有两条出路。单分支结构的几种典型 形式: (C)实际上是一种循环结构 P74 例 4-3 2 多分支选择结构 分支结构程序允许嵌套即一个程序的分支又由另一个分 支程序所组成,从而形成多级分支程序结构。汇编语言并不 限制分支嵌套层数,但过多的嵌套层次使程序结构复杂,易造 成逻辑上的混乱。 多分支结构形式: 3. N路分支程序(散转程序) 51提供的1条间接转移(也称散转)指令JMP A+DPTR,可方 便地进入各路分支处理程序,故将
11、这种程序称为散转程序。 (1)使用转移指令表和散转指令进行N分支转移 例4-5. 根据R5的内容,转向各个处理程序。 R5=0,转PROG0 R5=1,转PROG1 R5=n,转PROGn 计数控制循环结构的特点是循环次数已知,在初始化部分设定 计数器初值,循环控制部分依据计数器的值决定循环次数。 51提供的可实现计数控制循环结构的循环转移指令: DJNZ Rn,rel ;以工作寄存器作控制计数器 DJNZ direct,rel ;以直接寻址单元作控制计数器 4. 4. 循环结构程序循环结构程序 循环结构有计数控制(直到型)循环和条件控制(当型)循环 例4-11. 将片内RAM中30H34H单
12、元中的每个数右移4位后,将 移位的结果送入42H46H。 例4-12 第5章 P89C5X的定时器/计数器 5.1 定时器/计数器的内部结构及工作原 5.2 T0和T1的工作方式和应用 5.3 T2定时器/计数器的工作方式和应用 5.4 定时器/计数器的综合应用 二、定时/计数器的控制寄存器 TMOD的格式如下:低4位用来定义T0、高4位定义T1的工作方式 1. GATE定时/计数器启动方式控制位(又称门控位)。 GATE=1时, Ti的计数受INTx 引脚 输入电平控制,只有 INTx为高电平且TRx置 1 时, TX才被选通工作。这种控制方 式下,可测量在INTx端出现的正脉冲的宽度。 1
13、、 T0、T1的方式控制寄存器TMOD C/T0时,作定时器用,对内部机器周期计数(采用晶振脉冲 的12分频信号作为计数器的计数脉冲), 由于机器周期是定值 ,所以,这种计数就是定时。当fosc为12MHZ时,则定时器的计 数频率为1MHZ. 3. 工作方式选择位 M1、M0 定时器/计数器工作方式选择 M1 M0 方式说说 明 0 00 13位定时器(TH的 8 位和TL的低 5 位) 0 11 16 位定时器/计数器 1 02 自动重装入初值的 8 位计数器 1 13 T0 分成两个独立的 8 位计数器, T1 在方式 3 时停 止 工作 TF0、TF1 分别是T0、 T1 的溢出标志位,
14、 计数器计满溢出时 置 1, 申请中断, 中断响应后自动清 0。TF产生的中断申请是否 被接受, 要由中断是否开放来决定。 2 ) T0、T1的控制寄存器TCON TR0 、 TR1分别是T0 、 T1 的运行控制位, 软件置 1 后, T0 、 T1 才开始工作, 在系统复位时被清 0。 计数值 N 的公式: N=213X=8192X 其中: X是实际写入THx、TLx的初值。 X=8191时为最小计数值1,X=0时为最大计数值8192. 即方式0的计数范围为: 1 8192 定时时间T的确定公式: T=NT机器=(8192-X) x(T时钟x12) 其中: N是计数值, X是实际写入THx
15、、TLx的初值。 若fosc=12 MHz,则T机器=1 s,定时范围为18192 s。 方式0工作时的计数值、定时时间确定 方式1工作时的计数值、定时时间确定 计数值 N 确定公式:N=216-X=65536-X 计数范围为 : 165 536 定时器的定时时间确定公式: T= NT机器=(65536-X) T机器 =(65536-X)x(T时钟x12) 其中: X、 N含义与前述相同 如果fosc=12 MHz,则T机器=1 s,定时范围为165 536 s 定时/计数器综合应用 : 设计运动员起跑反应时间测试器。测试器设有1个发声装 置、1个反应按键、3位LED数码管。其功能是,由CPU
16、控制发出 起跑令声,随之启动计时、检测反应键,当有按键反应时,立 刻停止计时,由发声到按键反应时间为运动员反应时间(单位 :毫秒),最后将此时间送到数码管上显示。 1、电路设计 测试器只需要有三位数码管、一个蜂鸣器(喇叭)、一个 反应按键。电路如下图: 采用共阳极数码管 采用放大器驱动喇叭 2、程序设计 开始 初始化 设堆栈、计数单元清0、 设置定时器工作方式 和初值、设置中断 有启动按键? 调显示 子程序 计数单元清0 启动定时器 输出声音 有反应按键? 关定时和声音 Y N Y N 主程序 重置定时器初值 现场保护 计数单元加1 现场恢复 中断返回 中断服务程序 用1个定时器产生1ms的定
17、时,做测时基 准时间单位,未测试时,数码管显示当 前计时到多少毫秒。时间以BCD码形式 存在R7、R6。 L1 L: MA1 去抖采用软件延时。 ORG0000H AJMPMAIN ORG000BH;定时中断入口 LJMPT0_TIME 主程序 ORG0100H MAIN: MOVSP,#60H;设置堆栈区 CLRP3.3;关声音 MOVR7,#0;计数单元清0 MOVR6,#0 MOVTMOD,#01H MOVTH0,#0E8H;6M时钟,定时1MS MOVTL0,#90H MOVIE,#82H;开总中断和T0中断 SETBP3.2;设P3.2和P3.1为输入 SETBP3.1 L:JNBP
18、3.1,MA1;有发起跑令按键则转MA1去抖, L1: LCALL DIS;显示 SJMP L MA1: LCALLDEY20MS;延时去抖动 MOVR7,#0;计数单元清0 MOVR6,#0 JNBP3.1, $;等待键释放 SETBTR0;启动定时器 SETBP3.3;声音输出 JB P3.2, $;等反应键按下 CLRTR0;停止 T0工作 CLRP3.3;关声音 JNBP3.2, $;等待按键释放 SJMPL 显示子程序 DIS:MOVDPTR,#TABLE ;显示码表首址 DPTR MOVA,R7;取百位 MOVC A,A+DPTR;查表 MOVP0,A;送百位显示 MOVA,R6
19、ANLA,#0F0H;保留十位的BCD码 SWAP A ;十位的BCD码交换到低4位 MOVC A,A+DPTR MOVP1,A MOVA,R6 ANLA,#0FH;取个位 MOVC A,A+DPTR MOVP2,A RET DEY20MS: MOV R4,#20 MOV R3, #250 DEY21: DJNZ R3,$;延时1MS DJNZR4,DEY21; 约延时20MS RET T0_TIME: PUSHACC; 现场保护 PUSH PSW MOVTH0,#0E0H;重置定时初值 MOVTL0,#90H MOVA,R6;计数单元R7、R6内容加1 ADDA,#1 DAA MOVR6,A
20、 MOVA,R7 ADDC A,#0 DAA MOVR7,A POPPSW;现场恢复 POPACC RETI 第6章 中断系统 6.1 中断技术概述 6.2 中断系统 6.3 外部中断处源的扩展 6.4 中断系统设计的应用 6.2 P89C5X单片机的中断系统 P89C5X单片机有6个可以申请中断的中断源,分为三类: 1)外部中断类 2)定时中断类 3)串行端口中断类。它们是: 外中断0(由引脚INT0引起) 定时器0(由T0溢出引起) 外中断1(由引脚INT1引起) 定时器1(由T1溢出引起) 串行口发送/接收中断(由串行口引起) 定时器2(由T2溢出引起) 1、首先要能产生中断请求 如何实
21、现中断功能 同级中断的响应次序 中断源中断优先级 外部中断0最高 定时器T0中断 外部中断1 定时器T1中断 串行口中断 定时器T2中断最低 位地址8FH8EH8DH8CH8BH8AH89H88H 符号TF1TF0IE1 IE0 寄存器 TCON SCON T2CON 位地址9FH9EH9DH9C H 9BH9AH99H98H 符号TIRI 4、与中断有关的寄存器 (1)中断请求标志寄存器 位地址CFH CEHCDHCCHCBHCAHC9HC8H 符号TF2EXF2 (2)中断允许控制寄存器 位地址AFHAEHADHACHABHAAHA9HA8H 符号EA ET2ESET1EX1ET0 EX0
22、 IE 位地址8FH8EH8DH8CH 8BH8AH89H 88H 符号 IT1 IT0 (3)外中断触发方式控制寄存器 TCON (A8H) 中断允许控制寄存器IE中各位含义 IE寄存器中各位设置: 为0时,禁止中断;为 1时,允许中断。 系统复位后IE寄存器中各位均为0,此时禁止所有中断。 CPU 中断优先级控制寄存器IP(字节地址B8H)和 IPH(字节地址为B4H) 位地址BFHBEHBDHBCHBBHBAHB9HB8H 符号 PT2PSPT1PX1PT0 PX0 位地址 符号 PT2HPSHPT1HPX1HPT0HPX0H 设定方法: 优优先级别设级别设 定 中断优优先级级 IPH
23、IP 0 0 0级级(最低级级) 0 1 1级级 1 0 2级级 1 1 3级级(最高级级) 注:系统复位后 寄存器中各位均为0,即此时全部设定为低中断优 先级。 1. 定时器/计数器控制寄存器TCON(字节地址88H) 图 5.2 TCON格式 TCON中与中断有关的位 vTCON是定时器T0、T1的控制寄存器,同时也是与中断控制 有关的寄存器之一, 它控制外部中断源触发方式,并锁存T0、 T1的溢出中断和外部中断的中断请求标志。 通过设置IT1(TCON.2)、IT0(TCON.0)位选择触发方式 IT1、IT00,选择电平触发方式, 检测到低电平为有中断请求 IT1、IT0l,选择边沿触
24、发方式,检测到负跳变为有中断请求 系统复位后TCON 寄存器中各位被 置0 51串行口有4种工作方式,见下表 表1 串行口的工作方式 SM0SM1工作方式功 能波 特 率 00方式0 移位寄存器方式,用于并行 I/O扩展 fosc /12 01方式18位通用异步接收器/发送器可变 10方式29位通用异步接收器/发送器 fosc /32或 fosc /64 11方式39位通用异步接收器/发送器可变 其中,方式0并不用于通信,而是通过外接移位寄存器芯 片来实现I/O口的扩展。利用这个功能,能方便地实现扩展2脚的 串行I/O到8脚的并行I/O口。该方式又称作移位寄存器方式。 2. 串行口控制寄存器S
25、CON SCON用于控制串行通信的方式选择、接收,指示串行 口的中断状态。寄存器SCON既可字节寻址也可位寻址。其 各位相应功能介绍如下: SM0、SM1: 用于定义串行口的工作方式, 3. 电源控制寄存器PCON(地址为 87H,) 特殊功能寄存器PCON中, 只有一位(最高位)SMOD 与串行口的工作有关, 该位是串行口波特率系数的控制位: SMOD=1 时, 波特率加倍, 否则不加倍。 注意:PCON不可位寻址, 因此初始化时需要字节传送。 下面两图分别是方式0扩展并行输出和并行输入的一种接线 图。 RXD TXD A B CP Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 74LS1
26、64 8051 RXD TXD A B CP Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 74LS165 8051 输出扩展图 输入扩展图 方式0应用扩展单片机的并行I/O口 将51的串口设置成方式0,与“串入并出“或”并入串出”的 移位寄存器(如CD4094、74LS164或CD4014、 74LS165等)配 合使用,为单片机扩展并行I/O口。 与“串入并出”芯片74LS164配合,通过串行口扩 展MCS-51的输出口 连线图 74LS164的串行数据输入端 74LS164的移位脉冲CLK 2、与“并入串出”芯片74LS165配合,通过串行口扩 展MCS-51的输入口 扩展并行输入口连
27、接图 74LS165串行数据输出端 74LS165的移位脉冲CLK 允许74LS165接收并锁 存并行输入端数据 74LS165还 可串入串出 方式0为固定波特率: 波特率=fosc/12 方式2可选两种波特率: 波特率=(2SMOD /64)fosc 7.3.4 串行口的波特率发生器及波特率设置 方式1、3为可变波特率,此时,用T1或T2作波特率发 生器,波特率由定时器T1(或T2)的溢出率和SMOD确 定。 由SMOD(PCON7) 位确定采用那种波特率 当SMOD位1时,波特率fosc/32; 当SMOD位0时,波特率fosc/64。 用T1定时工作做波特率发生器时: 波特率=(2SMO
28、D/32)T1溢出率 T1的溢出率与它的工作方式有关: T1方式0、方式1工作时:L 要保证方式0、方式1定时器产生频率固定的脉冲,需在其 定时中断后重新对定时器置数,所以,要考虑这个时间,上式 中的X是中断服务程序的机器周期数。 T1方式2定时工作时: 方式2是8位可重装的方式,无需对定时器置数,没有中断引 起的误差,此时,应禁止定时器T1中断。 溢出率= f osc 1 12 28- (TH1) X 例: 设波特率为4800bps、 fOSC = 12MHZ,定时器 工作方式为2 。求定时器初值TH1 。 根据波特率计算公式 波特率=2SMODxfosc/32x 12(256 TH1) S
29、MOD=0时 TH1=256-20X12X106/4800X32X12=249=F9H 实际波特率为; 20X12X106/32X12X(256-249)=4464.29 误差为:(4800-4464.29)/4800=6.99% SMOD=1时 TH1=256-21X12X106/4800X32X12=243=F3H 实际波特率为; 21X12X106/32X12X(256-243)=4807.69 误差为:(4800-4807.69)/4800=0.16% 例6-2:系统的晶振频率FOSC=11.0592MHZ,串行口通信使 用方式3 。现在要求波特率为9600b/S,试编程实现。 (1) 根据波特率计算公式 波特率=2SMODxfosc/32x 12(256 TH1) TH1=256-21X11.0592X106/9600X32X12=250=FAH 第8 章 外部系统的扩展 8.1 并行扩展总线 8.2 串行扩展总线 8.3 并行存储器和I/O扩展 8.4 串行扩展介绍 系统扩展概述 51单片机扩展数据存储器的示意图 采用地址译码器扩展存储器的连接图
链接地址:https://www.31doc.com/p-2612800.html