单片微机5章-1.ppt

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片微机5章-1

微型计算机技术与应用 70课堂学时+18实验学时 一、键盘工作原理 用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。 按键数目较多的场合,矩阵键盘与直接编码输入键盘相比,要节省很多的I/O口线。 图 2?5b P0口的口线逻辑电路图 在系统扩展时,P0端口作为地址/数据总线使用时,分为:输出地址/输出数据、输出地址/输入数据 2.P0作为地址/数据总线 与门 R 图 2?5b P0口的口线逻辑电路图 (1) P0引脚输出地址/输出数据: CPU发出控制电平“1”,打开“与”门,同时多路开关MUX把CPU的地址/数据总线与T2栅极反相接通,输出地址或数据。 与门 1 1 0 0 1 1 0 1 1 0 0 输出地址/数据 R 图 2?5b P0口的口线逻辑电路图 (2)P0引脚输出地址/输入数据:输出地址同上,输入数据是从引脚通过输入缓冲器进入内部总线。此时,CPU自动使MUX向下(控制端0,断开T1),并向P0口写“1”,“读引脚”控制信号有效,下面的缓冲器打开,外部数据读入内部总线 2.P0作为地址/数据总线 外部输入数据 1 0 0 1 R 0 5.1.3 I/O端口的相关指令 ◆读引脚指令 当把P0~P3口作为输入引脚使用时,以I/O口作为源操作数的数据传送指令、算术/逻辑运算指令及位测试转移指令等均属读引脚指令。 ◆读锁存器指令 所有的“读—改—写”指令均读I/O口锁存器。 读引脚指令: MOV C, P1.0 ; 将P1.0引脚信号读到位累加器C中 MOV A, P1 ; 将P1.0~P1.7引脚信号读到累加器A中 ANL A, P1 ; 将P1.0~P1.7引脚信号与累加器A相与 ADD A, P1 ;将P1.0~P1.7引脚信号与累加器A相加 JB P1.0, LOOP ;P1.0引脚信号为1,则转移 JNB P1.0, LOOP ;P1.0引脚信号为0,则转移 所有的“读—改—写”指令均读I/O口锁存器 JBC P1.0 , LOOP ;P1.0锁存器为1转移, 且将P1.0锁存器清零 DEC P1 INC P1 CPL P1.0 读I/O口锁存器指令: 5.1.4 I/O口负载能力 * 当输出低电平时,P0口可吸收3.2MA以上的灌电流,能驱动8个TTL门电路 * P1-P3口负载能力:3—4个TTL门电路 * P1-P3口可直接驱动小功率NPN三极管 * 当驱动中功率NPN三极管时,必须外接上拉电阻Rb (上拉电阻不得小于3.3 KΩ)。 * 驱动PNP三极管时,必须在I/O端和三极管之间串电阻Rb(2.7KΩ--10KΩ) 5.1.5 并行口的应用——晶闸管的接口和编程 例:晶闸管接口电路 硬件电路由过零检测电路和加热控制电路组成; 通过控制可控硅导通角来控制加热功率。 晶闸管接口电路图 图5-4(a)晶闸管加热电路 (b)输出波形 (c)过零电路 加热器 交 流 电 源 P1.0 P3.2 程序设计 查询P3.2上负跳变的方法确定交流电进入正半周(过0点); 使用延时决定导通角的大小,实现对电热丝功率的控制; 延时时间到,P1.0输出一正脉冲,可控硅导通,电阻丝开始加热。 例5:查讯方式控制晶闸管导通角程序 #include reg52.h #define uchar unsigned char #define uint unsigned int sbit P1_0=P1^0; sbit P3_2=P3^2; void poiiu(uint x,uint y) //查询延时方式控制函数 { uint a; P1_0=0; while (1) 可控硅导通角控制参数 触发脉冲宽度控制参数 { for(;P3_2==1;); //等待P3.2=0,等待正弦波过0点 for ( a=x;a0;a--); //延时,控制可控硅导通角 P1_0=1; //P1.0输出正脉冲 for (a=y;a0;a--); //延时,正脉冲宽度 P1_0=0; //P1.0正脉冲结束 for(;P3_2==0;); //等待P3.2=1 } } void main() //主函数 { for(;;)

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档