跪求MAX7219驱动数码管的时钟代码
答案:1 悬赏:20 手机版
解决时间 2021-03-23 08:30
- 提问者网友:嗝是迷路的屁
- 2021-03-22 15:26
跪求MAX7219驱动数码管的时钟代码
最佳答案
- 五星知识达人网友:人類模型
- 2021-03-22 16:37
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);
}
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;
}
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;
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--);
CLK=1;
for(k=5;k>0;k--);
temp<<=1;
}
i+=8;
}
LD=1;
}
void timer_ms(unsigned char tim)
{
unsigned char i;
while(tim--)
{
for(i=0;i<200;i++); //延时1ms
}
}追问大哥 #include
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯