并行IO口编程范例_第1页
并行IO口编程范例_第2页
并行IO口编程范例_第3页
并行IO口编程范例_第4页
并行IO口编程范例_第5页
全文预览已结束

下载本文档

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

文档简介

1、并行I/O口编程范例      第1,2,3页 深圳市凌雁电子有限公司    单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路,我们从常用的LED显示原理开始,详尽讲解利用单片机驱动LED数码管的电路及编程原理,目的在于通过这一编程范例,让初学者了解I/O口的编程原理,意在起举一反三,抛砖引玉的作用。    LED的发光原理,稍有电子技术基础的人士都很清楚,我们不想作过多的介绍,7段LED数码管,则在一定形状的绝缘材料上,利

2、用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。    LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。    将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LE

3、D的电流通常较小,一般均需在回路中接上限流电阻。假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同,读者自行分析即可。    左图为实验电路图,我们使用80C51单片机,电容C1、C2和CRY1组

4、成时钟振荡电路,这部分基本无需调试,只要元件可靠即会正常起振。C3和R1为单片机的复位电路,80C51的并行口P1.0-P1.7直接与LED数码管的"a-f"引脚相连,中间接上限流电阻R3-R10。值得一提的是,80C51并行口的输出驱动电流并非很大,为使LED有足够的亮度,LED数码管应选用高亮度的器件。    此外,图中的80C51还可选用C51系列的其它单片机,只要它们的指令系统兼容C51即可正常运行,程序可直接移植,例如选用低价Flash型的AT89C1051或2051(详细技术手册)等,它们的ROM可反复擦写,非常适合作实验

5、用途。· 程序清单:    01  START: ORG     0100H      程序起始地址    02   MAIN: MOV    R0,#00H     ;从“0”开始显示    03      

6、   MOV    DPTR,#TABLE ;表格地址送数据指针    04   DISP: MOV    A,R0        ;送显示    05         MOVC   A,A+ADPTR  ;指向表格地址 

7、0;  06         MOV    P1,A        ;数据送LED    07         ACALL  DELAY       ;延时   

8、; 08         INC    R0          ;指向下一个字符    09         CJNE   R0,#0AH,DISP ;未显示完,继续    10 

9、        AJMP   MAIN        ;下一个循环    11  DELAY: MOV    R1,#0FFH    ;延时子程序,延时时间赋值    12  LOOP0: MOV   

10、0;R2,#0FFH    13  LOOP1: DJNZ   R2,LOOP1    14         DJNZ   R1,LOOP0    15         RET     &#

11、160;          子程序返回    16  TABLE: DB     0C0H        字型码表    17         DB   

12、60; 0F9H    18         DB     0A4H    19         DB     0B0H    20      

13、60;  DB     99H    21         DB     92H    22         DB     82H    23 

14、60;       DB     0F8H    24         DB     80H    25         DB     90H

15、0;   26         END                程序结束动态扫描LED显示电路  第1,2,3页 深圳市凌雁电子有限公司      上一节我们讲述了单只LED与单片机的接口电路及编程实例,目的在于让初学者了解LED在单

16、片机中的应用原理,单只LED显示在实际应用中并无多大用途,一般都是多位的LED显示。现在我们作进一步学习,我们要讲解的是8位LED的显示原理及实际的编程方法。这里我们没有采用多I/O口的8051系列单片机,而是采用了完全兼容C51指令系统的质优价廉的AT89C2051单片机,它的软件编程与C51完全一致。    在多数的应用场合中,我们并不希望使用多I/O端口的单片机,原则上是使用尽量少引脚的器件。在没有富余端口的情况下,怎样通过扩展电路达到预期的目的呢?我们希望通过此例使设计人员在实际应用中了解一点电路扩展的原理,对实际的应用有所帮助。 &#

17、160;  左图是显示电路,由于AT89C2051外部15个I/O引脚,即P1口和P3口,单P3口的P3.6是不引出的,15个I/O口要直接驱动8位LED显然是不够的,我们通过一片面74LS273对地址进行锁存,如果P1口仅用于显示驱动,而没有与其它外设进行数据交换,可省略这个锁存器,直接或通过其他驱动电路驱动连接LED。地址线我们通过一片74LS138三八译码器对8位LED进行分时选通,这样在任一时刻,只有一位LED是点亮的,但只要扫描的频率足够高(一般大于25Hz),由于人眼的视觉暂留特性,直观上感觉却是连续点亮的,这就是我们常说的动态扫描电路。  

18、  此电路中,74LS273用于驱动LED的8位段码,8位LED相应的"a""g"段连在一起,它们的公共端分别连至由74LS138(点击芯片型号可浏览其详细的技术手册)译码选通后经74LS04反相驱动的输出端。这样当选通某一位LED时,相应的地址线(74LS04输出端)输出的是高电平,所以我们的LED选用共阳LED数码管。    动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就

19、要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。在C51指令中,延时子程序是相当简单的,并且延时时间也很容易更改,可参见程序清单中的DELAY延时子程序。    为简单起见,我们只是编写了8位LED同步显示"00000000""11111111"直到"99999999"数字,并且反复循环。程序很简单,流程图略去。    · 程序清单:串行口动态扫描显示电路      第1,2,3页 深圳市凌雁电子有限公司      单片机并行I/O口数量总是有限的,有时并行口需作其他更重要的用途,一般也不会用数量众多的

温馨提示

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

评论

0/150

提交评论