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

📄 7219.c

📁 利用单片机和ad9851来产生1KHz--10MHz的正弦信号的代码。
💻 C
字号:
//************************************************************
//模块名称:7219显示子函数
//功能:用于向7219芯片送数据,驱动八位数码管显示
//使用方法:在使用该模块的函数里用 extern  void Display(unsigned long int data); 进行申明
//版权说明:该模块所有权归华中科技大学电子创新基地所有
//
//
//*****************定义要使用的IO引脚***************************** 
    #define SCK_HEX 0x0080   // IOB7 ----------- SCK 
    #define SDA_HEX 0x0020   // IOB5 ----------- CS/LOAD  
    #define CS_HEX  0x0040   // IOB6 ----------- DIN
     
//**************** 宏函数 **********************
     #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);    //看门狗
    // extern    unsigned long int Data;            

                                   
//**************** 函数预定义 ****************************** 
       void InitIO_7219(); 
       void SendData_7219(unsigned int order,unsigned int data); 
       void senddata_7219(unsigned int data); 
       
//***************************************************************    
void Display(unsigned long int Data) 
        {    
          unsigned int b=0;       
          *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,0x01); // 设置亮度为1/16,最亮时为0x0f 
          SendData_7219(0x0d,0xff); //?????????????????
          SendData_7219(0x09,0xff); // 使8个管子都用编码方式
                                    //第七位设置为1,可以启动该位小数点
//***************传前面4位*******************************//120 000 000
//         b=Data/100000000%10;
          SendData_7219(8,15);
//         b=Data/10000000%10;
          SendData_7219(7,15);
//         b=Data/1000000%10;
          SendData_7219(6,15);
         b=Data/10000%10;
          SendData_7219(5,(b | 0x0080)); 
//****************传后面4位********************************//                 
         b=Data/1000%10;
          SendData_7219(4,b);
         b=Data/100%10;
          SendData_7219(3,b);
         b=Data/10%10;
          SendData_7219(2,b);
         b=Data%10;
          SendData_7219(1,b);      
     }
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//显示一个数字的函数
//参数:(1)在第几个数码管上显示;(2)显示什么数字
//使用说明:在使用该模块的函数里用 extern  void Display_num(unsigned int location,unsigned int code); 进行申明
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
/*void Display_num(unsigned int location,unsigned int code)
{
	      *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,0x01); // 设置亮度为最不亮 
          SendData_7219(0x0d,0xff); //?????????????????
          SendData_7219(0x09,0xff); // 使8个管子都用编码方式
                                    //第七位设置为1,可以启动该位小数点 
          SendData_7219(location,code); 
}  */                                                           
//********************************************************
//函数名称:InitIO_7219() 
//功能:对操作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; 
     } 
//***************************************************** 
//函数名称:SendData_7219(unsigned int order,unsigned int data)
//函数功能:送数据给7219的函数 
//参数:order 是命令字,表示是第几个数码管,data是数据,该位数码管应显示的数据 
//*****************************************************
   void SendData_7219(unsigned int order,unsigned int data)
   { 
      unsigned int rtemp=0,dtemp; 
      dtemp=data; 
      dtemp&=0x00ff; 
      rtemp=order; 
      rtemp<<=4; 
      rtemp<<=4; 
      rtemp|=dtemp;
      senddata_7219(rtemp); 
    } 
//*****************************************************
//函数名称:senddata_7219(unsigned int data) 
//功能:送数据给7219的函数 
//参数:data 是数据 
//*****************************************************    
   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 + -