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

合集下载

两个74hc595 汇编 八位数码管数码管1-8动态扫描显示

两个74hc595 汇编 八位数码管数码管1-8动态扫描显示

;延时子程序
;=============================================================
DELAY:
MOV R6,#02H
DEL1:
MOV R7,#20
DJNZ R7,$
INC R1 ;
MOV A,R1 ;修改显示位
LCALL DELAY ;延时
MOV 31H,#02H
MOV 32H,#03H
MOV 33H,#04H
MOV 34H,#05H
MOV 35H,#06H
MOV R0,#30H ;初始化寄存器
MOV R1,#00H
MOV R2,#00H
MOV 30H,#01H ;显示数据
LCALL DELAY
CLR SCLK_595
DJNZ R4,WR_LOOP
RET
;=============================================================
SDATA_595 EQU P0.0 ;串行数据输入
SCLK_595 EQU P0.1 ;移位时钟脉冲
RCK_595 EQU P0.2 ;输出锁存器控制脉冲
;=====================================================
JMP MAIN1
;=============================================================
;显示子程序
;=============================================================

74HC595控制一位数码管循环显示0~F

74HC595控制一位数码管循环显示0~F

本人新学单片机程序,做了个595控制数码管的程序,写的不好请多指正。

先上原理图下面是源代码:#include <reg52.h>#define uint unsigned int#define uchar unsigned charvoid delay(uint); //延时子程序sbit SCLK=P2^0;sbit DCLK=P2^2;sbit SI=P2^1;void in595(uchar); // 595输入子程序void out595(); // 595输出子程序uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e} ; //共阳数码管编码void main() //主程序{uchar a;a=0;while(1){in595(tab[a]);out595();delay(500);a=a+1;if(a==16) a=0;}}void in595(uchar dat){uchar num;for(num=8;num>0;num--) //定义一变量,减8次,输入8个字到595的寄存器{SCLK=0; //拉低时钟线SI=dat&0x80; //取数据最高位送入595SCLK=1; //产生上升沿dat=dat<<1; //数据左移一位(每执行此函数一次送出次高位,次次高位………………,执行8次刚好送出8个字)}}void out595() //595输出函数,很简单,就是产生一个上升沿{DCLK=0;DCLK=1;}void delay(uint xms) //延时函数,不做说明了{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--) ;}。

74HC595驱动四位数码管

74HC595驱动四位数码管
输出电流 Io(Q0-Q7) Io(Q7S) ±35 ±25 mA mA
_____________________________________________________
电源端/地端电流 ±70 mA
_____________________________________________________
74HC595
74HC595控制四位数码管
74HC595芯片资料
74HC595是8位串入并出的接口芯片
74HC595芯片资料
74HC595芯片资料
74HC595的控制端说明
CR(10脚):低电平时将移位寄存器的数据清零,通常将字接VCC CPSR(11脚):上升沿时数据寄存器的数据移位。Q0-Q1-..Q7:下降沿移位寄存器数据不 变。(脉冲宽度:5V时,大于几十纳秒就行了,通常选微秒级) CPLA(12脚):高电平时移位寄存器的数据进入数据存储寄存器,低电平时存储寄存器数据 不变,通常将CPLA置为低电平,当移位结束后,在CPLA端产生一个正脉冲 (5V时,大于几十纳秒就行了,通常都选微秒级),更新显示数据。 EN(13脚):高电平时禁止输出(高阻态),如果单片机的引脚下不紧张,用一个引脚控制 它,可以方便的产生闪烁和熄灭的效果,比通过数据端移位控制要省时省力。
输出电压 VO -0.5~VCC+0.5 V
_____________________________________________________
钳位二极管电流 IIK/IOK ±20 mA
_________________________________________5芯片资料
极限参数:
参数 电源电压 输入电压 符号 VCC VI 参数范围 -0.5~7 -0.5~VCC+0.5 单位 V V

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

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--);}voidled_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:感谢大家的阅读,本文由我司收集整编。

74hc595芯片数码管显示

74hc595芯片数码管显示
{ while(--time);
} void write_date(uchar temp)//移位寄存器
{ uint i; for(i=0;i;>;=1;//把输进来的 8 位数据右移一位,从
而最右端的一位溢出 sck=0;//输入时钟位低电平 si=CY;//把移位溢出来的数据赋给最高位 sck=1;//输入时钟位高电平 } }
void main()//主函数 { uint i//对数据输入时钟线的位定义 sbit si=P0^2;//对数据线的位定义 uchar code num[]={0x80,0xed,0x42,0x48,0x2c,0x18,0x10,0xcc,0x 00,0x08};//0~9 的数字显示 void delay(uint time)//延时函数
74hc595 芯片数码管显示
/*74HC595 是硅结构的 CMOS 器件,兼容低电压 TTL 电路, 遵守 JEDEC 标准。
74HC595 是具有 8 位移位寄存器和一个存储器,三态输 出功能。
移位寄存器和存储器是分别的时钟。时钟线 sck 在上升 沿将数据输入(即由低电平编导高电平),
数据在 si 的上升沿输入,在 si 的上升沿进入到存储寄 存器中去。如果两个时钟连在一起,则
移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器 有一个串行移位输入(Ds),
和一个串行输出(Q7&rsquo;),和一个异步的低电平复 位,存储寄存器有一个并行 8 位的,
具备三态的总线输出,当使能 OE 时(为低电平),存储 寄存器的数据输出到总线。
8 位串行输入/输出或者并行输出移位寄存器,具有高阻 关断状态。 */ #include; #define uint unsigned int #define uchar unsigned char sbit rck=P0^0;//对输出存储器锁存时钟线的位定义

74HC595驱动数码管设计

74HC595驱动数码管设计

74HC595驱动数码管设计2009年09月18日星期五 10:111.1 LED数码管简介发光二极管LED是能将电信号转换成光信号的发光器件,7段LED数码管则是在一定形状的绝缘材料上,利用单只LED组合排列成的“8”字型,分别引出它们的电极,点亮相应的笔段来显示出0-9的数字。

1.1.1 LED数码管的结构与特性LED数码管根据LED的接法不同分为共阴和共阳两类,了解这些特性,对编程是很重要的,不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。

共阴和共阳极数码管的外形及内部电路如图1.1所示,它们的发光原理是一样的,只是电源极性不同。

图1.1 数码管外形和内部电路将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。

以共阴式为例,若把阴极接地,在相应段的阳极接上正电源,该段即会发光。

LED数码管的主要特点如下:l)能在低电压、小电流条件下驱动发光,能与CMOS、TTL电路兼容;2)发光响应时间极短(<0.1μs),高频特性好,单色性好,亮度高;3)体积小,重量轻,抗冲击性能好;4)寿命长,使用寿命在10万小时以上,甚至可达100万小时,成本低。

LED数码管被广泛用作数字仪器仪表、数控装置、计算机的数显器件。

1.1.2 LED数码管原理说明LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。

在一定范围内,其正向电流与发光亮度成正比。

由于常规的数码管用电电流只有1~2 mA,最大极限电流也只有10~30 mA,所以它的输入端在5 V电源或高于TTL高电平(3.5 V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。

1.2 74HC595简介74HC595是具有8位移位寄存器和一个存储器,三态输出功能。

移位寄存器和存储器是分别的时钟。

数据在SHCP的上升沿输入,在STCP的上升沿进入到存储寄存器中去。

如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。

数码管显示-74HC595动态扫描

数码管显示-74HC595动态扫描

输出第8位的位码,紧接着输出该位要显示的段码,然后使LATCH由0跳变到1使74HC595锁存并输出数据,此时第8位将显示,其它位全部都不显示。

延时一段时间。

如此循环往复,实现8位数码管显示的效果。

四、操作步骤:(1)按照IAR MSP430 项目建立与JTAG仿真设置所讲方法建立名称为M13x LED 595的项目。

(2)将如下程序拷贝粘贴到main.c文件中。

//*******************************************************************************//// 描述; 在TY-DIS1(8位数码管显示模块)上动态扫描显示 4321// ACLK= n/a, MCLK= SMCLK= default DCO ~ 800k//// 硬件连接:如下图// MSP430F13x// -----------------// /|\| XIN|-// | | |// --|RST XOUT|-// | |// | P5.0|-->LED_DOUT// | P5.2|-->LED_CLK// | P5.4|-->LED_LATCH//// 时间:2007年10月// //// 硬件电路:MSP430F135核心实验板-I型+ TY-DIS1(8位数码管显示模块)// 硬件连接://// 调试器:MSP430FET全系列JTAG仿真器// 调试软件: IAR Embedded Workbench Version: 3.41A 编译//******************************************************************************#include <msp430x13x.h>//4位LED数码管显示子程序void LED_595(char SMG1,char SMG2,char SMG3,char SMG4);//74HC595串行输出子程序void Led_out(unsigned char X);//LED数码管段码转换表const unsigned char LED_0_F[];void main(void){WDTCTL = WDTPW + WDTHOLD; // Stop watchdogP5DIR =0; //P5口全部设为输入口P5SEL =0; //将P5口所有的管脚设置为一般I/O口//将P5.0 P5.2 P5.4设置为输出方向P5DIR |= BIT0;P5DIR |= BIT2;P5DIR |= BIT4;for (;;){LED_595(4,3,2,1);//调用显示子程序(改变参数表,改变显示内容)}}//------------------------------------------------------// 4位LED数码管显示子程序//// 人口参数:SMG1,SMG2,SMG3,SMG4——待显示的数据//void LED_595(char SMG1,char SMG2,char SMG3,char SMG4){char z;//最高位(最左侧)LED数码管显示---------------------z = LED_0_F[SMG1];Led_out(z); //段码输出z = 0xFE; //位码Led_out(z); //位码输出P5OUT &=~(BIT4); //显示输出P5OUT |=BIT4;//--------------------------------------------------_NOP(); // 断点设置(观察watch)//次高位(左数第2个)LED数码管显示---------------------z = LED_0_F[SMG2];Led_out(z); //段码输出z = 0xFD; //位码Led_out(z); //位码输出P5OUT &=~(BIT4); //显示输出P5OUT |=BIT4;//--------------------------------------------------_NOP(); // 断点设置(观察watch)//次低位(左数第3位)LED数码管显示---------------------z = LED_0_F[SMG3];Led_out(z); //段码输出z = 0xFB; //位码Led_out(z); //位码输出P5OUT &=~(BIT4); //显示输出P5OUT |=BIT4;//--------------------------------------------------_NOP(); // 断点设置(观察watch)//最低位(左数第4位)LED数码管显示---------------------z = LED_0_F[SMG4];Led_out(z); //段码输出z = 0xF7; //位码Led_out(z); //位码输出P5OUT &=~(BIT4); //显示输出P5OUT |=BIT4;//--------------------------------------------------_NOP(); // 断点设置(观察watch)}//------------------------------------------------------// 用于74HC595的LED串行移位子程序//// 人口参数:X——待输出的数据//void Led_out(unsigned char X){unsigned char i;。

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 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 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显示。

数码管显示数字

数码管显示数字

数码管显示数字 1�数码管显示项目:在数码管的第1 位(最右边)显示数字1最终效果图:此项目练习的目的:(1)认识移位寄存器芯片74HC595 及其作用。

(2)认识贴片芯片封装(贴片、直插)(3)认识数码管(4)学会静态显示的步骤完整代码:#include <reg52.h>#include <intrins.h> // 因为此文件中用到了延时函数_nop_(),所以要包含_nop_()的头文件sbit DIG_DA TA = P0^2; // 74HC595 的数据输入引脚sbit DIG_SHCP = P0^4; // 74HC595 的移位脉冲引脚sbit DIG_STCP = P2^3; // 74HC595 的锁存脉冲引脚/*主函数,数码管第 1 位(最右侧)显示数字1*/void main(void){unsigned char i,SegmentByte,SelectByte;SegmentByte = 0xf9; // 段码字节赋值SelectByte = 0x01; // 位选字节赋值DIG_SHCP = 0; // 74HC595 的移位脉冲引脚输出低电平DIG_STCP = 0; // 74HC595 的锁存脉冲引脚输出低电平/* 将段码字节(共8 位,高位在前)移入74HC595 芯片*/for(i=0; i<8; i++){/* 判断数据的最高位,如果最高位是1,数据引脚输出高电平;如果是0,输出低电平*/if(SegmentByte&0x80){DIG_DA TA = 1;}else{DIG_DA TA = 0;}_nop_();/* 输出74HC595 芯片的数据移位脉冲,每输出一个移位脉冲,74HC595 内部的数据移动一位*/DIG_SHCP = 1;_nop_();DIG_SHCP = 0;_nop_();/* 要输出的数据左移一位,即为下一位数据的输出作准备*/ SegmentByte <<= 1;}/* 将位选字节(共8 位,高位在前)移入74HC595 芯片*/for(i=0; i<8; i++){if(SelectByte&0x80){DIG_DA TA = 1;}else{DIG_DA TA = 0;}_nop_();DIG_SHCP = 1;_nop_();DIG_SHCP = 0;_nop_();SelectByte <<= 1;}/* 输出74HC595 芯片的数据锁存脉冲,即将74HC595 芯片接收到的最新数据输出到芯片的所有数据引脚*/DIG_STCP = 1;_nop_();DIG_STCP = 0;_nop_();while(1){}}长见识:(1)74HC595 芯片上图为74HC595 芯片的贴片封装图,共2*8=16 个引脚,左下角凹点所对应的引脚为 1 脚。

两片74HC595控制数码管动态显示

两片74HC595控制数码管动态显示
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}//延时子程序,延时Zms
#define uint unsigned int
sbit d1=P2^0;
sbit key1=P0^4;
sbit SDATA_595=P0^0;//串行数据输入----接板卡上的SPI数据信号输入端
sbit SCLK_595=P0^1;//移位时钟脉冲(输入口)---接板卡上的SPO----串行时钟线----SHcp移位时钟信号输入端
sbit RCK_595=P0^2;//输出锁存器控制脉冲----接板卡上SPKSTcp锁存信号输入端
uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar num;
void delay(uint z);
void aa595_in(uchar Data)
{uchar i;
for(i=0;i<8;i++)
{SCLK_595=0;
ge=num%10;
a595_in(duan[shi]);
aa595_in(wei[3]);
aa595_out()duan[ge]);
aa595_in(wei[2]);
aa595_out();
delay(10);}
}
void delay(uint z)
{uint x,y;
//两片74HC595控制8位数码管,按下键盘时使第一个发光二极管点亮,同时使数码管的示数加1,第一个数码管显示十位,第二个数码管显示个位,一直加到99!

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

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

/******************************************************************************** 标题: 试验74HC595驱动数码管上显示数字(C语言)*连接方法:JP12用条线冒短接JP3和JP2 用8PIN排线连接********************************************************************************* 通过本例程了解74HC595(串入并出)基本原理和使用*请学员认真消化本例程,懂74C595在C语言中的操作*********************************************************************************/#include <reg51.h>#include <intrins.h>#define NOP() _nop_() /* 定义空指令*///SPI IOsbit 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-9HC595SendData(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--);}/********************************************************************************************************* ** 函数名称: HC595SendData** 功能描述: 向SPI总线发送数据*********************************************************************************************************/ void HC595SendData(unsigned char SendV al){unsigned char i;for(i=0;i<8;i++){if((SendVal<<i)&0x80) MOSIO=1; //set dataline high 0X80 最高位与SendVal左移的最高位进行逻辑运算else MOSIO=0; // 如果为真MOSIO = 1S_CLK=0;NOP(); //短暂延时产生一定宽度的脉冲信号NOP(); //短暂延时S_CLK=1;}R_CLK=0; //set dataline lowNOP(); //短暂延时NOP(); //短暂延时R_CLK=1; //}。

使用SPI接口的74HC595控制 8位数码管显示

使用SPI接口的74HC595控制 8位数码管显示
$hwstack = 32 '设置堆栈大小
$swstack = 10
$framesize = 40
Const On = 1
Const Off = 0
Dim I As Byte
Dim A(3) As Byte
Latch Alias Portb.1
Config Spi = Soft , Dout = Portb.3 , Ss = None , Clock = Portb.5
// 74HC595/165驱动程序
//(16ቤተ መጻሕፍቲ ባይዱ,595均为两片)
//*******************************************
unsigned int LED;
unsigned int KEY_DATA;
void Driver_595(unsigned char Bit,unsigned char State)
Latch = Off '使能显示
Waitus 10
Latch = On
Do
Loop
End
'********************************************************************
'--------------------------专用字形表------------------------------------------
{
DDRB=0xff;
PORTB=0x00;
}
//****************************************************************
void Driver_165(void) //Bite所取位0~15,State为改位的状态0,1

74HC595与数码管

74HC595与数码管

第十九篇 74HC595与数码管2011-03-08 15:07第十九篇 74HC595与数先引用一句官方语:“74HC595是硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。

长话短说,它的功能是8位串行输入并行输出移位寄存器,也就是串行转并行。

下图是封装图:74HC595内部有两个寄存器:8位移位寄存器和8为存储寄存器,下面要PROTEUS做下各个引脚的调试一下可以看出:DS为串行数据输入口;SH_CP为串行时钟输入口,SH_CP每个上升沿到来时,芯片内部的移位寄存高位移出丢失,次高位成为最高位,并在Q7'体现出来(根据Q7'可以看出,74HC595也有串行输寄存器的值输出到存储寄存器,存储寄存器直接和引脚Q0~Q7相连,所以存储寄存器的值会直接反行功能;OE是输出使能,高电平时Q0~Q7为高阻态,低电平时Q0~Q7为存储寄存器的值;MR为低时无效;VCC接电源;GND接地。

好了,所有引脚介绍完了。

有的封装图引脚名字不太一样,功能下面用两片74HC595(U1和U2)分别控制四位数码管(U1)的显示和选位(U2),为了减少连线U1的DS),这样连续向U2的DS写两个字节(第一个是要显示的数字,第二个是位选),就可以连SH_CP,P0.6连DS,P0.7连P0.7ST_CP)就可以操作此四连共阴数码管(注意是共阴,不是上篇示的数字”和“位选”取反即可)。

如下图:这个实验测试下://*********************************************************************************** //功能:LPC2103利用两片74HC595操作四位共阴数码管//说明://用两片74HC595(U1和U2)分别控制四位数码管(U1)的显示和选位(U2),//为了减少连线,两片74HC595串联(U2的Q7'输出到U1的DS),这样连续向U2的DS写//两个字节(第一个是要显示的数字,第二个是位选),就可以显示了。

中国电子学会机器人水平五级考试编程操作题目汇总

中国电子学会机器人水平五级考试编程操作题目汇总

主题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各段位依次亮灭。

74HC595驱动两位数码管

74HC595驱动两位数码管

在前文讲述1位LED数码管显示的基础之上,本文进一步介绍2位LED数码管的工作原理及用法。

1.1 2位LED数码管工作原理与1位数码管不同的是,2位数码管显示时要进行位选。

如图1.2所示,公共脚10决定位DIG1是否有效,公共脚5决定位DIG2是否有效。

图1.1与图1.2显示了2位数码管引脚分布和内部电路设计。

其中笔段分布如图1.1所示,引脚对应笔段分布如图1.2所示。

图1.1 2位数码管笔段图1.2 2位数码管引脚图2位数码管引脚分如:1)公共脚:10、5 ;2)DIG:A-3 B-9 C-8 D-6 E-7 F-4 G-1 DP- 2。

1.2 74HC595简介74HC595是一款具有8位移位寄存器和一个存储器,三态输出功能的驱动芯片。

移位寄存器和存储器分别具有独立的时钟信号。

数据在SHCP的上升沿输入,在STCP的上升沿进入到存储寄存器中去。

如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。

移位寄存器有一个串行移位输入(DS),和一个串行输出(Q7’),和一个异步的低电平复位(MR),存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。

图1.3 74HC595引脚图74HC595引脚排布如图1.3所示,引脚功能见表1.1。

表1.1 74HC595引脚功能1.3硬件电路设计1.3.1设计原理本设计采用LPC2103自带的硬件SPI接口与74HC595进行数据传输。

74HC595将LPC2103发送过来的8位串行数据转换成8位并行数据来驱动2位共阳数码管。

与1位数码管类似,2位LED数码管的输入端在5 V电源或高于TTL高电平(3.5 V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。

如图1.4所示2位数码管设计原理图。

位选控制脚如表1.2所示。

由于本设计采用共阳数码管,所以2位数码管位选引脚选择用LPC2103的P0.8与P0.9控制。

74hc595d的用法

74hc595d的用法

74hc595d的用法一、概述74hc595d是一款常用的电子元器件,属于七段数码管驱动芯片。

它可以将低电平驱动七段数码管显示数字,并且可以通过串行接口控制多个数码管同步显示数字。

本文将介绍74hc595d的基本特性和使用方法,帮助读者了解如何正确使用该芯片。

二、基本特性74hc595d芯片具有以下基本特性:1.低电平驱动数码管,适合驱动共阳极数码管。

2.可通过串行接口控制多个数码管同步显示数字。

3.可通过控制时钟信号的频率和相位来调节显示效果。

4.具有防抖动功能,可以减少用户手动操作数码管时产生的干扰。

三、使用方法74hc595d的使用方法非常简单,以下是具体步骤:1.连接数码管与74hc595d的引脚,共阳极数码管需要连接相应的阳极引脚,阴极引脚悬空。

2.将数码管的行驱动引脚连接到74hc595d的输出引脚上,一般使用多个74hc595d芯片并联使用,以便同时驱动多个数码管。

3.控制数码管的显示数字,可以通过控制74hc595d的时钟信号来实现。

通常需要控制时钟信号的频率和相位,以获得最佳显示效果。

4.在需要手动操作数码管时,可以通过按键或其他方式触发中断信号,触发防抖动功能后,再重新发送时钟信号即可。

四、注意事项在使用74hc595d时,需要注意以下几点:1.确保数码管与74hc595d的连接正确,避免短路或断路。

2.控制时钟信号时,需要注意频率和相位的影响,以便获得最佳显示效果。

3.在使用多个74hc595d芯片并联时,需要注意相位差的影响,以避免显示混乱。

4.在使用过程中,需要定期检查芯片的工作状态,如发现异常,应及时处理。

五、总结74hc595d是一款常用的电子元器件,具有低电平驱动数码管、串行接口控制、防抖动等功能。

通过正确连接、控制时钟信号和注意细节问题,可以轻松实现多个数码管的同步显示。

在电子制作和实际应用中,74hc595d能够发挥重要作用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*******************************************************************************
* 标题: 试验74HC595驱动数码管上显示数字(C语言)*
连接方法:JP12用条线冒短接JP3和JP2 用8PIN排线连接
********************************************************************************
* 通过本例程了解74HC595(串入并出)基本原理和使用*
请学员认真消化本例程,懂74C595在C语言中的操作*
********************************************************************************/
#include <reg51.h>
#include <intrins.h>
#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--);
}
/********************************************************************************************************* ** 函数名称: HC595SendData
** 功能描述: 向SPI总线发送数据
*********************************************************************************************************/ void HC595SendData(unsigned char SendV al)
{
unsigned char i;
for(i=0;i<8;i++)
{
if((SendVal<<i)&0x80) MOSIO=1; //set dataline high 0X80 最高位与SendVal左移的最高位进行逻辑运算
else MOSIO=0; // 如果为真MOSIO = 1
S_CLK=0;
NOP(); //短暂延时产生一定宽度的脉冲信号
NOP(); //短暂延时
S_CLK=1;
}
R_CLK=0; //set dataline low
NOP(); //短暂延时
NOP(); //短暂延时
R_CLK=1; //
}。

相关文档
最新文档