【MAX7219】STM8S MAX7219点阵模块驱动芯片程序

 

以下为.h文件:



#ifndef __MAX7219_H
#define __MAX7219_H
#include "stm8s_gpio.h"
#include "stm8s.h"
#include <iostm8s103f3.h>
#include <intrinsics.h>
#include "tim1.h"

#define uchar unsigned char
#define uint  unsigned int
#define count 8


void Init_MAX7219(void);
void MAX7219_Init(void);
void Write_Max7219_byte(uchar Data);    
void Write_Max7219(u8 address1,u8 dat1,u8 address2,u8 dat2);

#define High 1
#define Low 0
#define Din(High_Low)	if(High_Low == 0)GPIO_WriteLow(GPIOC, GPIO_PIN_4);\
						else GPIO_WriteHigh(GPIOC, GPIO_PIN_4);
#define Cs(High_Low)	if(High_Low == 0)GPIO_WriteLow(GPIOC, GPIO_PIN_3);\
						else GPIO_WriteHigh(GPIOC, GPIO_PIN_3);						
#define Clk(High_Low)	if(High_Low == 0)GPIO_WriteLow(GPIOC, GPIO_PIN_2);\
						else GPIO_WriteHigh(GPIOC, GPIO_PIN_2);

					
#endif

 

以下为.c文件:

#include "main.h"

void Init_MAX7219(void)
{
	GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST);//PC4高速推挽输出高电平控制DIN
	GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST);//PC3高速推挽输出高电平控制CS
	GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_OUT_PP_HIGH_FAST);//PC2高速推挽输出高电平控制CLK

}

//--------------------------------------------
//功能:向MAX7219(U3)写入字节
//入口参数:DATA 
//出口参数:无
//说明:
void Write_Max7219_byte(uchar Data)         
{
    	uchar i;    
		Cs(0);
	    for(i=8;i>=1;i--)
		{		  
			Clk(0);
			if(Data&0x80)
			{
				Din(1);
			}
			else
			{
				Din(0);
			}
			Data=Data<<1;
			Clk(1);
			delay_us(10);
			Clk(0);
		 }                                 
}

//-------------------------------------------
//功能:向MAX7219写入数据
//入口参数:address、dat
//出口参数:无
//说明:
void Write_Max7219(u8 address1,u8 dat1,u8 address2,u8 dat2)
{ 

     Cs(0);
     Write_Max7219_byte(address1);           //写入地址,即数码管编号
     Write_Max7219_byte(dat1);              //写入数据,即数码管显示数字 
     Write_Max7219_byte(address2);           //写入地址,即数码管编号
     Write_Max7219_byte(dat2);      //写入数据,即数码管显示数字 

     nop();
     Cs(1);                         
}


void MAX7219_Init(void)
{
	/*
  	Write_Max7219(0x09, 0x00,0x09, 0x00);      	//译码方式:BCD码
 	Write_Max7219(0x0a, 0x03,0x0a, 0x03);       //亮度 
	Write_Max7219(0x0b, 0x07,0x0b, 0x07);       //扫描界限;8个数码管显示
 	Write_Max7219(0x0c, 0x01,0x0c, 0x01);       //掉电模式:0,普通模式:1
 	Write_Max7219(0x0f, 0x00,0x0f, 0x00);      	//显示测试:1;测试结束,正常显示:0
	*/
	
	u8  i;
	Cs(0);
	for(i=0;i<count;i++)
	{
	  Write_Max7219_byte(0x09); //译码方式:BCD码       
	  Write_Max7219_byte(0x00);    
	}
	Cs(1);
	nop();
	Cs(0);
	for(i=0;i<count;i++)
	{
	  Write_Max7219_byte(0x0a); //亮度    
	  Write_Max7219_byte(0x03);    
	}
	Cs(1);
	nop();
	Cs(0);
	for(i=0;i<count;i++)
	{
	  Write_Max7219_byte(0x0b); // //扫描界限;8个数码管显示  
	  Write_Max7219_byte(0x07);    
	}
	Cs(1);
	nop();
	Cs(0);
	for(i=0;i<count;i++)
	{
	  Write_Max7219_byte(0x0c); //   //掉电模式:0,普通模式:1
	  Write_Max7219_byte(0x01);    
	}
	Cs(1);
	nop();
	Cs(0);
	for(i=0;i<count;i++)
	{
	  Write_Max7219_byte(0x0f); //显示测试:1;测试结束,正常显示:0
	  Write_Max7219_byte(0x00);    
	}
	Cs(1);
	nop();
}	




 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yiquhui666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值