新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 跟我学51单片机(五):单片机动态扫描驱动数码管

跟我学51单片机(五):单片机动态扫描驱动数码管

作者:时间:2013-02-06来源:网络收藏
74HC595 是8 位串行输入/ 输出或者并行输出移位寄存器芯片,可以将串行的数据,转为并行的输出,这样可以节约控制器的IO 口资源,因而广泛应用。

  74HC595 最多需要5 根控制线, 即SDI(Pin14)、SCK(Pin11)、RCK(Pin12)、 (Pin10)和(Pin13)。图2 中将 直接接到高电平, 用软件来实现寄存器清零; 直接接到低电平, 一直输出有效。把其余三根线和单片机的I/O 口相接, 即可实现对74HC595 的控制。数据从SDI 口送入74HC595 , 在每个SCK 的上升沿, SDI 口上的数据移入寄存器, 在SCK 的第9 个上升沿, 数据开始从SDO 移出。如果把第一个74HC595的SDO 和第二个74HC595 的SDI 相接, 数据即移入第二个74HC595 中, 照此一个个接下去, 可接任意多个。数据全部送完后, 给RCK 一个上升沿, 寄存器中的数据即置入锁存器。此时为低电平, 数据即从并口Q0 ~ Q7 输出。

  74HC245 为八总线收发器芯片,即可以将数据从A 总线端口传送到B 总线端口,也可将数据从B 总线端口传送到A 总线端口。传送方向由方向控制管脚DIR(芯片1 脚)输入的逻辑电平而定。其真值表如表3 所示:

表3 74HC245输入输出真值表

  H 代表高电平,L 代表低电平,X 代表不定的状态。

  四、程序设计

  本讲设计实例核心程序如下:

  ……

  #define SDI P2_7 ( 1)

  #define SCLK P2_6 ( 2)

  #define RCLK P2_5 ( 3)

  ……

  void dat_in(unsigned char dat) ( 4)

  {

  unsigned char i; ( 5)

  for(i=0;i8;i++) ( 6)

  {

  SCLK=0; ( 7)

  SDI=dat0X80; ( 8)

  dat《=1; ( 9)

  SCLK=1; ( 10)

  }

  RCLK=0; ( 11)

  RCLK=1; ( 12)

  }

  程序详细说明:

  (1)将数据输出端定义为P2.7 管脚。

  (2)将数据时钟输出端定义为P2.6 管脚。

  (3)将寄存器时钟输出端定义为P2.5 管脚。

  (4)数据传入函数,传入一字节。

  (5)定义一个无符号字符型变量。

  (6)要因为要传送一个字节,故要8 次。

  (7)数据时钟先输出低。

  (8)让数据管脚输出传入字节的最高位。

  (9)传入字节左移一位。

  (10)数据时钟输出高,上升沿将数据所存储至74HC595 数据寄存器中。

  (11)寄存器时钟先输出低。

  (12)寄存器时钟输出高,上升沿将数据所存储至74HC595 数据寄存器中。

  以上字程序的作用, 当发送一个字节的显示数据的时候, 通过74HC595 进行串行转并行的控制,每次从单片机IO发送1Bit出去, 循环8次, 完成发送一个字节,之后再的输出端以一个字节的方式传输给数码管, 实现显示。

  五、调试要点与实验现象

  接好硬件电路,通过冷启动方式将程序所生成的。hex 文件下载到单片机运行后,复位单片机,就可以观察到板上8 个数码管都点亮(见图3),并从数字0 到9 变化闪烁。调试的时候需要注意的是,数码管的使能控制端(见图2)必须用跳线帽跳上,从而让74HC138 能工作输出。不需要用到数码管时可以, 反之,跳开以节省系统电流损耗。

图3 数码管显示效

  另外过程中, 数码管显示的亮度与驱动电流、点亮时间和关断时间有关, 所以应当适当调整驱动电流大小和扫描频率, 从而控制显示所需要的亮度。这在驱动尺寸较大的数码管组时更是如此,为了稳定显示,硬件方面必须达到该有的驱动能力,如在驱动端再接达林顿管等。软件方面,应在实际的调试过程中不断的尝试(见本讲程序中所扫描次数的经验值),找到一个最佳临界点,即要注意的延时间隔和扫描次数。

  六、总结

  本讲介绍了单片机动态的原理并给出了实例,通过该讲,我们可以总结如下:

  的优点:当显示位数较多时,采用动态显示方式比较节省I/O 口,硬件电路也较静态显示简单;缺点:其稳定度不如静态显示方式。而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。

  总的来说,无论是动态还是静态显示,其显示更新的速率不能太快,如数据不停变化,太快则无法看清楚显示的内容,在软件设计是必须注意的。另外,在同等条件下动态显示的亮度比静态显示要差一些,所以在适当提高驱动电流,例如使用限流电阻,就应略小于静态显示电路中的,或者使用缓冲驱动芯片。下讲将重点讲述单片机外部中断以及应用,以对红外遥控器进行解码作为实例,敬请期待。

红外遥控器相关文章:红外遥控器原理

万能遥控器相关文章:万能遥控器代码


51单片机相关文章:51单片机教程



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭