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

📄 max7219级连.txt

📁 LCD1602.rar
💻 TXT
字号:
#include <at89x51.h>
#include <stdio.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit din=P2^0;
sbit load=P2^1;
sbit clk=P2^2; 
//uchar codeseg[10]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};

void delay(uint i)
{
	uchar j;
	while(i--)
	for(j=0;j<120;j++);
}

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()
{
	write(0x09,0xff,0x09,0xff);  //设置译码方式,使用bcd译码
 	write(0x0a,0x0a,0x0a,0x0a);  //设置亮度
 	write(0x0b,0x07,0x0b,0x07);  //设置扫描的位数
 	write(0x0c,0x01,0x0c,0x01);  //设置待机方式
} //先设置后面一片的工作方式,在设置前面一片的工作方式

void main()
{
	write(0x0f,0x01,0x0f,0x01);
  	_nop_();
  	_nop_();
  	_nop_();
  	_nop_();	 
 	write(0x0f,0x00,0x0f,0x00); //测试显示
 	init();     //max7219初始化
 	while(1)
 	{
  		write(0x01,1,0x01,9);//先送位,再送段/先发送给第一片 
  		write(0x02,2,0x02,2);
  		write(0x03,3,0x03,3);
  		write(0x04,4,0x04,4);
  		write(0x05,5,0x05,5);
  		write(0x06,6,0x06,6);
  		write(0x07,7,0x07,7);
  		write(0x08,8,0x08,8);
 	}
}

⌨️ 快捷键说明

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