⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display7219.c

📁 用单片机做的数字万年历
💻 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 + -