单片机控制74LS164控制数码管显示怎么编程(汇编语言)

单片机控制74LS164控制数码管显示怎么编程(汇编语言),第1张

74LS164是串入并出转换芯片,可以借助串口来实现,也可以用普通IO口模拟实现。举例如下:

#include<reg51.h>

#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

}

}

CLR不用接的

可以用串行工作方式0(8位同步输出)

你这显示就用该用动态扫描了,点亮一个数字延时后点亮两一个数字

你第二个图好像不大好用,用一个164足够了,用P1.6P1.7选一下点亮那个管足矣,不用再加两个164的,浪费。

串行口发送8位数据低位在前。

如果164接受数据每一位是从Q7进入的话,可以解释,P3.0给数据D0,时钟有效,数据进入第一片Q7,由于两片同一时钟,而Q7为第二片输入,所以第二片也获得P3.0数据,P3.0给数据D1,D0进入Q6,D1进入Q7 ...

如果164接收数据每一位是从Q0进入的话,我就解释不通了。

我在找找相关资料,你也找找,确定一下164接收的第一位先出现在哪一位。

又看了一下,164接收数据第一位先出现在Q0,然后顺序后移,所以图二中两片164不能同时接收数据,只有给16个脉冲,先发送的8位数据进入第二片,后发送的8位数据进入第一片。

例如你想在第一片显示3,二片显示4,则mov sbuf,#(4段码数据),再mov sbuf,#(3段码数据)。!注意sbuf中的高位将被送入Q0中,即高低位反了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11084460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存