串入并出芯片74HC595应用实例
- 格式:doc
- 大小:148.00 KB
- 文档页数:5
74HC595 的实际应用与编程(汇编C语言)74HC595具有一个8位串行输入并行输出的移位寄存器和一个8位输出锁存器。
应用电路图:74HC595演示电路板:应用演示程序:;=====================================================;74HC595 走马灯演示程序;创作日期:2006/01/02;创作者:gguoqing;=====================================================SDATA_595 EQU P1.0 ;串行数据输入SCLK_595 EQU P1.1 ;移位时钟脉冲RCK_595 EQU P1.2 ;输出锁存器控制脉冲;=====================================================ORG 0000HLJMP MAINORG 0030H;=====================================================MAIN:MOV SP,#60HMOV R0,#0FEHMAIN1:CALL OUT_595CALL DELAYMOV A,R0RL AMOV R0,AJMP MAIN1;----------------------------------------------------------------------;输出锁存器输出数据子程序;----------------------------------------------------------------------OUT_595:LCALL WR_595CLR RCK_595NOPNOPSETB RCK_595 ;上升沿将数据送到输出锁存器NOPNOPNOPCLR RCK_595RET;---------------------------------------------------------------------;移位寄存器接收数据子程序;---------------------------------------------------------------------WR_595:MOV R4,#08H ;MOV A,R0WR_LOOP:RLC AMOV SDATA_595,CSETB SCLK_595 ;上升沿发生移位NOPNOPCLR SCLK_595DJNZ R4,WR_LOOPRET;--------------------------------------------------------------------;延时子程序;--------------------------------------------------------------------DELAY:MOV R5,#03HDEL0:MOV R6,#0FFHDEL1:MOV R7,#0FFHDJNZ R7,$DJNZ R6,DEL1DJNZ R5,DEL0RET;=====================================================END电路图见楼上/******************************************************************/* */* 74HC595 走马灯演示程序*/* 作者:gguoqing */* 时间:2006/02/26 */* */*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!*/* */******************************************************************/#include < ;reg51.h> //51芯片管脚定义头文件#include < ;intrins.h> //内部包含延时函数_nop_() ;#define uchar unsigned char#define uint unsigned intuchar code DAT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;sbit SDATA_595=P1^0 ; //串行数据输入sbit SCLK_595 =P1^1 ; //移位时钟脉冲sbit RCK_595 =P1^2 ; //输出锁存器控制脉冲uchar temp ;/********************************************************//* *//* 延时子程序*//* *//********************************************************/void delay(int ms){int k ;while(ms--){for(k=0 ; k< ;250 ; k++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;}}}/********************************************************//* *//*将显示数据送入74HC595内部移位寄存器*//* *//********************************************************/void WR_595(void){uchar j ;for (j=0 ;j< ;8 ;j++){temp=temp< ;< ;1 ;SDATA_595=CY ;SCLK_595=1 ; //上升沿发生移位_nop_() ;_nop_() ;SCLK_595=0 ;}}/********************************************************//* *//*将移位寄存器内的数据锁存到输出寄存器并显示*//* *//********************************************************/void OUT_595(void){RCK_595=0 ;_nop_() ;_nop_() ;RCK_595=1 ; //上升沿将数据送到输出锁存器_nop_() ;_nop_() ;_nop_() ;RCK_595=0 ;}/********************************************************* ** 主程序** **********************************************************/main(){SCLK_595=0 ;RCK_595=1 ;while(1){uchar i ;for (i=0 ; i< ;8 ; i++){temp=DAT[ i ] ; //取显示数据WR_595() ;OUT_595() ; delay(100) ;}}}。
74HC595 芯片的应用实例
在学习51 单片机控制LED 点阵的时候碰到74HC595 芯片,大学学的数电知识忘了差不多了,就在网上搜了一些资料,看到这篇写的不错,把大部分文章转过来,最后面是我的开发板里的程序资料。
下面是正文:
这个夏季学习semiok 同学自己动手焊接了一个LED 显示屏,MCU 用的是ATmega16,实现字幕的滚动显示,由于成本问题,只做了16*64 大小的,也就只能显示4 个中文汉字,这是研究显示驱动的时候找到的关于74HC595 的资料,有时间就把所有制作过程放上来。
正面样子还行
背面惨不忍睹
74HC595 同数据相关的引脚可以分为三类:
SDI:串行数据输入,接单片机的某个I/O 引脚。
Q0~Q7:8 位并行数据输出,可以直接控制8 个LED,或者是七段数码管。
74HC595芯片中文资料8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。
三态。
特点8位串行输入8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除100MHz的移位频率输出能力并行输出,总线驱动串行输出;标准中等规模集成电路应用串行到并行的数据转换Remote control holding register.描述595是告诉的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。
595是具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
参考数据符号参数条件TYP单位HC HCtt PHL/t PLH传输延时SHcp到Q7’STcp到Qn MR到Q7’C L=15pFVcc=5V161714212019NsNsNsf max STcp到SHcp最大时钟速度10057MHzC L输入电容Notes 1 3.53.5pF C PD Power dissipation Notes2 115 pFC PD 决定动态的能耗,P D =C PD ×V CC ×f 1+∑(C L ×V CC 2×f 0)F 1=输入频率,C L =输出电容 f 0=输出频率(MHz ) Vcc=电源电压 引脚说明 符号 引脚 描述 Q0…Q7 15, 1, 7 并行数据输出 GND 8 地Q7’ 9 串行数据输出 MR 10 主复位(低电平) SH CP11移位寄存器时钟输入ST CP12存储寄存器时钟输入OE13 输出有效(低电平) D S14串行数据输入capacitance per package.130V CC16 电源功能表输入输出功能SH CP ST CP OE MR D S Q7’Q n××L ↓×L NC MR为低电平时紧紧影响移位寄存器×↑L L ×L L 空移位寄存器到输出寄存器××H L ×L Z 清空移位寄存器,并行输出为高阻状态↑×L H H Q6’NC 逻辑高电平移入移位寄存器状态0,包含所有的移位寄存器状态移入,例如,以前的状态6(内部Q6”)出现在串行输出位。
74HC595芯片资料8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。
三态。
特点8位串行输入8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除100MHz的移位频率输出能力并行输出,总线驱动串行输出;标准中等规模集成电路应用串行到并行的数据转换Remote control holding register.#include<reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit stcp1=P2^2;sbit ds1=P2^1;sbit shcp1=P2^0;sbit stcp2=P2^5;sbit ds2=P2^4;sbit shcp2=P2^3;uchar code DAT[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共阴数码管显示码uchar code tab[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uchar code wei[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; void delay(uint ms){uint x,y;for(x=ms;x>0;x--)for(y=255;y>0;y--);}void QR0_5951(uchar num1){uchar j;for (j=0;j<8;j++){num1=num1<<1 ;ds1=CY;shcp1=1;//上升沿发生移位// shcp1=0;}}void OUT_5951()//将移位寄存器内的数据锁存到输出寄存器并显示{stcp1=0;stcp1=1;//上升沿将数据送到输出锁存器stcp1=0;}void QR1_5952(uchar num2){uchar j;for (j=0;j<8;j++){num2=num2<<1 ;ds2=CY;shcp2=1;//上升沿发生移位// shcp2=0;}}void OUT_5952()//将移位寄存器内的数据锁存到输出寄存器并显示{stcp2=0;stcp2=1;//上升沿将数据送到输出锁存器stcp2=0;}void main(){uchar i;while(1){for(i=0;i<2;i++){QR0_5951(DA T[0]);OUT_5951();QR1_5952(wei[i]);OUT_5952();delay(1);}}}描述595是高速的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。
74HC595芯片中文资料8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。
三态。
特点8位串行输入8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除100MHz的移位频率输出能力并行输出,总线驱动串行输出;标准中等规模集成电路应用串行到并行的数据转换Remote control holding register.描述595是告诉的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。
595是具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
参考数据符号参数条件TYP单位HC HCtt PHL/t PLH传输延时SHcp到Q7’STcp到Qn MR到Q7’C L=15pFVcc=5V161714212019NsNsNsf max STcp到SHcp最大时钟速度10057MHzC L输入电容Notes 1 3.53.5pF C PD Power dissipation Notes2 115 pFC PD 决定动态的能耗,P D =C PD ×V CC ×f 1+∑(C L ×V CC 2×f 0)F 1=输入频率,C L =输出电容 f 0=输出频率(MHz ) Vcc=电源电压 引脚说明 符号 引脚 描述 Q0…Q7 15, 1, 7 并行数据输出 GND 8 地Q7’ 9 串行数据输出 MR 10 主复位(低电平) SH CP11移位寄存器时钟输入ST CP12存储寄存器时钟输入OE13 输出有效(低电平) D S14串行数据输入capacitance per package.130V CC16 电源功能表输入输出功能SH CP ST CP OE MR D S Q7’Q n××L ↓×L NC MR为低电平时紧紧影响移位寄存器×↑L L ×L L 空移位寄存器到输出寄存器××H L ×L Z 清空移位寄存器,并行输出为高阻状态↑×L H H Q6’NC 逻辑高电平移入移位寄存器状态0,包含所有的移位寄存器状态移入,例如,以前的状态6(内部Q6”)出现在串行输出位。
移位寄存器芯片74HC595实现LED动、静态显示的基本原理摘要:本文介绍了应用移位寄存器芯片74HC595实现LED动、静态显示的基本原理。
提出了一种用74HC595实现多位LED显示的新方法。
同时对该系统的硬件组成和软件实现作了详细说明。
实际应用表明,此方法连线简单方便,成本低廉,可用于24位LED或更多位LED显示。
关键词:LED 74HC595 动态显示静态显示1 引言单片机应用系统中使用的显示器主要有LED和LCD两种。
近年来也有用CRT显示的。
前者价格低廉,配置灵活,与单片机接口方便;后者可进行图形显示,但接口较复杂,成本也较高。
LED(Ling Emiting Diode)是发光二极管的缩写。
实际应用非常普遍的是八段LED显示器。
LED显示器在大型报时屏幕,银行利率显示,城市霓虹灯建设中,得到广泛应用。
在这些需要多位LED显示的场合,怎样实现系统稳定,价格低廉的显示,成为决定其成本的关键所在。
2 74HC595实现LED静、动态显示基本原理74HC595是美国国家半导体公司生产的通用移位寄存器芯片。
并行输出端具有输出锁存功能。
与单片机连接简单方便,只须三个I/O口即可。
而且通过芯片的Q7引脚和SER引脚,可以级联。
而且价格低廉,每片单价为1.5元左右.2.1 静态显示每位LED显示器段选线和74HC595的并行输出端相连,每一位可以独立显示(见图1)。
在同一时间里,每一位显示的字符可以各不相同(每一位由一个74HC595的并行输出口控制段选码)。
N位LED显示要求N个74HC595芯片及N+3条I/O口线,占用资源较多,而且成本较高。
这对于多位LED显示很不利。
2.2 动态显示在多位LED显示时,为了简化电路,降低成本,节省系统资源,将所有的N位段选码并联在一起,由一片74HC595控制(见图2)。
由于所有LED的段选码皆由一个74HC595并行输出口控制,因此,在每一瞬间,N位LED会显示相同的字符。
74hc595 芯片使用方法
74hc595 外形图
74595 的数据端:
QA--QH: 八位并行输出端,可以直接控制数码管的8 个段。
QH’:级联输出端。
将它接下一个595 的SI 端。
SI: 串行数据输入端。
74595 的控制端说明:
/SCLR(10 脚): 低点平时将移位寄存器的数据清零。
通常我将它接Vcc。
SCK(11 脚):上升沿时数据寄存器的数据移位。
QA-->QB-->QC-->...-->QH; 下降沿移位寄存器数据不变。
(脉冲宽度:5V 时,大于几十纳秒就行了。
我
通常都选微秒级)
RCK(12 脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时
存储寄存器数据不变。
通常我将RCK 置为低点平,当移位结束后,在RCK。
基于proteus的51单片机仿真实例七十五、串入并出芯片74HC595应用实例
标签: proteus单片机实例芯片应用2010-02-24 00:33
1、本例中利用一片595控制一个数码管显示。
实现了利用3个IO口控制8位数据的输出
2、74HC595的控制端口:
1)SH_CP(11脚):移位时钟脉冲输入端。
在上升沿时移位寄存器将数据移位
2)DS(14脚):串行数据输入端。
本例通过移位运算将每次移位的数据送到PWD寄存器的进位标志位CY,CY再将值传递给DS引脚,8次移位后完成一个字符的串行传送。
3)ST_CP(12脚):锁存脉冲控制端,在上升沿时移位寄存器的数据被传入存储寄存器,这时如果OE端为低电平,传入存储器的数据会直接输出到输出端Q0-Q7。
本例在一个字节的移位操作完成后,通过在ST_CP端产生一个上升沿将数据送出。
4)/MR(10脚):低电平时将移位寄存器数据请0.一般情况下接VCC
5)/OE(13脚):高电平时输出端禁止输出(高阻态)。
低电平时允许数据输出
使用74HC595的优点是能锁存数据,这样在移位过程中可以保持输出端的数据不变。
而
74HC164则没有这种功能。
//利用74HC595实现端口扩展
#include <reg51.h> // 寄存器头文件包含
#include <intrins.h> // 空操作函数,移位函数头文件包含
sbit SH_CP = P2^0; //移位时钟脉冲端口
sbit DS = P2^1; // 串行数据输入端口
sbit ST_CP = P2^2; //锁存端口
unsigned char temp;
unsigned char code disp_buff[] =
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管段码表
//延时函数
void delayms(unsigned int x)
{
unsigned char i;
while(x--)
{
for(i = 0;i < 120;i++);
}
}
//串行输入函数
void input_595(void)
{
unsigned char i;
for(i = 0;i < 8;i++)
{
temp <<= 1; // 数据移位
DS = CY; //产生一个时钟上升沿,使数据移位
SH_CP = 1; //
_nop_();
_nop_();
SH_CP = 0;
}
}
//数据并行输出函数
void output_595(void)
{
ST_CP = 0; // 锁存器端口产生一个上升沿,将数据输出
_nop_();
ST_CP = 1;
_nop_();
ST_CP = 0; //锁存数据
}
//
void main(void)
{
unsigned char i;
while(1)
{
for(i = 0;i < 10;i++)
{
temp = disp_buff[i]; //数码管显示
input_595(); //将一个字节的数据串行输入595
output_595(); //595移位寄存器数据传输到存储寄存器,并输出到数据端口 delayms(500);
}
}
}
3、在keil c51中新建工程ex63,编写如下程序代码,编译并生成ex63.hex文件
4、在proteus中新建仿真文件ex63.dsn,电路原理图如下所示
5、将ex63.hex文件载入at89c51中,启动仿真,按动拨码开关,观察运行结果。
下图是某一时刻程序运行结果。