利用74HC595实现多位LED显示的方法
- 格式:doc
- 大小:45.50 KB
- 文档页数:4
利用74hc595配合单片机做流水灯:如有问题请加qq:97192511 验证信息:随风对于一个单片机学习者,硬件和软件是分不开的,本人刚毕业不久,对于单片机有一点个人心得,现在把这些分享给大家,希望大手子勿喷。
首先来介绍下74hc595这个芯片:芯片资料网上很多,这些我就不单独粘出来了,稍后我会说下这个芯片的使用方法以及时序图的理解。
上面这张图是我在做毕业设计时用到的原理图,其中Q0到Q7分别接LED,VCC接5V电源,GND接地P0.1,P0.2,P0,.3分别接51单片机的P0.1,P0.2,P0,.3。
这三个io口分别加了上拉电阻,关于上拉电阻,以后我会再讲解。
下面来看看这个芯片的各个引脚的功能:Q0--Q7: 八位并行输出端。
Q7': 级联输出端。
可以将它接下一个595的SI,由于这个LED只用到一个595,所以将其悬空。
DS: 串行数据输入端。
74595的控制端说明:MR(10脚): 低点平时将移位寄存器的数据清零。
SHCP(11脚):上升沿时数据寄存器的数据移位。
下降沿移位寄存器数据不变。
STCP(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。
OE(13脚): 高电平时禁止输出(高阻态)。
如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。
比通过数据端移位控制要省时省力。
74HC595各个引脚的功能:Q1~7 是并行数据输出口,即储寄存器的数据输出口Q7' 串行输出口,其应该接SPI总线的MISO接口STcp 存储寄存器的时钟脉冲输入口SHcp 移位寄存器的时钟脉冲输入口OE的非输出使能端MR的非芯片复位端Ds 串行数据输入端这幅图比较重要,是这个芯片的时序图,对于单片机来说,寄存器和时序图是非常重要的。
其中SHCP对应的是P0.3,STCP对应的是P0.2,DS对应的是P0.1.。
根据原理图,我们只用到了DS,STCP,SHCP三个引脚,下面我们来看看这三个引脚究竟怎么样工作,看时序图要从左往右慢慢看SHCP:该引脚一直处于上升下降状态,所以叫做时钟信号,箭头向上表示上升沿有效。
项目二单片机控制8位发光二极管简介:发光二极管是一种非常流行的电子元件,它可以将电能转化为光能,发出亮光。
在数码电子产品、时钟、闹钟、计数器等各种应用中,发光二极管都有广泛应用。
本项目使用单片机通过控制8位发光二极管,展示数字、字母和符号,实现了一个简单的显示。
原理:8位发光二极管有8个引脚分别对应8个数码,控制每个数码的发光需要控制对应的引脚输出高电平。
为了简化控制,本项目使用了74HC595串行移位寄存器,将单片机输出转换为8位并行输出,对应控制8个数码引脚。
移位寄存器通过SER输入端口读入单片机输出数据,一次读入8位数据后,通过数据锁存器将数据存储到寄存器中,依次将数据移位输出到输出端口Q0~Q7,控制对应的发光二极管发光。
由于数据在移位输出时是往高位输出,所以需要控制输出的数据是低位对应数码的数据,即从右至左依次控制每个数码的发光。
硬件设计:其中,8个数码阳极引脚通过限流电阻接入12V电源,共阳极电压为12V。
74HC595移位寄存器的VCC接入5V电源,OE、MR、SER、SRCLK、RCLK、Q0~Q7引脚接入单片机的对应引脚,其中:OE引脚为输出使能端,接地时输出有效。
MR引脚为同步复位端,接VCC时清零寄存器中存储的状态。
SER引脚为串行数据输入端,接单片机的输出引脚。
RCLK引脚为并行输出时钟端,连接与SRCLK相同的时钟引脚。
Q0~Q7引脚为并行输出端,连接到数码管对应的阳极引脚。
单片机的控制程序设计如下:duan数组为8位数码对应的7段LED表示值。
num数组为8位数码的控制数据。
延时函数delay()用于调节数字切换速度。
hc595_out()函数将num数组输出到74HC595移位寄存器。
hc595_sendbyte()函数每次将一个字节通过SER口向74HC595移位寄存器输出,并控制SRCLK时钟,将数据移位存储到寄存器中。
结论:通过单片机控制8位发光二极管的设计,可以实现数字、字母和符号的显示。
74HC595完整中文资料74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。
74HC595是8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断状态。
三态。
特点 8位串行输入 8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除 100MHz的移位频率输出能力并行输出,总线驱动串行输出;标准中等规模集成电路应用串行到并行的数据转换 Remote contr ol holding register. 描述 595是告诉的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。
595是具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SCHcp的上升沿输入,在STcp 的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
CPD决定动态的能耗, PD=CPD×VCC×f1+∑(CL×VCC2×f0) F1=输入频率,CL=输出电容 f0=输出频率(MHz) Vcc=电源电压引脚说明符号引脚描述内部结构结合引脚说明就能很快理解 595的工作情况引脚功能表:管脚编号管脚名管脚定义功能1、2、3、4、5、6、7、15QA—QH 三态输出管脚8 GND 电源地9 SQH 串行数据输出管脚10 SCLR 移位寄存器清零端11 SCK 数据输入时钟线12 RCK 输出存储器锁存时钟线13 OE 输出使能14 SI 数据线15 VCC 电源端真值表:输入管脚输出管脚SI SCK SCLR RCK OEX X X X H QA—QH 输出高阻X X X X L QA—QH 输出有效值X X L X X 移位寄存器清零L 上沿H X X 移位寄存器存储LH 上沿H X X 移位寄存器存储HX 下沿H X X 移位寄存器状态保持X X X 上沿X 输出存储器锁存移位寄存器中的状态值X X X 下沿X 输出存储器状态保持第二步:目的:将位数据逐位移入74HC595,即数据串入方法:P1.2产生一上升沿,将P1.0上的数据移入74HC595中.从低到高。
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(DAT[0]);OUT_5951();QR1_5952(wei[i]);OUT_5952();delay(1);}}}描述595是告诉的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准.595是具有8位移位寄存器和一个存储器,三态输出功能。
LED点阵实验报告.doc
一、实验原理
LED点阵是一种由LED灯组成的自发光点阵,将多个灯组合排列在一起,可以显示多
种字符、数字、图形等。
每个LED灯有两个引脚,一个接正极,一个接负极,灯的亮度和
颜色与流过它的电流有关。
因此,通过控制不同位置的电流大小,就可以实现点阵任意数
字或字符的显示。
二、实验器材
1、STM32F103C8T6单片机板
2、2个16pin DIP 74HC595N移位寄存器
3、1个常规电子元件组
4、300x3mm LED 点阵共阴(10x10)
三、实验过程
2. 然后按下当前电路连接 LED 点阵、74HC595 移位寄存器和 STM32 单片机板的方
法进行连接。
3. 编写程序,把字符的二进制代码转换成数字,然后发送到移位寄存器,以控制
LED 点阵显示字符。
4. 烧录程序到 STM32 单片机板上。
5. 连接电源以运行程序,控制LED点阵实现数字或字符的显示。
四、实验结果
LED 点阵成功实现了数字、大写和小写字母的显示。
在实验过程中,遇到了一些问题,例如通过微调电压来控制LED亮度的问题,以及在程序中输入字符的编码的问题。
但是,
通过多次尝试和修改,最终成功地解决了这些问题,得到了令人满意的结果。
LED点阵实验不仅可以增强学生对电子元件的了解,同时也可以提高学生的编程能力,使学生更好地理解并掌握单片机的相关知识。
在实验过程中,建议多做实验练习,不断探
索和尝试,更好地理解和掌握相关知识。
首先上595光立方的原理图:1.单片机部分:2.按键和ULN2803部分:3.74hc595n部分:8个的样子:4.灯座部分:64个的样子:与灯座相连的电阻,可根据自己的LED来选。
只要不超过LED的耐压值即可。
然后是参考的PCB图:芯片连接部分:先来讲解一下原理图:首先是51单片机的由晶振电路和复位电路组成的单片机的最小系统。
74hc595的8个输出脚与灯座相连,8个595的Ds、STcp、SHcp 接到一起,分别接到单片机的IO口。
8个595的MR直接接到VCC。
595的控制引脚OE分别与单片机IO口相连,控制595是否被选中,低电平有效。
然后介绍一下,如何焊接LED等的问题。
一种是长方体雾状的LED灯:焊接参考:/link?url=SXmoc9lSihpyBXd6qBQ0XsWZaoBV UykrQawWIJKRz4WmNMohW_Z1WrSQOGYdeIzNLNJdNcwueAAyzgiIE bPhQFBaMZJj-GwVZ79TZ1BVTQ7另一种是圆形灯:焊接参考:/view/fb02d823a8114431b90dd84d.html两种方式焊接都注意把灯的正极焊接到灯座上,灯座可以用圆形的排母或者普通的排针。
示例程序:#include "reg52.h"#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit stcp1=P3^6;sbit ds1=P3^5;sbit shcp1=P3^7;void delay(){int i,j;for(i=0;i<50;i++)for(j=0;j<1000;j++);}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 tuan1(){P1=0x00; //x全部选中P2=0xff; //z全部选中QR0_5951(0xfe); //y 高电平亮OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xfd); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xfb); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xf7); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xef); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xdf); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xbf); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x7f); //yOUT_5951();delay();P2=0x00;}void tuan2(){P1=0x00; //x全部选中P2=0xff; //z全部选中QR0_5951(0x01); //y 高电平亮OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x02); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x04); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x08); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x10); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x20); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x40); //y OUT_5951();delay();P2=0xff; //z全部选中QR0_5951(0x80); //yOUT_5951();// delay();P2=0x00;}void tuan3(){P1=0x00; //x全部选中P2=0xff; //z全部选中QR0_5951(0x80); //y 高电平亮OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x40); //yOUT_5951();delay();P2=0xff; //z全部选中QR0_5951(0x20); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x10); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x08); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x04); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x02); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x01); //yOUT_5951();delay();P2=0x00;}void tuan4(){P1=0x00; //x全部选中QR0_5951(0xff); //y全部选中OUT_5951();P2=0x01; //zdelay();P2=0x00;P2=0x02; //zdelay();// P2=0x00;P2=0x04; //zdelay();// P2=0x00;P2=0x08; //zdelay();/// P2=0x00;P2=0x10; //zdelay();// P2=0x00;P2=0x20; //zdelay();// P2=0x00;P2=0x40; //zdelay();// P2=0x00;P2=0x80; //z// delay();// P2=0x00;}void tuan5(){P1=0x00; //x全部选中QR0_5951(0xff); //y全部选中OUT_5951();P2=0x80; //zdelay();// P2=0x00;P2=0x40; //zdelay();// P2=0x00;P2=0x20; //zdelay();// P2=0x00;P2=0x10; //zdelay();/// P2=0x00;P2=0x08; //zdelay();// P2=0x00;P2=0x04; //zdelay();// P2=0x00;P2=0x02; //zdelay();// P2=0x00;P2=0x01; //zdelay();// P2=0x00;}void main(){P1=0x00; //xwhile(1){// tuan1();tuan2();tuan3();tuan4();tuan5();}}。
敬告:没有51单片机基础的人请慎重下载高质量实用性51单片机STC15W系列程序(6),STC8A系列可参考STC15单片机基于74HC595和TM1637的两种LED程序//第一种(74HC595):#include <STC15.h>#include <intrins.h>sbit SCLK = P2^0;sbit RCLK = P2^1;sbit DIO = P2^2;unsigned char code led_code[] ={// 0 1 2 3 4 5 6 7 8 9// b C d E F -0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x 83,0xC6,0xA1,0x86,0x8E,0xbf};unsigned char code led_num[] = {0x01,0x02,0x04,0x08};void Select_Position(unsigned char *buf);unsigned char rec[4];bit flag = 0;void Timer0_config(unsigned int ms);void main(){unsigned chartmpbuf[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};P2M1 &= 0xF8;P2M0 &= 0xF8;Timer0_config(1);EA = 1;while(1){if(flag){flag = 0;Select_Position(tmpbuf);}}}void Display_byte(unsigned char dat){unsigned char mask;for(mask=0x80;mask!=0;mask>>=1){if((dat&mask)==0)DIO = 0;elseDIO = 1;SCLK = 0;SCLK = 1;}}void Select_Position(unsigned char *buf) {static unsigned char j=0;static unsigned char i=0;// for(j=0;j<4;j++)// {rec[j] = *(buf[i] + led_code);Display_byte(rec[j]);Display_byte(led_num[j]);i++;j++;i = i&0x0F;j = j&0x03;RCLK = 0;RCLK = 1;// }}//void Select_Position(unsigned char *buf) //{//// static unsigned char k;//// static unsigned char i;// unsigned char j;// unsigned char rec;// for(j=0;j<4;j++)// {// rec = *(buf[j] + led_code); // Display_byte(rec);// Display_byte(led_num[j]); //// i = i&0x0F;//// k = k&0x03;//// RCLK = 0;// RCLK = 1;// }//}void Timer0_config(unsigned int ms) {unsigned long tmp;tmp = 11059200/12;tmp = (tmp*ms)/1000;tmp = 65536 - tmp;TH0 = (unsigned char)(tmp>>8);TL0 = (unsigned char)tmp;TMOD &= 0xF0;AUXR &= 0x7F;ET0 = 1;TR0 = 1;}void Timer0_interrupt() interrupt 1{unsigned int tmr10ms;tmr10ms++;if(tmr10ms>=500){tmr10ms = 0;flag = 1;}}/******************************************************/ //第二种(TM1637)://TM1637程序:#include "Library.h"void Delay_us(){_nop_();_nop_();_nop_();}void Start(){CLK = 1;DIO = 1;Delay_us();DIO = 0;Delay_us();CLK = 0;}void Stop(){CLK = 0;DIO = 0;Delay_us();CLK = 1;Delay_us();DIO = 1;Delay_us();}bit Write_btye(unsigned char dat) {bit ack;unsigned char mask;for(mask=0x01;mask!=0;mask<<=1) {CLK = 0;if(dat&mask)DIO = 1;elseDIO = 0;CLK = 1;}CLK = 0;Delay_us();CLK = 1;ack = DIO;Delay_us();CLK = 0;return ~ack;}void Write_dat(unsigned char *dat,unsigned char len) {bit ack;do{Start();ack = Write_btye(0x40);}while(!ack);Start();Write_btye(0xC0);while(len>0){Write_btye(*dat++);len--;}Start();Write_btye(0x8F);//ÏÔʾ¿ªStop();}//main.c#include "Library.h"unsigned char code codenum[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67,0x77,0x7C,0x39,0x5E,0x79,0x71};bit flag = 0;void Timer0_config(unsigned int ms);void main(){// unsigned char code buf[4]={0x39,0x5E,0x79,0x71} ;unsigned char i = 0;P2M1 &= 0xFC; P2M0 &= 0xFC;Timer0_config(1);EA = 1;while(1){if(flag){flag = 0;Write_dat(codenum+i,4);i++;if(i>=13){i = 0;}}}}void Timer0_config(unsigned int ms) {unsigned long tmp;tmp = MAIN_Fosc/12;tmp = (tmp*ms)/1000;tmp = 65536 - tmp;TH0 = (unsigned char)(tmp>>8);TL0 = (unsigned char)tmp;TMOD &= 0xF0;AUXR &= 0x7F;ET0 = 1;TR0 = 1;}void Timer0_interrupt() interrupt 1{unsigned int tmr10ms;tmr10ms++;if(tmr10ms>=500){tmr10ms = 0;flag = 1;}}//Library.h#ifndef _Library_H#define _Library_H#include <STC15.h>#include <intrins.h>#define MAIN_Fosc 11059200Lsbit CLK = P2^1;sbit DIO = P2^0;void Write_dat(unsigned char *dat,unsigned char len); #endif。
逐个点亮LED灯,再逐个熄灭LED灯的跑马灯程序---基于74HC595移位锁存器,程序框。
/* 当单⽚机上电时,会发现LED灯出现乱序情况,⽽且这种情况是⽆法改变的。
这是因为正式程序运⾏的时候,74HC595还在复位状态,没有响应单⽚机的锁存。
软件解决办法:所以这之前可以加⼀⼩段延时,保证程序运⾏的时候,74HC595不在复位状态。
硬件解决办法:74HC595可以⽤类似单⽚机的上电复位电路给595的/SCLR(10脚)引脚上拉电阻,下拉电容。
上电时,电容还没有充电,引脚低电平,过⼀段时间之后电容点压慢慢升⾼⾄⾼电平,芯⽚正常⼯作。
注意复位时间不要⽐单⽚机的上电复位时间长太多,要不然程序开始运⾏的时候,595还在复位状态,没有响应数据的锁存复位键(我的74HC595芯⽚的SRCLR(10)引脚直接接的VCC,所以会出现乱码情况,不可以⼿动复位)。
*/#include "REG52.H"#define const_time_level_01_08 200 //第1个⾄第8个LED跑马灯的速度延时时间void initial_myself();void initial_peripheral();void delay_short(unsigned int uiDelayShort);void delay_long(unsigned int uiDelayLong);void led_flicker_01_08(); //第1个⾄第8个LED跑马灯程序,逐个亮,逐个灭void hc595_drive(unsigned char ucLedStatusTemp08_01);void led_updata(); //LED更新函数void T0_time(); //定时中断函数sbit hc595_sh_dr=P3^6; //上升沿时,数据寄存器数据移位sbit hc595_st_dr=P3^5; //上升沿时移位寄存器的数据进⼊数据寄存器,下降沿时数据不变。
74hc595芯片驱动数码管的工作原理
74HC595 是一种串行输入、并行输出的移位寄存器芯片,常被用于驱动数码管、LED 等输出设备。
它的工作原理基于串行-并行转换和移位操作。
以下是使用74HC595 驱动数码管的基本工作原理:
一、串行输入:74HC595 芯片具有三个输入引脚,分别是:
DS(Data Input):串行数据输入
SHCP(Shift Register Clock Input):移位寄存器时钟输入
STCP(Storage Register Clock Input):存储寄存器时钟输入
通过串行数据输入引脚DS,可以将一个字节的数据(8位)串行输入到74HC595 中。
二、移位操作:在输入完一个字节数据后,通过向SHCP 引脚提供时钟信号,数据将从串行输入DS 移位到移位寄存器中。
三、并行输出:74HC595 还有8 个并行输出引脚,分别是Q0 到Q7。
这些输出引脚可以连接到数码管的段或LED 灯的正极。
通过向STCP 引脚提供时钟信号,移位寄存器中的数据会并行输出到存储寄存器中。
四、存储寄存器:存储寄存器中的数据在时钟信号到达STCP 时被锁存,此时数据会被保持在存储寄存器中,不再改变。
通过不断重复以上的移位和存储操作,可以将多个字节的数据依次输出到74HC595 的并行输出引脚,从而实现对多个数码管或LED 灯的控制。
总的来说,74HC595 通过串行输入、移位操作和并行输出的方式,实现了对大量输出设备的控制。
这种级联的方式可以有效地减少需要的引脚数量,适用于有限的GPIO 资源的情况。
在三基色设计应用中通常是,通过调节设定LED电流来达到白平衡和最大的期望亮度值。
我们一般将最简单、最优化的配色方式作为,设计全彩显示技术的颜色再现方法。
白平衡是检验颜色组成的重要标志之一。
三基色白光一般是红绿蓝三基色按亮度比例混合而成,当光线中绿色的亮度为69%,红色的亮度为21%,蓝色的亮度为10%时,混色后人眼感觉到的是纯白色。
早前的CRT电视机到现在的LCD 液晶显示都是这样组成的,LED当然将成熟的技术照搬。
LED 红、绿、蓝三色的色品坐标因工艺过程等原因无法达到全色谱的效果,而控制原色包括有偏差的原色的亮度得到白色光,称为配色。
当为全彩色LED 显示屏进行配色前,为了达到最佳亮度和最低的成本,应尽量选择三原色发光强度成大致为3:6:1 比例的LED 器件组成像素。
白平衡要求三种原色在相同的调配值下合成的仍旧为纯正的白色。
单就LED来说是很难实现,为了解决此类问题,一般IC都会设计设置电流大小的功能,便于不同批次LED都可以达到同样的白光效果。
我们一般把可以合成的颜色叫做,原色;在应用中的红、绿、蓝三色叫做,基色。
色度图中的三个顶点为理想的原色波长。
如果原色有偏差,则可合成颜色的区域会减小,光谱表中的三角形会缩小,从视觉角度来看,色彩不仅会有偏差,丰富程度减少,见下图。
LED 发出的红、绿、蓝光线根据其不同波长特性可大致分为紫红、纯红、橙红、橙、橙黄、黄、黄绿、纯绿、翠绿、蓝绿、纯蓝、蓝紫等,橙红、黄绿、蓝紫色较纯红、纯绿、纯蓝价格上便宜很多。
三个原色中绿色最为重要,因为绿色占据了白色中69%的亮度,且处于色彩横向排列表的中心。
因此在权衡颜色的纯度和价格两者之间的关系时,绿色是着重考虑的对象。
在三基色设计应用中通常是,通过调节设定LED电流来达到白平衡和最大的期望亮度值。
我们一般将最简单、最优化的配色方式作为,设计全彩显示技术的颜色再现方法。
白平衡是检验颜色组成的重要标志之一。
三基色白光一般是红绿蓝三基色按亮度比例混合而成,当光线中绿色的亮度为69%,红色的亮度为21%,蓝色的亮度为10%时,混色后人眼感觉到的是纯白色。
基于单片机串行通信的LED点阵显示系统的设计与实现作者:张建华刘玉玲吴允志来源:《数字技术与应用》2013年第05期摘要:本文以16×32LED点阵显示器为例介绍了一种基于单片机串行通信的点阵显示系统的设计与实现方法。
该系统利用单片机的串行通信功能,外接移位寄存器,通过级联方式扩大显示屏的尺寸以达到增加显示内容的目的。
点阵显示屏可采用逐行(或逐列)动态扫描。
单片机选用价格低廉、程序写入方便的AT89S52,使得整个系统维护方便。
该系统电路结构简单,仅占用少量I/O口,为系统功能的进一步扩展预留了足够的空间,稍加改进即可作为一个实用的信息发布平台应用于实际生活和工作中。
关键词:单片机串行通信 LED点阵显示系统设计实现中图分类号:TN873 文献标识码:A 文章编号:1007-9416(2013)05-0030-01引言随着电子信息技术的飞速发展,LED点阵显示屏已成为当今社会一种常见的信息发布平台。
LED点阵显示系统因其功耗低、亮度高、显示效果醒目、性能稳定、使用寿命长、易小型化、方便拼装等一系列优点,近几年来得到了迅猛的发展并获得广泛的应用。
从机场、车站、码头到银行、邮局、商场、体育馆等各种需要发布信息的公共场所,甚至街头巷尾各种大大小小的门面招牌,几乎到处可见LED点阵显示屏的身影。
1 预备知识LED即发光二极管,它是一种电致发光的半导体电子元件,其发光原理是PN结正向导通时电子与空穴复合幅射出可见光,可作为显示器件使用。
LED点阵显示屏是由很多个LED构成,一个8×8 LED点阵显示模块是由64只LED按照8行8列的阵列方式组成,同一行上的LED共阴极,同一列上LED共阳极,从而引出8根行线8根列线。
将若干个8×8 LED点阵显示模块拼装在一起,把同一行的行线连在一起,再把同一列的列线连在一起,就可以组成规模更大的点阵显示屏。
通过编程控制点亮其中某些LED、熄灭其余的LED,点亮的LED就可以显示各种字符、数字和汉字,甚或图形图像。
74hc595串联编程2009-02-16 18:46分类:默认分类字号:大中小做了个51的开发板,功能比较多,但是PIN资源就这么多,对于一些比较简单的功能模块作了串并处理。
板里8个LED灯和X8的led数码管,如果直接连接到单片机上要使用12个管脚,稍作处理,只要3个就行。
先说595的使用,关键是11脚CLK控制为上升沿时,串行数据输入移位寄存器,输入后看12脚STCP,如果是上升沿就并行输出,这里是三个过程,输入允许-》串行输入-》输出允许,这三个过程要处理好先后问题,我编程的时候就是用循环将这三个过程层次化。
/**********************************************************************************************************************LED灯为末级,SEG8选通信号为次级,首级是段码。
*************************************************************************************/#include"reg52.h"#define uchar unsigned char#define uint unsigned intuchar bdata outbyte;sbit bitout outbyte^7;sbit bout = P1^5; //位输出sbit sclk = P1^6; //输入允许同步信号sbit slclk = P1^7; //输出允许信号uchar code segment[]={}; //这里要看是共阴还是共阳uchar code tab[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x800}; //led显示void leddisp(uchar i , uchar location, uchar m){uchar j;outbyte=tab[m];for(j=0;j<8;j++){bout = bitout;sclk=0;sclk=1;sclk=0;outbyte = outbyte<<1;}outbyte=location;for(j=0;j<8;j++){bout = bitout;sclk=0;sclk=1;sclk=0;outbyte = outbyte<<1;}outbyte=segment[i];for(j=0;j<8;j++){bout = bitout;sclk=0;sclk=1;sclk=0;outbyte = outbyte<<1;}slclk = 0;slclk = 0;slclk = 0;}void main(){uchar i=0;uchar location=1;uchar m=1;while(1){leddisp(i,location,m);i++;location = location<<1;if(i == 8){i = 0;location = 1;}}}。
74hc595 工作原理
74HC595是一种集成电路芯片,它提供了一个8位的移位寄存器和一个串行输入/串行并行输出功能。
该芯片的工作原理如下:
1. 时钟信号:74HC595通过外部提供的时钟信号进行工作。
时钟信号用于同步数据的移位操作。
2. 数据输入:通过串行输入引脚SER输入数据。
当时钟信号的上升沿到达时,输入数据被移入移位寄存器中的第一个位。
之后,每个时钟信号的上升沿,数据将向左依次移位,直到移位寄存器中的最后一个位。
3. 移位寄存器:移位寄存器是由8个触发器组成,每个触发器都可以存储一个位的值(0或1)。
在数据输入完成后,每个触发器存储了相应的数据位。
4. 数据输出:在并行输出模式下,通过并行输出引脚Q0-Q7输出存储在移位寄存器中的数据。
这意味着可以同时输出8个位的数据。
在串行输出模式下,通过引脚Q7'S(又称为Q7'引脚)输出最后一个位的数据。
5. 存储寄存器:存储寄存器用于保存通过移位寄存器移入的数据,以便在输出时能够固定显示。
通过上述过程,74HC595实现了将串行输入的数据移位并以
并行输出的形式存储,从而实现数据的并行输出。
这使得它在需要同时控制多个设备的应用中非常有用,如LED显示、数码管、驱动器等。
主题1:串口交互四位数码管显示装置器件:四位数码管、74HC595串口寄存器。
要求:1、使用74HC595串口寄存器芯片控制四位数码管显示数字,显示的数字在0~9999之间依次循环。
2、相邻数字显示的时间间隔由串口输入数值控制,在串口监视器输入框中输入10~2000间的数值,点击【发送】,输入的数值同步在串口监视器显示,同时四位数码管按照输入的数值以毫秒为单位间隔显示。
3、再次发送不同的数值,数码管显示的时间间隔按照新输入数值随之改变,新输入的数值也同步显示到串口监视器。
4、程序编写时,要求使用数组存储0~9数字信息。
主题2:LED灯交互四位数码管显示装置器件:LED灯、电位器、四位数码管、74HC595串口寄存器。
要求:1、程序控制LED实现呼吸灯效果,即LED灯的亮度在最亮和熄灭之间渐变;2、将LED呼吸灯当前亮度对应的PWM值实时显示四位数码管;3、通过电位器控制LED呼吸灯亮度变化的频率。
旋转电位器,LED呼吸灯的呼吸频率发生变化,四位数码管上的数值的更新速度也随之变化;4、LED呼吸灯达到最亮状态时,对应的PWM值为1023,熄灭时对应的PWM值为0;5、程序编写时,要求使用数组存储0~9数字信息。
主题3:跳动的心器件:8x8LED点阵、74HC595串口寄存器、电位器、LED灯。
要求:使用74HC595串口寄存器芯片控制8x8LED点阵显示大小心形图案,通过电位器调整大小心形图案的切换频率;通过LED亮度的指示当前的切换频率,详细要求如下:1、在8x8LED点阵上分别连续显示大小两个心形图案。
2、通过旋转电位器切换大小心形图案的切换时间在100ms-500ms之间变化。
3、通过LED灯的亮度来指示当前心形图案的切换频率,当切换时间为100ms时,LED灯最亮;当切换时间为500ms时,LED灯熄灭;当切换时间为100ms-500ms之间时,LED灯亮度随之而变化。
202103按键控制数字“3”单步显示通过两个按键控制一位数码管从a至h各段位依次亮灭。
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显示方法的实现
图3 多位LED动态显示驱动电路连线图
为实现24位或更多位LED显示,本文提出了一种全新的方法。此方法结合了动态和静态显示的优点,
可以说是两者的结合。连线图如图3所示。段选码由三片74HC595控制,段选数据由74HC595的SER引脚
串行输入,由于输出使能时钟RCLK并接在一起,因此,三片74HC595并行输出端同时输出。而三个LED位
选信号也并接在一起,因此,一次可以同时点亮三位LED。此过程类似于静态显示。每片74HC595并行输
出端并接8位LED,用于扫描输出,此过程类似于动态扫描过程。此方法运用3片74HC595,n条位选信号,
即可实现3n位LED显示。成本低廉,而且节省资源。此种方法实现多位LED显示程序框图为图4所示,MCU
为89S52。
示例程序如下(24位LED显示):
4 结论
实践证明,此多位LED显示方法性能稳定,如再级联一片74HC595,在不需要增加I/O口线的情况下,
即可实现32位LED显示。笔者做过48位LED显示,应稳定可靠。