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

📄 max7221.h

📁 LCD1602.rar
💻 H
字号:
#ifndef _MAX7221_LED_DRIVER_2005_9_19_
#define _MAX7221_LED_DRIVER_2005_9_19_

#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit din = P2^0;
sbit load  = P2^1;
sbit clk = P2^2;

void send(uchar outdata)	//写串行数据子程序
{ 
	uchar i,temp;
  	for(i=0;i<8;i++)
  	{
    	temp=outdata&0x80;
    	outdata=outdata<<1;
  		if(temp==0x80)
	 	{
	   		clk=0;
	   		din=1;
	   		_nop_();
	   		clk=1;	 //提供上升沿
	   	}
  		else
  	 	{
	   		clk=0;
	   		din=0;
	   		_nop_();
	   		clk=1;	 //提供上升沿
	   	}
  	}
}

void write(uchar addr1,uchar num1,uchar addr2,uchar num2)
{
	load=0;	//当LOAD为低电平时,芯片接收来自DIN的数据,接收完毕,
  	_nop_();
  	send(addr1);
  	 _nop_();
  	send(num1);
  	_nop_();
  	clk=0;
  	_nop_();
  	clk=1;     //从DIN输入的数据经过16.5个CLK脉冲后移到DOUT引脚上。
             //所以发完16个数据后必须加一个脉冲,否则数据传不到第二片
  	send(addr2);
  	_nop_();
  	send(num2);
  	load=1;   //LOAD回到高电平时,接收的数据将被锁定
}

void init(void)
{
	write(0x09,0xff,0x09,0xff);  //设置译码方式,使用bcd译码
 	write(0x0a,0x0a,0x0a,0x0a);  //设置亮度
 	write(0x0b,0x07,0x0b,0x07);  //设置扫描的位数
 	write(0x0c,0x01,0x0c,0x01);  //设置待机方式
}

#endif

⌨️ 快捷键说明

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