51单片机:IO口扩展芯片用法(74HC165,74HC595)
2023-09-11 14:19:51 时间
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^6; sbit IN_DATA = P1^7; sbit IN_CLK = P3^6; u8 read_74HC165(){ u8 indata; u8 i; IN_SG = 0; //先置入数据 _nop_(); //等待一个机器周期 IN_SG = 1; //芯片切入 移位功能 _nop_(); indata = 0; for( i = 0; i < 8; i++ ){ //在时序电路作用下,移动8次,得到一个字节数据 indata = indata << 1; IN_CLK = 0; _nop_(); indata |= IN_DATA; IN_CLK = 1; } return indata; } void main (){ u8 hc165_data; GPIO_DIG = 0x0; while( 1 ) { 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^6; //移位寄存器时钟 sbit STORE_RCLK = P3^5; //存储寄存器时钟 sbit SER = P3^4; //串口输入数据 void hc595_send_data( u8 input_data ) { u8 i; SRCLK = 1; STORE_RCLK = 1; for( i = 0 ; i < 8; i++ ){ SER = input_data >> 7; //从最高位开始传送 input_data <<= 1; //把次高位移到最高位 SRCLK = 0; //时序脉冲 _nop_(); _nop_(); SRCLK = 1; } STORE_RCLK = 0; //时序脉冲 _nop_(); _nop_(); STORE_RCLK = 1; //把寄存器的数据 送到输出口 } void main (){ u8 led_num; led_num = 0x01; //先让D11点亮 while( 1 ) { hc595_send_data( led_num ); led_num = _crol_( led_num, 1 ); delay( 50000 ); delay( 50000 ); } }
相关文章
- 如何用C#获得文件信息以及扩展信息
- VA助手添加扩展文件后缀名
- .NET常用的扩展方法整理
- 支持拼音检索的TextBox扩展控件
- [php-src]一个Php扩展的结构
- Spring Cache扩展:注解失效时间+主动刷新缓存
- 推荐一个好用的Chrome扩展,专门处理xml的,名叫XML Tree
- 找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南
- 【成为架构师课程系列】高并发系统设计的三大目标:高性能、高可用、可扩展
- C#构建可扩展的应用程序(插件)
- y82.第四章 Prometheus大厂监控体系及实战 -- 监控扩展和prometheus 联邦(十三)
- 【SQL开发实战技巧】系列(四十五):Oracle12C常用新特性☞VARCHAR2/NVARCHAR2类型最大长度由4000字节扩展到32767字节
- 【北京大学】Tensorflow2.0神经网络八股扩展、增加自制数据集、数据增强、断点续参数提取和acc、loss可视化,实现给图识物的应用程序
- 【状态估计】卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波、库图尔卡尔曼滤波、M-估计、鲁棒立方卡尔曼滤波器实现无人机位置跟踪、迎角和俯仰角跟踪, 方向角度跟踪等研究(Matlab代实现)
- Iptables防火墙tcp-flags模块扩展匹配规则