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

2019-11-08来源: 51hei关键字:STM8S  MAX7219  点阵模块  驱动芯片

以下为.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  MAX7219  点阵模块  驱动芯片 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479402.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8S TM1650芯片控制程序
下一篇:单片机常用芯片MAX7219驱动

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8S003的GPIO模拟I2C切换输入输出的解决办法
刚开始学STM8,很多东西刚了解,正在做一个温湿度显示小板,就是使用I2C驱动SHT20传感器,并显示到数码管,数码管用的四位一体共阴数码管,STM8管脚有限,添加了一片TM1650做驱动,不过SHT20和TM1650都是用的I2C接口,由于对STM8硬件I2C还不了解,先打算用软件模拟,这就涉及到需要对GPIO做输入输出切换处理来检测ACK响应,刚开始,直接操作DDR寄存器,但是出现从输出切换到输入就会出现单片机死机,不解,查资料,得到一个解决办法,在输出状态时,可以不用切换到输入,我使用管脚D4,D5这两个管脚,这两个管脚比较特殊,就是真正开漏,在管脚描述为T,其它描述为HS(高吸收电流)。解决办法,将IO设置为开漏输出,外部
发表于 2019-11-11
STM8S103之IO复用
一、简介本文以STM8S103F3P6编程为例,介绍STM8S103F3P6如何引脚复用。二、实验平台电脑平台:Windows7 64位旗舰编译软件:IAR硬件平台:STM8S103F3P6三、版权声明四、实验前提1、在进行本文步骤前,请先安装IAR  EWSTM8-EV-1311版本;准备好STM8S103F3P6硬件平台。五、基础知识暂无六、源码地址暂无七、实验内容1.先阅读STM8S103F数据手册2.操作步骤以STM8S103F3P6的IO“PC6”为定时器1PWM输出为例:1)、配置定时器1为PWM输出void Init_Timer1(void){  GPIO_Init(GPIOC
发表于 2019-11-11
STM8S103之IO复用
STM8S_010_I2C读写EEPROM(硬件方式)
Ⅰ、写在前面相信看过前面那篇文章“更加深入理解I2C总线、协议及应用”的人对I2C都有一定的了解了。那篇文章是针对I2C,使用单片机IO模拟I2C方式实现读写操作。本文将讲述硬件I2C读写操作,也就是由处理器自身硬件的I2C实现时钟、数据的传输过程。Ⅱ、STM8硬件I2C知识STM8S的I2C模块不仅可以接收和发送数据,还可以在接收时将数据从串行转换成并行数据,在发送时将数据从并行转换成串行数据。可以开启或禁止中断。接口通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线。允许连接到标准(最高100kHz)或快速(最高400kHz)的I2C总线。1.I2C的4种模式● 从设备发送模式● 从设备接收模式● 主设备发送模式
发表于 2019-11-09
stm8s105调试I2C记录
最近由于AR项目中调试LCOS需要用到STM8S105的mcu,本次主要是使用模拟I2C。1.IIC协议简介 IIC协议这里只做简要介绍,详细介绍可以百度了解,协议相对简单,主要有开始位,停止位,应答位,非应答位。开始位:当时钟为高,数据线由高变低停止位:当时钟位高,数据线由低变高。应答位:第9个时钟到来时,数据线为低。(这里第9个时钟,发送完一个字节,紧接着就是第9个时钟到来)非应答位,第9个时钟到来时,数据线为高。2.LCOS协议:1.发送数据:单数据发送: 开始位:写地址位(8bit):寄存器地址(16bit):数据(8bit):停止位多字节发送:开始位:写地址(8bit):寄存器地址(16bit):数据(8bit
发表于 2019-11-09
stm8s105调试I2C记录
STM8S103之GPIO
如何快速了解GPIO,查看Reference manual中GPIO章节,初步了解到GPIOGPIO输入分为:Floating Input和Input with pull-upGPIO输出分为:Open drain和pull-up(且pull-up时速率可以设置)GPIO复用功能如何选择,复用功能分为:Default alternate function和Alternate function after remap [optionbit]其中remap得知参考STM8S103的datasheet中的Option bytes,STM8S103中的Option bytes可以设置时钟,IO口的复用选择
发表于 2019-11-09
STM8S103之GPIO
STM32下SPI模式通过MAX7219驱动8位数码管显示模块
借鉴的地方:1、正点原子的“ALIENTEK MINISTM32 实验20 SPI实验”2、STM32 硬件SPI max7219 8位数码管显示模块 http://www.openedv.com/posts/list/46179.htm工具:STM32F103RCT6开发板;MAX7219 8位数码管显示模块:数码管模块电路图:(店家https://item.taobao.com/item.htm?spm=a1z09.2.0.0.FiSjlX&id=41059249086&_u=cjnajni5a96提供)MAX7219中文说明可以借鉴:http://wenku.baidu.com/link?url
发表于 2019-11-09
STM32下SPI模式通过MAX7219驱动8位数码管显示模块
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved