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

📄 7219a.c

📁 这是一个很好的数码管驱动芯片7219的程序代码
💻 C
字号:
//***************************************************************************//
// IOB5 ----------- DIN// IOB6 ----------- SCK // IOB7 ----------- LOAD //
//***************************************************************************//
#define SDA_HEX 0x0020                     //DIN
#define SCK_HEX 0x0040                      //CLOCK 
#define CS_HEX 0x0080                       //LOAD

/*#define SCK_HEX 0x0004
#define SDA_HEX 0x0001
#define CS_HEX 0x0002*/
     
     
//**************** 宏函数 **********************
#define SETB_SCK()   *P_IOB_DATA|=SCK_HEX 
#define CLR_SCK()   *P_IOB_DATA&=!SCK_HEX 
#define SETB_SDA()  *P_IOB_DATA|=SDA_HEX
    
#define CLR_SDA()  *P_IOB_DATA&=!SDA_HEX 
     
#define SETB_CS() *P_IOB_DATA|=CS_HEX 
      
#define CLR_CS() *P_IOB_DATA&=!CS_HEX
      
volatile  unsigned int  *P_IOB_DATA =(unsigned int*)(0x7005); 
volatile  unsigned int  *P_IOB_DIR =(unsigned int*)(0x7007); 
volatile  unsigned int  *P_IOB_ATTRIB = (unsigned int*)(0x7008);
volatile  unsigned int *P_WatchDog_Clear = (unsigned int*)(0x7012);                                                  
//**************** 函数预定义 ****************************** 
void InitIO_7219(); 
void SendData_7219(unsigned int order,unsigned int data); 
void senddata_7219(unsigned int data); 
 void show(int data1,int data2) ;
       //***************************************************************

 void show(int data1,int data2) 
        {    
          unsigned int i=0,showval,b;       
        
          *P_WatchDog_Clear=0x01;
         
          InitIO_7219();
          *P_WatchDog_Clear=0x01;
              
          SendData_7219(0x0c,0x01); // 使其7219工作正常模式 
          SendData_7219(0x0b,0x07); // 配置scan limit模式,使其8个管子都工作
          SendData_7219(0x0a,0x05); // 设置亮度为最亮 
          SendData_7219(0x0d,0xff);
          SendData_7219(0x09,0xff); // 使8个管子都用编码方式
                                    //第七位设置为1,可以启动该位小数点
//***************传前面4位*******************************//
         b=data1/1000;
          SendData_7219(1,b);
         b=data1/100%10;
          SendData_7219(2,b);
         b=data1/10%10;
          SendData_7219(3,b);
         b=data1%10;
          SendData_7219(4,b); 
//****************传后面4位********************************//                 
         b=data2/1000;
          SendData_7219(5,b);
         b=data2/100%10;
          SendData_7219(6,b);
         b=data2/10%10;
          SendData_7219(7,b);
         b=data2%10;
          SendData_7219(8,b);
     }
//*********************** 对操作7219的IO口做配置 //*****************************************// 
void InitIO_7219()
         { 
           *P_IOB_DIR|=SCK_HEX; 
           *P_IOB_ATTRIB|=SCK_HEX;
           *P_IOB_DATA|=SCK_HEX;
           *P_IOB_DIR|=SDA_HEX; 
           *P_IOB_ATTRIB|=SDA_HEX;
           *P_IOB_DATA|=SDA_HEX; 
           *P_IOB_DIR|=CS_HEX;
           *P_IOB_ATTRIB|=CS_HEX;
           *P_IOB_DATA|=CS_HEX;
           }
//********************** 送数据给7219的函数 -- order 是命令字 ; data 是数据 ******************//
void SendData_7219(unsigned int order,unsigned int data)
          { 
            unsigned int rtemp,dtemp; 
            dtemp=data; 
            dtemp&=0x00ff; 
            rtemp=order; 
            rtemp<<=4; 
            rtemp<<=4; 
            rtemp|=dtemp;
            senddata_7219(rtemp); 
          } 
void senddata_7219(unsigned int data)
           {
              unsigned int i; // 将CS拉低 
              CLR_CS(); 
              for(i=0;i<16;i++) 
             { 
                CLR_SCK(); 
               if(data&0x8000) 
                   SETB_SDA(); 
               else CLR_SDA();
                   SETB_SCK(); 
                   data<<=1; 
              } 
                   SETB_CS();
           } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -