历史上的今天
今天是:2024年11月08日(星期五)
2019年11月08日 | 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驱动
史海拾趣
|
声明:这是别人的帖子,看了颇有感触,故转帖于此。 电子设计中,细节问题往往会导致严重的后果,所以我们一定要注意细节, [教训分享] 一分钱的疏忽造成数万元的损失 小弟去年给外面公司设计了一台智能型阀门伺服控制器,在本地几个小站现场工作都 ...… 查看全部问答> |
|
【EEWORLD带你DIY】示波器V2.0信号板及人机界面板打样归来~~ 活动介绍:使用Altera Cyclone III FPGA Stater 进行DIY示波器进程: https://www.eeworld.com.cn/zhuanti/20100703altera/20100703altera.html 信号板及人机界面板打样归来,上图 … 查看全部问答> |
|
大家帮忙看一下,结果不是透明位图,错误在哪里?多谢! void CPituceDlg::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: add draw code for native da ...… 查看全部问答> |
|
一个简单程序(UART),不晓得问题出在那里,请大家帮哈忙! 以下代码是UART0操作:收到上位机的字符然后转送回去。结果是能收到,但是是错误的,如发 01 收到 C0,请大家看看是那里出错了,小弟刚开始用430。 /**************************************************** 说明:串口测试程序 波特率:9600bps ...… 查看全部问答> |
|
生活在职场中,你会发现到处都潜伏着危机,尤其是你的嘴,稍不留意或许“祸”就从口出了,那么如何在办公室中避免不必要的麻烦,这些禁语你必须知道哦: 禁语一:薪水问题 很多公司不喜欢职员之间打听薪水,因为同事之间工资往往有不小差 ...… 查看全部问答> |
|
对于电子产品来说,印制线路板设计是其从电原理图变成一个具体产品必经的一道设计工序,其设计的合理性与产品生产及产品质量紧密相关,而对于许多刚从事电子设计的人员来说,在这方面经验较少,虽然已学会了印制线路板设计软件,但设计出的印制 ...… 查看全部问答> |




