STC89C51系列单片机共有如下几类GPIO口:

(1)P0.0-P0.7:

对应DIP40封装的39-32号引脚:P0口既可以作为输入/输出GPIO口,也可以作为地址/数据复用总线使用。

a)P0口作为输入/输出IO口时,P0是一个8位准双向IO口,上电复位后处于开漏模式。且P0口内部无上拉电阻,在作为I/O使用时必须外接4.7K-10K的上拉电阻;

b)P0口作为地址/数据复用总线时,是低八位地址线【A0-A7】,数据线【D0-D7】,无需外接上拉电阻

(2)P1.0-P1.7:

对应DIP40封装的1-8号引脚:均可作为标准IO口,对于90系列的51内核的单片机其中P1.0,P1.1均有第二功能,P1.0可以作为定时器/计数器2(Timer2/Count2)的外部输入;P1.1可以作为定时器/计数器2(Timer2/Count2)的捕捉/重装方式的触发控制。

(3)P2.0-P2.7:

对应DIP40封装的21-28号引脚:内部含有上拉电阻,即可作为输入输出口,也可作为高8位地址总线使用(A8-A15);作为输入输出口时,P2口是一个准双向口

(4)P3.0-P3.7:

对应DIP40封装的10-17号引脚:均可作为标准IO口使用。此外均具备第二功能;

P3.0—RXD:串行数据接收端

P3.1—TXD:串行数据发送端

P3.2—INTO:外部中断0,下降沿中断或者低电平中断(低电平有效)

P3.3—INT1:外部中断1,下降沿中断或者低电平中断(低电平有效)

P3.4—T0:定时器/计数器0的外部输入

P3.5—T1:定时器/计数器1的外部输入

P3.6—WR:外部数据存储器写脉冲(低电平有效)

P3.7—RD:外部数据存储器读脉冲(低电平有效)

GPIO模式简介:

51单片机IO口均具备准双向口/弱上拉,和开漏输出模式;P1,P2,P3上电复位后是准双向口/弱上拉,P0口上电复位后是开漏输出。

其中5V单片机P0口的灌电流最大为12mA,其他IO口的灌电流最大为6mA;

3V单片机的P0口的灌电流最大为8mA,其他IO口的灌电流最大为4mA;

准双向口读外部状态前,要先锁存为‘1’,才可以读取到外部状态;

当端口锁存器为0时,开漏输出关闭所有的上拉晶体管;当作为一个逻辑输出时,这种配置方式必须外部上拉。一般通过电阻外接到VCC,如果外部有上拉电阻,开漏的IO口还可以读取外部状态。

实验—LED亮灭与闪烁

LED工作原理:当其阳极和阴极之间有大于0.7V的正向压降,LED导通,然后变亮;

与单片机的连接如下图:

限流电阻的计算公式如下图:

LED(light-emitting diode),即发光二极管,俗称LED小灯,普通的贴片发光二极管。这种二极管通常的正向导通电压是 1.8V到2.2V 之间,工作电流一般在 1mA~20mA 之间。

所以,在工程上为了安全起见,一般选择200-3k的电阻

引脚定义:

IO口初始化如下:

主函数如下:

通过以上程序便可以实现点亮LED灯;

下面实现LED灯的闪烁:

闪烁的原理是在亮灭切换中间加入一定的延时函数,我们对LED灯点亮程序做如下修改:

delay()函数定义如下:

自此就可以实现LED1闪烁,LED2常亮。

毕业回馈—89C51之GPIO使用的更多相关文章

  1. 毕业回馈-89C51之GPIO使用(流水灯)

    今天分享一个89c51制作的8位流水灯案例.使用Proteus仿真. 同上一遍文章不同.上一篇文章中对于GPIO操作主要是位操作,即sbit led1=P0^0;其中P0^0代表p0.0这个引脚,然后 ...

  2. 毕业回馈-89c51之定时器/计数器(Timer/Count)

    今天分享的是89c51系列单片机的内部资源定时器/计数器,在所有的嵌入式系统中都包含这两个内部功能. 首先先了解几个定时器/计数器相关的概念: •时钟周期:时钟周期 T 是时序中最小的时间单位,具体计 ...

  3. 毕业回馈-89C51之数码管的使用

    7段码的数码管由7个LED等共同组成,根据公共端的不同有共阴和共阳之分.现在很多数码管在7段码的基础上加了一个.即dp,其内部结构如下图所示: 公共端为LED灯的阴极,所以为共阴极接法: 公共端为阳极 ...

  4. 毕业回馈--89C51keil工程的创建

    声明:毕业回馈类博客均为大学毕业前夕同同学共享内容.为了给大学做一个总结,报答母校的栽培,才发起这样一个活动. ******************************************** ...

  5. 毕业回馈-89c52之最小系统

    今天分享一个51单片机最小系统的电路板设计(原理图+PCB) 技术手册上面对于51单片机最小系统作如下要求: 下载电路主要有以下几种: 采用RS-232转换器下载:(R1OUT-P3.0;T1IN-P ...

  6. SmartSchool CC校友录V8(毕业入世版)

    SmartSchool CC校友录V8(毕业入世版) 使用说明 CC校友录V8(毕业入世版) 主要面向毕业后在某城市工作的校友,给大家构建一个充分交流的平台,“人脉”积累是本软件的功能特色,为此淡化了 ...

  7. 从遇见到信任 | Apache Dubbo 的毕业之旅

    所谓信任,就是多一次机会. 2018年2月16日,Apache Dubbo 加入 Apache 基金会孵化器. ... 2019年5月16日,Apache 软件基金会董事会决议通过了 Apache D ...

  8. 就这么漂来漂去---一个毕业三个月的java程序员的裸辞风波

    注:这并不是一篇技术文章,而是记录了我这几个月经历的入职,裸辞,找工作的心路历程,简单介绍一个博主的情况,我是16年毕业生,校招进了一家北京的公司,java开发,和很多年轻人一样,干了一段时间,我发现 ...

  9. [转]: stm328种GPIO模式

    [原创]:这段时间开始研究stm32,今天撸着一段代码一直追,追到了GPIO口模式的枚举类型这里,遂去网上查看这8种模式到底是什么,网上一查,看到了一个答案被很多博主转载或者原创,那我也就不重复废话了 ...

随机推荐

  1. Java——复制txt文件

    将源文件复制到目标文件,同时输出源文件内容,需要提供一个源文件和目标文件路径参数(如果不存在则自动创建) public static void copyTxt(String sourceFile, S ...

  2. maven下拉项目不能同步

    maven下拉项目不能同步,如下图: 解决方法: 对项目右键,team, 选择这里 我选择第一项,有的需要根据情况选择第二项,如果点击完成后,还是不能同步代码,对项目右键,team,disconnec ...

  3. liunx 命令大全

    一.切换到用户 1.切换到根用户(root) su 2.切换到a用户 su a 二.建立用户,以及mysql的目录1.groupadd mysql #建立一个mysql的组2.useradd -r - ...

  4. for 续3

    --------siwuxie095                 (三)delims=xxx (xxx 是被定义的符号,该符号在文本中存在,将作为分隔符)     定义分隔符(用于切分文本)   ...

  5. PHP中的各种POST或GET请求

    1.表单<form> 2.fsockopen(); 3.jquery语法: $.post ($.ajax的简写) 示例代码: <!DOCTYPE html> <html& ...

  6. mysql 一次性插入上万条数据测试专用

    无聊期间 记录下 mysql 一次性插入上万条数据 测试的时候可以用 首先 创建一个表 t3 create table t3(id int)ENGINE = MyISAM; \d //    表示吧m ...

  7. Visual Studio 2017 无法打开包括文件: “QOpenGLWidget”: No such file or directory

    编译项目时,发现报错:VS 无法打开包括文件: “QOpenGLWidget”: No such file or directory,在Qt对应的目录(E:\Qt\Qt5.12.2\5.12.2\ms ...

  8. java高级工程师(一)

    一.无笔试题   不知道是不是职位原因还是没遇到,面试时,都不需要做笔试题,而是填张个人信息表格,或者直接面试     二.三大框架方面问题   1.Spring 事务的隔离性,并说说每个隔离性的区别 ...

  9. c++中冒号(:)和双冒号(::)的用法

    1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; X ...

  10. C语言命令行处理

    一.简介 getopt()函数是一个标准库调用,可允许您使用直接的 while/switch 语句方便地逐个处理命令行参数和检测选项(带或不带附加的参数).与其类似的getopt_long()允许在几 ...