51单片机之IO口扩展

发布者:WanderlustHeart最新更新时间:2020-04-29 来源: eefocus关键字:51单片机  IO口扩展  74HC165芯片  并行转串行 手机看文章 扫描二维码
随时随地手机看文章

我们都知道通信从大的方面有两种:串行和并行。串行的最大优点是占用总线少,但是传输速率低;并行恰恰相反,占用总线多,传输速率高。市面上有很多这样的芯片,有串入并出的(通俗讲就是 一个一个进,最后一块出来),有并入串出的(相对前者而言)。具体用哪种类型要根据我们得实际情况。比如利用单片机显示数码管单纯的显示一个数码管如果仅仅是为了显示 那么动用单片机一个端口(如P0或P1/P2/P3)那没有什么,当然这里我说的数码管是8段的(如果利用BCD类型 16进制数码管那么只需四个即可)就拿51类型的单片机来说,总共32个I/O口,一般如果不是做太大的工程是完全够用的,但有些时候你会恨单片机怎么不多长几条“腿”,怎么省还是不够用。这个时候就需要用到并转串或者串转并芯片来进行IO口的扩展,74HC165就是一种并行转串行的芯片。


74HC165是一款高速CMOS器件,74HC165遵循JEDEC标准no.7A。74HC165引脚兼容低功耗肖特基TTL(LSTTL)系列。        


74HC165芯片有8位移位寄存器(并行输入,互补串行输出)   


74hc165特性

8位同步并行输入


异步串行输出


兼容JEDEC标准no.7A


ESD保护


简要说明

54/74165为8位移位寄存器,其主要电特性的典型值如下:

74hc165基本参数

电压:2.0~6.0V


驱动电流:+/-5.2mA


传输延迟:16ns@5V


最高频率:56MHz@5V


逻辑电平:CMOS


工作温度:-40~+85℃


封装:SO16,SSOP16,DIP16,TSSOP16


逻辑电路图

真值表:

时序图:

 

74HC165芯片的芯片引脚图:

引脚功能介绍

1、CLK,CLK INH : 时钟输入端(上升沿有效)

2、A-H :并行数据输入端

3、SER :串行数据输入端,为串行输入端 、 将数据串行进入到寄存器中、在每一个时钟的上升沿向右移动一位,利用这种特性,只要把 QH输出连接到下一级的SER输入 既可实现并转串扩展

4、QH : 输出端

5、!QH :互补输出端

6、SH/!LD:移位控制/置入控制(低电平有效), 为低电平时 并行数据进入移位寄存器中,为高电平时并行数据不能传进移位寄存器


①当输入端(SH/LD)为低:


从D0到D7口输入的并行数据将被异步地读取进寄存器内,然后通过DS输出。


②当输入端(SH/LD)为高:


数据将从DS(10引脚)输入端串行进入寄存器,在每个时钟脉冲的上升沿向右移动一位。利用这种特性,只要把Q7输出绑定到下一级的DS输入,即可实现并转串扩展。(在我们的开发板,DS端是悬空的),通过时钟管脚,上升沿有效,在每个时钟脉冲的上升沿向右移动一位(D0→D1→D2→D3→…→D7)一位一位将数据往外读出和移出。


芯片工作方法:  


其实看一个芯片是如何使用的,不只是看引脚功能,更重要的是要看时序图和真值表,从其中我们可以详细的了解到它是如何使用的,然后转化成程序代码即可。


从上面我们的真值表和时序图中我们要特别注意几个端口的变化,真值表中SH/LD只有在高电平的时候方才有效;CLK,CLK INH只有当其中一个为低电平的时候,另一个时钟才能正确的输入,这是非常重要的(一般的我们在使用时,可以将其中的一个直接接地,另一个做时钟输入端口使用)。但是我们做事要细心,要一丝不苟,从时序图中我们看到SH/LD有一个负脉冲这是什么缘故呢?在程序设计中如果忽略了此处,那么注定结果是悲剧的。从SH/LD的全称是: SHIFT/LOAD 这说明它有两种功能( SHIFT英文意思是移位,LOAD是装载)  ,故美其名曰: 移位控制(高电平有效)/置入控制端口(低电平有效)。在单片机接收数据前,必须将该引脚拉低,目的是为了将并行数据A--H上得数据装载到内部寄存器中,这里体现的时LOAD功能;接下来在接收数据的过程中必须将该引脚拉高,目的是为了使寄存器中的数据可以移动,从而从QH或QN'中移入单片机。这里体现的是SHIFT功能。74hc165中最重要的一个引脚就是该引脚 至于说时钟电路就显得逊色多了。我们只需将单品机的某一个端口拉低或抬高即可,这样数据就一步一步的被接收了。请务必记得上升沿有效。


接下来看下使用到的开发板相关模块的电路原理图:

开发板上的165并行输入端口 连接的IO口是与8个独立键盘相互共用,可以做独立键盘的输入扩展、QH串行输出端口是连接了P17引脚 加了个短路冒不用的时候可以断开避免影响P17的电平。 每次按键按下时,相应的发光二极管就会被点亮。


硬件连线图:

 

示例程序如下:


   #include "reg52.h"

   #include "intrins.h"

 

 

   typedef unsigned char u8;

   typedef unsigned int u16;

 

   #define GPIO_LED P0

   

   sbit IN_PL = P1^6;  //SHIFT/!LOA引脚

   sbit IN_Data = P1^7; // QH数据输出引脚

   sbit SCK = P3^6;  //CLOCK引脚

 

   u8 Read74HC165()

   {

   u8 indata;

   u8 i;

 

   IN_PL = 0;//装载8位并行数据

   _nop_();

   IN_PL = 1;//转换8位并行数据为串行数据

   _nop_();

 

   indata = 0;

   for(i = 0; i < 8; i ++) //将8个串行数据存入数组indata中

   {

    indata = indata << 1;//开始时,indata数组先左移一位,以后每个循环左移一次

SCK = 0;//时钟低电平到来后,并行数据开始转换串行数据

_nop_();

    

indata |= IN_Data; //将转换完成的串行数据一位位存入数组

SCK = 1;  //时钟变为高电平,再次变为低电平时,开始传出下一位串行数据

   }

   return indata;

   }


   void main()

   {

   u8 h165Value;

   while(1)

   {

   h165Value = Read74HC165();

   if(h165Value != 0xff)

   {

    GPIO_LED = ~h165Value; //根据传出的串行数据来点亮相应的发光二极管

   }

   }

   }

关键字:51单片机  IO口扩展  74HC165芯片  并行转串行 引用地址:51单片机之IO口扩展

上一篇:C51单片机————总线与系统扩展
下一篇:51单片机ucos ii任务切换汇编代码分析(1)

推荐阅读最新更新时间:2024-11-11 10:15

51单片机开发系列二_1602字符液晶显示
从51单片机入门,对流水灯有了一定的认识后,就可以进入学习显示类的外设驱动,因为学习时往往需要直接验证、跟踪结果,显示类的外设可以把代码运行情况以非常直观的方式反馈回来。因此,笔者此处首先分析讲解1602字符型液晶的使用。 1. 1602字符型液晶概述 1602字符型液晶能够同时显示16列2行共32个字符信息。其内部已经存储了不同的点阵字符图形,包括阿拉伯数字、英文大小写、常用符号等。每个点阵字符图形都有一个固定的代码,与我们使用的ASCII码是一致的。例如大写英文字母’A’的代码为0x41,只需在需要显示的地址位置写入数据0x41即可显示出字符’A’。可用于一些简单信息交互的设计。 2. 硬件原理图 1602需三根控制线
[单片机]
<font color='red'>51单片机</font>开发系列二_1602字符液晶显示
51单片机+74HC595驱动数码管程序
这里是电路图: 完整的源码和图纸下载地址: http://www.51hei.com/bbs/dpj-20392-1.html 下面是51单片机驱动74hc595芯片的程序: #include reg52.h //包含51单片机的头文件 #include stdio.h #define uint unsigned int #define uchar unsigned char //sbit sin_595 =P1^0; //sbit rclk_595 =P1^1; //sbit sclk_595 =P1^2; //sbit s_clr =P1^3; sbit a_cp_595
[单片机]
<font color='red'>51单片机</font>+74HC595驱动数码管程序
51单片机状态机键盘检测
#include reg52.h #define uint unsigned int #define uchar unsigned char sbit key1=P3^2; typedef enum keystate{initstate,affirmstate,singlestate,repeatstate};// typedef enum±íʾ¶¨ÒåÁËÒ»¸öö¾ÙÐ͵ÄÊý¾Ý½á¹¹ ²»¸³ÖµµÄ»° ĬÈÏ {0 1 2 3} // ³õʼ״̬£¬È·ÈÏ״̬£¬µ¥´Î´¥·¢×´Ì¬£¬Á¬Ðø´¥·¢×´Ì¬ typedef enum ledstate{D0,D1,D2,D3,D4,D5
[单片机]
51单片机-串口&EEPROM
1.题目要求 作为本教程最后一个例程,我们也不打算写的太复杂,这次还是运用串口的知识,实现用串口往EEPROM写入数据,同时也能用串口读出EEPROM里的数据出来显示在电脑端的窗口上。根据前几讲的串口与液晶屏的代码理解,这一讲的例程也不难理解。 2.main.c测试代码 #include reg52.h #include function.h //详见第六章第8讲 #include uart.h //详见第十章第4讲 #include iic.h //详见第十二章第3讲 u8 uart_i=0; u8 pdata RXDBUF ; void COUNT_TIMES() { TMOD&=0xF0;
[单片机]
51单片机温度计2.0版ds18b20+0.96寸OLED IIC显示
51单片机温度计LCD1602显示成功,于是又挑战了OLED显示 main.c #include oled.h #include ds18b20_1.h void Timer0Init(void); //void Gao_Wen(void); //void GaoDiInit(void); sbit Deng=P1^0; //LED灯 sbit FengMing=P1^1; //蜂鸣器 sbit GD=P3^0; //两个功能:高限温减小,关闭LED灯 sbit GF=P3^1; //两个功能
[单片机]
51单片机设计解决电动车在跷跷板上的运行和控制问题
1.前 言 本设计为参加电子设计竞赛而作,较好地解决了电动车在跷跷板上的运行和控制问题,系统结构比较简单,控制比较准确。 2.系统方案设计、比较与论证 根据题目的基本要求,设计任务主要完成电动车在规定时间内按规定路径稳定行驶,并能具有保持平衡功能,同时对行程中的有关数据进行处理显示。为完成相应功能,系统可以划分为以下几个基本模块:电动机驱动模块、寻迹线探测 模块、平衡状态检测模块、信息显示模块。见图1 图1 系统框图 2.1寻迹线探测模块 探测路面黑色寻迹线的原理:光线照射到路面并反射,由于黑线和白纸的反射系数不同,可根据接受到反射光强弱由 传感器 产生高低 电平 并最终通过 单片机 判断是否到
[单片机]
用<font color='red'>51单片机</font>设计解决电动车在跷跷板上的运行和控制问题
51单片机-中断的实验现象
1.卡顿的流水灯 我们用一个实验现象来再一次理解中断函数。 在主函数里我们使八盏灯不停地左右快速流水,此时若是被外部因素触发了中断函数的执行,我们就在中断函数里实现蜂鸣器响一下,看看此时主函数里的流水灯是什么现象。 代码下载进去,我们随意按K4,观察流水灯。 #include reg52.h #include function.h //详见第六章第8讲 void main() { u8 i,dir; IT1 = 1; //下降沿触发模式 EX1 = 1; EA = 1; LED_Init();//初始化LED硬件模块 KEY_Init();//初始化按键功能模块
[单片机]
基于51单片机的光照强度检测系统
一.硬件方案 本设计采用单片机作为数据处理与控制单元,为了进行数据处理,通过光敏电阻来感应光强弱变化,经过ADC0804转换,直接将数字信号送入到单片机中进行数据处理。单片机数据处理之后,将光照强度发送到LED进行显示,并通过和LED进行声光。 主要由51单片机+最小系统+数码管显示模块+光线检测模块+0804模数转换模块+按键模块;如图: 二.设计功能 (1)采用四位数码管显示光线值; (2)采用光敏电阻检测光线,ADC0804模数转换芯片将模拟量转换成数字量; (3)光强分0-600等级。 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (2)Protues仿真图如下: 四.软件设计 (1)程
[单片机]
基于<font color='red'>51单片机</font>的光照强度检测系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved