IO口扩展芯片,主要是解决单片机IO口太少。

74HC165:数据从并转串

74HC595:数据从串转并

两种芯片,都是通过时序电路,加上移位功能,进行数据传输

74HC165:数据从并转串。以下实例,实现8个独立按键,控制数码管的8段

#include <reg52.h>
#include <intrins.h> typedef unsigned char u8;
typedef unsigned int u16; void delay( u16 i ){
while( i-- );
} #define GPIO_DIG P0 sbit IN_SG = P1^;
sbit IN_DATA = P1^;
sbit IN_CLK = P3^; u8 read_74HC165(){
u8 indata;
u8 i;
IN_SG = ; //先置入数据
_nop_(); //等待一个机器周期
IN_SG = ; //芯片切入 移位功能
_nop_(); indata = ;
for( i = ; i < ; i++ ){ //在时序电路作用下,移动8次,得到一个字节数据
indata = indata << ;
IN_CLK = ;
_nop_(); indata |= IN_DATA;
IN_CLK = ;
}
return indata;
} void main (){
u8 hc165_data;
GPIO_DIG = 0x0;
while( ) {
hc165_data = read_74HC165();
if( hc165_data != 0xFF ) {
GPIO_DIG = ~hc165_data;
}
}
}

74HC595:数据从串转并,以下程序,实现流水灯效果

#include <reg52.h>
#include <intrins.h> typedef unsigned char u8;
typedef unsigned int u16; void delay( u16 i ){
while( i-- );
} #define GPIO_DIG P0 sbit SRCLK = P3^; //移位寄存器时钟
sbit STORE_RCLK = P3^; //存储寄存器时钟
sbit SER = P3^; //串口输入数据 void hc595_send_data( u8 input_data ) {
u8 i;
SRCLK = ;
STORE_RCLK = ;
for( i = ; i < ; i++ ){
SER = input_data >> ; //从最高位开始传送
input_data <<= ; //把次高位移到最高位 SRCLK = ; //时序脉冲
_nop_();
_nop_();
SRCLK = ;
}
STORE_RCLK = ; //时序脉冲
_nop_();
_nop_();
STORE_RCLK = ; //把寄存器的数据 送到输出口
} void main (){
u8 led_num;
led_num = 0x01; //先让D11点亮
while( ) {
hc595_send_data( led_num );
led_num = _crol_( led_num, );
delay( );
delay( );
}
}

51单片机:IO口扩展芯片用法(74HC165,74HC595)的更多相关文章

  1. 如何检测 51单片机IO口的下降沿

    下降沿检测,说白了就是满足这样一个逻辑,上次检测是1,这次检测是0,就是下降沿. 从这个条件可知,要确保能够正确检测到一个下降沿,负脉冲的宽度,必须大于一个检测周期,当负脉冲宽度小于一个检测周期,就有 ...

  2. 关于51单片机P0口的结构及上拉问题

    1.P0作为地址数据总线时,V1和V2是一起工作的,构成推挽结构.高电平时,V1打开,V2截止:低电平时,V1截止,V2打开.这种情况下不用外接上拉电阻.而且,当V1打开,V2截止,输出高电平的时候, ...

  3. 51单片机GPIO口模拟串口通信

    51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于:   分类: 深入C语言(20) 作者同 ...

  4. 单片机IO口驱动能力

    以STM32的IO口为例,最大的输出电流和灌入电流在芯片手册上都有说明.单个IO口一般都是十几mA到几十mA,同时总的VDD电流也有限制,大概为150mA.所以单片机驱动外设时,如果不是信号型而是功率 ...

  5. 关于51单片机IO引脚的驱动能力与上拉电阻

    单片机的引脚,可以用程序来控制,输出高.低电平,这些可算是单片机的输出电压.但是,程序控制不了单片机的输出电流. 单片机的输出电流,很大程度上是取决于引脚上的外接器件. 单片机输出低电平时,将允许外部 ...

  6. 关于51单片机IO引脚的驱动能力与上拉电阻设计方案

    转载自:http://bbs.dianyuan.com/article/20312-2 单片机的引脚,可以用程序来控制,输出高.低电平,这些可算是单片机的输出电压.但是,程序控制不了单片机的输出电流. ...

  7. STM32系列单片机IO口模式设置

    STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入和 ...

  8. 实验1 单片机IO口应用及数码管显示

    1.   单片机驱动蜂鸣器的实验: a)         说明:Lab51单片机实验板的蜂鸣器连接到单片机的P1.5 b)        基本要求:控制蜂鸣器每2秒响0.5秒. #include &l ...

  9. 单片机小白学步系列(二十) IO口原理

    IO口操作是单片机实践中最基本最重要的一个知识,本篇花了比較长的篇幅介绍IO口的原理. 也是查阅了不少资料,确保内容正确无误,花了非常长时间写的. IO口原理原本须要涉及非常多深入的知识,而这里尽最大 ...

随机推荐

  1. java单元测试,ssh(spring,struts2,hibernate)框架整合junit4

    step1:导入必须的包,如果是maven项目,直接在pom.xml文件里加入以下依赖包: <dependency> <groupId>junit</groupId> ...

  2. Javascript高级编程学习笔记(54)—— DOM2和DOM3(6)范围选择

    范围 为了让开发人员更加方便地控制页面“DOM2级遍历和范围”模块定义了“范围”接口 通过该接口开发人员可以选择文档中的一个区域,而不必考虑元素的界限 在常规操作不能有效地修改文档时,使用范围往往可以 ...

  3. 第46节:Java当中的常量池

    Java当中的常量池 在Java虚拟机jvm中,内存分布为:虚拟机堆,程序计数器,本地方法栈,虚拟机栈,方法区. 程序计数器是jvm执行程序的流水线,是用来存放一些指令的,本地方法栈是jvm操作系统方 ...

  4. Oracle和Mysql语法异同整理笔记

    目录 (1) 模糊匹配 (2) 删除数据 (3) 时间函数 (4) 关键字问题 (5) 递归查询 (6) 排序问题 (7) 空值返回0 (8) 取最大值 (9) 列转换函数 (10) 类型转行函数 @ ...

  5. hashMap,hashTable,concurrentHashMap区别

    HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相 ...

  6. 程序员IT计算机中常见英语单词

    abstract 抽象的 abstract base class (ABC)抽象基类 abstract class 抽象类 abstraction 抽象.抽象物.抽象性 access 存取.访问 ac ...

  7. 写了2年python,知道 if __name__ == '__main__' 什么意思吗?

    相信刚接触Python的你一定有过如此经历,把所有的代码都写在 if __name__ == '__main__'下,因为有人告诉你,这样比较符合 Pythonista 的代码风格. 殊不知这段代码的 ...

  8. 推荐一篇关于java集合的博文,写的很nice

    这也是我自己在网上看到的一篇博文,作者的博文都很棒,以后还会持续为大家推荐好的博文,只要大家不骂我只会转别人的博文,自己不会写,其实这些都是基础,前辈们已经在实践中总结的很细很全了,所以也没必要去总结 ...

  9. stack源码

    stack概述 stack是一种先进后出的数据结构,它只有一个出口,允许新增元素.移除元素.取得最顶端元素,但每次只能处理顶端元素,也就是说,stack不允许遍历行为. stack定义 以某种既有容器 ...

  10. ASP.NET Core身份认证服务框架IdentityServer4(2)-整体介绍

    一.整体情况 现代应用程序看起来更像这个: 最常见的相互作用: 浏览器与Web应用程序的通信 Browser -> Web App Web应用程序与Web API通信 基于浏览器的应用程序与We ...