浅析单片机入门常用的接口电路及其编程

在单片机系统中,通常用led数码显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。
八段led显示器
引入:还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,可以拼成各种各样的图形,led显示器实际上也是这么一个东西。
八段led显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。led显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极led显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极led显示器。如下图所示。`共阴和共阳结构的led显示器各笔划段名和安排位置是相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。
8个笔划段hgfedcba对应于一个字节(8位)的d7 d6 d5 d4 d3 d2 d1 d0,于是用8位二进制码就可以表示欲显示字符的字形代码。例如,对于共阴led显示器,当公共阴极接地(为零电平),而阳极hgfedcba各段为0111011时,显示器显示p字符,即对于共阴极led显示器,“p”字符的字形码是73h。如果是共阳led显示器,公共阳极接高电平,显示“p”字符的字形代码应为10001100(8ch)。这里必须注意的是:很多产品为方便接线,常不按规则的方法去对应字段与位的关系,这时字形码就必须根据接线来自行设计了,后面我们会给出一个例子。
1、静态显示接口在单片机应用系统中,显示器显示常用两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的i/o接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中cpu的开销小。可以提供单独锁存的i/o接口电路很多,这里以常用的串并转换电路74ls164为例,介绍一种常用静态显示电路,以使大家对静态显示有一定的了解。mcs-51单片机串行口方式押为移们寄存器方式,外接6片74ls164作为6位led显示器的静态显示接口,把8031的rxd作为数据输出线,txd作为移位时钟脉冲。74ls164为ttl单向8位移位寄存器,可实现串行输入,并行输出。其中a、b(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,公一个输入信号时可并接。t(第8脚)为时钟输入端,可连接到串行口的txd端。每一个时钟信号的上升沿加到t端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74ls164中。
r(第9脚)为复位端,当r=0时,移位寄存器各位复0,只有当r=1时,时钟脉冲才起作用。q1…q8(第3-6和10-13引脚)并行输出端分别接led显示器的hg---a各段对应的引脚上。关于74ls164还可以作如下的介绍:所谓时钟脉冲端,其实就是需要高、低、高、低的脉冲,不管这个脉冲是怎么来的,比如,我们用根电线,一端接t,一端用手拿着,分别接高电平、低电平,那也是给出时钟脉冲,在74ls164获得时钟脉冲的瞬间(再讲清楚点,是在脉冲的沿),如果数据输入端(第1,2引脚)是高电平,则就会有一个1进入到74ls164的内部,如果数据输入端是低电平,则就会有一个0进入其内部。在给出了8个脉冲后,最先进入74ls164的第一个数据到达了最高位,然后再来一个脉冲会有什么发生呢?再来一个脉冲,第一个脉冲就会从最高位移出,就象车站排队买票,栏杆就那么长,要从后面进去一个人,前面必须要从前面走出去一个人才行。 搞清了这一点,下面让我们来看电路,6片7ls164首尾相串,而时钟端则接在一起,这样,当输入8个脉冲时,从单片机rxd端输出的数据就进入到了第一片74ls164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74ls164,而新的数据则进入了第一片74ls164,这样,当第六个8个脉冲完成后,首次送出的数据被送到了最左面的164中,其他数据依次出现在第一、二、三、四、五片74ls164中。有个问题,在第一个脉冲到来时,除了第一片74ls164中接收数据外,其他各片在干吗呢?
它们也在接收数据,因为它们的时钟端都是被接在一起的,可是数据还没有送到其他各片呢,它们在接收什么数据呢?。。。。。。其实所谓数据不过是一种说法而已,实际就是电平的高低,当第一个脉冲到来时,第一片164固然是从单片机接收数据了,而其它各片也接到前一片的q8上,而q8是一根电线,在数字电路中它只可能有两种状态:低电平或高电平,也就是“0”和“1”。所以它的下一片74ls164也相当于是在接收数据啊。只是接收的全部是0或1而已。这个问题放在这儿说明,可能有朋友不屑一顾,而有的朋友可能还是不清楚,这实际上涉及到数的本质的问题,如果不懂的,请仔细思考,并找一些数字电路的数,理解164的工作原理,再来看这个问题,或者去看看我的另一篇文章《初学单片机易掌握的概念》。务必搞懂,搞懂了这一点,你的级别就高过初学者了。
入口:把要显示的数分别放在显示缓冲区60h-65h共6个单元中,并且分别对应各个数码管led0-led5。 出口:将预置在显示缓冲区中的6个数成相应的显示字形码,然后输出到显示器中显示。显示程序如下:disp: mov scon,#00h ;初始化串行口方式0 mov r1,#06h ;显示6位数 mov r0,#65h ;60h-65h为显示缓冲区 mov dptr,#segtab ;字形表的入口地址loop: mov a,@r0 ;取最高位的待显示数据 movc a,@a+dptr ;查表获取字形码 mov sbuf,a ;送串口显示delay: jnbti,delay ;等待发送完毕 clrti;清发送标志 dec r0 ;指针下移一位,准备取下一个待显示数 djnz r1,loop ;直到6个数据全显示完。 ret settab: ;字形表,前面有介绍,以后我们再介绍字形表的制作。 db 03h 9fh 27h 0dh 99h 49h 41h 1fh 01h 09h 0ffh ; 0 1 2 3 4 5 6 7 8 9 消隐码测试用主程序 org 0000h ajmp start org 30hstart: mov sp,#6fh mov 65h,#0 mov 64h,#1 mov 63h,#2 mov 62h,#3 mov 61h,#4 mov 60h,#5 lcall disp sjmp $如果按图示数码管排列,则以上主程序将显示的是543210,想想看,如果要显示012345该怎样送数? 下面我们来分析一下字形表的制作问题。先就上述“标准”的图形来看吧。写出数据位和字形的对应关系并列一个表如下(设为共阳型,也就是相应的输出位为0时笔段亮)
如何,字形表会做了吧,就是这样列个表格,根据要求(0亮或1亮)写出相应位的0和1,就成了。做个练习,写出a-f的字形码吧。如果为了接线方便而打乱了接线的顺序,那么字形表又该如何接呢?也很简单,一样地列表啊。以新实验板为例,共阳型。接线如下:p0.7 p0.6 p0.5 p0.4 p0.3 p0.2 p0.1 p0.0c e h d g f a b则字形码如下所示:;0 00101000 28h;1 01111110 7eh;2 10100100 0a4h;3 01100100 64h ;4 01110010 72h;5 01100001 61h ;6 00100001 21h;7 01111100 7ch;8 00100000 20h;9 01100000 60h作为练习,大家写出a-f的字形代码。本来这里是讲解显示器的静态接口的,到此应当可算结束了,但是我还想接着上面讲到的数的本质的问题再谈一点。单片机中有一些术语、名词本来是帮助我们理解事物的,但有时我们会被这些术语的相关语义所迷惑,以致不能进一步认清他们的本质,由此往往陷入困惑的境界。只有深入地了解了74ls164的工作特性,才能真正理解何谓串行的数据。有兴趣的朋友还可以再看看我网站上“其他资料”中的“银行利率屏的设计”一文。

MySQL常用语句
扩展多点触控功能的可能性
SR SUMMIT 2017第五届(北京)国际服务机器人核心技术及渠道应用大会
谷歌Pixel4系列正式发布 起售价约合人民币5660元
Android7.0更新后占有率不到5%?ios10更新率高出Android7.015倍!原因是什么?
浅析单片机入门常用的接口电路及其编程
艾德克斯电源测试系统IT9501闪耀成都电子展
人工智能技术是什么
电蜂公司如何检查高压连接线的外观
5G消息将成为5G最快落地的杀手级应用
I²C总线接口及其控制方法
Linux:无法写入文件到NFS目录的解决措施
进实时荧光定量pcr仪检测操作方法?
NAND与DRAM涨幅继续?下半年供应会更紧张
5G除了将带来工艺问题,还存在着测试挑战
对于小孔内经我们该如何进行精确的测量
AT2816B精密LCR数字电桥的性能特征及应用范围
使用FLIR ONE Pro手机热像仪轻松发现汽车电路板短路的案例
基于嵌入式PC和GPRS网络的远程监控与数据采集系统
VR大爆发面临的挑战有哪些