单片机
返回首页

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();

}

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章