当前位置:文档之家› 74hc595驱动串行led显示(精)

74hc595驱动串行led显示(精)

74hc595驱动串行led显示(精)
74hc595驱动串行led显示(精)

74hc595驱动串行led显示

串行驱动led显示

//一个74hc595位移寄存器驱动三极管驱动led位,

//两个74hc595驱动led段,方式位5位x8段x2=10个数码管//5分频,每次扫描时间位1.25ms

//定义特殊符号

#define nul 0xf

#define qc 0xc

#define qb 0xb

#define q_ 0xa

#define q__ 0xd

#define q___ 0xe

#define qp 0x10

#define qe 0x11

#define qj 0x12

#define qn 0x13

#define qf 0x14

#define qa 0x15

#define qr 0x16

#define qd 0x17

#define qu 0x18

#define ql 0x19

#define qh 0x1a

#define qwen 0x1b

#define qt 0x1c

#define qla 0x1d

#define qlb 0x1e

#define qlc 0x1f

#define qld 0x20

#define qle 0x21

#define qlf 0x22

#define qlg 0x23

#define qldp 0x24

//显示段信息,不同led排列组合的段信息只需更改8个数值即可。//因此,该定义具有通用性。

// 显示

// -d 20

// |c 40 |e 10

// - g 80

// |b 2 |f 4

// _a1 .dp 8

#define pa 1

#define pb 2

#define pc 0x40

#define pd 0x20

#define pe 0x10

#define pf 4

#define pg 0x80

#define pdp 8

//--------------

#define l0 pdp+pg

#define l1 255-pf-pe

#define l2 pdp+pc+pf

#define l3 pdp+pc+pb

#define l4 pdp+pa+pb+pd

#define l5 pdp+pb+pe

#define l6 pdp+pe

#define l7 pdp+pc+pg+pb+pa

#define l8 pdp

#define l9 pdp+pb

#define la pdp+pa

#define lb pdp+pd+pe

#define lc pdp+pg+pe+pf

#define ld pdp+pc+pd

#define le pdp+pe+pf

#define lf pdp+pe+pf+pa

#define l_ 255-pg

#define lnul 255

#define ll pdp+pg+pd+pf+pe

#define lp pdp+pa+pf

#define lt pdp+pd+pe+pf

#define lr pdp+pe+pf+pg+pa

#define ln pdp+pg+pa

#define lh pdp+pd+pe+pa

#define ly pdp+pb+pd

#define lu pdp+pg+pd

#define l__ pdp+pg+pb+pc+pe+pf #define l___ l__-pg

#define l_1 255-pa

#define l_2 255-pa-pg

#define lj 255-(pe+pf+pa

#define lwen 255-(pd+pe+pg+pb #define lall 0

#define lla 255-pa

#define llb 255-pb

#define llc 255-pc

#define lld 255-pd

#define lle 255-pe

#define llf 255-pf

#define llg 255-pg

#define lldp 255-pdp

//串行送出的位信息,目前是10位led显示。

unsigned char code un_dig[]={0x7f 0 0 0 0 0 char code un_disp[]={l0 l1 l2 l3 l4 l5 l6 l7 l8 l9 l_ lb lc l__ l___ lnul lp le lj ln lf la lr ld lu ll lh lwen lt lla llb llc lld lle llf llg lldp lnul};

sbit d_clk=P0^0; //移位时钟

sbit d_dat=P0^1; //移位数据

sbit d_st=P0^2; //移位锁定

unsigned char dig; //位扫描计数器

unsigned char d[10]; //显示缓冲

//送出8位串行数据

void out_disp(unsigned char dd {

unsigned char i;

for (i=0;i<8;i++ {

if (dd&1 d_dat=1; else d_dat=0;

d_clk=0;

dd>>=1;

d_clk=1;

}

}

//控制小数点和闪烁,显示数据|0x040表示有小数点;显示数据|0x80表示闪烁。void out_displ(unsigned char dd {

if (dd>=0x80 {

if (s001>flash_time {out_disp(0xff;return;}

}

dd&=0x7f;

if (dd>=0x40 {

dd=un_disp[dd&0x3f]^pdp;

} else dd=un_disp[dd];

out_disp(dd;

}

unsigned int s001; //闪烁时间参考

void int_t0(void interrupt 1 {

unsigned char dd;

TL0=TL0+30;TH0=0xfb; //800

time++;

if ((++s001>=800 s001=0;

// 显示

if ((++dig>4 dig=0;

d_st=0;

dd=d[dig+5];

out_displ(dd;

dd=d[dig];

out_displ(dd;

out_disp(un_dig[dig];

d_st=1;

}

void main(void {

unsigned char i;

TMOD=0x1;

TR0=ET0=1;

EA=1;

for (i=0;i<10;i++ d[i]=i; //display test while (1 {}

}

最新LED显示屏驱动电路设计

L E D显示屏驱动电路 设计

摘要 LED显示屏具有使用寿命长、响应速度快、可视距离远、规格品种多、数字化程度高、亮度高等特点,在信息显示领域已经得到了非常广泛的应用。它利用发光二极管构成的点阵模块或像素单元,组成大面积显示屏。其显示方法有静态显示和动态扫描显示。动态扫描显示耗用硬件资源少,但软件要不断处理,耗CPU。静态显示虽然软件简单但硬件价格稍贵。LED显示屏主要包括发光二极管构成的阵列、驱动电路、控制系统及传输接口和相应的应用软件。而驱动电路设计的好坏,对LED显示屏的显示效果、制作成本及系统的运行性能起着很重要的作用。 本文介绍了点阵式电子显示屏的硬件电路设计原理与软件设计方案,采用51系列单片机芯片,得到了一个能同时显示8个汉字16×16的LED点阵式电子显示屏。 关键词:LED显示屏动态扫描 AT89S52 74HC595

ABSTRACT The LED display monitor has the long of service life, quacking response speed, the far of it’s visual range , many specification variety, high of the digitized, the brightness higher characteristic. It in the information demonstrated the domain already obtained the extremely widespread application. It lattice module or picture element unit which constitutes using the light emitter, composes the big area display monitor. It’s demonstration method has the static demonstration and the dynamic scanning demonstration. The dynamic scanning demonstration consumes the hardware resources to be few, but the software must process unceasingly, and consumes CPU. Although the static state software for display is simple, the hardware price is slightly expensive. The LED display monitor mainly include the array which the light emitter diode constitutes , actuates the electric circuit ,the control system and the transmission connection and the corresponding application software. But actuates the circuit design the quality, to the LED display monitor demonstration effect, the manufacture cost and the system performance characteristic is playing the very vital role. Key words: LED display monitor Dynamic scanning AT89S52 74HC595

利用74HC595实现多位LED显示的方法

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并行输出口输出相应字符段选码,而位选则控制I/O口在该显示位送入选通电平,以保证该位显示相应字符。如此轮流,使每位分时显示该位应显示字符。由于74HC595具有锁存功能,而且串行输入段选码需要一定时间,因此,不需要延时,即可形成视觉暂留效果。 N位LED显示时,只需要一片74HC595即可完成,成本最低。但是,此种方法的最大弱点就是当LED的位数大于12位时,出现闪烁现象,这是所有动态LED显示方式共同的弱点。 3 多位LED显示方法的实现

74hc595驱动数码管

74hc595驱动数码管 版本一 顶层例化文件 module seg7x8( input CLOCK_50, // 板载50MHz时钟 input Q_KEY, // 板载按键RST output [7:0] SEG7_SEG, // 七段数码管 段脚 output [2:0] SEG7_SEL // 七段数码管 待译位脚 ); // 显示效果: // ------------------------- // |1 |2.|3 |4 | |B |C |D | // ------------------------- seg7x8_drive u0( .i_clk (CLOCK_50), .i_rst_n (Q_KEY), .i_turn_off (8'b0000_1000), // 熄灭位[2进制][此处取第3位 .i_dp (8'b0100_0000), // 小数点位[2进制][此处取第6位 .i_data (32'h1234_ABCD), // 欲显数据[16进制] .o_seg(SEG7_SEG), .o_sel(SEG7_SEL) ); endmodule 驱动文件 module seg7x8_drive(

input i_clk, input i_rst_n, input [7:0] i_turn_off, // 熄灭位[2进制 input [7:0] i_dp, // 小数点位[2进制 input [31:0] i_data, // 欲显数据[16进制 output [7:0] o_seg, // 段脚 output [2:0] o_sel // 使用74HC138译出位脚 ); //++++++++++++++++++++++++++++++++++++++ // 分频部分 开始 //++++++++++++++++++++++++++++++++++++++ reg [16:0] cnt; // 计数子 always @ (posedge i_clk, negedge i_rst_n) if (!i_rst_n) cnt <= 0; else cnt <= cnt + 1'b1; wire seg7_clk = cnt[16]; // (2^17/50M = 2.6114)ms //-------------------------------------- // 分频部分 结束 //-------------------------------------- //++++++++++++++++++++++++++++++++++++++ // 动态扫描, 生成seg7_addr 开始 //++++++++++++++++++++++++++++++++++++++ reg [2:0] seg7_addr; // 第几个seg7 always @ (posedge seg7_clk, negedge i_rst_n) if (!i_rst_n) seg7_addr <= 0; else seg7_addr <= seg7_addr + 1'b1; //-------------------------------------- // 动态扫描, 生成seg7_addr 结束 //-------------------------------------- //++++++++++++++++++++++++++++++++++++++

74HC595工作原理及应用

74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能 OE时(为低电平),存储寄存器的数据输出到总线。74HC595各个引脚的功能:Q1~7 是并行数据输出口,即储寄存器的数据输出口Q7' 串行输出口,其应该接SPI总线的MISO接口STcp 存储寄存器的时钟脉冲输入口SHcp 移位寄存器的时钟脉冲输入口OE的非输出使能端MR的非芯片复位端Ds 串行数据输入端程序说明:每当spi_shcp上升沿到来时,spi_ds 引脚当前电平值在移位寄存器中左移一位,在下一个上升沿到来时移位寄存器中的所有位都会向左移一位,同时Q7'也会串行输出移位寄存器中高位的值,这样连续进行8次,就可以把数组中每一个数(8位的数)送到移位寄存器;然后当 spi_stcp上升沿到来时,移位寄存器的值将会被锁存到锁存器里,并从Q1~7引脚输出附子程序: void hc595send_data(uint8 data)//要传输的数据,建议用数组的方法来查询{ uint8 i; IO0CLR = spi_stcp; 12 脚 for(i=0;i<8;i++) { IO0CLR = spi_shcp; 11 脚 if((data&0x80)!=0)IO0SET = spi_ds; else IO0CLR = spi_ds; data <<= 1; IO0SET = spi_shcp; } IO0SET = spi_stcp;} 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的并行输出端相连,每一位可以独立显示。在同一时间里,每一位显示的字符可以各不相同(每一位由一个74HC595的并行输出口控制段选码)。 N位LED显示要求N个74HC595芯片及N+3条I/O口线,占用资源较多,而且成本较高。这对于多位LED显示很不利。 2.2 动态显示 在多位LED显示时,为了简化电路,降低成本,节省系统资源,将所有的N位段选码并联在一起,由一片74HC595控制。由于所有LED的段选码皆由一个74HC595并行输出口控制,因此,在每一瞬间,N位LED会显示相同的字符。想

51单片机驱动两片74HC595级联动态驱动8位数码管

51单片机驱动两片74HC595级联动态驱动8位数码管 功能: 用2片74HC595驱动8位数码管, 级联的最低1片595控制位选,那么第一片控制段选 平台: STC89C52 现象: 8位数码管从第一位开始从0计数,满10进位 版本说明: 第0版本没有使用定时器中断,同时定义了一个unsigned long int 变量计数,再把这个数的每位分离出来显示,所以导致有点闪屏,此版本使用定时器中断,而且没有用unsigned long int 之类的变量,而是用数组Val[8] 来计数, 主函数只负责显示,其它的在中断函数里面处理,这样显示一点都不闪屏, 备注: 可以用ULN2003A 接在数码管的com 口来提高驱动能力,ULN2003A里面有7个NPN三极管, 可以大大提高驱动能力 #include <> sbit SCK = P1^1; // 数据输入时钟线,脉冲 sbit SI = P1^0; // 数据线 sbit RCK = P1^2; // 锁存 unsigned char code SMG[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; // 段码 unsigned char code Wei[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; // 位选unsigned char Val[8] = {0}; // 要显示的数据 ************************ 函数声明************************ void interrupt_init(void); void timer_init(void); 控制74HC595输出数据 void Output(void) { RCK = 0; RCK = 1; } 向74HC595中写入一字节数据 void Write_Byte(unsigned char dat) { unsigned char i = 0; for(i=0; i<8; i++) { SCK = 0; SI = dat & 0x80;

stm32使用三片74HC595级联程序代码

stm32使用三片74HC595级联程序代码 /**************************************************************** ******** Function: Read_74HC595 Description: 读取n 片74HC595 的输入数据Calls: HC595_delay;GPIO_ResetBits;GPIO_SetBits;Data Accessed: 无Data Updated: 无Input: HC595x:用户使用的595 端口,类型定义在74HC595.h 中ChipNum: 用户使用的595 端口上连接的芯片个数Output: DataBuf: 输出数据 存放缓冲区Return: 无Others: 此模块为Stm32 单片机中使用,调试时在72M 系统时钟下 ******************************************************************** *****/ void Write_74HC595(HC595 HC595x,unsigned char ChipNum,unsigned char *DataBuf){ unsigned char i = 0; unsigned char DataBufTmp = 0; GPIO_ResetBits(HC595x.Lck.Port, HC595x.Lck.Pin); //设置LCK 为低电平,上升 沿数据锁存for(; ChipNum>0; ChipNum--) { DataBufTmp = *DataBuf; for(i=0; itips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

LED显示屏的的工作原理及驱动电路

单片机采用AT89C51。系统采用12MHz或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。单片价的串口与列驱动器相连,用来送显示数据。P1口低4位与行驱动器相连,送出行选信号,P1.5~P1.7口则用来发送控制信号。P0和P2口空闲,在必要时可以扩展系统的ROM和RAM。 2.2时钟脉冲电路 AT89C51的最高时钟脉冲频率已经达到24MHz,它内部已经具备了振荡电路,只要在AT89C51的两个引脚(即19、18脚)连接到简单的石英振荡晶体的2个管脚即可,同时晶体的2个管脚也要用30pF的电容耦合到地,如图3所示。 图3时钟脉冲电路 2.3复位电路 AT89C51的复位引脚(RESET)是第9脚,当此引脚连接高电平超过2个机器周期时,即可产生复位的动作。以24MHz的时钟脉冲为例,每个时钟脉冲为05μs,两个机器周期为1μs,因此,在第9脚上连接1个2μs的高电平脉冲,即可产生复位动作。最简单的就是只有1个电阻跟1个电容就可构成可靠复位的电路,电阻选择10kΩ,电容选择10μF,如图4所示。 图4复位电路 2.4点阵显示驱动电路设计 采取分立元件三极管作驱动电路,驱动电路如图5所示。 图5点阵显示驱动电路 3系统软件设计 显示屏软件的主要功能是向显示屏提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。 根据软件分层次设计的原理,可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向点阵屏传送特定组合的显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动程序由显示子程序实现;系统环境设置(初始化)由系统初始化程序完成;显示效果处理等工作,则由主程序通过调用子程序来实现。 3.1显示驱动程序 显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定。16行扫描格式的显示屏刷新率(帧频)的计算公式如下: 其中:F为晶振频率;T为定时器T0初值(工作在16位定时器模式)。 其次,显示驱动程序查询当前点亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。 为消除在切换行显示数据时产生的拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据输入输出锁存器后,再输出新的行号,重新打开显示。图6所示为显示驱动程序(显示屏扫描函数)流程图。 图6显示驱动程序流程图 3.2系统主程序 系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断、端口。然后以“卷帘出”效果显示文字或图案,停留几秒钟,接着向上滚动

两片74HC595级联驱动两个四连体数码管

两片74HC595级联驱动两个四连体数码管 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。 数据在SHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。 我的硬件连接:用级联方式连接! 工作顺序:单片机先送1个8位数据到第一个595的内部移位寄存器->然后数据会送到内部的输出寄存器->输出 当MR(10引脚)为高电平,OE(13引脚)为低电平时,数据在SH CP上升沿进入移位寄存器,在ST CP上升沿输出到并行端口。 可能这还不太好理解,没关系,咱去程序应用中理解! 请看一个简单的程序: sbit SDA1 = P0^0; //串行数据输入,对应595的14脚SER sbit SCL1 = P0^1; //移位寄存器时钟输入,对应595的11脚SCK sbit SCL2 = P0^2; //存储寄存器时钟输入,对应595的12脚RCK unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0 1 2 3 4 5 6 7 8 9 unsigned char code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void delay2ms(void) { unsigned char i,j; for(i=133;i>0;i--) for(j=6;j>0;j--); } void 595_in(unsigned char Data) { unsigned char i; for(i = 0; i < 8; i++) //循环8次,刚好移完8位

串入并出芯片74HC595应用实例

基于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 // 寄存器头文件包含 #include // 空操作函数,移位函数头文件包含 sbit SH_CP = P2^0; //移位时钟脉冲端口 sbit DS = P2^1; // 串行数据输入端口 sbit ST_CP = P2^2; //锁存端口 unsigned char temp; unsigned char code disp_buff[] =

74HC595驱动数码管上显示数字

/******************************************************************************* * 标题: 试验74HC595驱动数码管上显示数字(C语言)* 连接方法:JP12用条线冒短接JP3和JP2 用8PIN排线连接 ******************************************************************************** * 通过本例程了解74HC595(串入并出)基本原理和使用* 请学员认真消化本例程,懂74C595在C语言中的操作* ********************************************************************************/ #include #include #define NOP() _nop_() /* 定义空指令*/ //SPI IO sbit MOSIO =P3^4; //串行数据线 sbit R_CLK =P3^5; //数据并行输出控制 sbit S_CLK =P3^6; //串行时钟线 void delay(unsigned int i); //函数声名 void HC595SendData(unsigned char SendV al); //函数声名 // 此表为LED 的字模// 0 1 2 3 4 5 6 7 8 9 A b c d E - L P U Hidden _ (20) unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71}; main() { unsigned char HC595SendVal; unsigned int LedNumVal = 1; while(1) { LedNumVal++; HC595SendVal = LED7Code[LedNumV al%16]; //LED7;显示0-F LedNumVal%10 显示0-9 HC595SendData(HC595SendVal); //调用595驱动函数 delay(200); } } /*******************延时函数************/ void delay(unsigned int i) { unsigned int j; for(i; i > 0; i--) //CPU循环执行i*300次 for(j = 300; j > 0; j--);

led显示屏驱动电路

led显示屏驱动电路 led显示屏驱动电路(图1)LED显示屏常规驱动电路的设计LED显示屏驱动电路的设计,与所用控制系统相配合,通常分为动态扫描型驱动及静态锁存型驱动二大类。以下就动态扫描型驱动电路的设计为例为进行分析:动态扫描型驱动方式是指显示屏上的4行、8行、16行等n行发光二极管共用一组列驱动寄存器,通过行驱动管的分时工作,使得每行LED的点亮时间占总时间的1?n,只要每行的刷新速率大于50Hz,利用人眼的视觉暂留效应,人们就可以看到一幅完 led显示屏驱动电路(图1 ) LED显示屏常规驱动电路的设计 LED显示屏驱动电路的设计, 与所用控制系统相配合, 通常分为动态扫描型驱动及静 态锁存型驱动二大类。以下就动态扫描型驱动电路的设计为例为进行分析: 动态扫描型驱动方式是指显示屏上的4 行、 8 行、 16 行等n 行发光二极管共用一组列驱 动寄存器, 通过行驱动管的分时工作, 使得每行L ED 的点亮时间占总时间的1? n, 只要每行 的刷新速率大于 50 Hz, 利用人眼的视觉暂留效应, 人们就可以看到一幅完整的文字或画

面[ 2 ] 。 常规型驱动电路的设计一般是用串入并出的通用集成电路芯片如74HC595 或MC14094等作为列数据锁存, 以8050等小功率N PN 三极管为列驱动, 而以达林顿三极管 如TIP127等作为行扫描管, 其电路如图1 所示。 如以单色点阵、 16 行×64 列为一个基本单元, 则需用 8 片 74HC595、 64 个8050 及 16 个行扫描管, 其工作原理为: 将八片 74HC595 级连, 共用一个串行时钟CL K 及数据锁存信号STR。当第一行需要 显示的数据经过8×8= 64 个CL K 时钟后将全部移入 74HC595 中, 此时产生一个数据锁存 信号STR , 使数据锁存在74HC595 的后级锁存器中, 则与其各输出位对应的8050 将处于饱 和导通或截止; 同时由行扫描控制电路产生信号使第一行扫描管导通, 相当于第一行L ED 的正端都接高平, 显然第一行L ED 管子的亮灭就取决于74HC595 中所锁存的信号; 在第一 行L ED 管子点亮的同时, 在 74HC595 中移入第二行需要显示的数据, 随后将其锁存, 并同 时由行扫描控制电路将第一行扫描管关闭而接通第二行, 使第二行L ED 管子点亮……以此 类推, 当第十六行扫描过后再回到第一行, 只要扫描速度足够高, 就可形成一幅完整的文字 或图像, 其工作时序见图2。 常规型驱动电路存在的缺陷 该常规型驱动电路的设计结构虽然比较简单, 但存在有二个缺陷: (1)当某一行行驱动管有效时, 该行所对应的所有L ED 发光二极管的点亮电流都将流过该行驱动扫描管, 而一行中点亮L ED 管子的多少随所要显示的文字或图形而不断改 变, 所以行扫描管中流过的电流有较大的变化, 将使其管压降有所改变; (2)点亮L ED 管子的多少而引起电流的变化也将影响到电源电压值的波动, 由此将

51单片机+74HC595驱动数码管程序

51单片机+74HC595驱动数码管程序 这里是电路图:完整的源码和图纸下载地址:51hei/bbs/dpj-20392-1.html 下面是51 单片机驱动74hc595 芯片的程序:#include //包含51 单片机的头文 件#include #define uint unsigned int#define uchar unsigned char//sbit sin_595 =P1;//sbit rclk_595 =P1;//sb it sclk_595 =P1 ;//sbit s_clr =P1;sb it a_cp_595 =P2; //串行移位时钟脉冲sh_cp_595sbit b_cp_595 =P2;//输出锁存器控制脉冲 st_cp_595//sbit _oe_595 =P1 ; //8 位并行输出使能/禁止(高阻态)sbit ds_595 =P2 ; //串行数据输入extern uchar datas[6]; //存放6 个数码管的显示数字uchar ledcode[]={0xC0,// 00xF9,// 10xA4,// 20xB0,// 30x99,// 40x92,// 50x82,// 60xF8,// 70x80,// 80x90,// 90x88,// A0x83,// B0xC6,// C0xA1,// D0x86,// E0x8E// F};void delay(uint z){uint t1,y;for(t1=z;t1>0;t1--)for(y=110;y>0;y--);}void led_display(void){ uchar i,j; bit testb; uchar bdata movebit[6]; uchar bdata test; //_oe_595=0; //选中数码管for(i=0;i<6;i++) movebit[i]=ledcode[datas[i]]; // P1=0; delay(1); for(i=0;i<6;i++) //数据移位{ test=movebit[i]; for(j=0;j<8;j++) { testb=test&0x80; test=test<<1; if(testb) { ds_595=1; } else {ds_595=0; }a_cp_595=1; a_cp_595=0; } //数据移位} b_cp_595=0; b_cp_595=1; b_cp_595=0;} tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

proteus原理图及程序(74HC595级联点亮LED)

#include //51头文件 #include // #define uchar unsigned char #define uint unsigned int //--定义使用的IO口--// sbit DS=P2^1; //串行数据输入 sbit SHCP=P2^0; //移位寄存器时钟输入,为低电平时将595数据清零 sbit STCP=P2^2; //片选,存储寄存器时钟输入,STCP时钟上升沿时,将595数据送入存储寄存器 uchar data adata; void delayms(uint t); void Input(uchar ch); void Output(adata); /******************************************************** * * * 延时子程序* * * *********************************************************/ void delayms(uint t) { uchar i; while(t-->0){ for(i=0;i<125;i++){;}

} } /******************************************************** * * * 输入数据子程序* * * *********************************************************/ void Input(uchar ch) //将显示数据送入74HC595内部移位寄存 { uchar BitCounter=8; //位数控制 uchar tmp; do { tmp=ch; SHCP=0; if((tmp&0x80)==0x80) //如果最高位是1 DS=1; else DS=0; SHCP=1; tmp=ch<<1; //左移 ch=tmp; BitCounter--; _nop_(); STCP=0; } while(BitCounter); } /******************************************************** * * * 输出数据子程序* * * *********************************************************/ void Output(adata) //将移位寄存器内的数据锁存到输出寄存器并显示,adata为输出的数据{ STCP=0; _nop_(); _nop_(); _nop_(); STCP=1; //上升沿将数据送到输出锁存器 _nop_(); _nop_(); _nop_();

led显示屏控制卡-LED显示屏控制器原理

目录 第一章 801型、802型卡功能简介 (1) 第二章硬件参数 (5) 第二章第8代控制系统使用手册 (6) 第三章国标网线制作方法 (25) Index Chapter I Model 801 and 802 functions and features (27) Chapter II Model 801 and 802 manual (30) Chapter III Communication cable making method (49) 深圳三鑫维科技是一家专业生产制造LED显示屏的知名企业,20年的led行业研究经验,如还有不理解的请咨询电话:9

第一章 801型、802型卡功能简介 一、完全兼容第七代 基于第七代升级开发,原功能不少,新功能更多更强大,系统更稳定更可靠。可与七代系统混合使用。 二、支持10位颜色 旧系统的8位颜色只能显示256X256X256=1677216种颜色,新系统颜色数为1024X1024X1024=1073741824种颜色,新系统颜色数是旧系统的64倍。 三、智能连接功能 同一块显示屏的多块接收卡/箱体(含备用的)可以任意交换而不需重新设置,接收卡能智能地动识别需显示的内容。 四、智能监控 每块接收卡均有温度检测和四路风扇监控输出,可根据用户设定的温度上限智能地控制四路风扇转速。 五、公司图标显示 当发送卡电源没开启时显示屏自动显示设定的公司图片,图片像素为128X128,颜色数为16K色。 六、支持16以内的任意扫描方式 原系统只支持1、2、4、8、16扫描,新系统为1、2、3、4、5、6、 7、8、9、10、11、12、13、14、15、16扫描。 七、支持模块宽度为64以内的任意数

74HC595测试程序

//74HC595测试程序,在一个数码管上循环显示1~9. #include #include sbit sdat=P2^0; //串行数据输入端 sbit sclk=P2^1; //移位寄存器时钟输入端 sbit srck=P2^3; //存储寄存器时钟输入 sbit srst=P2^4; //主复位端,低电平复位 unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90}; //共阳极编码 void delay(unsigned int z ) { unsigned char x; while(z--) //1ms延时程序 for(x=120;x>0;x--); } void txdbyte(unsigned char dat) { unsigned char i,j; j=dat; //74HC595的数据串入并出子程序 for(i=0;i<8;i++) { sdat=(bit)(j&0x80); //从最高位开始传送 sclk=0; //发送一个上升沿信号,告诉对方读取数据发送线上的数据线 sclk=1; //锁存到移位寄存器 j<<=1; } srck=0; //锁存到输出并口 srck=1; } void main() { unsigned char i; srst=0; //先复位 delay(2); srst=1; //复位完毕 while(1) for(i=0;i<10;i++) { txdbyte(~table[i]); //将0~9发送到数码管

74hc595和74hc165级连c51程序

#include #define uchar unsigned char #define uint unsigned int sbit DS=P1^0 ; //595 sbit SH=P1^1 ; sbit ST=P1^2 ; //sbit MR=P1^3; sbit CLK=P1^4;//165 sbit INH=P1^5; sbit LD=P1^6; sbit SO=P1^7; //msec(511);0.5s //msec(2);2ms //msec(1021);//1s void msec(unsigned long x) //延时{ unsigned char j; while(x!=0) { x--; for(j=0;j<116;j++) {;} } } void hc595(uchar *p,n) { uchar i,j; for(;n>0;n--) { i=*p; for(j=0;j<8;j++) { DS=i&0x80; i=i<<1; SH=0; SH=1; } ST=0;

ST=1; ST=0; p++; } } void hc165(uchar *d,n) { uchar i=0,j,c=0; LD=1; LD=0; LD=1; INH=0; for(j=0;j<(n*8);j++) { CLK=1; i=i<<1; i=i|SO; CLK=0; c++; if(c==8){*d=i;c=0;d++;} } } main() {uchar *P,*D; uchar i,a[5]={0x00,0x00,0x00,0x00,0x01},b[5]={0x0ff,0x0ff,0x0ff,0x0ff,0x0ff}; P=a; D=b; hc595(P,5); hc165(D,5); P3=b[4]; while(1); for(i=0;i<34;i++) { if(i==8){a[3]=0x01; a[4]=0x00;} if(i==16){a[2]=0x01;a[3]=0x00;} if(i==24){a[1]=0x01;a[2]=0x00;} if(i==32){a[0]=0x01;a[1]=0x00;} P=a; hc595(P,5); a[0]<<=1; a[1]<<=1; a[2]<<=1;

使用74HC595实现IO口的扩展

使用74HC595实现I/O口的扩展 一、实验目的 1. 了解74HC595(串入并出)基本原理和使用 2. 了解数码管的基本原理和驱动方式 3. 学会使用74HC595来驱动静态数码管 二、实验器材 C51单片机开发板(含74HC595芯片,静态数码管)1块 8PIN排线1根 数据线1根 三、实验原理 1. 数码管 数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管(还有一种“米”字型的数码管,其段数更多),八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),其基本原理是:将所有LED的一端(正极、负极均可)连在一起作为一个公共端,然后通过分别控制这组LED的另一个端口来使部分LED点亮,从而达到显示一定字形的目的。 (1)数码管的分类 按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。我们在实际使用中一定要搞清楚数码管是共阴极的还是共阳极的。 (2)数码管段、位引脚的确定(以4位8段数码管为例) 数码管引脚测量分三步:极性判断(共阳极还是共阴极)、公共端判断(位选端口)、段码端判断(段选端口)。 首先要确定数码管是共阴极还是共阳极的:找一个3到5V的直流电源,准备几个1K或者几百欧姆的电阻。将电源的正极串接一个电阻后连在数码管的任意一个脚上,然后将电源的负极逐个接到数码管的其余引脚上,观察数码管的某一段是否会点亮,如果全部引脚试过都没有亮的,那么将电源正极(串电阻)换一个引脚再试,直到有一个LED发光,这时固定电源负极不动,电源正极(串电阻)逐个接到数码管的其余引脚上,如果有8段LED都亮,说明该数码管是共阴极的。相反,按住电源正极不动,电

相关主题
文本预览
相关文档 最新文档