【精选】74HC595驱动四位数码管

您所在的位置:网站首页 f5261bh数码管电路图 【精选】74HC595驱动四位数码管

【精选】74HC595驱动四位数码管

2023-11-07 22:41| 来源: 网络整理| 查看: 265

74HC595驱动四位数码管 数码管编码 出处硬件原理图 出处驱动程序 出处 1.数码管编码介绍

它每一段是一个发光二极管,排成一个“日”字形。通过控制某几段发光二极管的发光来显示数字0~9或字母A、B、C、D…。通常有8个发光二极管,其中七个为日字型,另外一个发光二极管表示小数点。如图1所示,如a、b、g、e、d段亮显示2;f、b、e、c、g段亮显示H。注意:dp段表示右下角的小数点。 在这里插入图片描述 连接分为共阳极和共阴极两种接法。(1)共阳极数码管所有发光二极管阳极连在一起,接高电平。而阴极通过串联一个限流电阻接在驱动器一侧。当一段输出为低电平时,发光二极管导通而发光。(2)共阴极数码管是所有的发光二极管的阴极接在一起接地,阳极串联一个限流电阻接在驱动器一侧。当某段输出为高电平时,发光二极管导通发光。如下图2、图3。 在这里插入图片描述

相应得出,共阳极对应编码(小数点用最高位表示)。 unsigned char LED_0F[] = {// 0 1 2 3 4 5 6 7 8 9 A b C d E F - 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf };

2.硬件原理图

在这里插入图片描述 本设计使用了一个4位的数码管,为共阳型,为了节省单片机的IO口,使用了两片74HC595作为数码管的驱动芯片,共占用3个IO口。 与单片机相连接的三个脚分别为: HC_DAT,HC_RCK,HC_CLK。两片595采用级联方式,即U2的第9脚接到U3的第14引脚。

74HC595是8位的移位寄存器,串入并出,并具有锁存功能,被广泛的用于数码管、点阵的驱动电路中。其管脚介绍如下:   15: 数据输出A-接数码管数据A段;   l: 数据输出B-接数码管数据B段;   2: 数据输出C-接数码管数据C段;   3: 数据输出D-接数码管数据D段;   4: 数据输出E-接数码管数据E段;   5: 数据输出F-接数码管数据F段;   6: 数据输出G-接数码管数据G段;   7: 数据输出H-接数码管数据H段;   16: 电源正脚-接电源正;   8: 电源负脚=接电源负;   14: 数据输入脚-接单片机管脚;   12: 数据锁存时钟-接单片机管脚;   11: 数据输入时钟-接单片机管脚;   13: 使能输出脚-低电平有效,接低电平;   10 :数据清零-不清零,接高电平;   9:数据级联输出-接下一片595的数据输入脚    (1)SCK是上升沿的时候要把数据写入;(2)RCK是上升沿的时候数据才能锁存显示;(3)有数据操作的过程中RESET必须是高电平;(4)EN必须是低电平,595才能工作; 知道了以上4点就可以写程序了。其中3、4条是硬件连接上的事情(也可以用单片机的IO口来连接,这样的话可以随时控制74HC595的工作与否情况)。写程序主要靠1、2条。

电路连接图

在这里插入图片描述

3.驱动程序 U8 LED_0F[] = {// 0 1 2 3 4 5 6 7 8 9 A b C d E F - 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf }; ///********************* 数码管显示函数 *******************/// U8 LDE_NUM[4]={1,2,3,4}; void Nixie_Tube_Display (void) { U8 *led_table; // 查表指针 U8 i; //显示数字1 led_table = LED_0F + LDE_NUM[0]; i = *led_table; LED_OUT(i); LED_OUT(0x01); //0x01显示在第一位 RCLK_LOW; RCLK_HIGH; //显示数字2 led_table = LED_0F + LDE_NUM[1]; i = *led_table; LED_OUT(i); LED_OUT(0x02); //0x02显示在第二位 RCLK_LOW; RCLK_HIGH; //显示数字3 led_table = LED_0F + LDE_NUM[2]; i = *led_table; LED_OUT(i); LED_OUT(0x04); //0x04显示在第三位 RCLK_LOW; RCLK_HIGH; //显示数字4 led_table = LED_0F + LDE_NUM[3]; i = *led_table; LED_OUT(i); LED_OUT(0x08); //0x08显示在第四位 RCLK_LOW; RCLK_HIGH; } void LED_OUT(U8 X) { U8 j; for(j=8;j>=1;j--) { if (X&0x80) { DIO_HIGH; } else { DIO_LOW; } X


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3