📄 max144采样信号送给max7221显示,第一位带小数点.txt
字号:
#include<reg51.h> //51寄存器定义库
#include<intrins.h> //变量移位函数库
#define unchar unsigned char
#define unint unsigned int
//定义max144端口,VREF=5V
sbit CS_144=P2^0;
sbit DOUT_144=P2^1;
sbit SCLK_144=P2^2;
//定义max7221端口
sbit CS_7221=P2^4;
sbit DIN_7221=P2^5;
sbit CLK_7221=P2^6;
unint Data;
unint for_display[4];
unchar decode[]={0X0E,0X8E,0X4E,0XCE,0X2E,0XAE,0X6E,0XEE,0X1E,0X9E}; //不带小数点的码表
unchar DPdecode[]={0X7F,0X0D,0XB7,0X9F,0XCD,0XDB,0XFB,0X0F,0XFF,0XBF};//带小数点的码表
void delay()
{
unint i=0XFFFF;
for(i;i>0;i--){}
}
void write_7221(unchar A,unchar B)
{
unchar i;
CS_7221=0;
for(i=8;i>0;i--)
{
DIN_7221=A&0X01;
CLK_7221=1;
CLK_7221=0;
A>>=1;
}
for(i=8;i>0;i--)
{
DIN_7221=B&0X01;
CLK_7221=1;
CLK_7221=0;
B>>=1;
}
CS_7221=1;
}
void initial_7221()
{
//初始化max7221,未用到的数据位全部置1
write_7221(0X5F,0XCF);//设定INTENSITY(4/16)
write_7221(0X9F,0X70);//设定DECODE MODE(译码2~4位,第一位不译码)
write_7221(0XDF,0XDF);//设定SCAN LIMIT(扫描低四位)
write_7221(0X3F,0XFF);//SHUT DOWN(NORMAL OPERATION)
write_7221(0XFF,0X7F);//DISPLAY TEST(NORMAL OPERATION)
}
void display_7221()
{
write_7221(0X8F,DPdecode[for_display[0]]);
write_7221(0X4F,decode[for_display[1]]);
write_7221(0XCF,decode[for_display[2]]);
write_7221(0X2F,decode[for_display[3]]);
}
void read_144()
{
unchar i,j;
SCLK_144=0;
CS_144=1;
CS_144=0;
_nop_();
_nop_();
for(i=0;i<16;i++)
{
SCLK_144=1;
j=DOUT_144;
Data<<=1;
Data|=j;
SCLK_144=0;
}
CS_144=1;
Data&=0X0FFF;
}
void change()
{
unchar i;
unint h;
float k=Data;
k*=5000;
k/=4095;
h=k;
for(i=4;i>0;i--)
{
for_display[i-1]=h%10;
h/=10;
}
}
void main()
{
initial_7221();
while(1)
{
read_144();
change();
display_7221();
delay();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -