微处理器C51-5输出输入端口.

上传人:最**** 文档编号:117940980 上传时间:2019-12-11 格式:PPT 页数:70 大小:14.06MB
返回 下载 相关 举报
微处理器C51-5输出输入端口._第1页
第1页 / 共70页
微处理器C51-5输出输入端口._第2页
第2页 / 共70页
微处理器C51-5输出输入端口._第3页
第3页 / 共70页
微处理器C51-5输出输入端口._第4页
第4页 / 共70页
微处理器C51-5输出输入端口._第5页
第5页 / 共70页
点击查看更多>>
资源描述

《微处理器C51-5输出输入端口.》由会员分享,可在线阅读,更多相关《微处理器C51-5输出输入端口.(70页珍藏版)》请在金锄头文库上搜索。

1、输出/输入端口的应用 l 如何申请免费样片 l 输出端口的应用 l 输入口的应用 l 输入输出端口的高级应用 输出端口的应用 输出电路的设计 89S51的输出端口可直接连接数字电路,也可驱动LED、蜂鸣器、继 电器或固态继电器等负载。 1、驱动LED LED具有二极管的特点,其特性曲线如图,通过增加LED正向电流可以 使其更亮,但会缩短其寿命或烧断,以10-20mA为宜。 89S51的I/O端口都有类似漏极开路的输出,其中P1、P2与P3内部具有 30K上拉电阻,它们不能输出10-20mA电流,其电路如图。 此电路中,当输出低电平时,输出端FET导通,输出电压接近0V;而LED 正向导通电压为

2、约1.7V,限流电阻R两端约3.3V(VCC=5.0V),此时限流电 阻值为: R=(5-1.7)/0.01=330 对于TTL电平的数字电流,LED所串接的限流电阻大多为470。 2、驱动蜂鸣器 蜂鸣器(buzzer)类似小型 喇叭,一般用作电路板上的发 声装置。它分为电压型与脉冲 型两类,电压型送电即响,其 频率固定;脉冲型必须加入脉 冲信号,声音频率就是加入脉 冲的频率。 在此使用脉冲型蜂鸣器。 89S51驱动蜂鸣器的信号为 各种频率的脉冲,其驱动方 式采用达林顿管,或以两个 常用的小三极管(cs9013) 连接成达林顿结构。如图, 这两个驱动电路属高电平动 作,即输出“1”蜂鸣器吸住。

3、 也可采用低电平动作,如图输出0时,蜂鸣器吸住;输出1时,蜂鸣器释放。 在晶体管BE之间连接一个泄放电阻(3.3K),其目的是让晶体管从饱和到 截止时提供一个泄放BE间少数载流子的路径,以加快切换,放止拖音。 3、驱动继电器 若要89S51控制不同电压或较大电流的负载时,则可以通过继电器( RELAY)来实现。 电路板上使用的继电器体积小,使用电压有DC12V、DC9V、DC6V和 DC5V等,图中,c-b之间为常闭(NC)触点,c-a之间为常开(NO)触点, 只有一组触点,称为1P。 89S51驱动的继电器大多为DC6V或DC5V,尽管如此,89S51输出口的驱 动能力还是不够的,而且,继电

4、器线圈感性负载还需要保护。 如图a为高电平驱动的继电器 驱动电路。 如图b为低电平驱动继电器电 路图。 对于微型计算机系统,采用低 电平动作的继电器驱动电路属于 较优的设计。 由于线圈是电感负载,续流二 极管起到保护晶体管的损坏。 如果要同时驱动多个继电器。 可使用集电极开路(OC)输出 的反相门,如7405(驱动5V继 电器)或7406(驱动较高电压 继电器,最高30V)。 4、驱动固态继电器 固态继电器(SSR)类似一般继电器,可用较小的控制信号来驱动,以控 制较大的负载。SSR没有实际的触点,不会有触点动作的火花与机械动作。 一般SSR是由光耦合器输入控制信号,而另一端则是较大容量的功率

5、半导体 器件(如SCR、TRIAC或IGBT)。 如图为常见的SSR,其输出端为AC250V/10A。 SSR的输入端为LED,所 以其驱动方法与LED一样, 不过需要较大的电压和电流 。 如图a为高电平驱 动电路;图b为低电平 驱动电路。 5、驱动七段数码管 七段LED数码管是利用7个LED组合而成的显示装置,可以显示0-9数字和 A-F字母。七段LED数码管有共阴极与共阳极两种。 共阳极(Common Anode)七段LED数码管 电路连接如图a,com接+5V,每个阴极引脚各接一个限流电阻。图b为不 合理的接法。若a接8051输出端口的最低位(LSB),dp接8051的最高位( MSB)

6、,则0-9的驱动信号如表所示(小数点不亮)。 共阴极(Common Catchode)七 段LED数码管 电路连接如图a,com接GND, 每个阳极引脚各接一个限流电阻。 图b为不合理的接法。若a接8051输 出端口的最低位(LSB),dp接 8051的最高位(MSB),则0-9的 驱动信号如表所示(小数点不亮) 。 实例 1、驱动蜂鸣器 l 电路 蜂鸣器由P3.7经晶体管驱动。 l 声音产生原理 声音是蜂鸣器簧片振动产生的, 若要产生f的频率,需要在周期T 时间内进行吸、放各一次,即通 断时间各1/2T。 l 程序设计 本程序将产生1KHz信号持续 0.1s,停止0.5s,再产生1KHz 信

7、号持续0.1s停止0.5s,然后从 头开始执行。 /*ch01.c -蜂鸣器程序-*/ /*声明区* #include sbit buzzer=P37; void delay(int); void pulse_BZ(int,int,int); /*主程序* Main() while(1) pulse_BZ(100,1,1); delay(1000); /*子程序* /*延迟函数 x0.5ms */ void delay(int x) int i,j; for(i=0;ix;i+) for(j=0;j60;j+); /*蜂鸣器发声函数 count计数 TH高电平时间 TL低电 平时间 */ vo

8、id pulse_BZ(int count,int TH,int TL) int i; for(i=0;icount;i+) buzzer=1; delay(TH); buzzer=0; delay(TL); 对程序进行仿真调 试,如图高电平持续 时间为0.000944- 0.000422=0.000522s 同样,低电平持续 时间也为0.5ms。 如果有目标板,可以 将编译生成的2.HEX 文件下载至目标器件 ,如图。 思考: 若想产生1KHZ声音0.2S,暂停0.05S、600HZ声音0.1S、暂停0.2S。 应如何修改程序。 2、驱动继电器 l 电路 蜂鸣器由P3.7经晶体管驱动,继电器

9、由P3.6经晶体管驱动。 l 继电器驱动原理 由电路图可知, P3.6输出1,则晶体 管饱和导通,继电器 线圈得电,继电器吸 合;P3.6输出0,则 晶体管截止,继电器 释放。 继电器使用时,一 定要看清楚它上面的 标示,如“0.5A,120 VAC RES”,表示该 继电器触点可以驱动0.5A,交流120V的电阻性负载。 本例子是由P3.6驱动继电器每秒钟开关一次,开关10次后,蜂鸣器响两 声,然后从头开始执行。 /* -ch02.c-*/ #include sbit buzzer=P37; sbit relay=P36; void delay(int); void pulse_BZ(int

10、,int,int); void pulse_RL(int,int,int); main() while(1) pulse_RL(10,2000,2000); /relay on/off 10tinmes,2000 x0.5=1s pulse_BZ(100,1,1); /buzzer first on 100 x(0.5+0.5)=0.1s delay(200); / delay 200 x0.5=0.1ms pulse_BZ(100,1,1); delay(200); /-delay- void delay(int x) int i,j; for(i=0;ix;i+) for(j=0;j60;

11、j+); /-pulse_BZ- void pulse_BZ(int count,int TH,int TL) int i; for(i=0;icount;i+) buzzer=1; delay(TH); buzzer=0; delay(TL); /-relay control- void pulse_RL(int count,int TH,int TL) int i; for(i=0;icount;i+) relay=1; delay(TH); relay=0; delay(TL); 思考: 若让继电器吸合10S,断开5S,周而复 始,应如何修改程序。 3、霹雳灯 霹雳灯是指在一排LED 里

12、(此处8个),任何一个 时间只有一个LED亮,亮 灯顺序为由左而右再由右 而左,感觉上就像一个 LED由左跑到右,再由右 跑到左。 在程序设计中,采用计 数循环的方式,首先左移7 次,在右移7次,如此循环 。 左移采用LED1指令。LED的初始值为 11111110,左移时,右边将移入0,必须将最右边的位变成1,采用OR运算 ,即LED=(LED1|0X80。 移位完成判断可采用计数的方式,也可采用判断最高位为0的方式(左移 )或最低位为0(右移)。 /* -ch03.c-*/ #include #define LED P1 void delay(int); main() unsigned c

13、har i; LED=0 xfe; while(1) for(i=0;i7;i+) delay(100); /delay 100 x5ms=0.5s LED=(LED1)|0 x80; /-delay- void delay(int x) int i,j; for(i=0;ix;i+) for(j=0;j600;j+); /count 600 delay 5ms 思考: 1、修改程序,将它变成双灯的 霹雳灯功能。 2、用判断的方式重写上述程序 。 4、七段LED数码管 电路如图,由P0驱动共阳极数码管。 数码管上显示的数字从0开始,每隔0.5S增加1,直到9之后,再从0开始 , 如此循环。 /

14、* -ch04.c-*/ #include #define SEG P0 char code TAB=0 xc0,0 xf9,0 xa4,0 xb0,0 x99, 0 x92,0 x83,0 xf8,0 x80,0 x98; void delay(int); main() unsigned char i; while(1) for(i=0;i10;i+) SEG=TABi; delay(500); /delay 500 x1ms=0.5s /-delay- void delay(int x) int i,j; for(i=0;ix;i+) for(j=0;j120;j+); /count 120 delay 1ms 思考: 1、修改程序,让数码管从9开 始显示,递减到0循环。 2、修改程序,让数码管从0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号