📄 max7221.h
字号:
#ifndef _MAX7221_LED_DRIVER_2005_9_19_
#define _MAX7221_LED_DRIVER_2005_9_19_
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit din = P2^0;
sbit load = P2^1;
sbit clk = P2^2;
void send(uchar outdata) //写串行数据子程序
{
uchar i,temp;
for(i=0;i<8;i++)
{
temp=outdata&0x80;
outdata=outdata<<1;
if(temp==0x80)
{
clk=0;
din=1;
_nop_();
clk=1; //提供上升沿
}
else
{
clk=0;
din=0;
_nop_();
clk=1; //提供上升沿
}
}
}
void write(uchar addr1,uchar num1,uchar addr2,uchar num2)
{
load=0; //当LOAD为低电平时,芯片接收来自DIN的数据,接收完毕,
_nop_();
send(addr1);
_nop_();
send(num1);
_nop_();
clk=0;
_nop_();
clk=1; //从DIN输入的数据经过16.5个CLK脉冲后移到DOUT引脚上。
//所以发完16个数据后必须加一个脉冲,否则数据传不到第二片
send(addr2);
_nop_();
send(num2);
load=1; //LOAD回到高电平时,接收的数据将被锁定
}
void init(void)
{
write(0x09,0xff,0x09,0xff); //设置译码方式,使用bcd译码
write(0x0a,0x0a,0x0a,0x0a); //设置亮度
write(0x0b,0x07,0x0b,0x07); //设置扫描的位数
write(0x0c,0x01,0x0c,0x01); //设置待机方式
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -