如何利用74164使流水灯闪动,要求C语言源程序

Python011

如何利用74164使流水灯闪动,要求C语言源程序,第1张

741ls164内部为8个D触发器,用以实现数据串行移位,741ls164特性见表3。单片机以串行口方式0〔移仿寄存器方式)输山数据,3片74Lsl64作为3排共阳数码管的串/并转换显示接口。 74ls164为TTL单向8位移位寄存器,可实现串行输入,并行输出。其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑“与”运算规律输入信号,共一个输入信号时可并接,共同作为输入脚。cP(第8脚)为时钟输入端,可连接到串行口的TxD端。每一个时钟信号的上升沿加到cP端时,移位寄存器移一位。8个时钟脉冲过后,8位二进制数全部移入74lsl 64中。MR脚(第9脚)为复位端,当该脚为低电平时,移位寄存器各位复0;只有当它为高电平时,时钟脉冲才起作用。Q1一Q8(第3—6和10一13引脚)并行输出端分别接数码管的h—a(因为串行n从低位开始传送)各段对应的引脚上。在给出了8个脉冲后,最先进入741。s164的第1个字Ll数据到达厂最高位。再来1个脉冲,第1个脉冲就会从最高位移出,进入下个74L5164的第1位。3片741‘S164首尾相串,而时钟端则接在一起。这样,当输入8个脉冲时,从—9片机RXD端输出的第1字节数据就进入了第1片74LSl64中,而当第2个8个脉冲到来后,第l字节数据就进入了第2片74Lsl64,而随后的第2字节的数据则进入了第1片74LS164。这样,当第3个8个脉冲完成后,首次送出的数据被送到了最下面的164(第3片)中,其它数据依次出现在第二和第一片74LS164中,实现了数据在74LS164中的串行输入、并行输出。 表3 74LS164特性表

这个是一个四位数字串行显示的定时器,按键可设定,在实际电路上调试过

#include <REG51.H>

#define uchar unsigned char

#define uint unsigned int

uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,

0xb6,0xbe,0xe0,0xfe,0xf6,0x0}//段码根据实际情况自编

sbit k1=P2^0//定义加加

sbit k2=P2^1//定义减减

sbit CLK=P3^6//164模拟时钟端

sbit DAT=P3^7//164模拟数据端

uint z

void delay(uint t)//延时函数

{

uint x,y

for(x=tx>0x--)

for(y=120y>0y--)

}

void sendbyte(uint b)//传送显示字节函数

{

uchar num,c

num=table[b%10]//个位

for(c=0c<8c++)//依次传送8位

{

CLK=0

DAT=num&0x01

CLK=1

num>>=1

}

num=table[b%100/10]//十位

for(c=0c<8c++)//依次传送8位

{

CLK=0

DAT=num&0x01

CLK=1

num>>=1

}

num=table[b%1000/100]//百位

for(c=0c<8c++)//依次传送8位

{

CLK=0

DAT=num&0x01

CLK=1

num>>=1

}

num=table[b/1000]//千位

for(c=0c<8c++)//依次传送8位

{

CLK=0

DAT=num&0x01

CLK=1

num>>=1

}

}

void key()

{

if(k1==0)

{

delay(3)

if(k1==0)

{

TR0=0

z++

if(z==10000)

z=0

sendbyte(z)

}

while(!k1)

}

if(k2==0)

{

delay(3)

if(k2==0)

{

TR0=1

sendbyte(z)

}

while(!k2)

}

}

void main()

{

TMOD=0X01//定时器0定时方式1

TH0=0XD8//晶振12MHZ,定时10ms

TL0=0XF0

EA=1

ET0=1

TR0=1

sendbyte(0)

while(1)

key()

}

void time()interrupt 1//定时器中断

{

uint count

TH0=0XD8

TL0=0XF0

count++

if(count==100)//10毫秒X100=1秒

{

count=0

z++

if(z==10000)

{

z=0

}

sendbyte(z)//刷新显示

}

}

这些都是些ASCII码对应的十六进制形式,我帮你翻译了一下

“L I am waitting for you I miss you”

冷冰冰的十六进制转义在这个凌晨感动我了,大半夜的写代码的感觉一下子温馨了呢,衷心祝福lz吧~~~~~

猜测下:这个人应该是个内向的程序猿吧~嘿嘿~~~~

(PS,打个广告,大多数程序猿还是很靠谱的~~)

=======================最后附上源程序,其实很简单====

#include <stdio.h>

int main()

{

printf("\x4c \111 \141\x6d \x77\141\151\x74\164\x69\156\x67\x66\157\x72\x79\157\165\x49\155\x69\163\x73\171\x6f\x75\n")

return 0

}