51点阵模块点亮左上角第一个点
#include "reg51.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
//定义使用的IO口
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
//595控制
void Hc595SendByte(u8 dat)
{
u8 a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
//传送最高位
//eg:dat=1001 1001
SER=dat>>7; //1传入SER
//左移一位,把次高位变成最高位
dat<<=1; //dat=0011 0010
//上升
SRCLK=1;
//两个周期
_nop_();
_nop_();
SRCLK=0;
}
//拉高
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
void main()
{
Hc595SendByte(0x80); //1000 0000
P0=0x7f; //0111 1111
}