推荐于2016-01-12 · 知道合伙人教育行家
void init_max7219()
{
w_max7219(0x0a,0x07); //显示亮度,取值范围0~f
w_max7219(0x0b,0x07); //8位扫描显示,取值范围0x01~0x07
w_max7219(0x09,0x00); //译码方式,0x00为不译码,0xff为译码
w_max7219(0x0c,0x01); //操作方式,0x00为低功耗模式,0x01为正常操作模式
w_max7219(0x0f,0x00); //显示状态,0x00为正常显示,0x01为显示测试
timer_ms(2);
}
/*********************************************************************************************
函数名称:w_max7219
函数功能:向MAX7219写入数据
入口参数:addr MAX7219内部寄存器地址,wdata 写入内部寄存器的操作数值
出口参数:
其 它:
*********************************************************************************************/
void w_max7219(unsigned char addr,unsigned char wdata)
{
unsigned int temp,i=1,j,k;
LD=0;
while(i<16)
{
if(i<8) temp=addr; //先写入MAX7219内部寄存器地址,再向内部寄存器写入操作数值
else temp=wdata;
for(j=0;j<8;j++)
{
CLK=0;
if((temp&0x80)==0x80) DIN=1; //先发送数据的最高位
else DIN=0;
for(k=5;k>0;k--); //时钟频率高的单片机需曾加延时时间,此处为12MHz ,k=5
CLK=1;
for(k=5;k>0;k--);
temp<<=1;
}
i+=8;
}
LD=1;
}
/*-------------------------------------------------------------------------------------------
你的这个不完整啊 好几个错误和警告 哥哥
这只是MAX7219的初始化个写数据代码,剩下的就是你自己要怎么操作了啊,这没必要再贴了吧
2023-08-24 广告