📄 1.c
字号:
#include <reg52.h>
#include<intrins.h>
#define SHUTDOWN 0x0c //是否关机
#define DECODE_MODE 0x09 //编码模式
#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[]={
0x7e,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B,0x00
};
unsigned char code seg[]={
0x01,0x02,0x03,0x04,0x05,0x06,0x07
};
unsigned char numbers[8];
/*void WriteMAX7219_bit(bit dat) //写入一位
{
CLK=0;
DIN=dat;
CLK=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;
/* for(i=1;i<=8;i++)
{
if(temp&dat1)WriteMAX7219_bit(1);
else WriteMAX7219_bit(0);
dat1<<=1;
}
for(i=1;i<=8;i++)
{
if(temp&dat2)WriteMAX7219_bit(1);
else WriteMAX7219_bit(0);
dat2<<=1;
} */
WriteByte7219(dat1);
WriteByte7219(dat2);
LOAD=1;
}
void InitMax7219() //初始化
{
WriteMAX7219_2bytes(DECODE_MODE,0xff); //设置所有数码管为B CODE编码模式
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=30000;
while(n--);
}
void main()
{
bit a;
a=1;
// InitMax7219();display();
// WriteMAX7219_2bytes(DISPLAYTEST,0xff);
while(1){
a=!a;
P0=a;
P1=a;
P2=a;
delay();} ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -