AVR单片机控制74HC595 74HC165的示例程序

发布者:塞上老马最新更新时间:2017-12-18 来源: eefocus关键字:AVR  单片机控制  74HC595  74HC165 手机看文章 扫描二维码
随时随地手机看文章

硬件说明:ATmega48/88/168的PB5是SPI时钟输出,接74HC595/74HC165的移位时钟输入端;PB4是SPI的MISO数据输人,接74HC165的数据输出;PB3是SPI的MOSI数据输出,接74HC595的串行数据输入端SER;PB2接74HC595/74HC165的锁存时钟输入端。  


    程序1:本例子是用硬件SPI接口循环发送一个变量到74HC595,并且在数据发送完毕后通过 单片机 的另外一个IO接口PB2输出一个“锁存”脉冲 ,使74HC595把移位寄存器的数据输出到锁存寄存器,并驱动8个LED输出,实现来回流水的效果。 

//本程序在本站的 M8 V2.0 实验板 通过 
// CodeWizardAVR V1.25.1 
// http://www.avrDIY.com 
// 程序设计: 啊艺panxiaoyi 
#i nclude  
#i nclude  
#i nclude  
void main(void) 
{  
  unsigned char data=1 , sign=1;  
  PORTB=0; 
  DDRB=0; 
  PORTB|=0b00000100; //空闲时PB2=1是为了兼容74HC165,因为锁存时钟=1时74HC165才允许读数据 
  DDRB|= 0b00101100; //PB口的2/3/5使能输出,其它口不变 
  SPCR=80;      //SPI初始化/高位先输出/空闲时时钟=0,数据=0/4分频/数据在时钟上升沿有效/主机 
  while(1) 
  {  
    spi(data);  //输出data数据,本函数采样查询方式发送,直到数据发送完毕才运行下一条语句 
    PORTB.2=0; PORTB.2=1; //74HC595移位寄存器的数据在锁存时钟上升沿时传送到锁存寄存器  
    delay_ms(1000); 
    if(data==1) sign=1;   //记录顺序流水 
    if(data==128) sign=0; //记录倒序流水  
    if(sign) data<<=1; else data>>=1; //如果顺序流水数据就左移一位,否则数据就右移一位  
  }  
}//end 

  


-------------------------------------------------------------------------------- 

  

    程序2:本程序利用硬件SPI连接74HC165采集8个按键信息,并且由75HC595驱动8个LED把按键的信息显示出来 

//本程序在本站的 M8 V2.0 实验板 通过 
// CodeWizardAVR V1.25.1 
// http://www.avrdiy.com 
// 程序设计: 啊艺panxiaoyi 
#i nclude  
#i nclude  
#i nclude  
void main(void) 
{  
  unsigned char data=0 , x;  
  PORTB=0; 
  DDRB=0; 
  PORTB|=0b00000100; //空闲时PB2=1是为了兼容74HC165,因为锁存时钟=1时74HC165才允许读数据 
  DDRB|= 0b00101100; //PB口的2/3/5使能输出,其它口不变 
  SPCR=80; //SPI初始化/高位先输出/空闲时时钟=0,数据=0/4分频/数据在时钟上升沿有效/主机 
  while(1) 
  {  
    x=spi(data); //输出data数据到74HC595,同时读取74HC165的数据,保存在变量x 
    PORTB.2=0; PORTB.2=1; //刷新74HC595/74HC165的数据 
    data=x;  
  }  
}//end 


-------------------------------------------------------------------------------- 

    程序3:本程序把读74HC165和写74HC595分别写成一个函数,使用更方便 

#i nclude  
#i nclude <595-165.h>  
#i nclude  
void main(void) 
{  
  spiinit(); //spi初始化 
  while(1) 
       {  
         unsigned char data,i; 
         data=read165(); //通过硬件SPI读取74HC165的数据  
         if(data==254) i+=1; 
         write595(i); //通过硬件SPI把数据写入74HC595  
         delay_ms(100); 
       }  
}//end 


下面是头文件"595-165.h"的内容  


//定义一个全局变量来记忆最后一次写入74HC595的数据 
//目的是读74HC165时保持74HC595的数据不发生改变 
//变量名复杂一点目的是避免和其它变量混淆 
unsigned char DATA_74HC595_74HC165;  
void spiinit(void) //spi初始化 

  PORTB&=0b11000011; 
  DDRB|= 0b00101100; 
  SPCR=80;  


void write595(unsigned char LED_DATA) //写数据到74HC595函数 

  SPDR=LED_DATA; //开始发送数据 
  while((SPSR>>7)==0); //等待发送接收结束 
  DATA_74HC595_74HC165=LED_DATA; //记忆最后一次发送的数据 
  LED_DATA=SPDR; //读,是为了清零中断标志 
  PORTB&=251; PORTB|=4; //PB2输出一个负脉冲,刷新74HC595的数据  
}  

unsigned char read165(void) //读74HC165函数 
{  
  PORTB&=251; PORTB|=4; //PB2输出一个负脉冲,刷新74HC165的数据 
  SPDR=DATA_74HC595_74HC165; //载入74HC595最后一次的数据,目的是读取74HC165 
  while((SPSR>>7)==0); //等待发送接收结束 
  return SPDR; //返回值是SPI接收到74HC165的数据 


关键字:AVR  单片机控制  74HC595  74HC165 引用地址:AVR单片机控制74HC595 74HC165的示例程序

上一篇:AVR单片机问答
下一篇:STK500 JTAG下载烧录快速入门

推荐阅读最新更新时间:2024-03-16 15:49

一种新的实现DDS的AVR信号发生器(原理图和PCB图)
这是一个AVR DDS信号发生器V2.0新的实施,已经在scienceprog.com出版。 很明显,对于原原理图和固件完全归功于它的原创者。这里呈现的是一个不同的PCB,结构紧凑,单只通孔,便于建筑构件片面的。函数发生器有两个BNC输出:为高速 一平方信号(BNC1)和DDS的信号(BNC2)另一个。偏移和幅度可以用两个调节电位器:在+5 V至- 5V(POT1)和0至10V(POT2)范围幅度范围偏移。向上和向下箭头按钮用于改变函数的类型(正弦,三角等),而左,右箭头按钮用于改变频率值。还有一个改变频率步进单独的菜单。当中间按钮按下时,产生的信号启动。示意图      EAGLE示意图(仅一个状态LED和开/关开关
[工业控制]
一种新的实现DDS的<font color='red'>AVR</font>信号发生器(原理图和PCB图)
建立一个属于自己的AVR的RTOS(第八篇:完善的服务)
第八篇:占先式内核(完善的服务) 如果将前面所提到的占先式内核和协作式内核组合在一起,很容易就可以得到一个功能较为完善的占先式内核,它的功能有: 1,挂起和恢复任务 2,任务延时 3,信号量(包括共享型和独占型) 另外,在本例中,在各个任务中加入了从串口发送任务状态的功能。 #include avr/io.h #include avr/Interrupt.h #include avr/signal.h unsignedcharStack ; registerunsignedcharOSRdyTblasm( r2 );//任务运行就绪表 registerunsignedcharOSTaskRunningPrioas
[单片机]
AVR矩阵键盘程序
搞了一顿竟然连矩阵键盘的程序都不会写 do { i=(i 1|i 7); PORTD=i; DDRD=0X0F;// key=PIND;//不论如何配置DDxn,都可以通过读取PINxn 寄存器来获得引脚电平 j=key&0xf0; }while(j==0xf0);//直到发现按键按下。若没有找到按键按下 的,继续循环 i的初值0x7f。i=(i 1|i 7);之后。i=1111 1110b 第二次,i= 1111 1101b 保证只有一位为0 下面是程序,写得很巧妙 #include iom16
[单片机]
<font color='red'>AVR</font>矩阵键盘程序
基于AVR芯片的光照和CO2控制系统分析
一、项目概述 1.1 引言 温室是一种可以改变植物生长环境、为植物生长创造最佳条件、避免外界四季变化和恶劣气候对其影响的场所。它以采光覆盖材料作为全部或部分结构材料,可在冬季或其他不适宜露地植物生长的季节栽培植物。温室生产以达到调节产期,促进生长发育,防治病虫害及提高质量、产量等为目的。而温室设施的关键技术是环境控制,该技术的最终目标是提高控制与作业精度。随着农业现代化的发展,设施农业工程因其涉及学科广、科技含量高、与人民生活关系密切,己越来越受到世界各国的重视。这也为我国大型现代化温室的发展提供了极好的机遇,并产生巨大的推动作用。本项目以AVR芯片为控制芯片,设计了一套适用于当前西瓜生产的光照和二氧化碳浓度控制系统。 1.2
[单片机]
基于<font color='red'>AVR</font>芯片的光照和CO2控制系统分析
单片机控制GSM手机的技术及应用
随着科技的飞速发展和人民生活水平的不断提高,手机的普及率越来越高,更新也越来越快,价格也越来越便宜。因为手机工作的无线网络覆盖范围广,在信息传递方面性能稳定、可靠,所以把手机作为信息传递的载体,与单片机结合起来构成应用系统有着强大的生命力和广阔的应用空间,特别是在远程数据传输、远程监控等领域更是受到电子设计应用工程师的关注。一些专业刊物也介绍了一些有关这方面的文章,然而由于手机的控制指令复杂,数据格式繁琐,工程技术人员在进行单片机与手机的硬软件接口设计时经常会遇到很多困难,有时还无资料可查。笔者在完成一个项目的开发过程中,针对几种手机进行了大量的测试和实验,在此基础上归纳出一些带规律性的结论,对此结论,工程设计人员可拿来即用,大大
[单片机]
AVR单片机的通用USB接口模块设计
引言   USB接口以其数据传输快、连接简单、易于扩展、支持热插拔等特点已成为外设与PC通信的主要方式之一。随着嵌入式系统的发展,嵌入式微处理器需增加通用的USB接口,以便实现与PC等USB主机系统的通信。针对这样的需求,这里采用PHILIPS公司的USB接口器件PDIUSBD12和Atmel公司的AVR系列单片机ATmega8设计一种通用的USB接口模块。该模块可方便为各种嵌入式微处理器增加USB接口,从而实现与USB主机系统的高速通信。 2 系统硬件设计   该系统模块的控制核心是AVR高速单片机ATmega8。AVR单片机是新一代基于哈佛结构的高速RISC微控制器,具有速度快、价格低、可靠性高,I/O口线驱动能力
[嵌入式]
一种单片机控制的多功能交流稳压电源
    摘要: 提出一种单片机控制的多功能交流稳压电源,论述其工作原理,给出了软、硬件框图。该电源实现了智能化、多功能、高精度,还有定时输出、智能闹钟和显示直观等功能。     关键词: 交流稳压电源  单片机  定时 1 引言 目前我国有些地方由于电力供应紧张,或电力设备严重老化,在用电高峰期,电网超负荷运行,电网电压太低,而在用电低谷期,电网电压太高,这种电压大幅度波动的现象,很容易给一些用电设备带来损害。特别是不断出现的各种智能化仪器仪表、个人电脑等家用电器,对电源质量的要求越来越高,这就需要研制一种高性能的交流稳压电源。 当前市场上的交流稳压电源有继电器控制和伺服电机控制的交流稳压电源两类,前者是一
[工业控制]
基于单片机控制的新型智能电梯语音系统设计
   摘 要 :本文设计了一种基于单片机控制的智能电梯语音系统,对整个系统的电路原理、单片机、CPLD和解码器的接口等硬件原理作了详细论述。软件部分针对电梯语音服务的要求,通过对电梯系统中特殊信号的逻辑判断,来完成对电梯语音服务的智能化控制,成功实现了电梯语音服务的智能化和自动化。    引言   语音系统对电梯来说是不可缺少的部分,比如进行楼层报数、方向提示、报警告示、消防对讲甚至广告宣传等。目前绝大多数电梯使用语音芯片来进行语音存储和播放,而语音芯片系统存在一些缺陷,比如外围电路复杂、音质不佳、成本偏高、容量有限以及语音更改不便等。有鉴于此,本文设计了一款基于单片机控制的智能电梯语音系统。    系统概述   电梯
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved