以下为.h文件:
#ifndef __MAX7219_H
#define __MAX7219_H
#include "stm8s_gpio.h"
#include "stm8s.h"
#include #include #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 Write_Max7219_byte(0x09); //译码方式:BCD码 Write_Max7219_byte(0x00); } Cs(1); nop(); Cs(0); for(i=0;i Write_Max7219_byte(0x0a); //亮度 Write_Max7219_byte(0x03); } Cs(1); nop(); Cs(0); for(i=0;i Write_Max7219_byte(0x0b); // //扫描界限;8个数码管显示 Write_Max7219_byte(0x07); } Cs(1); nop(); Cs(0); for(i=0;i Write_Max7219_byte(0x0c); // //掉电模式:0,普通模式:1 Write_Max7219_byte(0x01); } Cs(1); nop(); Cs(0); for(i=0;i Write_Max7219_byte(0x0f); //显示测试:1;测试结束,正常显示:0 Write_Max7219_byte(0x00); } Cs(1); nop(); }
上一篇:STM8S TM1650芯片控制程序
下一篇:单片机常用芯片MAX7219驱动
推荐阅读最新更新时间:2024-11-02 01:35