微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 单片机学习知识点全攻略(完结篇)

单片机学习知识点全攻略(完结篇)

时间:05-21 来源:本站整理 点击:

一片74LS164,这样,当第六个8个脉冲完成后,首次送出的数据被送到了最左面的164中,其他数据依次出现在第一、二、三、四、五片74LS164中。有个问题,在第一个脉冲到来时,除了第一片74LS164中接收数据外,其他各片在干吗呢?它们也在接收数据,因为它们的时钟端都是被接在一起的,可是数据还没有送到其他各片呢,它们在接收什么数据呢?。。。。。。其实所谓数据不过是一种说法而已,实际就是电平的高低,当第一个脉冲到来时,第一片164固然是从单片机接收数据了,而其它各片也接到前一片的Q8上,而Q8是一根电线,在数字电路中它只可能有两种状态:低电平或高电平,也就是"0"和"1"。所以它的下一片74LS164也相当于是在接收数据埃只是接收的全部是0或1而已。这个问题放在这儿说明,可能有朋友不屑一顾,而有的朋友可能还是不清楚,这实际上涉及到数的本质的问题,如果不懂的,请仔细思考,并找一些数字电路的数,理解164的工作原理,再来看这个问题,或者去看看我的另一篇文章《27课:关于单片机的一些基本概念》的文章。务必搞懂,搞懂了这一点,你的级别就高过开始学习者,可谓入门者了。

  入口:把要显示的数分别放在显示缓冲区60H-65H共6个单元中,并且分别对应各个数码管LED0-LED5。

  出口:将预置在显示缓冲区中的6个数成对应的显示字形码,然后输出到数码管显示器中显示。

  单片机led显示程序如下:

  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: JNB TI,DELAY ;等待发送完毕

  CLR TI ;清发送标志

  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 30H

  START: 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.0

  C 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的字形代码。

  24、动态扫描显示接口电路及程序

  在单片机系统中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就能自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的办法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。在http://www.51hei.com还有很多关于单片机显示接口的文章,大家可以参考一下

  在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

下图所示就是我们的单片机实验板上的动态扫描接口。由89c51的P0口能灌入较大的电流,所以我们采用共阳的数码管,并且不用限流电阻,而只是用两只1N4004进行降压后给数码管供电,这里仅用了两只,实际上还能扩充。它们的公共

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top