热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言单片机串转并,74ls164与单片机的串并转换(串转并\串进并出)

74LS164串转并实验本实验是用74LS164把输入的串行数转换成并行数输出,74LS164为串行输入并行输出移位寄存器,其引脚图及功能如下ÿ

74LS164串转并实验

本实验是用74LS164把输入的串行数转换成并行数输出,74LS164为串行输入并行输出移位寄存器,其引脚图及功能如下:

c4e2fa4d611d59f0ee4ac16d37d1bbd8.png

A、B:串行输入端;

QA~QH:并行输出端;

CLR:清零端,低电平有效;

CLK:时钟脉冲输入端,上升沿有效。

实验采用单片机串行工作方式0和P1端口两种方式串行输出数据。串行口工作方式0时,数据为8位,从RXD端输出,TXD端输出移位信号,其波特率固定为Fosc/12。在CPU将数据写入SBUF寄存器后,立即启动发送。待8位数据输完后,硬件将状态寄存器的TI位置1,TI必须由软件清零。

串行口工作方式0数据/时钟是自动移位输出,用P1端口输出数据时,要编程位移数据,每输出一个数据位,再输出一个移位脉冲。

内容及步骤:

本实验需要用到单片机最小系统(F1区)、十六位逻辑电平显示(I4区)和74LS164(G3区)。

1、选用89C51单片机最小应用系统模块,用八位数据线连接74LS164的并行输出JD5G与十六位逻辑电平显示模块JD2I,将74LS164的串行输入端A/B(1和2脚)接到RXD上,CLK接到TXD上,CLR接INT0。

2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

3、打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“TH23_74164.ASM”源程序,进行编译,直到编译无误。

4、全速运行程序,观察发光二极管亮灭情况,先右移动两次,再左移动两次,然后闪烁两次。

5、也可以把源程序编译成可执行文件,用ISP烧录器烧录到89S52/89S51芯片中。

fddc3e0b7991c979d067c57dbfd3500b.png

74LS164串进并出实验及165并串转换实验

实验内容

1、用74LS164芯片扩展并行输出口,本实验中我们用74LS164扩展两个8位输出口的接口显示电路,两位数码管循环显示00~99之间的数字。

2、利用实验系统上的74LS165芯片,编程实现8位数据并行输入,串行口串行接收,并将接收的数据存放在CPU内部存储区50H~59H中,共10个数据。(并行输入数据由P1口来送入)

编程指南

1、74LS164串进并出实验。

(1)本实验中MCS-51单片机串行口工作在方式0(移位寄存器方式,用于并行I/0口扩展)的发送状态时,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD)送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入74LS164中。需要指出的是,由于741S164无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,故在某些应用场合,在74LS164的输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。

(2)74LS164引脚功能表

916aafcafe58ecbcacd440dbe588c56d.png

2、165并串转换实验。

(1)74LS165芯片引脚图

fc85e9b29162d2d71e8665aa3c0167a1.png

管脚说明:

D0throughD7--Parallelinputs

SI--Serialinput

Q7,/Q7--Dataoutputs

CLK--Clock

CKIN--Clockinhibit

S/L--(高有效)Shift/Parallel-loadcontrol(低有效)

(2)编程说明

74LS165是8位并行置入移位寄存器。当移位/置入端(S/L)由高到低跳变时,并行输入端的数据被置入寄存器;当S/L=1,且时钟禁止端(第15脚)为低电平时,允许时钟输入,这时在时钟脉冲的作用下,数据由D0到D7方向移位。如下的电路原理图中,TXD(P3.1)作为移位脉冲输出端与所有74LS165的移位脉冲输入端CP相连;RXD(P3.0)作为串行输入端与74LS165的串行输出端Q7相连;P3.2用来控制74LS165的移位与置入而同S/L相连;74LS165的时钟禁止端(15脚)接地,表示允许时钟输入。当扩展多个8位并行输入口时,两芯片的首尾(Q7与Sin)相连。

实验接线图

1、74LS164串进并出实验

79f07fbf33b80280908707a94edd0f96.png

2、165并串转换实验

c6acd375388f7450f2e62d78c594dcdf.png

实验步骤

1、在74LS164串进并出实验中,用双头线连接,P3.0接插孔A/B,P3.1接插孔CP,P1.0接插孔/CLR,调入程序运行,两位数码管上循环显示数字00~99。下面是74LS164串进并出程序运行仿真的情况:

b5023adc59f5fe9caac7cd5fef68c230.png

2、在165并串转换实验中,P1.0~P1.7接D7~D0,P3 .0接Q7,P3.1接CP,P3.2接S/L。调入程序165.ASM,编译、装载、运行。检查CPU内部存储器50H~59H中的数据是否为01H~0AH(注意刷新存储器)。下面是165并串转换程序仿真运行的情况:

17d4c7fda79fbb2e83344e3da9ddb2bd.png

程序

1、74LS164串进并出实验程序

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN: MOV 30H,#00H ;给显示缓冲区赋初值

MOV 31H,#00H

L0: SETB P1.0 ;164清零端‘CLR’置1(低电平有效)

INC 30H

MOV A,30H

CJNE A,#0AH,AA

MOV 30H,#00H

INC 31H

MOV A,31H

CJNE A,#0AH,AA

MOV 30H,#00H

MOV 31H,#00H ;使31H,30H单元内容在00~99循环变化

AA: MOV SCON,#00H ;设置串行口

MOV R7,#02H ;设置要发送的字节个数

MOV R0,#30H ;设置地址指针

MOV DPTR,#TAB

LOOP: MOV A,@R0

MOVC A,@A+DPTR ;取出字型码

MOV SBUF,A ;发送

WAIT: JNB TI,WAIT ;等待一帧发关完毕

CLR TI

INC R0 ;指向下一个字形码

DJNZ R7,LOOP

MOV R2,#30H ;调用延时子程序

LCALL DELYA

CLR P1.0 ;164清零端‘CLR’置0(低电平有效)

SJMP L0

TAB: DB 3FH,06H,5BH,04FH,66H,6DH,7DH,07H,7FH,6FH ;七段LED段选码(共阴极)

DB 77H,7CH,39H,5EH,86H,8EH,0FFH,0F1H,0C6H,092H,0BFH

DELYA: PUSH 02H ;延时子程序

DELYB: PUSH 02H

DELYC: PUSH 02H

DELYD: DJNZ R2,DELYD

POP 02H

DJNZ R2,DELYC

POP 02H

DJNZ R2,DELYB

POP 02H

DJNZ R2,DELYA

RET

END

2、165并串转换实验程序

ORG 0000H

LJMP MAIN

ORG 0500H

MAIN: MOV R7,#10 ;设置并行读入数据个数为10个

MOV R0,#50H ;设置内部RAM数据区首址,接收外部并行输入数据

MOV 40H,#00H

START: INC 40H

MOV P1,40H ;将P1口输出的数据作为74LS165的并行输入

CLR P3.2 ;并行置入数据,S/L=0

SETB P3.2 ;允许串行移位,S/L=0

RXDATA: MOV SCON,#10H ;设串行口方式0,允许接收,启动接收过程

WAIT: JNB RI,WAIT ;未接收完一帧,循环等待

CLR RI ;清RI标志,准备下次接收

MOV A,SBUF ;读入数据

MOV @R0,A ;送至RAM缓冲区

INC R0 ;指向下一个地址

DJNZ R7,START ;10个数据未读完重新并行置入

SJMP $ ;10个数据读完,程序就地循环

END ;查看CPU内部存储区50H~59H数据是否为01~0AH



推荐阅读
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了2020年计算机二级MSOffice的选择习题及答案,详细解析了操作系统的五大功能模块,包括处理器管理、作业管理、存储器管理、设备管理和文件管理。同时,还解答了算法的有穷性的含义。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
author-avatar
手机用户2502920645
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有