ATmega16开发板教程(3)——74HC595驱动数码管显示

​4、数码管显示

数码管驱动电路采用2片74HC595芯片进行IO扩展,仅仅只需3Pin即可驱动需要16位引脚的数码管。74HC595是一个8位串行输入并行输出的位移缓存器。

只有对74HC595的工作原理和时序要了解清楚,才能更好的理解和编程。

工作原理:

Ø1、74HC595是串行输入,即将一个字节Byte的数据通过8次以高低电平的形式送到数据引脚DS,且高字节先入,低字节后入,类似于堆栈;

Ø2、那么数据什么时候进入呢?需要SCK(SH_CP)时钟上升沿来讲8位bit数据移入到移位寄存器中;

直接编程讲解:

如图,首先假设wei变量=01101001,然后取出最高位,那么&0x80,得到0,那么执行else,数据引脚DS=0,然后通过SH_CP上升沿将这一位移入移位寄存器中,wei变量左移,将次高位放到高位与0x80相与,再次比较,直到8次比较完毕,DS引脚输入8位数据。

Ø3、最后通过ST_CP信号将8位数据进行锁存输出。

如图,ST_CP信号默认低电平,这里给高电平后,数据锁存输出,再次给低电平,等待下一次上升沿锁存输出。

2个74HC595级联的道理与一个类似,只是将2个字节的数据输入,通过SCK移位16次后,用ST_CP锁存输出。

时序:

若现在要显示最低位数码管为0,那么就需要位选为0xfe,段选为0x3f。

如图先送入位选0xfe,然后再送入0x3f,最后通过ST_CP锁存输出即可。仿真很大的好处就是可以通过虚拟示波器查看自己的时序是否正常,这样可以更好的理解为什么要这样编程。

注意前方高能——在所有电路都加上时,笔者电脑仿真时会报警,Simulation is not running in real time due to excessive CPU load。说人话:电脑不行了,超负荷了,该换电脑了,毕竟7年老电脑,唉。

想哭,就说时序没有问题,为什么仿真效果出不来呢?——删掉其它电路,只保留数码管部分,电路就可以8位数码管静态显示,否则就会出现一闪一闪的显示。

好了,这都是次要的,实物是不会出现这样的情况,只要电路正确,没有达到实际效果就是软件问题。

IO的位定义在上一节已经讲解,现不做过多说明,还是老样子,面向对象编程,毕竟有对象才是核心。

仿真视频

/**
******************************************************************************
*   @file      main.c
*   @author    Alex——小白
*   @version   V1.0
*   @date      2021.1.20
*   @brief     2片74HC595驱动数码管动态显示数字
*   @store     Proteus仿真店子
*   @Link      https://shop484534014.taobao.com/
*   @Email     844545015@qq.com
******************************************************************************
*   @attention  All Rights Reserved  
**/
​
#include <main.h>
​
/*定义驱动数码管显示段和位,此处为共阴极数码管编码,共阳极可直接取反即可*/
uint8_t table_duan[16]={
  0x3f,0x06,0x5b,0x4f,
  0x66,0x6d,0x7d,0x07,
  0x7f,0x67,0x77,0x7c,
  0x39,0x5e,0x79,0x71
};
​
uint8_t table_wei[8]={         
  0xfe,0xfd,0xfb,0xf7,
  0xef,0xdf,0xbf,0x7f
};
​
void main(void)
{
    uint8_t i = 0;
    SEG.SEG_Init();      
    while(1)
    {
        for(i=0;i<8;i++)        //SEG8位一体显示0-7
        {
            SEG.SEG_Display(table_wei[i],table_duan[i]);    
        }
    }
}

如需Proteus和IAR安装包以及AVR编程参考手册,请关注公众号:

Proteus仿真店子

可通过查看历史记录,查看例程

(若需Proteus和IAR安装包以及AVR编程参考手册,后台回复:AVR;若需其它设计,后台回复:AVR设计

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值