STM8S MAX7219点阵模块驱动芯片程序
2019-11-08 来源:51hei
以下为.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(); }
下一篇:单片机常用芯片MAX7219驱动
- STM8S 使用IAR在线调试配置
- IAR FOR STM8S 错误 An error occurred while retrieving GDI features: gdi-error [40201]解决方法
- STM8S定时器操作
- IAR调试STM8S遇到函数返回值错误的问题
- STM8S 定时器第一次使用时间不准确的问题
- 解决stm8s配置timer2中断时间不准
- STM8S被设定读保护的芯片如何解除读保护,重新下载程序
- STM8S单片机红外接收解码程序 带1602显示
- stm8 stm8s stm8af 485接口 modbus协议代码
- STM8S学习笔记之三(STM8 SysClk)