#include<reg52.h>
#include<intrins.h>
#define SHUTDOWN 0x0c //是否关机
#define DECODE_MODE 0x09 //编码模式 开启0x09 关0x00
#define INTENSITY 0x0a //亮度变化
#define SCAN_LIMIT 0x0b //开启哪些位
#define DISPLAYTEST 0x0f //显示测试
sbit DIN=P3^4;
sbit LOAD=P3^5;
sbit CLK=P3^6;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
unsigned char code table[10]={
0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B
// 0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x01,0x37,0x0e,0x67,0x1d,0x15,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char code seg[10]={
0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B
};
unsigned char numbers[8];
/*void WriteMAX7219_bit(bit dat) //写入一位
{
CLK=0;
DIN=dat;
CLK=1;
} */
void MAX_write(unsigned char ch) // 非BCD码模试 以8位字节进行写值
{
unsigned char j,ads;
for(j=0;j<8;j++) //8位
{
ads=ch&0x80; //取最高值
CLK = 0; //时钟线置低
if(ads) DIN = 1;
else DIN = 0;
ch=ch<<1; //左移1位
CLK=1; //上升沿,DIN的数据写入7219
}
}
void MAX7219(unsigned char addr, unsigned char num) // 非BCD码模试 写地址写数据
{
LOAD = 0;
_nop_();
MAX_write(addr);
_nop_();
MAX_write(num);
_nop_();
LOAD = 1; //锁存
}
void WriteByte7219(unsigned char Dat) /////////////////////////////////////////////
{
unsigned char i;
ACC=Dat;
for(i=8;i>0;i--)
{
DIN=ACC7;
CLK=1;
_nop_();
_nop_();
CLK=0;
ACC=ACC<<1;
}
}
void WriteMAX7219_2bytes(unsigned char dat1,unsigned char dat2) //连续写入两个字节//////////////////////////
{
unsigned char temp;
temp=0x80;
CLK=0;
DIN=0;
LOAD=0;
// WriteByte7219(dat1);
// WriteByte7219(dat2);
MAX_write(dat1);
MAX_write(dat2);
LOAD=1;
}
void InitMax7219() //初始化
{
WriteMAX7219_2bytes(DECODE_MODE,0x00); //设置所有数码管为B CODE编码模式 0xff 非BCD码模试
WriteMAX7219_2bytes(INTENSITY,0x08); //设置亮度为最大
WriteMAX7219_2bytes(SCAN_LIMIT,0x07); //设置7个数码管全开
WriteMAX7219_2bytes(DISPLAYTEST,0);
WriteMAX7219_2bytes(SHUTDOWN,0x01); //设置为开机
}
void display()
{
unsigned char i;
for(i=0;i<8;i++)
{
WriteMAX7219_2bytes(seg[i],i);
}
}
void delay()
{
unsigned int n;
n=40000;
while(n--);
}
void main()
{
unsigned char t,NS,NS_S,NS_G;
NS=18;
NS_S=NS/10; //????,??
NS_G=NS%10;
InitMax7219();
MAX7219(0x01,0x47);
MAX7219(0x02,seg[NS_S]);
MAX7219(0x03,seg[NS_G]);
MAX7219(0x04,seg[3]);
MAX7219(0x05,seg[4]);
MAX7219(0x06,seg[5]);
MAX7219(0x07,seg[6]);
MAX7219(0x08,seg[7]);
// display();
t=0x80;
while(1)
{
P0=t;
P1=t;
P2=t;
t=_cror_(t,1);
delay();
}
}
MAX7219非编码模式.zip_MAX7219_MAX7219非编码模式_around5qn_max7219编码
版权申诉
44 浏览量
2022-09-23
03:50:06
上传
评论
收藏 87KB ZIP 举报
小波思基
- 粉丝: 74
- 资源: 1万+