CH3信息的窗口-PIC单片机IO口.doc

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

信息的窗口-数码显示屏 本文通 2个8*8点阵屏显示各种数字、字符来学习PIC单片机的I/O口结构特点及其使用方法,如图1所示是用这个点阵来显示3456的示意图。 图1 点阵显示3456 一、使用PIC单片机实现流水灯 为熟悉PIC单片机I/O口的结构,我们先从一个简单的例子开始,即用PIC单片机控制点阵屏中的一些LED做个流水灯。 1.PIC单片机的I/O口 任何单片机都带有用于信号输入和输出的引脚,不同类型的单片机其引脚的结构也各不相同。80C51单片机一般是准双向I/O口结构,在作为输入或都输出使用时,不需要特别的设置。而PIC单片机的I/O口结构要比51机复杂一些,一个典型I/O端口既可以设置为数字信号输出,又可以作为数字信号输入,是一个标准的双向端口,在使用时需要先设定好其工作方向。 PIC单片机的作为输出时,可以提供很强的负载驱动能力,高电平输出时的拉电流和低电平输出时的灌入电流都可以达到25mA;作为输入时,端口呈现极高的输入阻抗,由端口引入的输入漏电流不超过1uA,对输入的信号来说此端口基本可视为开路或浮空状态。每一个端口都有TRISx寄存器和PORTx(x的值可以是A、B、C等端口名字),其中TRISx就是端口方向设置寄存器,它的各个位分别与引脚对应。将TRISx的各个位分别设置为1和0可以令对应的引脚作为输入或者输出来使用。 值得一提的是PIC单片机的所有I/O引脚在出现任何条件的复位后,将自动回到高阻抗输入状态(TRISx寄存器内数据位位为1),这意味着给引脚接上拉或下拉电阻即可获得确定的高/低电平。如果用单片机来控制机器设备,这一点是非常关键的。 2.点阵块的结构 所谓LED点阵,一般是指由多个LED等间距构成的一种模块,图2所示是某8×8点阵LED显示模块的外形图。 图2 8×8点阵LED显示模块外形图 这种点阵显示器内部也有两种接法,如图3(a)和3(b)所示。以图3(a)为例,从图中可以看到,该模块共有8行8列共16个引脚,每个发光二极管放置在行线和列线的交叉点上,共64个发光二极管。当行置“1”,列置“0”时,该列与该行交叉点上的LED被点亮。而图3(b)所示电路则正好相反,当行置“0”,列置“1”时交叉点上的LED被点亮。为讲解统一,以下均以图3(a)所示电路图为例来说明。 (a) (b) 图3 8×8LED点阵显示器的电路连接图 如果将列1引脚13置为高电平,那么只要控制第1~8行LED的阴极,就能让LED按要求点亮,下面我们就以此电路为例来制作一个键控流水灯。 3、流水灯的实现 如图2是实现流水灯的电路原理图。图中U1使用PIC16F877A,点阵块的型号是SD411988, J1是编程和调试插座。端口RD通过8只限流电阻连接点阵块的行,而PORTB和PORTC分别接2个点阵块的列。K1~K4是4个按键,PZ1和PZ2分别是10K和100K的排阻,这是利用PIC单片机的特点,使用同一I/O口分时作为输入和输出使用而连接的键盘,用于下一个任务。其余元件直接按图上标注参数来选择。 图2 PIC单片机驱动点阵块 如图3所示是使用万能板制作的实物。 图3 实物图 程序1 流水灯 #include pic.h typedef unsigned char uchar; typedef unsigned int uint; __CONFIG(HSWDTDISLVPDIS); //配置文件,设置为HS方式振荡,禁止看门狗,低压编程关闭 void mDelay(unsigned int DelayTime) { unsigned int j=0; for(;DelayTime0;DelayTime--) { for(j=0;j272;j++) {;} } } void main() { uchar VOutDat=0xfe; uchar HOutDat=0x01; TRISD=0; //PORTD设为输出 TRISB=0; //PORTB设为输出 while(1) { PORTD=VOutDat; //将数据送到PORTD端口 PORTB=HOutDat; mDelay(1000); //延时1000毫秒 VOutDat= (VOutDat1)|(VOutDat7); //左移,为下一次显示作准备 HOutDat=(HoutDat1)|(HoutDat7); } } 【程序实现】建立名为message1的工程,选择PIC16F877A作为控制芯片。输入上面的程序,并命名为messag1.c,将此文件加入工程,编译链接通,将messag1.hex写入芯片,通电即可

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档