📄 display7219.c
字号:
#include <includes.h>
sbit dis_DIN=P3^0; /*显示串行数据输入端*/
sbit dis_LOAD=P1^0; /*显示数据锁存端*/
sbit dis_CLK=P3^1; /*显示时钟输入端*/
/*--------------------------------------------------------
10ms延时子程序
---------------------------------------------------------*/
void delayX10ms(unsigned char count)
{
unsigned char j,k;
while(count--!=0)
{
for(j=0;j<43;j++)
for(k=0;k<73;k++)
;
}
}
/*-------------------------------------------------
向MAX7219写入字节(8位)
--------------------------------------------------*/
void SendChar (unsigned char ch)
{
unsigned char i,temp;
_nop_();
for (i=0;i<8;i++)
{
temp=ch&0x80;
ch=ch<<1;
if(temp)
{
dis_DIN=1;
dis_CLK=0;
dis_CLK=1;
}
else
{
dis_DIN=0;
dis_CLK=0;
dis_CLK=1;
}
}
}
/*-------------------------------------------------
向MAX7219写入字(16位)
-------------------------------------------------*/
void WriteWord_3 (unsigned char addr,unsigned char num)
{
dis_LOAD=0;
_nop_();
SendChar (addr);
_nop_();
SendChar (num);
_nop_();
SendChar (NoOp);
_nop_();
SendChar (0);
_nop_();
SendChar (NoOp);
_nop_();
SendChar (0);
_nop_();
dis_LOAD=1;
}
/*-------------------------------------------------
向MAX7219写入字(16位)
-------------------------------------------------*/
void WriteWord_2 (unsigned char addr,unsigned char num)//发现与第二及第三块相连的数码管闪烁,与test9相比增加了空操作后就不闪烁了!!
{
dis_LOAD=0;
_nop_();
SendChar (NoOp);
_nop_();
SendChar (0);
_nop_();
SendChar (addr);
_nop_();
SendChar (num);
_nop_();
SendChar (NoOp);
_nop_();
SendChar (0);
_nop_();
dis_LOAD=1;
}
/*-------------------------------------------------
向MAX7219写入字(16位)
-------------------------------------------------*/
void WriteWord_1 (unsigned char addr,unsigned char num)//发现与第二及第三块相连的数码管闪烁,与test9相比增加了空操作后就不闪烁了!!
{
dis_LOAD=0;
_nop_();
SendChar (NoOp);
_nop_();
SendChar (0);
_nop_();
SendChar (NoOp);
_nop_();
SendChar (0);
_nop_();
SendChar (addr);
_nop_();
SendChar (num);
_nop_();
dis_LOAD=1;
}
/*-------------------------------------------------
MAX7219初始化
-------------------------------------------------*/
void InitDis (void)
{
WriteWord_1 (ScanLimit,ScanDigit); /*设置扫描界限*/
WriteWord_1 (DecodeMode,DecodeDigit); /*设置译码模式*/
WriteWord_1 (Intensity,IntensityGrade); /*设置亮度*/
WriteWord_1 (ShutDown,NormalOperation); /*设置电源工作模式*/
WriteWord_2 (ScanLimit,ScanDigit); /*设置扫描界限*/
WriteWord_2 (DecodeMode,DecodeDigit); /*设置译码模式*/
WriteWord_2 (Intensity,IntensityGrade); /*设置亮度*/
WriteWord_2 (ShutDown,NormalOperation); /*设置电源工作模式*/
WriteWord_3 (ScanLimit,ScanDigit); /*设置扫描界限*/
WriteWord_3 (DecodeMode,DecodeDigit); /*设置译码模式*/
WriteWord_3 (Intensity,IntensityGrade); /*设置亮度*/
WriteWord_3 (ShutDown,NormalOperation); /*设置电源工作模式*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -