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

📄 max7219.c

📁 已经调通了PS2键盘程序。想学习的也许能帮上用处的。
💻 C
字号:
#include<iom16v.h>
#include<eeprom.h>
#include<macros.h>

#define uchar unsigned char 
#define uint  unsigned int

//MAX7219引脚配置
#define MAX7219_RST 6  //pa7
#define MAX7219_SDA 7  //pa6
#define MAX7219_SCLK 5 //pa5
//MAX7219_RST=1
#define Set_MAX7219_RST()  PORTA|=1<<MAX7219_RST
//MAX7219_RST=0
#define Clr_MAX7219_RST()  PORTA&=~(1<<MAX7219_RST)
//MAX7219_SDA=1
#define Set_MAX7219_DIN()  PORTA|=1<<MAX7219_SDA
//MAX7219_SDA=0
#define Clr_MAX7219_DIN()  PORTA&=~(1<<MAX7219_SDA)
//MAX7219_SCLK=1
#define Set_MAX7219_SCLK() PORTA|=1<<MAX7219_SCLK
//MAX7219_SCLK=0
#define Clr_MAX7219_SCLK() PORTA&=~(1<<MAX7219_SCLK)
//MAX7219相关寄存器
#define NoOp    0x00           // 空操作寄存器
#define Digit0  0x01           // 数码管1寄存器
#define Digit1  0x02           // 数码管2寄存器
#define Digit2  0x03           // 数码管3寄存器
#define Digit3  0x04           // 数码管4寄存器
#define Digit4  0x05           // 数码管5寄存器
#define Digit5  0x06           // 数码管6寄存器
#define Digit6  0x07           // 数码管7寄存器
#define Digit7  0x08           // 数码管8寄存器
#define DecodeMode 0x09        // 译码模式寄存器
#define Intensity  0x0a        // 亮度寄存器
#define ScanLimit  0x0b        // 扫描位数寄存器
#define ShutDown   0x0c        // 低功耗模式寄存器
#define DisplayTest  0x0f      // 显示测试寄存器
#define ShutdownMode 0x00      // 低功耗方式
#define NormalOperation 0x01   // 正常操作方式
#define ScanDigit 0x04         // 扫描位数设置,
#define DecodeDigit 0xff       // 译码设置
#define IntensityGrade 0x0a    // 亮度级别设置

/* 向MAX7219写入字节(8位)*/
void SendChar (uchar ch)
{
 uchar i=0,temp=0;
    for (i=0;i<8;i++)
    {
     temp=ch&0x80;
     ch=ch<<1;
        if(temp)
          {
           Set_MAX7219_DIN();
           Clr_MAX7219_SCLK();
           asm("nop");
           Set_MAX7219_SCLK();
          }
        else
         {
          Clr_MAX7219_DIN();
          Clr_MAX7219_SCLK();
          asm("nop");
          Set_MAX7219_SCLK();
         }
    }
}

/* 向MAX7219写入字(16位)*/
void MAX7219_WriteWord(uchar addr,uchar num)
{
    Clr_MAX7219_RST();
    SendChar(addr);
    SendChar(num);
	Set_MAX7219_RST();
}

/* MAX7219初始化 */
void MAX7219_Init(void)
  {
    MAX7219_WriteWord (ScanLimit,ScanDigit);      // 设置扫描界限
    MAX7219_WriteWord (Intensity,IntensityGrade); // 设置亮度
    MAX7219_WriteWord (DecodeMode,DecodeDigit);   // 设置译码模式
    MAX7219_WriteWord (ShutDown,NormalOperation); // 设置为正常工作模式
  }
  

⌨️ 快捷键说明

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