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

74ls164串转并实验 本实验是用74ls164把输入的串行数转换成并行数输出,74ls164为串行输入并行输出移位寄存器,其引脚图及功能如下:
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芯片中。
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引脚功能表
2、165并串转换实验。
(1)74ls165芯片引脚图
管脚说明:
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串进并出实验
2、165并串转换实验
实验步骤
1、在74ls164串进并出实验中,用双头线连接,p3.0接插孔a/b,p3.1接插孔cp,p1.0接插孔/clr,调入程序运行,两位数码管上循环显示数字00~99。下面是74ls164串进并出程序运行仿真的情况:
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并串转换程序仿真运行的情况:
程序
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

爱普特割草机直流电机驱动方案简介
华为FreeClip耳夹耳机,开放式耳机新选择
魅族15Plus和小米MIX2S哪个最好
SRT电线水平垂直燃烧测试仪UL758介绍
三星深圳工厂裁撤 近320名员工遭遣散,遣散总额超2000万元
74ls164与单片机的串并转换(串转并\串进并出)
绝对编码器与增量编码器的比较和使用
华为荣耀8青春版,不比颜值低的性能,给我一个不爱他的理由
基于一种适用于模拟脉宽调制PWM可调光的LED驱动器NCL2801解析
SSD联盟首度参加2009台北Computex,展示SSDA
在越来越小的高压汽车设计中防止电容器电弧放电
温湿度变送器是什么,它有什么功能特点
如何利用Splashtop 远程访问提高工作效率
意法半导体为研发组织提供意法半导体THELMA MEMS制程
Shark鲨客电动拖把C3mini一分钟旋转180次,告别拖地弯腰
华为Mate Xs开启预售,国内售价16999元
QFCE数字火焰传感器构建下一代消防解决方案
小米联合创始人王川出任迅雷董事长,迎来迅雷新时代
连续引发的村民秸秆焚烧被重罚,秸秆焚烧监控的高效方法是啥!
内置晶体实时时钟(RTC)优势概述