📄 74hc164.c
字号:
#include <reg52.h>
sbit CLR=P3^0; //用P3^0控制CLR
sbit CLK=P3^1;
sbit DAT=P3^0;
unsigned char code tab[17]={0x11,0x7d,0x23,0x29,0x4d,0x89,0x81,0x3d,
//0,1,2,3,4,5,6,7,
0x01,0x09,0x05,0xc1,0xe3,0x61,0x83,0x87,0xff};
//8,9a,b,c,d,e,f,灭
//----------------------------------------------------------------------
// 函数名称:UART_init()
// 功能说明:串口初始化,设定串口工作在方式0
//----------------------------------------------------------------------
void UART_Init(void)
{
SCON =0x00; //没串行口方式0,允许发送,启动发送过程
EA=0; // 禁止中断
}
//---------------------------------------------------------------------
// 函数名称:out()
// 输入参数:dat,需要从74LS164并行口输出的数据
// dat:要高位在前的传输
// 输出参数:无
// 功能说明:发送八位串行数据至并口
//---------------------------------------------------------------------
void HC164_Out(unsigned char dat)
{
CLR =0; //并口输出清零
CLR =1; //开始串行移位
UART_Init(); //74LS164工作在时钟控制下的串行移位状态
while(TI!=0); //循环等待
TI=0;
SBUF=dat;
}
//不是用串口
void SendData(unsigned char dat)
{
unsigned char num,i;
num=(tab[dat]|0x01);
for(i=0;i<8;i++)
{
CLK=0;
DAT=num&0x01;
CLK=1;
num>>=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -