📄 7135.c
字号:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar addr[6]={0x06,0x05,0x04,0x03,0x02,0x01};
uchar code d1[6]={0x02,0x00,0x00,0x07,0x00,0x09};
uchar code d2[6]={0xff,0x0c,0x0b,0x0d,0x0d,0x00};
uchar idata adc[6]={0,0,0,0,0,0};
sbit DIN = P2^5;
sbit CLK = P2^6;
sbit LOAD = P2^7;
sbit STR = P3^3;
sbit BUSY = P3^2;
sbit URAN = P1^4;
sbit ORAN = P1^5;
sbit RH = P1^6;
sbit POL = P1^7;
bit FLAG;
void delay(uint x);
void clr(void);
void bytedin(uchar x);
void sdin(uchar a,uchar d);
void ini7219(void);
void ini(void)
{ P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
ini7219();
IT1 = 1;
EX0 = 0;
EX1 = 1;
FLAG = 0;
RH = 1;
EA = 1;
}
void disp(void)
{ uchar i;
for(i = 0;i < 6;i++)
sdin(addr[i],adc[5-i]);
}
void main(void) using 0
{ ini();
for(;;)
{ do{ if(!POL) adc[5] = 0x0a;
else adc[5] = 0xff;
if(URAN | ORAN)
{ adc[0] = 0x0d;
adc[1] = 0x00;
adc[2] = 0xff;
adc[3] = 0xff;
adc[4] = 0xff;
}
disp();
} while(!FLAG);
FLAG = 0;
disp();
}
}
void intx1 (void) interrupt 2 using 1
{ uchar temp;
EA = 0;
do{temp = P0;}while((temp & 0xf0) != 0x00);
adc[4] = (temp & 0x01);
do{temp = P0;}while((temp & 0x10) != 0x10);
adc[3] = (temp & 0x0f);
do{temp = P0;}while((temp & 0x20) != 0x20);
adc[2] = (temp & 0x0f);
do{temp = P0;}while((temp & 0x40) != 0x40);
adc[1] = (temp & 0x0f);
do{temp = P0;}while((temp & 0x80) != 0x80);
adc[0] = (temp & 0x0f);
if(!POL) adc[5] = 0x0a;
else adc[5] = 0xff;
if(URAN | ORAN)
{ adc[0] = 0x0d;
adc[1] = 0x00;
adc[2] = 0xff;
adc[3] = 0xff;
adc[4] = 0xff;
}
FLAG = 1;
EA = 1;
}
void ini7219(void)
{ uchar i;
sdin(0x09,0xff);
sdin(0x0a,0x07);
sdin(0x0b,0x05);
sdin(0x0c,0x01);
sdin(0x0f,0x01);
delay(10000);
sdin(0x0f,0x00);
clr();
delay(20000);
for(i = 0;i < 6;i++)
sdin(addr[i],d1[i]);
delay(30000);
clr();
delay(20000);
for(i = 0;i < 6;i++)
sdin(addr[i],d2[i]);
delay(30000);
clr();
delay(20000);
}
void bytedin(uchar x)
{ uchar i,a;
a = x;
for(i = 0;i < 8;i++)
{
DIN = (bit)(a & 0x80);
a <<= 1;
CLK = 0;
CLK = 1;
}
}
void sdin(uchar a,uchar d)
{ bytedin(a);
bytedin(d);
LOAD = 0;
LOAD = 1;
}
void clr(void) /*清max7219显示*/
{ uchar j;
for(j=0;j<6;j++)
{sdin(addr[j],0xff);}
}
void delay(uint x)
{ uint i;
for(i = 0;i < x ;i++){;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -