📄 dianyabaio.c
字号:
#include<regx51.h>
#define unchar unsigned char
#define unint unsigned int
#define clk P3_5////LCD的时钟线 注意;;;如果不显示或乱码;更改P3.4和P3。5
#define dat P3_4////LCD的数据线
#define eoc P3_3
#define key1 P2_0;
#define key2 P2_1;
#define key3 P2_2;
led[8]={0};
code ledcode[20]={0x3f,6,0x5b,0x4f,0x66,0x6d,0x7d,7,0x7f,0x67};///LED的字模CODE区定义
databuff[4]={0};////////////////////////////////////////读入缓冲区
test[4]={0};
void ledclk(void)/////LED的时钟模拟
{clk=0;
clk=1;
}
void wr1(void)////////把缓冲区的内容写入显示屏
{unchar m,n,i;
for(i=0;i<8;i++)
{
m=led[i];
for(n=0;n<8;n++)
{m=m<<1;
dat=CY;
ledclk();
}
}
}
delay()///////////////沿时1
{unint i;
for(i=0;i<25000;i++)
;}
ldelay()///////////////沿时2
{unint i;
for(i=0;i<20000;i++)
;}
void copy(void)//////////////缓冲区和读入量复制
{databuff[0]=test[0];
databuff[1]=test[1];
databuff[2]=test[2];
databuff[3]=test[3];
}
bit result(void)//////用来测试显示屏和缓冲区的内容是否一样;一样不更新;不一样更新
//////////////////////以防止因频繁更新带来的屏幕闪烁(本程序没用)
{
if((databuff[0]-test[0])|(databuff[1]-test[1])|(databuff[2]-test[2])|(databuff[3]-test[3])==0)
return(0);
if((databuff[0]-test[0])|(databuff[1]-test[1])|(databuff[2]-test[2])|(databuff[3]-test[3])!=0)
return(1);
}
void readdata(void)//////读MC14433的程序
{
for(;;)
{if(P1_4==1)
{databuff[3]=P1;//千位
break;};
}
for(;;)
{if(P1_5==1)
{databuff[2]=P1;//百位
break;};
}
for(;;)
{if(P1_6==1)
{databuff[1]=P1;//十位
break;};
}
for(;;)
{if(P1_7==1)
{databuff[0]=P1;//个位
break;};
}
}
void clr(void)//清屏的程序
{led[0]=0;
led[1]=0;
led[2]=0;
led[3]=0;
led[4]=0;
led[5]=0;
led[6]=0;
led[7]=0;}
/*
main()//测试的程序
{
for(;;)
{readdata();
led[0]=databuff[0];
led[1]=databuff[1];
led[2]=databuff[2];
led[3]=databuff[3];
led[4]=P1;
led[5]=P1;
led[6]=P1;
led[7]=ledcode[7];
wr1();
delay();
}
}
*/
main()
{unchar m;
P1=0xff;
P3=0xff;
for(;;){//////////////////////////初始显示
///////////////////////////////////////012345678
led[0]=ledcode[0];
led[1]=ledcode[1];
led[2]=ledcode[2];
led[3]=ledcode[3];
led[4]=ledcode[4];
led[5]=ledcode[5];
led[6]=ledcode[6];
led[7]=ledcode[7];
wr1();
ldelay();
ldelay();
ldelay();
ldelay();
ldelay();
ldelay();
///////////////////////////////////- - - - -
led[0]=0x40;
led[1]=0x00;
led[2]=0x40;
led[3]=0x00;
led[4]=0x40;
led[5]=0x00;
led[6]=0x40;
led[7]=0x00;
wr1();
ldelay();
ldelay();
ldelay();
ldelay();
ldelay();
if(eoc==0)//////////判断MC14433是否存在
break;}
for(;;)
{
readdata();////////开始读数据
clr();
m=databuff[0]&0x0f;/////开始查表;并写入缓冲区
led[0]=ledcode[m];
m=databuff[1]&0x0f;
led[1]=ledcode[m];
m=databuff[2]&0x0f;
led[2]=ledcode[m];
m=databuff[3]&0x0f;
if((m&0x02)==0x02) /////极性判断正号
{led[7]=0x46;
led[6]=0x40;
}
if((m&0x02)!=0x02)//////极性判断负号
{led[7]=0x40;
led[6]=0x40;}
if(m&0x08==0x08)///////千位判断
{led[3]=0;}
if((m&0x08)!=0x08)
{led[3]=ledcode[1];}//////千位判断
if((m&0x01==0x01)&&(led[2]==0x67))/////////////判断是否溢出
{
led[0]=0x40;/////////////////////////////////如果溢出显示--------并显示;直到不溢出
led[1]=0x40;
led[2]=0x40;
led[3]=0x40;
led[4]=0x40;
led[5]=0x40;
led[6]=0x40;
led[7]=0x40;
wr1();//////////////////////////////////写显示屏
delay();
clr();
wr1();
ldelay();
}
//wr1();
delay();
wr1();//////////////////////////写显示屏
copy();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -