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

📄 max7219.c

📁 8051单片机对八位LED显示芯片以及温度传感器芯片DS1620的驱动程序。
💻 C
字号:
/**********************************************
*   File: MAX7219.C
*   Description: Tri-Angle  
*   Created Date:  2007-10-01
*   Last Modified: 2007-10-01
*   Author: Jeffrey - Schicksal@126.com
*   Notes: None
**********************************************/
//#include "Atmel/AT89X51.h"
#include "SST89x5x4.H"
#include "INTRINS.H"
#include "DS1620.h"
#include "MAX7219.h"

/**********************************************
*   Function: void write_7219(unsigned char a, unsigned char b)
*   Input Variables: unsigned char a, unsigned char b
*   Return Variables: None
*   Usage: Write to 7219
**********************************************/
void write_7219( unsigned char addr, unsigned char dat )
{
	bit t;

 	_7219_CLK = 0;
	_7219_CS = SELECTED;

	ACC = addr;
	t = 1;

WriteLoop:
	_7219_MOSI = ACC_7;
	_7219_CLK = 1;
	_7219_CLK = 0;

	_7219_MOSI = ACC_6;
	_7219_CLK = 1;
	_7219_CLK = 0;

	_7219_MOSI = ACC_5;
	_7219_CLK = 1;
	_7219_CLK = 0;

	_7219_MOSI = ACC_4;
	_7219_CLK = 1;
	_7219_CLK = 0;

	_7219_MOSI = ACC_3;
	_7219_CLK = 1;	
	_7219_CLK = 0;

	_7219_MOSI = ACC_2;
	_7219_CLK = 1;
	_7219_CLK = 0;

	_7219_MOSI = ACC_1;
	_7219_CLK = 1;
	_7219_CLK = 0;

	_7219_MOSI = ACC_0;
	_7219_CLK = 1;
	

	if (t == 1) 
	{
		t = 0;
		ACC = dat;
		_7219_CLK = 0;
		goto WriteLoop;
	}

//EndWriteLoop:

	_7219_CS = UNSELECTED;
	_7219_CLK = 0;
	_7219_CLK = 1;
	_7219_CLK = 0;
	
}

/**********************************************
*   Function: Init7219()
*   Input Variables:void
*   Return Variables: None
*   Usage: Init 7219
**********************************************/
void Init7219()
{
  write_7219(0x0c,0x00);			// 关闭MAX7219,对7219进行配置
  _nop_();							// nop
  _nop_();							// nop
  _nop_();							// nop
  write_7219(0x0a,0x05);			// 调整亮度
  write_7219(0x09,0xff);			// 模式设置,全部解码操作
  write_7219(1,0x0f);				// blank
  write_7219(2,0x0f);				// blank
  write_7219(3,0x0f);				// blank
  write_7219(4,0x0f);				// blank
  write_7219(5,0x0f);				// blank
  write_7219(6,0x0f);				// 六位数码全部blank
  write_7219(0x0c,0x01);			// 启动7219
  write_7219(0x0b,0x05);			// 扫描位数 6位
}

/**********************************************
*   Function:void Display_Temp()
*   Input Variables:void
*   Return Variables: None
*   Usage: Display_Temp
**********************************************/
void Display_Temp()
{
  unsigned char LS;
  LS=DS1620read();
  LS/=2;
  if (LS==0)
  {
      write_7219(0x05,0x0a);
      write_7219(0x06,0x0a);
  }
  else
  {
    write_7219(0x05,LS/10);
    write_7219(0x06,LS%10);
    }
}

⌨️ 快捷键说明

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