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灯 引用地址:AVRWARE++开发笔记7:74HC595串行控制LED灯实验

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

推荐阅读最新更新时间:2024-11-10 18:40

AVRWARE++开发笔记8:Atmel Studio去除拼写检查
这篇日志插入1个Atmel Studio的使用技巧。 Atmel Studio安装完毕后,对中文支持不好,会出现如下现象,它对中文予以错误标识,表明拼写错误。 可以通过如下步骤,去除拼写错误: 1、VAssistX—Visual Assist X Options... 2、Advanced—Underlines,去除图中所示的两个选项即可。
[单片机]
<font color='red'>AVRWARE</font>++开发笔记8:Atmel Studio去除拼写检查
51单片机学习之1-锁存器驱动led灯
第一集 单片机的介绍以及学习必备的一些基础知识等。 第二集 一、单片机型号解析。 1、例子 AT89S5224PU AT 生产商标志,表示该器件是ATMEL公司的产品。 89 ATMEL公司的产品89系列家族(内涵Flash存储器)。 S 表示可在线编程。 还有C表示是CMOS产品、LS表示低电压2.7V-4V、LV表示低电压2.7V-6V、LP表示低功耗单时钟周期指令。 52 表示存储器的容量是8K,还有53是12K、54是16K、55是20K,51是4K、2051是2K等。 24 表示芯片的最高时钟频率为24MHZ。还有33MHZ、20MHZ、16MHZ等。 P 表示DIP封装。还有 S表示SOIC封装
[单片机]
51单片机学习之1-锁存器驱动<font color='red'>led灯</font>
LED灯具散热建模仿真关键问题研究(一)
  摘 要: 有限元流体热分析软件(CFD)常被用于对LED 灯具散热进行建模仿真,与散热相关的参数分析、计算与设置等问题是影响仿真精度的关键因素。本文将从边界条件(环境温度、重力方向等)、热阻计算、热载荷分布和形式、散热材料导热系数和辐射率等几个方面,分析LED 照明灯具散热仿真建模中的关键问题,并通过实验室温度测量验证模型仿真结果的精度。   本文综合研究了边界条件设置、热阻计算、热量载荷分析和散热器等仿真建模的关键问题,并与实验室温度测量相结合来验证仿真方法的准确性。结果表明,该方法对室内照明LED 灯具能进行较为准确的散热分析,仿真温度误差在4℃左右,仿真结果对LED 灯具开发设计具有重要参考价值。   0 引言
[电源管理]
<font color='red'>LED灯</font>具散热建模仿真关键问题研究(一)
51单片机——74HC595、LED点阵、直流电动机C语言入门编程
74HC595: 是一个8位串行输入、并行输出的位移缓存器,其中并行输出为三态输出(即高电平、低电平和高阻抗)。移位寄存器和存储器是单独的时钟。数据放在SER中,在SCK的上升沿输入,在RCK 的上升沿进入到存储器中。移位寄存器有一个串行输入(DS),和一个串行输出(Q7非),和一个异步的低电平复位,存储寄存器有一个并行 8 位的,具有三态的总线输出,当 MR 为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输 出到并行端口。(先发高位后发低位) 15和1到 7脚 QA--QH→并行数据输出;9脚QH非→串行数据输出;10脚SCLK非(MR)→低电平复位引脚;11脚SCK(SHCP)→ 移
[单片机]
51单片机——<font color='red'>74HC595</font>、LED点阵、直流电动机C语言入门编程
酒店照明设计与LED灯具之间配搭技术解析
室内照明 空间的种类不少,然而谈到酒店空间 照明 ,它绝对称得上是相对复杂的一个类型。   它包含了家的温暖、社交场所的华丽、用餐空间的舒适、会议场所的多功能以及休闲空间的静僻与放松。也因此,从事酒店照明的设计师比例相较其他类型少得多。   透过以下的议题,为大家揭开酒店照明的神秘面纱,也希望让大家对酒店照明有更进一步的了解与兴趣。以下所涉及的议题均以国际级五星级酒店为主。    真正的老大-酒店之风格定位与区分   一谈到酒店照明设计,就必须提及酒店管理公司。因为除了业主外,他对用不用你有着生杀大权。他甚至可以否决业主采用你作为照明设计师的决定。理由呢? 你不在酒店的推荐名单内 。就这么简单?是的,就这么简单
[电源管理]
酒店照明设计与<font color='red'>LED灯</font>具之间配搭技术解析
汽车照明串联LED灯珠的开路保护方案
LED汽车照明灯种类繁多,主要分为内部照明和外部照明两大类。在介绍方案之前,我们得清楚的知道汽车照明到底有哪些?细分如下: 1. 内部照明: 背光,调光,集成HMI 2. 外部照明:前照灯,日间行驶灯(DRL),雾灯(FOG),转向灯(TI),装饰灯,位置灯(POS),远近光灯(HLB),角灯(CRN) 3. 通信支持:SPI/I?C, LIN ,CANBUS 内部照明控制台设计参考: 1. 电容传感按钮用于功能选择 2. 每个按钮均具有RGB背光和LED指示灯 3. 顶灯采用高亮度白光LED 4. 整个装置采用12V电源输入和CAN/LIN总行I/O 外部照明设计难点: 1. 需要恒流控制:高电流峰值缩短LED寿命 2. 需要高
[电源管理]
汽车照明串联<font color='red'>LED灯</font>珠的开路保护方案
LED灯驱动电源的几条实战经验
近年来LED灯封装技术和散热技术的不断发展,LED灯的稳定性已经达到比较好的水平,发生光衰和色漂移的主要是些山寨厂家的产品,主要原因是散热设计的不合理。相对来说LED灯驱动电源的问题要严重的多,是导致死灯或者闪烁的主要原因,也就是说,LED灯驱动电源已经成为LED灯质量的短板,根据木桶理论,LED灯驱动电源的寿命就是LED灯的寿命。   常规照明路灯是灯头与电源分开的,通常发生故障的是灯头--高压钠灯,高压钠灯国家标准规定质保期一年,路灯管理单位都会存库一定数量的钠灯,高压钠灯具有成熟的国家标准,其主要配件尺寸、功率等主要参数都是统一的,具备互换性。   而当前LED灯的故障主要在电源,所以主要就是要解决电源问题。由于目前le
[电源管理]
LED灯具对低压驱动芯片的要求
驱动芯片的标称输入电压范围应当满足直流8~40V,以覆盖较广的应用需要。耐压能力最好大于45V。当输入为交流12V或24V时,简单的桥式整流器输出电压会随电网电压波动,特别是当电压偏高时,输出直流电压也会偏高。如果驱动IC没有宽的输入电压范围,往往会在电网电压升高时会被击穿,从而烧毁 LED 光源。   驱动芯片的标称输出电流要求大于1.2~1.5A。作为照明用的LED光源,1W功率的LED光源的标称工作电流为350mA,3W功率的LED光源的标称工作电流为700mA。功率大的LED光源的需要更大电流,因此 LED照明 灯具选用的驱动IC必须有足够的电流输出,设计产品时也必须使驱动IC工作在满负荷输出的70~90%的最佳工作区域
[电源管理]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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