74ls164级联后驱动数码管,显示的的数字为什么一直在闪烁

作者&投稿:职贫 (若有异议请与网页底部的电邮联系)
74LS164级联控制5个数码管静态显示 编译通不过请问是那里的问题?~

include “MacroAndConst.h”

头文件你有吗?
抄袭了别人的程序

74LS164是串入并出转换芯片,可以借助串口来实现,也可以用普通IO口模拟实现。举例如下:
#include
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbit keyup=P3^6;
sbit keydn=P3^7;
void delay()
{
int i=1000;
while(i--);
}
main()
{
uchar i;
i=0;
SCON=0x00;
TI=1;
while(1)
{
SBUF=table[i];
while(TI==0);
TI=0;
delay();
if(keyup==0)
{
i++;
while(keyup==0);
}
if(keydn==0)
{
if(i>0)i--;
while(keydn==0);
}
i%=10;
}
}

主要是没有做消隐处理。

为了做消隐处理,共阴极不能直接接地,需要用一个单片机引脚来控制,这里选择P3.2。

原理图修改如下:

代码如下:

COM EQU P3.2;

ORG  0000H

AJMP MAIN

ORG  0030H

MAIN:

MOV 20H,#08

MOV 21H,#07

MOV 22H,#03

mov 23H,#03

MOV SCON,#00H;串口方式0,数据从RXD引脚上发送或接收。

DISPLY:

MOV  R1,#04H

MOV  R0,#20H

MOV DPTR,#SGTB

LOOP:

SETB COM;【关显示,消隐】

MOV A,@R0

MOVC A,@A+DPTR

MOV  SBUF,A

DELAY1:

JNB TI,DELAY1

CLR  TI

INC R0

DJNZ R1,LOOP

; RET MAIN

clr COM;【开显示】

JMP MAIN

SGTB:

DB  0FCH,060H,0DAH,0F2H,66H

DB  0B6H,0BEH,0E0H,0FEH,0F6H

END  




急求用74ls161设计24进制计数器
74ls161是四位同步二进制加法计数器,可用两片74ls161级联做出24进制计数器,首先第一片作低位计数,第二片作高位计数;当时钟信号一到来时,低位计数器计数一次,一共计数16次计数器本身会自动清零重新开始计数同时会产生一个进位信号,将这个进位信号接到高位计数器的时钟信号端,这样低位计数器满16进位使高位计数器计数...

74hc595的工作过程
74HC595主要应用于点阵屏,以16*16点阵为例:传送一行共二个字节(16位)如:发送的是06H和3FH。其方法是:1.先送数据3FH,后送06H。2.通过级联串行输入后,3FH在IC2内,06H在IC1内。应用如图二 3.接着送锁存时钟,数据被锁存并出现在IC1和IC2的并行输出口上显 示。编程方法:...

文件类型是怎么回事
采用MPEG-1标准压缩的视频文件,与VCD使用的格式非常相近,提供CD质量的音频信号和320*240的视频分辩率,目前的媒体播放软件大都能播放,Microsoft的WMV8和MPEG-4压缩的AVI文件是其强大的竞争对手.mptMacintosh中使用的一种图形文件格式.msgMicrosoft邮件文档.mskAnimator Pro中的一种图形文件格式,其中包含一个位图图形.msnM...

扎兰屯市15545223628: 如何实现74ls164扩展并行输出口驱动数码管实现静态显示 -
谭婵金喉: 单片机串口连接74ls164(串转并输出芯片)并口连八段数码管(如果静态显示需要每个数码管一个芯片),软件需要做一个八段数码字库,显示直接把段码从串口输出就可以了.

扎兰屯市15545223628: 可以请问下单片机里边74LS164控制八段数码管的显示应该如何设置CLR和CLK还有DATA端得数值来控制八段数码管 -
谭婵金喉: CLR 为清零端,低电平有效,该脚加低电平时,输出被置零,用一个I/O来控制它,起到灭零作用.CLK为脉冲计数输入端,用单片机的某个I/O口输出脉冲给它 DATA的8个输出端用来接8个LED

扎兰屯市15545223628: 用4个移位寄存器74LS164驱动4个数码管的连接方式属于静态显示还是动态显示? -
谭婵金喉: 静态显示,因为74LS164是串入并出移位寄存器,进来的段码只要不变就一起存储在里面,不用单片机去刷新.

扎兰屯市15545223628: 用74ls164驱动静态显示有什么优点 -
谭婵金喉: 优点很多,列举主要几点:1、串行驱动,占用单片机口线少;2、扩展容易,只要增加芯片级联,就可以轻松扩展多位数码管显示;3、静态显示相比动态扫描显示稳定清晰,且不需占用单片机太多软件资源.

扎兰屯市15545223628: 74LS164N跟数码管连在一起后通过串口与单片机相连,通过什么程序让数码管显示想要的数字? -
谭婵金喉: 就是串并转换嘛,按照时序将数字编好制成表,然后通过串口发送就行了

扎兰屯市15545223628: 用6个74LS164串在一起,驱动6个7段数码管,出现残影怎么解决,就是每次刷新最后一位数码管时其它的数码... -
谭婵金喉: 164是串入并出的移位寄存器.串入的同时,并行就同时输出.有闪动是必然的.提高串入的速度,就可以让人看不到闪动,用汇编语言编程就好一些.如果换用74HC595,就可以完全避免闪动.

扎兰屯市15545223628: 74ls164 能否动态驱动多位数码管 -
谭婵金喉: void display() //数码显示 { SCON=0; //初始化串行口方式 SBUF=dispcode[ge]; while(!TI); TI=0;led4=0; delay(2); led4=1; SBUF=dispcode[shi]; while(!TI); TI=0;led3=0; delay(2); led3=1; SBUF=dispcode[bai]; while(!TI); TI=0;led2=0; delay(2); led...

扎兰屯市15545223628: 74LS164和74LS245都可以驱动数码管吗? -
谭婵金喉: 74LS164是8位移位寄存器,74LS245是双向8位驱动器,都不是显示译码器,是不能驱动数码管显示出数字的.非要驱动的话,数码管显示的是未知的符号,或叫乱码,也没有什么意义啊.真要用数码管显示出数字来,可用74LS247,是七段译码器,输入BCD码,经译码后可以直接驱动共阳数码管显示出0-9十个数字来.

扎兰屯市15545223628: 51单片机接74ls164驱动数码管的C程序,实现控制数码管0到9循环显示 -
谭婵金喉: #include<reg51.h> code table[16]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 }; unsigned char date; void delayms(unsigned int cc) { unsigned int x,y; for(y=cc;y>0;y--) for(x=500;x>0;x--); } void main() { while(...

扎兰屯市15545223628: 74LS164驱动数码管的控制方式和程序问题 -
谭婵金喉: CLR不用接的 可以用串行工作方式0(8位同步输出) 你这显示就用该用动态扫描了,点亮一个数字延时后点亮两一个数字 你第二个图好像不大好用,用一个164足够了,用P1.6P1.7选一下点亮那个管足矣,不用再加两个164的,浪费. 串行口发送...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网