📄 jiaotong.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 key4=P3^5;
uchar h,count,num,dat,flag,dat1,num1,key1num,temp;
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=66;
// P0=0xeb;
}
void display(dat) //送显示
{
if(dat<=33)
{
if(dat>3&&dat<33)
{
P0=0xdd;//红灯
P1=0x00;
P2=0xff;
P1=0x01;
P2=dis[dat/10];
delay(1);
P1=0x00;
P2=0xff;
P1=0x02;
P2=dis[dat%10];
delay(1);
P1=0x00;
P2=0xff;
P1=0x04;
P2=dis[(dat-3)/10];
delay(1);
P1=0x00;
P2=0xff;
P1=0x08;
P2=dis[(dat-3)%10];
delay(1);
}
if(dat<=3)
{
P0=0xd4;//黄灯
P1=0x00;
P2=0xff;
P1=0x02;
P2=dis[dat%10];
delay(1);
P1=0x00;
P2=0xff;
P1=0x08;
P2=dis[(dat-3)%10];
delay(1);
}
// break;
}
if(dat>=33&&dat<=66)
{
if(dat>36&&dat<=66)
{
P0=0xeb;
P1=0x00;
P2=0xff;
P1=0x01;
P2=dis[(dat-33)/10];
delay(1);
P1=0x00;
P2=0xff;
P1=0x02;
P2=dis[(dat-33)%10];
delay(1);
P1=0x00;
P2=0xff;
P1=0x04;
P2=dis[(dat-36)/10];
delay(1);
P1=0x00;
P2=0xff;
P1=0x08;
P2=dis[(dat-36)%10];
delay(1);
}
if(dat>=33&&dat<=36)
{
P0=0xe2;//黄灯
P1=0x00;
P2=0xff;
P1=0x02;
P2=dis[(dat-33)%10];
delay(1);
P1=0x00;
P2=0xff;
P1=0x08;
P2=dis[(dat-33)%10];
delay(1);
}
// break;
}
}
void keyscan() //键盘检测
{
if(key1==0)
{
delay(5);
if(key1==0)
{
key1num++;
while(!key1)
{
display(num);
}
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);
}
if(key1num==1)
{
num++;
display(num);
}
if(key1num==2)
{
num++;
display(num);
}
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
while(!key3)
{
display(num);
}
if(key1num==1)
{
if(num==0)
num=32;
num--;
}
if(key1num==2)
{
if(num1==0)
num1=56;
num1--;
}
}
}
}
}
void main() //主函数
{
init();
while(1)
{
keyscan();
if(count==10)
{
count=0;
num--;
if(num==0)
{
num=66;
}
}
display(num);
}
}
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 + -