📄 7219.c
字号:
#include<reg52.h>
#define uchar unsigned char
sbit din=P2^0;
sbit clk=P2^2;
sbit load=P2^1;
/******************对7219的写字节程序******************/
//功能:实现对控制寄存器的读写;
//时序要求:MAX7219采用串行数据传输方式,由16位数据包发送到DIN引脚的串行数据在每个CLK的上升沿被移入内部
//的16位移位寄存器中,然后在LOAD的上升沿将数据锁存到数字或控制寄存器;LOAD信号必须在第十六个时钟上升沿同
//时或之后,但在下一个时钟上升沿变高,否则数据库丢失。
void Write_Max7219_byte(uchar DATA) //LED写数据函数
{
uchar i;
load=0;
for(i=8;i>=1;i--)
{
clk=0;
din=DATA&0x80;
DATA=DATA<<1;
clk=1;
}
}
/*****************7219写数字程序************************/
//功能:先写LED数字控制寄存器,再将要显示的字符送到相应的数字寄存器显示
void Write_Max7219(uchar address,uchar dat)
{
load=0;
Write_Max7219_byte(address);
Write_Max7219_byte(dat);
load=1;
}
/****************7219初始化程序**********************/
//功能:完成对各个内部寄存器的初始化
void Init_Max7219(void)
{
Write_Max7219(0x09, 0xff); //译码寄存器,写入0ffH,对0至7位均译码
Write_Max7219(0x0a, 0x02); //亮度调节寄存器,写入03H,实现一般的亮度显示
Write_Max7219(0x0b, 0x03); //扫描界限寄存器,写入03H,实现对0到3位数码管的显示
Write_Max7219(0x0c, 0x01); //停机寄存器,写入01H,实现正常工作
Write_Max7219(0x0f, 0x00); //显示测试寄存器,写入00H,实现正常工作
}
/*****************主程序******************/
//实现四个数码显示0123
void main()
{
Init_Max7219();
Write_Max7219(0x01,0x00);
Write_Max7219(0x02,0x01);
Write_Max7219(0x03,0x02);
Write_Max7219(0x04,0x03);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -