标题:
单片机向74HC595写入数据,同时控制8X8点阵行列
[打印本页]
作者:
xyf
时间:
2017-11-23 09:45
标题:
单片机向74HC595写入数据,同时控制8X8点阵行列
void main ()
{
uchar i;
while(1)
{
for(i=0;i<8;i++){
//给扫描信号;通过调用写595数据的函数来实现
//给字模信号;
delay();
}
}
}
程序实现—2.向HC595写入数据
sbit sk=P2^0; //所有595的时钟信号 pin11
sbit st=P2^1; //595的锁存信号pin12
sbit ds=P2^7; //595串行数据输入 pin14
sbit EN=P2^6; //595的输出使能 pin13
void hc595_write (uchar mydata)
{
uchar j;
for(j=0;j<8;j++) //第2步
{
ds= mydata &0x80;
sk=0; //注意硬件中,如果有其他芯片,则要根据实际情况修改
sk=1;
mydata <<=1;
}
st=0; //第3步
st=1;
EN = 0; //第4步
}
程序实现—2.向HC595写入数据,同时控制行列
sbit DZ_DINL=P1^4; //控制点阵列的595数据输入
sbit DZ_DINH=P1^5; //控制点阵行的595数据输入
sbit DZ_OE =P1^2; //所有595的输出使能
sbit DZ_LC =P0^4; //所有595的锁存信号
sbit DZ_SC =P1^7; //所有595的时钟信号
/******************************************************************
- 功能描述:向控制行与列的两片595芯片中同时写入2个字节
- 隶属模块:8X8点阵模块
- 函数属性:外部,供用户使用
- 参数说明:datl:控制列的字节
dath:控制行的字节
- 返回说明:无
- 注:无
******************************************************************/
void DZ_SetValue_2595(unsigned char datl,unsigned char dath)
{
unsigned char i;
datl=~datl;
DZ_OE=1; //向595写入数据前,先将输出使能关闭
for(i=0;i<8;i++) //向两路(行与列)上的595同时写入数据
{
DZ_DINL=(datl&1);
DZ_DINH=(dath&1);
DZ_SC=0;
DZ_SC=1; //时钟上升沿时数据被写入
datl>>=1;dath>>=1;
}
DZ_LC=0;
DZ_LC=1; //写入595的数据,需要进行锁存才能输出到输出端,上升沿数据被锁存
DZ_OE=0; //打开所有595的输出使能
}
复制代码
作者:
wjxu
时间:
2018-10-27 15:27
应该是下降沿数据写入吧
捕获.PNG
(33.16 KB, 下载次数: 39)
下载附件
2018-10-27 15:27 上传
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1