📄 chengxu(原版).txt
字号:
/*12M晶振,LED显示 0-23 显示满车*/
#include <reg51.h>
#define yi 1
//#define RAMADDR XBYTE[0x6000]
//unsigned char code RAMDATA=0x99;
unsigned char code number[10][32]={
//'0'
//'0',
0x07,0xE0,0x0F,0xF0,0x18,0x18,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,
0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x18,0x18,0x0F,0xF0,0x07,0xE0,
0x01,0xC0,0x01,0xC0,0x01,0xC0,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,
0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0xF8,
0x0F,0xF0,0x18,0x18,0x30,0x0C,0x20,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,
0x00,0x70,0x00,0xE0,0x03,0x80,0x0E,0x00,0x1C,0x04,0x30,0x0C,0x3F,0xFC,0x3F,0xFC,
0x0F,0xF0,0x30,0x08,0x30,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1C,0x00,0x10,0x07,0xF0,
0x00,0x10,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x30,0x0C,0x30,0x18,0x1F,0xE0,
0x00,0x30,0x00,0x70,0x00,0xF0,0x01,0xB0,0x03,0x30,0x06,0x30,0x0C,0x30,0x18,0x30,
0x30,0x30,0x60,0x30,0xFF,0xFF,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x01,0xFE,
0x1F,0xFC,0x1F,0xFC,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1F,0xF0,0x1F,0xF8,
0x00,0x1C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x10,0x0C,0x3F,0xF8,0x1F,0xF0,
0x07,0xF8,0x08,0x1C,0x10,0x0C,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x37,0xF8,
0x38,0x0C,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x38,0x06,0x1F,0xFC,0x0F,0xF8,
0x3F,0xFF,0x30,0x06,0x30,0x0C,0x20,0x18,0x00,0x30,0x00,0x60,0x00,0xC0,0x01,0x80,
0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,
0x0F,0xF0,0x18,0x18,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x18,0x18,0x0F,0xF0,
0x1F,0xF8,0x30,0x0C,0x60,0x06,0x60,0x06,0x60,0x06,0x30,0x0C,0x18,0x18,0x0F,0xF0,
0x0F,0xF8,0x18,0x1C,0x30,0x0E,0x70,0x07,0x70,0x07,0x70,0x07,0x70,0x07,0x38,0x07,
0x1F,0xFF,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x06,0x30,0x0C,0x38,0x18,0x1F,0xF0
};
unsigned char code word[2][32]={
0x00,0x00,0x1F,0x8C,0x00,0x0C,0x00,0x0C,0x7F,0xEC,0x06,0x0C,0x06,0x0F,0x06,0x0C,
0x0F,0x0C,0x0F,0x0C,0x19,0x8C,0x30,0xCC,0x60,0x6C,0x00,0x0C,0x00,0x0C,0x00,0x00,
0x00,0x00,0x3F,0xCC,0x30,0xCC,0x30,0xCC,0x30,0xCC,0x30,0xCF,0x30,0xCC,0x30,0xCC,
0x3F,0xCC,0x00,0x0C,0x00,0x0C,0x18,0x00,0x18,0x00,0x18,0x00,0x0F,0xFC,0x00,0x00
};
sbit ena=P2^0;//输出总允许信号
sbit lat=P2^1;//0锁存
sbit check=P2^5;//26管脚
sbit check1=P2^6;
sbit clk=P3^1;
sbit jian=P3^2;
sbit add=P3^3;
//sbit check2=P1^6;
/*p1.0~p1.3行译码信号,int0-s1进行加1操作,int1-s2进行减1操作*/
unsigned char temp;
unsigned int opt1;
unsigned int opt2;
unsigned int flag;
//unsigned int jian;
void disn(temp);
void disnl(unsigned int temph);
void disnr(unsigned int templ);
void disw();
void diswl();
void diswr();
void delay(unsigned int t)
{while (t--);}
void int1() interrupt 2 using 1
{
EA=0;
delay(30000);//软件延时10ms消抖
delay(30000);
delay(30000);
if(temp>=24)
{temp=24;}
else
{
temp+=1;
flag=0;}
EA=1;
}
/*dec button*/
/*void int0(void) interrupt 0 using 0
{
EA=0;
delay(30000);//软件延时10ms消抖
delay(30000);
delay(30000);
if (temp<=0)
flag=1;
if(temp>0)
temp--;
EA=1;
}
*/
void disw()
{
for(opt2=0;opt2<16;opt2++)
{
unsigned int i;
P1=opt2;
// delay(50);
ena=1;
lat=0;
diswr();
diswl();
for(i=0;i<10;i++);
lat=1;
for(i=0;i<10;i++);
lat=0;
for(i=0;i<10;i++);
ena=0;
//delay(50);
for(i=0;i<10;i++);
ena=1;
}
}
void disn(temp)
{
unsigned int temph0,templ0;
if(temp>9)
{
temph0=temp/10;
templ0=temp-temph0*10;
}
else
{
temph0=0;
templ0=temp;
}
for(opt1=0;opt1<16;opt1++)
{
unsigned int i;
P1=opt1;
//delay(50);
ena=1;
lat=0;
disnl(temph0);
disnr(templ0);
for(i=0;i<10;i++);
lat=1;
for(i=0;i<10;i++);
lat=0;
for(i=0;i<10;i++);
ena=0;
// delay(50);
for(i=0;i<10;i++);
ena=1;
}
}
//右显示
void disnr(unsigned int templ)
{
unsigned int k;
unsigned char i,dat1,dat2;
for(k=2*opt1;k<2*opt1+2;k++)
{
dat1=number[templ][k];
dat2=0;
for(i=0;i<8;i++)
{
dat2<<=1;
if(dat1&0x01)
dat2=dat2+1;
dat1>>=1;
}
SBUF=dat2;
while(TI==0);
TI=0;
}
}
void disnl(unsigned int temph)
{
unsigned int k;
unsigned char i,dat1,dat2;
for(k=2*opt1;k<2*opt1+2;k++)
{
dat1=number[temph][k];
dat2=0;
for(i=0;i<8;i++)
{
dat2<<=1;
if(dat1&0x01)
dat2=dat2+1;
dat1>>=1;
}
SBUF=dat2;
while(TI==0);
TI=0;
}
}
void diswl()
{
unsigned int k;
unsigned char i,dat1,dat2;
for(k=2*opt2;k<2*opt2+2;k++)
{
dat1=word[0][k];
dat2=0;
for(i=0;i<8;i++)
{
dat2<<=1;
if(dat1&0x01)
dat2=dat2+1;
dat1>>=1;
}
SBUF=dat2;
while(TI==0);
TI=0;
}
}
void diswr()
{
unsigned int k;
unsigned char i,dat1,dat2;
for(k=2*opt2;k<2*opt2+2;k++)
{
dat1=word[1][k];
dat2=0;
for(i=0;i<8;i++)
{
dat2<<=1;
if(dat1&0x01)
dat2=dat2+1;
dat1>>=1;
}
SBUF=dat2;
while(TI==0);
TI=0;
}
}
void main(void)
{
TMOD=0x11;
TH0=0x15;
TL0=0xa0;
EA=0; // CPU所有中断开(IE最高位MSB)
EX0=0; // INT0中断开
//IT0=0; // INT0低电平触发(为1则为下降沿触发)
EX1=0; // INT1中断开
IT1=0; // INT1低电平触发(为1则为下降沿触发)
SCON=0x00;//串口工作在方式0
flag=0;
temp=24;
check=0;
while(1)
{
if(jian==0)
{
TR0=1;
TH0=0x15;
TL0=0xa0;
}
if(TF0)
{
TF0=0;
TH0=0x15;
TL0=0xa0;
if(jian==1)
{
TR0=0;
if (temp==1||temp>24||temp==0)
{temp=0;
flag=1;}
else
temp--;
}
}
if(add==0)
{
TR1=1;
TH1=0x15;
TL1=0xa0;
}
if(TF1)
{
TF1=0;
TH1=0x15;
TL1=0xa0;
if(add==1)
{
TR1=0;
if(temp>=24)
temp=24;
else
{
temp+=1;
flag=0;
}
}
}
if(flag==0)
disn(temp);
else
disw();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -