1、先讲解74LS164 移位芯片:

74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。

数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。

时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。

主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,非同步地清除寄存器,强制所有的输出为低电平。
2、
3、 仿真电路图(实验效果,由下往上 一个 LED 循环点亮 )

4、分析电路图

这里我们选择了工作方式0,来实现串行口数据的传输

74LS164 对应的8引脚 C1/-> 为 同步脉冲输入端,

9 引脚为控制端口,由 P1^0 控制,

当该引脚为 低电平 0 的时候 ,允许 RXD(P3.0)向 74LS164  的 串行数据输入端口A 和 B 输入,,但是  74LS164芯片  的8位并行输出端关闭。

当该引脚为 低电平 1 的时候 , RXD(P3.0)不准向 74LS164  的 串行数据输入端口A 和 B 输入,但 允许  74LS164芯片  的8位并行输出端。

当串行口将 8 位 串行数据发送完毕后,申请中断, 在中断服务程序中,单片机通过串行口输出下一个 8 位 数据。

//

方式0

(1)特点

1.用作串行口扩展,具有固定的波特率,为Fosf/12。

2.同步发送/接收,由TXD提供移位脉冲,RXD用作数据输入/输出通道。

3.发送/接收8位数据,低位在先。

(2)发送操作

当执行一条“MOV SBUF,A”指令时,启动发送操作,由TXD输出移位脉冲,由RXD串行发送SBUF中的数据。发送完8位数据后自动置TI=1,请求中断。要继续发送时,T1必须有指令清零。

(3)接收操作

在RI=0条件下,置REN=1,启动一帧数据的接收,由TXD输出移位脉冲,由RXD接收串行数据到A中。接收完一帧自动置位RI,请求中断。想继续接收时,要用指令清零RI。

5、参考代码:

 1 #include<reg52.h>
 2 #include<stdio.h>
 3 #define uchar8 unsigned char
 4 #define uint16 unsigned int
 5 sbit P1_0=0x90;         // 为什么要这样写,P1口的字节地址就是 0x90 ,好像这样写也没有意义啊 // sbit LED=P0^6
 6
 7 uchar8 nSendByte ;
 8
 9 void delay(uint16 i)   // 延时函数
10 {
11      uchar8 j;
12      for(; i>0;i--)
13
14      for(j=0;j<125;j++)
15       ;
16
17 }
18
19 main()
20 {
21     SCON=0x00;
22     EA=1;      // 总中断允许
23     ES=1;      // 允许串行总中断
24
25     nSendByte = 1;     // 点亮数据初始化为 0000 0001 送入 nSendByte
26     SBUF=nSendByte;     // 向 SBUF 缓冲器 写入点亮数据,启动串行发送
27     P1_0=0;
28     while(1)
29     { ; }
30
31 }
32
33 void Serial_Port( ) interrupt 4 using 0
34 {
35
36    if(T1)      // 如果 T1=1,表示1个字节串行发送完毕,这是标志位,要后来软件清0
37    {
38          P1_0=1;  // 也就是 0x90=1;??? 允许 74LS164芯片并行输出,流水灯点亮发光二极管
39
40          SBUF=nSendByte;  // 像 SBUF 写入数据,启动串行发送
41       delay(500);
42       P1_0=0;         // P1_0=0; 允许向 74LS164 芯片 串行写入
43
44       nSendByte = nSendByte<<1;
45
46       if(nSendByte==0) nSendByte=0x02;
47                                     // 判断点亮数据是否左移8次,是重新点亮数据,但自己改了一下
48       SBUF=nSendByte;              //  SBUF为 0000  0010 所以仍然接受数据,但从第二个灯开始
49
50    }
51
52    TI=0;      //     向 74LS164 芯片串行发送点亮数据
53    RI=0;      //    receive 接受中断请求标志位, 这里也要清0 ,
54 }

具体还是要自己勤于思考??多看看,多想想??

转载于:https://www.cnblogs.com/shengruxiahua/p/5079792.html

(九)串行口方式0 拓展并行输出端口 02 74LS164芯片相关推荐

  1. 【51单片机】串行通信,采用中断,串行口方式3,甲机发送,乙机接收:接收数据通过七段数码管显示。

    实验要求:甲.乙双机通过串行口进行连接,采用中断方式,编写串行口方式3下的甲.乙双机发送与接收程序. 甲机发送:发送数据存放在数组TRA[16]里面. 乙机接收:接收数据通过一个七段数码管进行显示.晶 ...

  2. 串行口方式二 波特率_一文就能看懂“串口通讯”的概念、3个通讯方式、9大注意事项...

    串行通信是数据处理设备和外围设备之间最广泛使用的信息传输方法.每个设备可能是您的个人电脑或移动设备在运行串行协议.该协议是一种安全可靠的通信形式,由源主机(发送方)和目的主机(接收方)制定一套规则.为 ...

  3. 串行口方式二 波特率_索尼相机使用教程-了解可利用的变焦方式

    变焦这个概念更多在购买镜头的时候出现,变焦镜头.定焦镜头这样. 这次是内容主要是关于如果你是定焦镜头,某些时刻需要更长焦段的解决办法,以及使用变焦镜头焦段还是不够情况下的解决办法. 目录: 一.了解索 ...

  4. 单片机串口全双工C语言,C系列单片机有一个全双工的串行口.ppt

    C系列单片机有一个全双工的串行口.ppt 80C51系列单片机有一个全双工的串行口,这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用. 2.串行控制寄存器SCON 3.电 ...

  5. MCS-51 串行口

    串行通讯的基本概念 通讯的基本方式:串行通讯与并行通讯,串行同步通讯.串行异步通讯,单工.半双工和全双工串行通讯. 并行通讯:数据各位同时传送. 串行通讯:数据一位一位顺序传送. 串行异步通讯:按照事 ...

  6. max232c语言,串行口通信(STC89C52+MAX232):串行口通信硬件设计详解

    一. STC89C52与MAX232连接原理图 二. 串行口通信原理 1. 基本通信方式 a. 并行通信 定义: 将数据字节的各位用多条数据线同时进行传送, 每一位数据都需要一条传输线, 还需要一条信 ...

  7. uart串行口通信(一)

    前言 人类生存于世,少不了沟通.沟通使人类互相认知,传递信息,提升生活品质.但然单片机也需要,不然单单一个机器,无法构成一个系统,发挥更大的力量.只有单片机与外围设备传递信息,互相反馈才会有一个完美的 ...

  8. 20.串行口通信原理及操作流程

    c 第六章:串行口通信原理及操作流程 6.1并行与串行基本通行方式 单片机通信是指单片机与计算机或单片机与单片机之间的信息交换,后者的通信通常用的较多. 通信有并行和串行龄种方式,在单片机系统以及现代 ...

  9. 51单片机串行口程序c语言编程,单片机C语言编程串行口通讯.ppt

    单片机C语言编程串行口通讯 第7章 MCS-51单片机串行口 第7章 MCS-51单片机串行口 目 录 7.1 串行通信基本知识 7.2 串行口结构及控制 7.3 串行口工作方式 7.4 串行口应用举 ...

最新文章

  1. atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
  2. java画满天星_java_java实现的满天星效果实例,本文实例讲述了java实现满天星 - phpStudy...
  3. POJ 3268 迪杰斯特拉图论 置换找最短路
  4. 西雅图SQL PASS之旅
  5. 二叉树前序、中序、后序遍历求法
  6. 声明一个队列,并且指定TTL
  7. Flex 常见问题解答(from MM)
  8. Fast Image Cache – iOS 应用程序高性能图片缓存
  9. PAT甲题题解-1106. Lowest Price in Supply Chain (25)-(dfs计算树的最小层数)
  10. 按关键字搜索自己的CSDN博客
  11. 几种分段多项式曲线插值(拟合)的方式(含贝塞尔曲线和B样条[B-spline])
  12. VS2015+WDK10+Win10 Win7以上系统驱动发开环境搭建
  13. 操作系统Clock算法
  14. Tomcat启动页面中文乱码解决方法
  15. Windows设置眼睛保护色
  16. 外螺纹对照表_螺纹符号对照表[1]
  17. 解决spring源码构建时缺失spring-cglib-repack和spring-objenesis-repack问题
  18. 黄金期货对比现货黄金有哪些优势
  19. python定义一个字符串数组赋值_Python ctypes:传递一个字符串数组
  20. 工作总结与个人职业经历

热门文章

  1. 复利计算2.0 3.0
  2. 使用gensim中的Word2Vec报错ValueError
  3. centos平台基于snort、barnyard2以及base的IDS(入侵检测系统)的搭建与测试及所遇问题汇总
  4. 自定义控件--最简单九宫格解锁
  5. Android HandlerThread例程
  6. 直观理解神经网络和感知机
  7. 魅族回应被吉利收购:已签署协议;腾讯下架QQ影音所有版本;PyPI多个软件包因拼写错误包含后门|极客头条...
  8. MongoDB学习总结(二) —— 基本操作命令(增删改查)
  9. 1次演讲13次提到技术,马云在阿里巴巴年会上都说了什么?
  10. bzoj5191 [Usaco2018 Feb]Slingshot(离线+树状数组)