1.串行通信原理
单片机总共32个I/O口,若直接控制LED数码管,最多只能控制4位。利用单片机同步串行通信功能和串并转换器的串人串出功能,只要用单片机2个口线,就可以控制多位LED数码管。这里结合多位LED数码管的控制介绍单片机同步串行输出通信。
同步串行输出通信用两根导线,其中TXD(P3.1)相当于“写”信号线,叫做同步时钟线,RXD(P3.0)是数据线,见下图。
2.串入并出寄存器
串人并出寄存器型号很多,像74HC164、74HCT164、74LS164和CD4014都是串入并出寄存器。
74LS164如右图所示,其引脚功能如下:
①,②脚:A、B串行输入数据DATA1,DATA2,通常合在一起作为串行数据输入DATA使用;③~⑥、(10)~(13)脚:并行输出,其中(13)脚兼作串行输出;⑧脚:CLK,CLOCk,同步时钟脉冲,输入,正跳变有效;⑨脚:CLR,Clear,移位寄存器清零信号,输入,低电平有效;⑦脚:CND,电源地;(14)脚:UCC,+5v电源输入。
74××164芯片内部主要功能部件是正跳变触发、低电平清零的8位移位寄存器,其中正跳变触发正好符合51单片机要求。74××164多个级联对,13脚QH即是8位并行输出的一位,又兼作串行输出,即前一片芯片的串行输出信号13脚接后一片芯片的串行输入信号l、2脚,见下图。
74××164芯片的逻辑功能:8脚CLK端子上的电压出现一个正跳变,内部8位移位寄存器就按照的顺序移动一位。也就是说,把串行输入数据S锁存在QA中,原有的QA~G依次移动一位,而QH被刷新。74××164与LED数码管的连接见下表。
3.单片机与串入并出寄存器的连接
74××164芯片与51单片机的连接见下图,单片机要一位一位移送,编程序很费力。其实不然,SBUF是51单片机的一个负责串行通信的特殊功能寄存器。51单片机执行一条串行发送指令MOVSBUF,A后,不仅把数据从源传送到SBUF,而且自动启动一次串行发送,在以下的8个机器周期内依次将SBUF中的8位数据通过RXD线输出。
下图中单片机直接控制6个位数码管,单片机串行输出接到最低位74××164芯片串行输入。连接规律是,较低位串行输出接到较高位串行输入。这样一种硬件设计,有利于软件设计时不显示高位无用的O,使显示器简洁利落。
51单片机的串行发送指令MOVSBUF,Source要执行两个任务,其一是把数据源Source送到发送缓冲器SBUF中;其二是启动一次串行输出,将发送缓冲器中的一个字节8位二进制数据按照从低位到高位的顺序,伴随单片机TXD线的同步脉冲依次送到串行数据线RXD上,并且由同步脉冲上升沿依次将各位二进制数据锁存到所连接的串入并出缓冲器中。
根据下图电路制作的6位LED电子钟实物如右图所示(略)。6片164芯片并排安装,整个电路板尺寸为73×73mm2.相当紧凑。
虽然串行发送指令MOVSBUF,Source中的字节传送任务只要2个机器周期就完成了,但是从SBUF朝外的串行发送却至少需要8个机器周期。串行发送指令执行后8个机器周期内,若继续往SBUF中写人数据,则将打乱正在进行的串行发送。因此,串行发送指令执行后8个机器周期内,不允许再次向SBUF中写入任何数据。连续送数的方法有三种:查询法、延迟法和中断法。常用查询法和延迟法。
查询法五个字节数据的串行输出程序如下:
将上述程序中两次串行发送之间的JNB指令和CLR指令换成总共消耗8个机器周期的指令,如8条空操作指令NOP,就可把查询法串行发送程序改成为延迟法串行发送程序。
下图介绍的串行输出电路实际不局限于LED数码管控制,也可以控制诸如固态继电器之类的负载,也可以通过晶体管开关控制普通继电器,完成自动控制。
-
单片机
+关注
关注
6037文章
44558浏览量
635217 -
寄存器
+关注
关注
31文章
5343浏览量
120348
发布评论请先 登录
相关推荐
评论