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、参考代码:

 #include<reg52.h>
#include<stdio.h>
#define uchar8 unsigned char
#define uint16 unsigned int
sbit P1_0=0x90; // 为什么要这样写,P1口的字节地址就是 0x90 ,好像这样写也没有意义啊 // sbit LED=P0^6 uchar8 nSendByte ; void delay(uint16 i) // 延时函数
{
uchar8 j;
for(; i>;i--) for(j=;j<;j++)
; } main()
{
SCON=0x00;
EA=; // 总中断允许
ES=; // 允许串行总中断 nSendByte = ; // 点亮数据初始化为 0000 0001 送入 nSendByte
SBUF=nSendByte; // 向 SBUF 缓冲器 写入点亮数据,启动串行发送
P1_0=;
while()
{ ; } } void Serial_Port( ) interrupt using
{ if(T1) // 如果 T1=1,表示1个字节串行发送完毕,这是标志位,要后来软件清0
{
P1_0=; // 也就是 0x90=1;??? 允许 74LS164芯片并行输出,流水灯点亮发光二极管 SBUF=nSendByte; // 像 SBUF 写入数据,启动串行发送
delay();
P1_0=; // P1_0=0; 允许向 74LS164 芯片 串行写入 nSendByte = nSendByte<<; if(nSendByte==) nSendByte=0x02;
// 判断点亮数据是否左移8次,是重新点亮数据,但自己改了一下
SBUF=nSendByte; // SBUF为 0000 0010 所以仍然接受数据,但从第二个灯开始 } TI=; // 向 74LS164 芯片串行发送点亮数据
RI=; // receive 接受中断请求标志位, 这里也要清0 ,
}

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

(九)串行口方式0 拓展并行输出端口 02 74LS164芯片的更多相关文章

  1. (九)串行口方式0 拓展并行输入端口 74LS165 芯片

    74LS165芯片讲解: 外接一个同步移位寄存器 74LS165芯片,拓展一个 8 位 并行输入端口的电路, 可将接在74LS165芯片的8个开关 S0——S7 的状态 通过 串行口方式 0 读到 单 ...

  2. 80C51串行口

    串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度 单工.半双工.全双工 单工数据传输只支持数据在一个方向上传输 半双工数据传输允许数据在两个方向上传输,但是,在 ...

  3. setserial - 取得/设置 Linux 串行口的信息

    总览 setserial [ -abqvVWZ] 设备 [ 命令参数一 [ 设备变元参数 ] ] ... setserial -g [-abGv ] 设备一 ... 描述 setserial 是一个用 ...

  4. 十天学会单片机Day4串行口通信

    并行与串行基本通信方式 1.并行通信方式 通常是将数据字节的各位用多条数据线同时进行传送. 并行通信控制简单.传输速度快:由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难. 2.串行通 ...

  5. STM32学习笔记(五) USART异步串行口输入输出(轮询模式)

    学习是一个简单的过程,只要有善于发掘的眼睛,总能学到新知识,然而如何坚持不懈的学习却很困难,对我亦如此,生活中有太多的诱惑,最后只想说一句勿忘初心.闲话不多扯,本篇讲诉的是异步串行口的输入输出,串口在 ...

  6. DC平衡双向控制串行器 转接IC GM8913:LVTTL转FPD-LINK III芯片

    1 概述     GM8913型DC平衡双向控制串行器,其主要功能是实现将10或12位并行控制信号和一路时钟信号串行为一路2.8Gbps高速串行数据:同时接收低速通道信号实现模式配对的功能.芯片内部集 ...

  7. windows 2003 server 远程桌面禁用本地资源,磁盘驱动器,串行口,复制文件

    首先进入组策略编辑器(开始-运行-gpedit.msc) 不要让用户在远端桌面和本地直接拷贝文件在远端桌面上进入它的组策略编辑器在 计算机配置->管理模板->Windows组件->终 ...

  8. 基于51的串行通讯原理及协议详解(uart)

    串行与并行通讯方式并行:控制简单,传输速度快.线多,长距离成本较高且同时接受困难.串行:将数据字节分成一位一位的行驶在一条传输线上进行传输.如图:   同步与异步串行通讯方式同步串行通讯方式:同步通讯 ...

  9. COM口,串行通讯端口,RS-232接口 基础知识

    COM口即串行通讯端口. COM口的接口标准规范和总线标准规范是RS-232,有时候也叫做RS-232口.电脑上的com口多为9针,最大速率115200bps.通常用于连接鼠标(串口)及通讯设备(如连 ...

随机推荐

  1. GO语言练习:struct基础练习

    1.代码 2.运行 1.代码 package main import "fmt" type Rect struct { x, y float64 width, height flo ...

  2. 基于 Node.js 平台,快速、开放、极简的 web 开发框架。

    资料地址:http://www.expressjs.com.cn/ Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架. $ npm install express -- ...

  3. 附件上传 使用javascript

    <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat=&quo ...

  4. IE6及以上版本fixed问题解决方案,页面右下角固定页面,可以最大化、最小化、正规显示

    在窗口固定位置显示内容使用fixed,但是 IE 6 不支持,后来我搜了很多方法,都没有作用,后来类比着一个网站的代码,使用absolute .z-index解决了问题. 页面div结构: <d ...

  5. 用CSS设置Table的细边框的最好用的方法

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. hdu N皇后问题

    此题是很基本的dfs的题目 ,但是要打表,否则会超时. 这题的思路就是从第一行一直放到第n行,因此行方面的判断就可以省略了.因此只要判断列方面和斜线方面是否满足条件,列方面用一个vis数组来记录是否已 ...

  7. c# 函数练习

    1.out的使用 2.100以内与7无关的数(个位数是7,十位数是7,7的倍数) 每日一句:不求与人相比,但求超越自己,要哭就哭出激动的泪水,要笑就笑出成长的性格!

  8. zju(2)vivi的配置编译和固化

    1.实验目的 熟悉vivi的知识和应用并使用交叉编译平台vivi引导并烧写到目标板. 二.实验内容 1. 在Ubuntu下配置vivi并进行交叉编译: 2. 将编译好的vivi烧写到目标板上. 三.主 ...

  9. xshell的快捷键(非常实用)

    删除 ctrl + d      删除光标所在位置上的字符相当于VIM里x或者dl ctrl + h      删除光标所在位置前的字符相当于VIM里hx或者dh ctrl + k      删除光标 ...

  10. 实验四 Android开发基础

    实验四 Android开发基础 实验内容 1.安装Android Studio 2.运行安卓AVD模拟器 3.使用安卓运行出虚拟手机并显示HelloWorld以及自己的学号 (一)SDK的安装 (二) ...