datasheet

AVRWARE++开发笔记7:74HC595串行控制LED灯实验

2019-07-13来源: eefocus关键字:AVRWARE++  74HC595  串行控制  LED灯

         本文只针对于初学者,高手请绕过!


    1、实验目的

利用单片机的IO口模拟SPI总线时序逻辑,通过74HC595控制24个LED,学会74HC595串行控制的使用方法。

  

    2、实验内容

    编写一段程序,使24个LED先全亮,然后以一秒为间隔从左至右的一列接一列的熄灭。


    3、硬件原理

74HC595串行控制LED灯硬件原理图如下图所示,使用排线与端子P3相连,则单片机相应端口的0-2引脚与端子P3的CS_595_1、CLK_595_1、Data_595_1引脚相连接(例如,使用排线将P9与P3端子相连接,则PC0引脚接CS_595_1,PC1引脚接CLK_595_1,PC2引脚接Data_595_1)。CS_595_1为74HC595的片选引脚用于控制74HC595内部移位寄存器与引脚之间的锁存器,CLK_595_1为74HC595的时钟引脚,该引脚每一个周期变化,都将向74HC595内部移位寄存器输入1位数据,Data_595_1为数据引脚,其高低值将在CLK_595_1变化的一个周期内送入74HC595内部移位寄存器。

    对于1个74HC595其工作过程为,使用CS_595_1关闭74HC595内部移位寄存器与引脚之间的锁存器,在Data_595_1引脚上准备数据,操作CLK_595_1使其变化1个周期,则Data_595_1相应的高低值送入了74HC595内部移位寄存器的第0位,如此循环8次,则向74HC595的内部移位寄存器输入了8位数据,最先输入的在74HC595的内部移位寄存器第7位上,最后输入的在74HC595的内部移位寄存器的第0位上。数据输入完毕后,操作CS_595_1打开74HC595内部移位寄存器与引脚之间的锁存器,使得74HC595内部移位寄存器的数值呈现在引脚上,然后关闭锁存器继续后续操作。

    对于多个74HC595的控制,仍然使用CS_595_1、CLK_595_1、Data_595_1三个引脚,从原理图中可以看到,第1片74HC595的Q7引脚接第2片74HC595的Data引脚,第2片74HC595的Q7引脚接第3片74HC595的Data引脚,如此连接可控制多个74HC595。以3片74HC595为例,操作前准备3个字节的数据,按照操做1片74HC595的方法分3次将3个字节的数据送入第1片74HC595,则最先进去的字节将传入第3片74HC595,最后进去的字节传入第1片74HC595。传入完毕后,和上述方法一样,操作CS_595_1打开74HC595内部移位寄存器与引脚之间的锁存器,使得74HC595内部移位寄存器的数值呈现在引脚上,然后关闭锁存器继续后续操作。 

 图片 

    4、实验参考程序及注解 

    更改映射层0_logiclayer_config.h文件,下列程序是使能HC595,使其驱动程序能够加入到编译过程,并提示用户,还应在HC595相应的config文件中对595进行配置。

#define EXTERNAL_MODULE_HC595_MODE 1 //0:没有使用HC595芯片

//1:使用HC595芯片,其引脚配置相应的config文件中进行设置


     更改映射层3_ExternalModulelayer_HC595_config.h文件,下列程序的更改应根据原理图完成,当使用P9与P3端子相连接后,则使用PORTC端口控制HC595,所以相应的HC595_PORT和HC595_DDR分别定义为PORTC和DDRC,HC595_CLOCK、HC595_CS和HC595_MOSI是具体的引脚号,查看原理图写入即可。

#define HC595_PORT PORTC

#define HC595_DDR DDRC

#define HC595_CLOCK BIT1

#define HC595_CS BIT0

#define HC595_MOSI BIT2


    更改逻辑层0_logiclayer_main.c文件  

//主程序

int main(void)

{

    //目标板初始化,该函数会自动初始化相应外设文件

    TARGET_Init();

    //后台主循环

    while(1)

    {

        //在这里完成自己的项目逻辑

HC595_WriteByte(0x00);    //向HC595写入1个字节数据,整体操作完成后,该数据被写入到第3片HC595中

HC595_WriteByte(0x00);    //向HC595写入1个字节数据,整体操作完成后,该数据被写入到第2片HC595中

HC595_WriteByte(0x00);    //向HC595写入1个字节数据,整体操作完成后,该数据被写入到第1片HC595中

HC595_SELECT;             //打开HC595内部移位寄存器与引脚之间的锁存器

                                  //使得74HC595内部移位寄存器的数值呈现在引脚上,然后关闭锁存器

TARGET_Delayms(1000,1);

HC595_WriteByte(0x01);    //第1列灭,0x01的二进制为00000001,注意电路中LED低电平点亮

HC595_WriteByte(0x01);

HC595_WriteByte(0x01);

HC595_SELECT;

TARGET_Delayms(1000,1);

HC595_WriteByte(0x03);    //第1-2列灭,0x03的二进制为00000011,注意电路中LED低电平点亮

HC595_WriteByte(0x03);

HC595_WriteByte(0x03);

HC595_SELECT;

TARGET_Delayms(1000,1);    

HC595_WriteByte(0x07);    //第1-3列灭,0x07的二进制为00000111,注意电路中LED低电平点亮

HC595_WriteByte(0x07);

HC595_WriteByte(0x07);

HC595_SELECT;

TARGET_Delayms(1000,1);   

HC595_WriteByte(0x0f);    //第1-4列灭,0x0f的二进制为00001111,注意电路中LED低电平点亮

HC595_WriteByte(0x0f);

HC595_WriteByte(0x0f);

HC595_SELECT;

TARGET_Delayms(1000,1);

HC595_WriteByte(0x1f);    //第1-5列灭,0x1f的二进制为00011111,注意电路中LED低电平点亮

HC595_WriteByte(0x1f);

HC595_WriteByte(0x1f);

HC595_SELECT;

TARGET_Delayms(1000,1);

HC595_WriteByte(0x3f);    //第1-6列灭,0x3f的二进制为00111111,注意电路中LED低电平点亮

HC595_WriteByte(0x3f);

HC595_WriteByte(0x3f);

HC595_SELECT;

TARGET_Delayms(1000,1);

HC595_WriteByte(0x7f);    //第1-7列灭,0x7f的二进制为01111111,注意电路中LED低电平点亮

HC595_WriteByte(0x7f);

HC595_WriteByte(0x7f);

HC595_SELECT;

TARGET_Delayms(1000,1);

HC595_WriteByte(0xff);    //第1-8列灭,0xff的二进制为11111111,注意电路中LED低电平点亮

HC595_WriteByte(0xff);

HC595_WriteByte(0xff);

HC595_SELECT;

TARGET_Delayms(1000,1);

/*

********************************************************************************

喂狗语句,大部分工程项目都不应去除

********************************************************************************

*/

        #if WDT_MODE!=0

    TARGET_WatchDogReset();

        #endif

    }

    return 0; //永不执行

}


关键字:AVRWARE++  74HC595  串行控制  LED灯

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic467672.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:AVRWARE++开发笔记8:Atmel Studio去除拼写检查
下一篇:AVRWARE++开发笔记6:8路直接I/O口控制LED灯实验

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AVRWARE++开发笔记1:综述

    从今天开始撰写AVRWARE++开发笔记,用以使用AVRWARE++程序架构,对Atmel公司的AVR系列单片机进行快速开发。对于开发笔记的任何问题,大家都可以进行留言探讨。    1、简介    AVRWARE++是一套开源的基于层次化软件设计思想的,用于Atmel公司AVR系列单片机开发的软件架构。相比较其它的软件架构,其具有的特点在于:    a、采用层次化软件设计思想进行单片机程序设计;    b、完备的单片机内部外设驱动程序库;    c、可扩展的单片机外部芯片(模块)驱动程序库; 
发表于 2019-07-13
AVRWARE++开发笔记1:综述

AVRWARE++开发笔记2:开发环境的建立

        本文详述AVRWARE++开发环境的建立方法,其主要开发软件有两个:Atmel Stdio和PROGISP。    1、Atmel Studio 6的系统需求    安装集成开发环境Atmel Studio 6,必须满足最小的硬件和软件要求,才能确保编译器以及其它程序功能的正常,应该具有:    a、Pentium-IV或兼容处理器的微型计算机,主频2.0GHz,内存512MB;    b、Windows XP/Win7操作系统;    c、1G硬盘空间; 
发表于 2019-07-13
AVRWARE++开发笔记2:开发环境的建立

AVRWARE++开发笔记3:III型测试板硬件原理

        本文只针对于初学者,高手请绕过!        AVRWARE++现有三种测试板供用户对软件架构进行评测,分别为I型、II型和III型,本文针对III型测试板,进行硬件原理介绍。    III型测试板相对于I型和II型来说,是一个简化版本,采用USB直接供电,具有以下模块:    a、蜂鸣器(长音);    b、8路直接I/O控制LED;    c、24路74HC595串行控制LED;    d、8路直接I/O键盘输入
发表于 2019-07-13
AVRWARE++开发笔记3:III型测试板硬件原理

AVRWARE++开发笔记4:调试III型测试板

    本文只针对于初学者,高手请绕过!    本文介绍III型测试板焊接完成后的调试步骤。    1、上电前准备    III型测试板焊接完成后,首先应仔细检查整个电路板是否有漏焊、虚焊或短路的情况发生,检查无误后,用万用表的测量二极管通断档,对如下图所示电路的C2和C4进行短路测试,如果发生短路现象,切不可上电。    短路故障排除步骤:    a、短路发生后,应首先检查C2、C4、C9和C11电容是否焊接正确,如果发生短焊现象,应重新焊接;    b、检查P2是否焊接正确,如果发生短焊现象
发表于 2019-07-13
AVRWARE++开发笔记4:调试III型测试板

AVRWARE++开发笔记5:蜂鸣器驱动实验

        本文只针对于初学者,高手请绕过!    1、实验目的    利用单片机的IO口,控制蜂鸣器,学会蜂鸣器的控制方法。     2、实验内容    编写一段程序,使蜂鸣器以1秒为间隔鸣叫。    3、硬件原理    蜂鸣器硬件原理图如下图所示,使用排线与端子P1相连,则单片机相应端口的第4引脚即与端子P1的BEEP引脚相连接(例如,使用排线将P10端子与P1端子相连接,则PD4引脚则连接到了BEEP引脚上,在这里需要注意的是,端口从0起排,而端子从1起排
发表于 2019-07-13
AVRWARE++开发笔记5:蜂鸣器驱动实验

AVRWARE++开发笔记6:8路直接I/O口控制LED灯实验

         本文只针对于初学者,高手请绕过!    1、实验目的    利用单片机的IO口,直接控制LED灯,学会LED灯的控制方法。     2、实验内容    编写一段程序,使LED0~7灯以200ms为间隔从两边同时向中间亮,最终全亮延时200ms然后熄灭。    3、硬件原理    8路直接I/O口控制LED灯硬件原理图如下图所示,使用排线与端子P4相连,则单片机相应端口的0-7引脚与端子P4的LED0-LED7引脚相连接(例如,使用排线
发表于 2019-07-13
AVRWARE++开发笔记6:8路直接I/O口控制LED灯实验

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved