📄 hailai.c
字号:
#include <reg51.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit wei=P3^7;
sbit duan=P3^6;
uchar h,count,num,dat,flag,dat1,num1,key1num,temp,keyc,keyz;
uint r=0;
uint s;
uchar code dis[]={
0Xc0,/*0*/
0Xf9,/*1*/
0Xa4,/*2*/
0Xb0,/*3*/
0X99,/*4*/
0X92,/*5*/
0X82,/*6*/
0Xf8,/*7*/
0X80,/*8*/
0X90,/*9*/
0Xff,/*NULL*/
};
void delay(uint c)
{
uint i,j;
for(i=0;i<c;i++)
for(j=0;j<100;j++);
}
void init()
{
TMOD=0x11;//设置定时器0为工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
ET1=1;
TR0=1;//启动定时器0
TR1=1;
num=56;
num1=56;
// P0=0xeb;
}
void display(uchar dat_z,uchar dat_c) //送显示
{
if(dat_z>=23&&dat_z<=56)
{
if(dat_z>26&&dat_z<=56)
{
P0=0xeb;
/* wei=1;
P2=0x04;
wei=0;
delay(5);
wei=1;
P2=0x00;
wei=0;
duan=1;
P2=dis[(dat_z-23)/10];
duan=0;
delay(1);
wei=1;
P2=0x00;
wei=0; */
/* wei=1;
P2=0x08;
wei=0;
duan=1;
P2=dis[(dat_z-23)%10];
duan=0;
delay(1);
wei=1;
P2=0x00;
wei=0; */
wei=1;
P2=0x4;
wei=0;
P3=0x00;
P2=0xff;
P3=0x10;
P2=dis[(dat_c-26)/10];
delay(1);
/*
P3=0x00;
P2=0xff;
P3=0x20;
P2=dis[(dat_c-26)%10];
delay(1); */
}
/* if(dat_z>=23&&dat_z<=26)
{
P0=0xe2;
P3=0x00;
P1=0xff;
P3=0x80;
P1=dis[(dat_z-23)%10];
delay(1);
P3=0x00;
P2=0xff;
P3=0x20;
P2=dis[(dat_c-23)%10];
delay(1);
}
}
if(dat_z<23)
{
if(dat_z>3&&dat_z<23)
{
P0=0xdd;//红灯
P3=0x00;
P1=0xff;
P3=0x40;
P1=dis[(dat_z)/10];
delay(1);
P3=0x00;
P1=0xff;
P3=0x80;
P1=dis[(dat_z)%10];
delay(1);
P3=0x00;
P2=0xff;
P3=0x10;
P2=dis[(dat_c-3)/10];
delay(1);
P3=0x00;
P2=0xff;
P3=0x20;
P2=dis[(dat_c-3)%10];
delay(1);
}
if(dat_z<=3)
{
P0=0xd4;
P3=0x00;
P1=0xff;
P3=0x80;
P1=dis[(dat_z)%10];
delay(1);
P3=0x00;
P2=0xff;
P3=0x20;
P2=dis[(dat_c)%10];
delay(1);
} */
}
}
void keyscan() //键盘检测
{
if(key1==0)
{
delay(5);
if(key1==0)
{
key1num++;
while(!key1)
{
display(num,num1);
}
if(key1num==1)
{
TR0=0;
TR1=0;
}
if(key1num==2)
{
TR0=1;
TR1=1;
P1=temp;
key1num=0;
}
}
}
if(key1num!=0)
{
if(key2==0)
{
delay(5);
if(key2==0)
{
while(!key2)
{
display(num,num1);
}
if(key1num==1)
{
num++;
display(num,num1);
}
if(key1num==2)
{
num++;
display(num,num1);
}
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
while(!key3)
{
display(num,num1);
}
if(key1num==1)
{
if(num==0)
num=32;
num--;
}
}
}
}
}
void main() //主函数
{
init();
while(1)
{
keyscan();
if(count==8)
{
count=0;
num--;
num1--;
if(num==-1)
{
num=56;
}
if(num1==-1)
{
num1=56;
}
}
display(num,num1);
}
}
void t0(void ) interrupt 1 //定时器T0
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
count++;
// num1++;
}
void time1() interrupt 3 //定时器T1
{
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -