(九)串行口方式0 拓展并行输出端口 02 74LS164芯片
1、先讲解74LS164 移位芯片:
74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。
数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
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芯片的更多相关文章
- (九)串行口方式0 拓展并行输入端口 74LS165 芯片
74LS165芯片讲解: 外接一个同步移位寄存器 74LS165芯片,拓展一个 8 位 并行输入端口的电路, 可将接在74LS165芯片的8个开关 S0——S7 的状态 通过 串行口方式 0 读到 单 ...
- 80C51串行口
串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度 单工.半双工.全双工 单工数据传输只支持数据在一个方向上传输 半双工数据传输允许数据在两个方向上传输,但是,在 ...
- setserial - 取得/设置 Linux 串行口的信息
总览 setserial [ -abqvVWZ] 设备 [ 命令参数一 [ 设备变元参数 ] ] ... setserial -g [-abGv ] 设备一 ... 描述 setserial 是一个用 ...
- 十天学会单片机Day4串行口通信
并行与串行基本通信方式 1.并行通信方式 通常是将数据字节的各位用多条数据线同时进行传送. 并行通信控制简单.传输速度快:由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难. 2.串行通 ...
- STM32学习笔记(五) USART异步串行口输入输出(轮询模式)
学习是一个简单的过程,只要有善于发掘的眼睛,总能学到新知识,然而如何坚持不懈的学习却很困难,对我亦如此,生活中有太多的诱惑,最后只想说一句勿忘初心.闲话不多扯,本篇讲诉的是异步串行口的输入输出,串口在 ...
- DC平衡双向控制串行器 转接IC GM8913:LVTTL转FPD-LINK III芯片
1 概述 GM8913型DC平衡双向控制串行器,其主要功能是实现将10或12位并行控制信号和一路时钟信号串行为一路2.8Gbps高速串行数据:同时接收低速通道信号实现模式配对的功能.芯片内部集 ...
- windows 2003 server 远程桌面禁用本地资源,磁盘驱动器,串行口,复制文件
首先进入组策略编辑器(开始-运行-gpedit.msc) 不要让用户在远端桌面和本地直接拷贝文件在远端桌面上进入它的组策略编辑器在 计算机配置->管理模板->Windows组件->终 ...
- 基于51的串行通讯原理及协议详解(uart)
串行与并行通讯方式并行:控制简单,传输速度快.线多,长距离成本较高且同时接受困难.串行:将数据字节分成一位一位的行驶在一条传输线上进行传输.如图: 同步与异步串行通讯方式同步串行通讯方式:同步通讯 ...
- COM口,串行通讯端口,RS-232接口 基础知识
COM口即串行通讯端口. COM口的接口标准规范和总线标准规范是RS-232,有时候也叫做RS-232口.电脑上的com口多为9针,最大速率115200bps.通常用于连接鼠标(串口)及通讯设备(如连 ...
随机推荐
- 七、考反映小游戏《苹果iOS实例编程入门教程》
该app为应用的功能为一个简单的考反应游戏 纲要:-UIButton, UILabel, UIImageView 的运用:-利用rendom增加游戏可玩性: 游戏说明: 在按下开始游戏后,分为三盏的指 ...
- 一个不错的安卓下ssh客户端
1.使用安卓作为ssh客户端连接ssh服务器 软件名:JuiceSSH 版本 :1.4.8 大小 :4.22 M 百度网盘地址:JuiceSSH_1.4.8.apk 或 JuiceSSH_1 ...
- Linux查看操作系统时间
date命令的功能是显示和设置系统日期和时间. 该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式) date 设置时间格式 命令中各选项的含义分别为: -d datestr ...
- HTML中忽略的小问题
1.padding和margin 例子 1 padding:10px 5px 15px 20px;(上,右,下,左) 上内边距是 10px 右内边距是 5px 下内边距是 15px 左内边距是 20p ...
- UML(一):类、接口、抽象类
一.类之间的关系 1.继承(包括继承类+接口).聚合.组合.依赖.关联: 1.1 类图表示: 第一行:类名(如果是抽象类斜体) 第二行:特性(字段和属性) 第三行:操作(方法或行为) 操作和特性都分三 ...
- js控制滚动条平滑滚动到制定位置
http://www.daixiaorui.com/read/92.html 滚动到顶部: $('.scroll_top').click(function(){$('html,body').anima ...
- Codeforces Beta Round #78 Div. 1 A
题目链接:http://codeforces.com/contest/98/problem/A 题意大意:给你6种颜色,这6种颜色可能相同也可能不同,把这几种颜色全涂在一个正方体表面,问有多少种涂法( ...
- 2016HUAS暑假集训训练题 D - Find a way
F ...
- Linux_shell脚本_遍历文件夹下所有文件
参考:lunar1983的专栏 实现:从给定目录树中grep出含制定字符串的行,并给出所在路径 代码如下所示: #!/bin/sh - if [ $# -ne 2 ] then echo " ...
- GridView的详细用法
l GridView无代码分页排序 l GridView选中,编辑,取消,删除 l GridView正反双向排序 l GridView和下拉菜单DropDownList结合 l GridView和Ch ...