标题:
16x16点阵屏—单片机为何不输出数据?
[打印本页]
作者:
xiaochong6985
时间:
2022-9-13 19:14
标题:
16x16点阵屏—单片机为何不输出数据?
#include <reg51.h>
#define u8 unsigned char
#define u16 unsigned short int
//定义HC595使用的IO口
sbit HC595_DATA=P1^2;
sbit HC595_RCK=P1^3;
sbit HC595_SCK=P1^4;
void HC595_Send_Byte(u8 byte)
{
u8 i;
for(i=0;i<8;i++)
{
if(byte&0x80)HC595_DATA=1;
else HC595_DATA=0;
HC595_SCK=0;
HC595_SCK=1;
byte<<=1;
}
}
/*
将HC595存储器里的数据输出到总线上
*/
void HC595_DataOut()
{
HC595_RCK=0;
HC595_RCK=1;
HC595_RCK=0;
}
/*
延时函数
*/
void DelayMs(u8 p)
{
u8 z,e;
for(z=p;z>=0;z--);
for(e=110;e>=0;e--);
}
/*
HC595的3、4级是控制点阵的列(低电平)
HC595的1、2级是控制点阵的行(高电平)
给HC595第1级发送的数据会移动到最后一个HC595。
*/
int main()
{
u8 i,j;
u16 Row;
u16 col;
while(1)
{
for(i=0;i<16;i++)
{
Row=0x0000;
Row|=1<<i;
for(j=0;j<16;j++)
{
col=0xFFFF;
col&=~(1<<j);
HC595_Send_Byte(col>>8);
HC595_Send_Byte(col);
HC595_Send_Byte(Row>>8);
HC595_Send_Byte(Row);
HC595_DataOut();
DelayMs(100);
HC595_Send_Byte(0xFF);
HC595_Send_Byte(0xFF);
HC595_Send_Byte(0x00);
HC595_Send_Byte(0x00);
HC595_DataOut();
}
}
}
}
复制代码
屏幕截图 2022-09-13 173304.png
(1.63 KB, 下载次数: 103)
下载附件
2022-9-13 19:10 上传
一直保持这样不变!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1