74LS164 串入并出实验
</Script>
人在外头,老是惦记着我的BLOG。或说惦记着我对小孩子说过的话:每天写一道编程。不过发表74LS164 串入并出实验并不是由于处原因的驱动,主要是受自己的责任心影响。好!闲话说到这。下面是74LS164的作用以及代码。
74LS164作用:在单片机系统,有时并行口的I/O资源不够,而串行口又没有其他的作用,那么我们可以用74LS164来扩展并行I/O口,节约单片机资源。74LS164是一个串行输入并行输出的移位寄存器。并带有清除端。特别是像AT89C2051这样只有15个I/O口的IC。
IC分析:Q0—Q7 并行输出端。A,B串行输入端。MR 清除端,为0时,输出清零。CP 时钟输入端。
74LS164 引脚定义 | 74LS164逻辑表 |

|
|
程序代码:
#include<reg52.h> //晶振使用12MHz。
#define uchar unsigned char
#define uint unsigned int
#define nop _nop_()
sbit pc=P2^0;//输入脉冲,读者
sbit sd=P2^1;
code uchar table[16]={0xfc,0x60,0xda,0xF2,0x66,
0xB6,0xBE,0xE0,0xFE,0xf6,
0x10,0x11,0x12,0x13,0x14,0x15};//共阴极二极管
void display(char rd) //数据的串行输入
{
char i;
bit temp;
rd=~rd;
for(i=0;i<8;i++)
{
if (rd&0xfe==0xfe) temp=0;
else temp=1;
pc = 0;
sd = temp;
pc = 1;
rd >>= 1;
}
}
void Delay(uchar us) //us delay
{
while(--us);
}
void DelayMS(uint iMs)// ms delay
{
uint i,j;
for(i=0;i<iMs;i++)
for(j=0;j<65;j++)
Delay(1);
}
void main(void)//主函数
{
uint i;
for (i=0;i<10;i++)
{
display(table[i]);
DelayMS(1000);//延时1S
}
}
wEa《中国维修服务网》-首页 家电维修资料中心,技术论坛